<?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>229892</bug_id>
          
          <creation_ts>2021-09-03 13:28:01 -0700</creation_ts>
          <short_desc>[JSC] Implement Temporal.PlainTime</short_desc>
          <delta_ts>2021-09-10 08:29:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230154</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>223166</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>msaboff</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>saam</cc>
    
    <cc>sergio</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1790332</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-03 13:28:01 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790522</commentid>
    <comment_count>1</comment_count>
      <attachid>437349</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-04 18:29:31 -0700</bug_when>
    <thetext>Created attachment 437349
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790523</commentid>
    <comment_count>2</comment_count>
      <attachid>437350</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-04 18:32:06 -0700</bug_when>
    <thetext>Created attachment 437350
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790524</commentid>
    <comment_count>3</comment_count>
      <attachid>437351</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-04 18:43:54 -0700</bug_when>
    <thetext>Created attachment 437351
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790527</commentid>
    <comment_count>4</comment_count>
      <attachid>437353</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-04 23:43:05 -0700</bug_when>
    <thetext>Created attachment 437353
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790534</commentid>
    <comment_count>5</comment_count>
      <attachid>437355</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-05 04:49:12 -0700</bug_when>
    <thetext>Created attachment 437355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790536</commentid>
    <comment_count>6</comment_count>
      <attachid>437356</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-05 04:52:46 -0700</bug_when>
    <thetext>Created attachment 437356
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790537</commentid>
    <comment_count>7</comment_count>
      <attachid>437357</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-05 05:20:59 -0700</bug_when>
    <thetext>Created attachment 437357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790675</commentid>
    <comment_count>8</comment_count>
      <attachid>437404</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-06 04:48:51 -0700</bug_when>
    <thetext>Created attachment 437404
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790857</commentid>
    <comment_count>9</comment_count>
      <attachid>437446</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-06 20:38:40 -0700</bug_when>
    <thetext>Created attachment 437446
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1790861</commentid>
    <comment_count>10</comment_count>
      <attachid>437448</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-06 20:50:27 -0700</bug_when>
    <thetext>Created attachment 437448
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791070</commentid>
    <comment_count>11</comment_count>
      <attachid>437448</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-07 09:53:50 -0700</bug_when>
    <thetext>Comment on attachment 437448
Patch

Looks like the spec&apos;s definition of DifferenceTime, BalanceTime is not correct.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791088</commentid>
    <comment_count>12</comment_count>
      <attachid>437524</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-07 10:19:52 -0700</bug_when>
    <thetext>Created attachment 437524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791221</commentid>
    <comment_count>13</comment_count>
      <attachid>437524</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-09-07 14:18:16 -0700</bug_when>
    <thetext>Comment on attachment 437524
Patch

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

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:52
&gt; +std::optional&lt;TimeZoneID&gt; idForTimeZoneName(StringView string)
&gt; +{
&gt; +    const auto&amp; timeZones = intlAvailableTimeZones();
&gt; +    for (unsigned index = 0; index &lt; timeZones.size(); ++index) {
&gt; +        if (equalIgnoringASCIICase(timeZones[index], string))
&gt; +            return index;
&gt; +    }
&gt; +    return std::nullopt;
&gt; +}

I guess this is just moved code. But we would normally try to avoid linear search in a case like this. We could change intlAvailableTimeZones to be sorted so we can do a binary search. Or go even further in making an optimal algorithm if there are restrictions to time zone names so they’d fit, for example, in a 64-bit integer, ala the PackedASCIILowerCodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791226</commentid>
    <comment_count>14</comment_count>
      <attachid>437524</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-09-07 14:39:04 -0700</bug_when>
    <thetext>Comment on attachment 437524
Patch

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

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:359
&gt; +    unsigned maxCount = std::min&lt;unsigned&gt;(buffer.lengthRemaining(), 9);

I would slightly prefer:

    unsigned maxCount = std::min(buffer.lengthRemaining(), 9u);

What do you think?

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:401
&gt; +    else if (*buffer == &apos;-&apos; || *buffer == 0x2212) {

Could use &quot;minusSign&quot; instead of 0x2212 throughout; it’s defined in CharacterNames.h. I think it would be slightly better.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:432
&gt; +std::optional&lt;Variant&lt;Vector&lt;LChar&gt;, int64_t&gt;&gt; parseTimeZoneBracketedAnnotation(StringParsingBuffer&lt;CharacterType&gt;&amp; buffer)

Why not marked static?

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:584
&gt; +bool canBeTimeZone(const StringParsingBuffer&lt;CharacterType&gt;&amp; buffer, CharacterType character)

Why not marked static?

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:613
&gt; +std::optional&lt;TimeZoneRecord&gt; parseTimeZone(StringParsingBuffer&lt;CharacterType&gt;&amp; buffer)

Why not marked static?

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:661
&gt; +std::optional&lt;std::tuple&lt;PlainTime, std::optional&lt;TimeZoneRecord&gt;&gt;&gt; parseTime(StringParsingBuffer&lt;CharacterType&gt;&amp; buffer)

Why not marked static?

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:681
&gt; +inline unsigned daysInMonth(int32_t year, unsigned month)

In a .cpp file I would expect this to be marked static, and not marked inline. The compiler will inline it without an inline keyword, right?

Although I would not do inline, I might be tempted to mark it constexpr because it’s that kind of function; should do the same with isLeapYear. But still would want &quot;static&quot;.

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:706
&gt; +std::optional&lt;PlainDate&gt; parseDate(StringParsingBuffer&lt;CharacterType&gt;&amp; buffer)

Why not marked static?

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:826
&gt; +std::optional&lt;std::tuple&lt;PlainDate, std::optional&lt;PlainTime&gt;, std::optional&lt;TimeZoneRecord&gt;&gt;&gt; parseDateTime(StringParsingBuffer&lt;CharacterType&gt;&amp; buffer)

Why not marked static?

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:922
&gt; +    int64_t fractionNanoseconds = static_cast&lt;int64_t&gt;(plainTime.millisecond()) * nsPerMillisecond + static_cast&lt;int64_t&gt;(plainTime.microsecond()) * nsPerMicrosecond + static_cast&lt;int64_t&gt;(plainTime.nanosecond());

Can we use local variables instead of static_cast to expand to int64_t without a typecast?

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:926
&gt; +        auto fraction = WTF::numberToStringUnsigned&lt;Vector&lt;LChar, 9&gt;&gt;(fractionNanoseconds);

The use of WTF:: here means we forgot a &quot;using&quot; that we should have included in the WTF header, I think?

&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:944
&gt; +    auto fraction = WTF::numberToStringUnsigned&lt;Vector&lt;LChar, 9&gt;&gt;(fractionNanoseconds);

Ditto.

&gt; Source/JavaScriptCore/runtime/ISO8601.h:86
&gt; +        : m_hour(0)
&gt; +        , m_minute(0)
&gt; +        , m_second(0)

I don’t think we need these three.

&gt; Source/JavaScriptCore/runtime/ISO8601.h:158
&gt; +struct TimeZoneRecord {
&gt; +    bool m_z { false };
&gt; +    std::optional&lt;int64_t&gt; m_offset;
&gt; +    Variant&lt;Vector&lt;LChar&gt;, int64_t&gt; m_nameOrOffset;
&gt; +};

Since this is a struct, I suggest not using &quot;m_&quot; prefixes on the member names.

&gt; Source/JavaScriptCore/runtime/ISO8601.h:161
&gt; +std::optional&lt;TimeZoneID&gt; idForTimeZoneName(StringView);

Could call this parseTimeZoneName.

&gt; Source/JavaScriptCore/runtime/ISO8601.h:164
&gt; +enum class ValidateTimeZoneID { Yes, No };

I don’t see this used anywhere.

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:1847
&gt; +        const auto&amp; timeZones = intlAvailableTimeZones();

I don’t think we need &quot;const&quot;.

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:1853
&gt; +        for (unsigned index = 0; index &lt; timeZones.size(); ++index) {
&gt; +            if (timeZones[index] == &quot;UTC&quot;_s) {
&gt; +                utcTimeZoneIDStorage = index;
&gt; +                return;
&gt; +            }
&gt; +        }

Can we just use Vector::find? Do we really need to write out a loop?

&gt; Source/JavaScriptCore/runtime/IntlObject.h:128
&gt; +inline CalendarID utcTimeZoneID()
&gt; +{
&gt; +    unsigned value = utcTimeZoneIDStorage;
&gt; +    if (value == std::numeric_limits&lt;TimeZoneID&gt;::max())
&gt; +        return utcTimeZoneIDSlow();
&gt; +    return value;
&gt; +}

Generally I prefer to put function bodies after declarations in a separate section of the header. Could we do that? Generally we want to separate interface from implementation even if both are in the same header.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1239
&gt; +                JSGlobalObject* globalObject = jsCast&lt;JSGlobalObject*&gt;(init.owner);

auto?

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1240
&gt; +                TemporalPlainTimePrototype* plainTimePrototype = TemporalPlainTimePrototype::create(init.vm, globalObject, TemporalPlainTimePrototype::createStructure(init.vm, globalObject, globalObject-&gt;objectPrototype()));

auto?

&gt; Source/JavaScriptCore/runtime/TemporalObject.cpp:69
&gt; +    TemporalObject* temporalObject = jsCast&lt;TemporalObject*&gt;(object);
&gt; +    JSGlobalObject* globalObject = temporalObject-&gt;globalObject(vm);

auto?

&gt; Source/JavaScriptCore/runtime/TemporalObject.h:84
&gt; +enum class Precision {

Consider : uint8_t?

&gt; Source/JavaScriptCore/runtime/TemporalObject.h:105
&gt; +enum class TemporalOverflow : uint8_t {

Consider bool instead of uint8_t?

&gt; Source/JavaScriptCore/runtime/TemporalPlainTime.cpp:420
&gt; +        JSString* calendarString = calendar-&gt;toString(globalObject);
&gt; +        RETURN_IF_EXCEPTION(scope, { });
&gt; +        String calendarWTFString = calendarString-&gt;value(globalObject);

Why not use toWTFString in cases like this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791325</commentid>
    <comment_count>15</comment_count>
      <attachid>437524</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-07 19:13:18 -0700</bug_when>
    <thetext>Comment on attachment 437524
Patch

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

Thanks

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:52
&gt;&gt; +}
&gt; 
&gt; I guess this is just moved code. But we would normally try to avoid linear search in a case like this. We could change intlAvailableTimeZones to be sorted so we can do a binary search. Or go even further in making an optimal algorithm if there are restrictions to time zone names so they’d fit, for example, in a 64-bit integer, ala the PackedASCIILowerCodes.

Unfortunately, there is no limitation of the length of the TimeZone string (e.g. ISO8601 TimeZone name part can accept very long string by using many slashes, and TimeZone data gets longer name recently for some regions), and the data comes from ICU, so it is hard to pre-define the max length in our side.
I would like to do refactoring separately since this TimeZone strings are sorted by case-sensitive ordering, on the other hand, here, we need to use case-insensitive comparison. So it is possible that this vector is not sorted as we thought.
And that vector was sorted because we are using this sorted vector for Intl.supportedValuesOf(&quot;timeZone&quot;). So we cannot change the ordering without changing that function too, and I think this should be done in a separate patch from this Temporal.PlainTime patch.

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:359
&gt;&gt; +    unsigned maxCount = std::min&lt;unsigned&gt;(buffer.lengthRemaining(), 9);
&gt; 
&gt; I would slightly prefer:
&gt; 
&gt;     unsigned maxCount = std::min(buffer.lengthRemaining(), 9u);
&gt; 
&gt; What do you think?

Looks good!

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:401
&gt;&gt; +    else if (*buffer == &apos;-&apos; || *buffer == 0x2212) {
&gt; 
&gt; Could use &quot;minusSign&quot; instead of 0x2212 throughout; it’s defined in CharacterNames.h. I think it would be slightly better.

Sounds good. Changed.

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:432
&gt;&gt; +std::optional&lt;Variant&lt;Vector&lt;LChar&gt;, int64_t&gt;&gt; parseTimeZoneBracketedAnnotation(StringParsingBuffer&lt;CharacterType&gt;&amp; buffer)
&gt; 
&gt; Why not marked static?

Fixed

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:584
&gt;&gt; +bool canBeTimeZone(const StringParsingBuffer&lt;CharacterType&gt;&amp; buffer, CharacterType character)
&gt; 
&gt; Why not marked static?

Fixed

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:613
&gt;&gt; +std::optional&lt;TimeZoneRecord&gt; parseTimeZone(StringParsingBuffer&lt;CharacterType&gt;&amp; buffer)
&gt; 
&gt; Why not marked static?

Fixed

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:661
&gt;&gt; +std::optional&lt;std::tuple&lt;PlainTime, std::optional&lt;TimeZoneRecord&gt;&gt;&gt; parseTime(StringParsingBuffer&lt;CharacterType&gt;&amp; buffer)
&gt; 
&gt; Why not marked static?

Fixed

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:681
&gt;&gt; +inline unsigned daysInMonth(int32_t year, unsigned month)
&gt; 
&gt; In a .cpp file I would expect this to be marked static, and not marked inline. The compiler will inline it without an inline keyword, right?
&gt; 
&gt; Although I would not do inline, I might be tempted to mark it constexpr because it’s that kind of function; should do the same with isLeapYear. But still would want &quot;static&quot;.

Yup, adding static.

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:706
&gt;&gt; +std::optional&lt;PlainDate&gt; parseDate(StringParsingBuffer&lt;CharacterType&gt;&amp; buffer)
&gt; 
&gt; Why not marked static?

Fixed

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:826
&gt;&gt; +std::optional&lt;std::tuple&lt;PlainDate, std::optional&lt;PlainTime&gt;, std::optional&lt;TimeZoneRecord&gt;&gt;&gt; parseDateTime(StringParsingBuffer&lt;CharacterType&gt;&amp; buffer)
&gt; 
&gt; Why not marked static?

Fixed

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:922
&gt;&gt; +    int64_t fractionNanoseconds = static_cast&lt;int64_t&gt;(plainTime.millisecond()) * nsPerMillisecond + static_cast&lt;int64_t&gt;(plainTime.microsecond()) * nsPerMicrosecond + static_cast&lt;int64_t&gt;(plainTime.nanosecond());
&gt; 
&gt; Can we use local variables instead of static_cast to expand to int64_t without a typecast?

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:926
&gt;&gt; +        auto fraction = WTF::numberToStringUnsigned&lt;Vector&lt;LChar, 9&gt;&gt;(fractionNanoseconds);
&gt; 
&gt; The use of WTF:: here means we forgot a &quot;using&quot; that we should have included in the WTF header, I think?

Added using.

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.cpp:944
&gt;&gt; +    auto fraction = WTF::numberToStringUnsigned&lt;Vector&lt;LChar, 9&gt;&gt;(fractionNanoseconds);
&gt; 
&gt; Ditto.

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.h:86
&gt;&gt; +        , m_second(0)
&gt; 
&gt; I don’t think we need these three.

Removed.

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.h:158
&gt;&gt; +};
&gt; 
&gt; Since this is a struct, I suggest not using &quot;m_&quot; prefixes on the member names.

In JSC, we would like to add m_ prefix to struct fields too in recent JSC development largely because of improved grep-ability.
This thing improved our BytecodeStruct related operations&apos; readability. (https://trac.webkit.org/changeset/240041/webkit)

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.h:161
&gt;&gt; +std::optional&lt;TimeZoneID&gt; idForTimeZoneName(StringView);
&gt; 
&gt; Could call this parseTimeZoneName.

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.h:164
&gt;&gt; +enum class ValidateTimeZoneID { Yes, No };
&gt; 
&gt; I don’t see this used anywhere.

Removed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:1847
&gt;&gt; +        const auto&amp; timeZones = intlAvailableTimeZones();
&gt; 
&gt; I don’t think we need &quot;const&quot;.

Removed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:1853
&gt;&gt; +        }
&gt; 
&gt; Can we just use Vector::find? Do we really need to write out a loop?

We can use find. Changed.

&gt;&gt; Source/JavaScriptCore/runtime/IntlObject.h:128
&gt;&gt; +}
&gt; 
&gt; Generally I prefer to put function bodies after declarations in a separate section of the header. Could we do that? Generally we want to separate interface from implementation even if both are in the same header.

OK, changed.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1239
&gt;&gt; +                JSGlobalObject* globalObject = jsCast&lt;JSGlobalObject*&gt;(init.owner);
&gt; 
&gt; auto?

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/JSGlobalObject.cpp:1240
&gt;&gt; +                TemporalPlainTimePrototype* plainTimePrototype = TemporalPlainTimePrototype::create(init.vm, globalObject, TemporalPlainTimePrototype::createStructure(init.vm, globalObject, globalObject-&gt;objectPrototype()));
&gt; 
&gt; auto?

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/TemporalObject.cpp:69
&gt;&gt; +    JSGlobalObject* globalObject = temporalObject-&gt;globalObject(vm);
&gt; 
&gt; auto?

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/TemporalObject.h:84
&gt;&gt; +enum class Precision {
&gt; 
&gt; Consider : uint8_t?

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/TemporalObject.h:105
&gt;&gt; +enum class TemporalOverflow : uint8_t {
&gt; 
&gt; Consider bool instead of uint8_t?

Changed.

&gt;&gt; Source/JavaScriptCore/runtime/TemporalPlainTime.cpp:420
&gt;&gt; +        String calendarWTFString = calendarString-&gt;value(globalObject);
&gt; 
&gt; Why not use toWTFString in cases like this?

Because toWTFString is only for JSValue :) (no definition for JSObject*).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791329</commentid>
    <comment_count>16</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-07 19:20:59 -0700</bug_when>
    <thetext>Committed r282125 (241422@main): &lt;https://commits.webkit.org/241422@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791330</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-07 19:21:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/82851167&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791346</commentid>
    <comment_count>18</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-07 20:44:27 -0700</bug_when>
    <thetext>Committed r282127 (241424@main): &lt;https://commits.webkit.org/241424@main&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791548</commentid>
    <comment_count>19</comment_count>
      <attachid>437524</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-09-08 11:07:15 -0700</bug_when>
    <thetext>Comment on attachment 437524
Patch

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.h:158
&gt;&gt;&gt; +};
&gt;&gt; 
&gt;&gt; Since this is a struct, I suggest not using &quot;m_&quot; prefixes on the member names.
&gt; 
&gt; In JSC, we would like to add m_ prefix to struct fields too in recent JSC development largely because of improved grep-ability.
&gt; This thing improved our BytecodeStruct related operations&apos; readability. (https://trac.webkit.org/changeset/240041/webkit)

While I understand that you all have decided on this, I am not sure it makes sense to me. Why not put a prefix on function names too so for improved grep-ability?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791549</commentid>
    <comment_count>20</comment_count>
      <attachid>437524</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-08 11:12:21 -0700</bug_when>
    <thetext>Comment on attachment 437524
Patch

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

&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.h:158
&gt;&gt;&gt;&gt; +};
&gt;&gt;&gt; 
&gt;&gt;&gt; Since this is a struct, I suggest not using &quot;m_&quot; prefixes on the member names.
&gt;&gt; 
&gt;&gt; In JSC, we would like to add m_ prefix to struct fields too in recent JSC development largely because of improved grep-ability.
&gt;&gt; This thing improved our BytecodeStruct related operations&apos; readability. (https://trac.webkit.org/changeset/240041/webkit)
&gt; 
&gt; While I understand that you all have decided on this, I am not sure it makes sense to me. Why not put a prefix on function names too so for improved grep-ability?

This is because `m_xxx` is always a member name while `xxx` can be function name, local variable name, global variable name, etc.
Grepping with `m_z` is much easier than grepping with `z` for example. (in this case :))</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791553</commentid>
    <comment_count>21</comment_count>
      <attachid>437524</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-09-08 11:31:37 -0700</bug_when>
    <thetext>Comment on attachment 437524
Patch

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

&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.h:158
&gt;&gt;&gt;&gt;&gt; +};
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; Since this is a struct, I suggest not using &quot;m_&quot; prefixes on the member names.
&gt;&gt;&gt; 
&gt;&gt;&gt; In JSC, we would like to add m_ prefix to struct fields too in recent JSC development largely because of improved grep-ability.
&gt;&gt;&gt; This thing improved our BytecodeStruct related operations&apos; readability. (https://trac.webkit.org/changeset/240041/webkit)
&gt;&gt; 
&gt;&gt; While I understand that you all have decided on this, I am not sure it makes sense to me. Why not put a prefix on function names too so for improved grep-ability?
&gt; 
&gt; This is because `m_xxx` is always a member name while `xxx` can be function name, local variable name, global variable name, etc.
&gt; Grepping with `m_z` is much easier than grepping with `z` for example. (in this case :))

Yes, but function names could all be &quot;f_z&quot; too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1791560</commentid>
    <comment_count>22</comment_count>
      <attachid>437524</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-08 11:47:52 -0700</bug_when>
    <thetext>Comment on attachment 437524
Patch

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

&gt;&gt;&gt;&gt;&gt;&gt; Source/JavaScriptCore/runtime/ISO8601.h:158
&gt;&gt;&gt;&gt;&gt;&gt; +};
&gt;&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt;&gt; Since this is a struct, I suggest not using &quot;m_&quot; prefixes on the member names.
&gt;&gt;&gt;&gt; 
&gt;&gt;&gt;&gt; In JSC, we would like to add m_ prefix to struct fields too in recent JSC development largely because of improved grep-ability.
&gt;&gt;&gt;&gt; This thing improved our BytecodeStruct related operations&apos; readability. (https://trac.webkit.org/changeset/240041/webkit)
&gt;&gt;&gt; 
&gt;&gt;&gt; While I understand that you all have decided on this, I am not sure it makes sense to me. Why not put a prefix on function names too so for improved grep-ability?
&gt;&gt; 
&gt;&gt; This is because `m_xxx` is always a member name while `xxx` can be function name, local variable name, global variable name, etc.
&gt;&gt; Grepping with `m_z` is much easier than grepping with `z` for example. (in this case :))
&gt; 
&gt; Yes, but function names could all be &quot;f_z&quot; too.

Yeah, but function can be (relatively) excluded with `f_z(` grep :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792203</commentid>
    <comment_count>23</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-09-09 18:57:33 -0700</bug_when>
    <thetext>So this commit introduced a few GCC build warnings. There are a couple harmless -Wredundant-move caused by &quot;return WTFMove(result)&quot; on line 579. That&apos;s trivial: we can just remove the WTFMove. But we also have three cases of -Wswitch-outside-range. They look like this:

In file included from JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-13.cpp:2:
../../Source/JavaScriptCore/runtime/ISO8601.cpp: In instantiation of ‘bool JSC::ISO8601::canBeTimeZone(const WTF::StringParsingBuffer&lt;CharacterType&gt;&amp;, CharacterType) [with CharacterType = unsigned char]’:
../../Source/JavaScriptCore/runtime/ISO8601.cpp:672:22:   required from ‘std::optional&lt;std::tuple&lt;JSC::ISO8601::PlainTime, std::optional&lt;JSC::ISO8601::TimeZoneRecord&gt; &gt; &gt; JSC::ISO8601::parseTime(WTF::StringParsingBuffer&lt;CharacterType&gt;&amp;) [with CharacterType = unsigned char]’
../../Source/JavaScriptCore/runtime/ISO8601.cpp:863:32:   required from ‘JSC::ISO8601::parseTime(WTF::StringView)::&lt;lambda(auto:28)&gt; [with auto:28 = WTF::StringParsingBuffer&lt;unsigned char&gt;]’
WTF/Headers/wtf/text/StringParsingBuffer.h:117:23:   required from ‘decltype(auto) WTF::readCharactersForParsing(StringType&amp;&amp;, Function&amp;&amp;) [with StringType = WTF::StringView&amp;; Function = JSC::ISO8601::parseTime(WTF::StringView)::&lt;lambda(auto:28)&gt;]’
../../Source/JavaScriptCore/runtime/ISO8601.cpp:862:36:   required from here
../../Source/JavaScriptCore/runtime/ISO8601.cpp:596:5: warning: case label value exceeds maximum value for type [-Wswitch-outside-range]
  596 |     case minusSign:
      |     ^~~~

It&apos;s also triggered by line 636 and line 454. Problem is, minusSign is declared as 0x2212 (in CharacterNames.h), which is outside the range of CharacterType when CharacterType is unsigned char. Of course when CharacterType is UChar, then it&apos;s no longer going to be outside the range. My proposal here is to use IGNORE_GCC_WARNINGS_BEGIN(&quot;switch-outside-range&quot;) and move on. Yusuke, do you agree?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792227</commentid>
    <comment_count>24</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2021-09-09 20:33:46 -0700</bug_when>
    <thetext>(In reply to Michael Catanzaro from comment #23)
&gt; So this commit introduced a few GCC build warnings. There are a couple
&gt; harmless -Wredundant-move caused by &quot;return WTFMove(result)&quot; on line 579.
&gt; That&apos;s trivial: we can just remove the WTFMove. But we also have three cases
&gt; of -Wswitch-outside-range. They look like this:
&gt; 
&gt; In file included from
&gt; JavaScriptCore/DerivedSources/unified-sources/UnifiedSource-f2e18ffc-13.cpp:
&gt; 2:
&gt; ../../Source/JavaScriptCore/runtime/ISO8601.cpp: In instantiation of ‘bool
&gt; JSC::ISO8601::canBeTimeZone(const WTF::StringParsingBuffer&lt;CharacterType&gt;&amp;,
&gt; CharacterType) [with CharacterType = unsigned char]’:
&gt; ../../Source/JavaScriptCore/runtime/ISO8601.cpp:672:22:   required from
&gt; ‘std::optional&lt;std::tuple&lt;JSC::ISO8601::PlainTime,
&gt; std::optional&lt;JSC::ISO8601::TimeZoneRecord&gt; &gt; &gt;
&gt; JSC::ISO8601::parseTime(WTF::StringParsingBuffer&lt;CharacterType&gt;&amp;) [with
&gt; CharacterType = unsigned char]’
&gt; ../../Source/JavaScriptCore/runtime/ISO8601.cpp:863:32:   required from
&gt; ‘JSC::ISO8601::parseTime(WTF::StringView)::&lt;lambda(auto:28)&gt; [with auto:28 =
&gt; WTF::StringParsingBuffer&lt;unsigned char&gt;]’
&gt; WTF/Headers/wtf/text/StringParsingBuffer.h:117:23:   required from
&gt; ‘decltype(auto) WTF::readCharactersForParsing(StringType&amp;&amp;, Function&amp;&amp;)
&gt; [with StringType = WTF::StringView&amp;; Function =
&gt; JSC::ISO8601::parseTime(WTF::StringView)::&lt;lambda(auto:28)&gt;]’
&gt; ../../Source/JavaScriptCore/runtime/ISO8601.cpp:862:36:   required from here
&gt; ../../Source/JavaScriptCore/runtime/ISO8601.cpp:596:5: warning: case label
&gt; value exceeds maximum value for type [-Wswitch-outside-range]
&gt;   596 |     case minusSign:
&gt;       |     ^~~~
&gt; 
&gt; It&apos;s also triggered by line 636 and line 454. Problem is, minusSign is
&gt; declared as 0x2212 (in CharacterNames.h), which is outside the range of
&gt; CharacterType when CharacterType is unsigned char. Of course when
&gt; CharacterType is UChar, then it&apos;s no longer going to be outside the range.
&gt; My proposal here is to use IGNORE_GCC_WARNINGS_BEGIN(&quot;switch-outside-range&quot;)
&gt; and move on. Yusuke, do you agree?

Ugh, that looks not clean. How about changing `switch (character)` to `switch (static_cast&lt;UChar&gt;(character))`?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792329</commentid>
    <comment_count>25</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-09-10 07:30:35 -0700</bug_when>
    <thetext>(In reply to Yusuke Suzuki from comment #24)
&gt; Ugh, that looks not clean. How about changing `switch (character)` to
&gt; `switch (static_cast&lt;UChar&gt;(character))`?

Good idea!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1792350</commentid>
    <comment_count>26</comment_count>
    <who name="Michael Catanzaro">mcatanzaro</who>
    <bug_when>2021-09-10 08:29:20 -0700</bug_when>
    <thetext>Follow-up: bug #230154</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437349</attachid>
            <date>2021-09-04 18:29:31 -0700</date>
            <delta_ts>2021-09-04 18:46:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229892-20210904182930.patch</filename>
            <type>text/plain</type>
            <size>105833</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTM5NDE1YzNmNmI3NTVlOTY3YjE3MTMzYjU5ZTY5ZWM1NjNkOWNjLi5lZTI4YTY4MDA2YzM0YTcw
ZThkZTVmY2RkODE1MDdhYjNhNmU5YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMS0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5QbGFpblRpbWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTg5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0lTTzg2MDEuY3BwOgorICAgICAgICAo
SlNDOjpJU084NjAxOjppZEZvclRpbWVab25lTmFtZSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6
OnBhcnNlVGltZVNwZWMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZVRpbWVab25lTnVt
ZXJpY1VUQ09mZnNldCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlVGltZVpvbmVCcmFj
a2V0ZWRBbm5vdGF0aW9uKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lWm9uZSk6
CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlVGltZSk6CisgICAgICAgIChKU0M6OklTTzg2
MDE6OmZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
dGVtcG9yYWxUaW1lVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpQbGFpblRpbWU6OlBsYWluVGltZSk6CisgICAgICAgICogcnVu
dGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6dXRjVGltZVpvbmVJRFNsb3cpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjp1dGNUaW1lWm9u
ZUlEKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnBsYWluVGltZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bER1cmF0aW9uOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRp
b246OnRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsTm93LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6Y3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0b3IpOgorICAgICAgICAoSlND
OjpzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKToKKyAgICAgICAgKEpTQzo6dG9UZW1wb3JhbE92ZXJm
bG93KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bFBsYWluVGltZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpUZW1wb3Jh
bFBsYWluVGltZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp2aXNpdENoaWxkcmVuSW1w
bCk6CisgICAgICAgIChKU0M6OnRvUGxhaW5UaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQ
bGFpblRpbWU6OnRyeUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpiYWxhbmNlVGltZSk6
CisgICAgICAgIChKU0M6OnJvdW5kVGltZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5U
aW1lOjpyb3VuZCBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp0b1N0
cmluZyBjb25zdCk6CisgICAgICAgIChKU0M6OnByb3BlcnR5TmFtZSk6CisgICAgICAgIChKU0M6
OnRvVGVtcG9yYWxUaW1lUmVjb3JkKToKKyAgICAgICAgKEpTQzo6Y29uc3RyYWludFRpbWUpOgor
ICAgICAgICAoSlNDOjpyZWd1bGF0ZVRpbWUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWlu
VGltZTo6ZnJvbSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgu
CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OlRlbXBv
cmFsUGxhaW5UaW1lQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsVGltZVpvbmUuaC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6
OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaC4K
KyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbFRpbWVab25lOjpmcm9tKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZTo6
aWRGb3JUaW1lWm9uZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxU
aW1lWm9uZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA5
LTAzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
TWFrZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZSBjbG9iYmVyaXppbmcgcnVsZSBw
cmVjaXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWNhMDgzMTRiNjQ0
NTljNzhjYTAzODY0MjgxNTM3Zjg1MThkYmVlMC4uMzhjYjg0ZGEwNTZlMmI2YTZjMTNlZDlmOGQ3
MDUxOGVhZjA4OTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEz
LDYgKzExMyw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBy
dW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3Jh
bE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorICAgIHJ1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9y
LmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCBjZTVmNjI4OGFhYTI3Y2I3ODE3YmVhZTE0NDM3NmVhMjhhZmFlNjNmLi4yODg1YjUx
MDE3Y2MxYWUzZDg5MmVmM2M1ZjI3YTRiMTIzNzUzODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTc1LDYg
KzE3NSw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVj
dG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJPSkVDVF9E
SVIpL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1Rl
bXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1Rl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1w
b3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBv
cmFsVGltZVpvbmVQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS91Y2QvQ2FzZUZvbGRpbmcu
dHh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKaW5kZXggMWIwNTVjOTIyYzA5NGE1OTU4NDI2MDg0MWRjZWRmY2FhNzM3
NjUwMy4uMmFkMjEzMWM1ODY2OWJkMDU3NWM3YWY0MGE2YzQyN2E1OTRmNWMzZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdApAQCAtNzIsNiArNzIsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLgogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsRHVyYXRp
b25Qcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxU
aW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5sdXQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1VuaWNvZGVQ
YXR0ZXJuVGFibGVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggODgxOTI3ZTE3YmRhMjM4ZDdkYWNlZjFkNmViNWMzYzNiNzQ4YjM3Ny4uZWNiY2U2N2Y3
OGMwMDM0YzE2NmY1MGQ1ODkyYTZmMDhjNWRhNDBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE5Nyw2ICsxOTcsOCBAQCBPQkpFQ1RfTFVUX0hFQURF
UlMgPSBcCiAgICAgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9y
YWxOb3cubHV0LmggXAogICAgIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBUZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBU
ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmx1dC5oIFwKICAgICBXZWJBc3NlbWJseUNvbXBpbGVF
cnJvckNvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAz
MjhmOTJmNWIyZmIyMDVjODM4NzgyMjQxOWE1MDg0ZTBmYTFmN2NhLi44NDZlOWVlNzVmZWQwNTQ3
NTU2YzRiZmQ0YTI2MWQ4MGQ1OWFmYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBA
IC0xMDE5LDYgKzEwMTksOSBAQCBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5j
cHAKIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9y
YWxOb3cuY3BwCiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorcnVudGltZS9UZW1wb3JhbFBs
YWluVGltZS5jcHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKK3J1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBvcmFsVGlt
ZVpvbmUuY3BwCiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDcxNGFhMmZlYjIyNGZhNThm
MjdlZDU1NTFiNjdjOWYzMjY1Y2JkMjcuLmJkZWQ2OTkyZjdhOTY4ZTFjNzA2NDU4M2QzZTA4MTJm
Nzc0YzZlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtMTY5LDcgKzE2OSw5IEBACiAgICAgbWFjcm8obWF4aW11bUZyYWN0
aW9uRGlnaXRzKSBcCiAgICAgbWFjcm8obWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSBcCiAgICAg
bWFjcm8obWVzc2FnZSkgXAorICAgIG1hY3JvKG1pY3Jvc2Vjb25kKSBcCiAgICAgbWFjcm8obWlj
cm9zZWNvbmRzKSBcCisgICAgbWFjcm8obWlsbGlzZWNvbmQpIFwKICAgICBtYWNybyhtaWxsaXNl
Y29uZHMpIFwKICAgICBtYWNybyhtaW5pbXVtRnJhY3Rpb25EaWdpdHMpIFwKICAgICBtYWNybyht
aW5pbXVtSW50ZWdlckRpZ2l0cykgXApAQCAtMTgxLDYgKzE4Myw3IEBACiAgICAgbWFjcm8obW9u
dGhzKSBcCiAgICAgbWFjcm8obXVsdGlsaW5lKSBcCiAgICAgbWFjcm8obmFtZSkgXAorICAgIG1h
Y3JvKG5hbm9zZWNvbmQpIFwKICAgICBtYWNybyhuYW5vc2Vjb25kcykgXAogICAgIG1hY3JvKG5l
eHQpIFwKICAgICBtYWNybyhub3cpIFwKQEAgLTE5NCw2ICsxOTcsNyBAQAogICAgIG1hY3JvKG9y
aWdpbikgXAogICAgIG1hY3JvKG9zckV4aXRTaXRlcykgXAogICAgIG1hY3JvKG9zckV4aXRzKSBc
CisgICAgbWFjcm8ob3ZlcmZsb3cpIFwKICAgICBtYWNybyhwYXJzZSkgXAogICAgIG1hY3JvKHBh
cnNlSW50KSBcCiAgICAgbWFjcm8ocGFyc2VGbG9hdCkgXApAQCAtMjQ1LDYgKzI0OSw3IEBACiAg
ICAgbWFjcm8odXNhZ2UpIFwKICAgICBtYWNybyh2YWx1ZSkgXAogICAgIG1hY3JvKHZhbHVlT2Yp
IFwKKyAgICBtYWNybyh3ZWVrKSBcCiAgICAgbWFjcm8od2Vla2RheSkgXAogICAgIG1hY3JvKHdl
ZWtzKSBcCiAgICAgbWFjcm8od3JpdGFibGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSVNPODYwMS5jcHAKaW5kZXggOWU0MmFmYzEzM2MwN2UzZmI5MWI4OTc3NTZlM2ExNTUxMjNh
ZjkzNy4uYjFmYzE3NDY1NjQ3MmMyNjU3ZmJmMDNjYTk1MDBhYmI2OWU4ZGUxMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKQEAgLTI2LDYgKzI2LDcgQEAKICNp
bmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJU084NjAxLmgiCiAKKyNpbmNsdWRlICJJbnRs
T2JqZWN0LmgiCiAjaW5jbHVkZSAiUGFyc2VJbnQuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdQYXJzaW5nQnVmZmVyLmg+CiAKQEAgLTM4LDYgKzM5LDE2IEBAIHN0YXRpYyBjb25zdGV4cHIg
aW50NjRfdCBuc1BlclNlY29uZCA9IDEwMDBMTCAqIDEwMDAgKiAxMDAwOwogc3RhdGljIGNvbnN0
ZXhwciBpbnQ2NF90IG5zUGVyTWlsbGlzZWNvbmQgPSAxMDAwTEwgKiAxMDAwOwogc3RhdGljIGNv
bnN0ZXhwciBpbnQ2NF90IG5zUGVyTWljcm9zZWNvbmQgPSAxMDAwTEw7CiAKK3N0ZDo6b3B0aW9u
YWw8VGltZVpvbmVJRD4gaWRGb3JUaW1lWm9uZU5hbWUoU3RyaW5nVmlldyBzdHJpbmcpCit7Cisg
ICAgY29uc3QgYXV0byYgdGltZVpvbmVzID0gaW50bEF2YWlsYWJsZVRpbWVab25lcygpOworICAg
IGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHRpbWVab25lcy5zaXplKCk7ICsraW5k
ZXgpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodGltZVpvbmVzW2luZGV4
XSwgc3RyaW5nKSkKKyAgICAgICAgICAgIHJldHVybiBpbmRleDsKKyAgICB9CisgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKK30KKwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhclR5cGU+CiBpbnQzMl90
IHBhcnNlRGVjaW1hbEludDMyKGNvbnN0IENoYXJUeXBlKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBs
ZW5ndGgpCiB7CkBAIC0yNDQsMjggKzI1NSwxNyBAQCBzdGQ6Om9wdGlvbmFsPER1cmF0aW9uPiBw
YXJzZUR1cmF0aW9uKFN0cmluZ1ZpZXcgc3RyaW5nKQogfQogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBD
aGFyYWN0ZXJUeXBlPgotc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9u
ZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVm
ZmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGxhaW5UaW1lPiBwYXJzZVRpbWVTcGVjKFN0cmlu
Z1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKIHsKLSAgICAvLyBUaW1lWm9u
ZU51bWVyaWNVVENPZmZzZXQgOgotICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGlt
ZVpvbmVVVENPZmZzZXRIb3VyCi0gICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1l
Wm9uZVVUQ09mZnNldEhvdXIgOiBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZQotICAgIC8vICAgICBU
aW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIFRpbWVab25lVVRDT2Zm
c2V0TWludXRlCi0gICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lWm9uZVVUQ09m
ZnNldEhvdXIgOiBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZSA6IFRpbWVab25lVVRDT2Zmc2V0U2Vj
b25kIFRpbWVab25lVVRDT2Zmc2V0RnJhY3Rpb25bb3B0XQotICAgIC8vICAgICBUaW1lWm9uZVVU
Q09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIFRpbWVab25lVVRDT2Zmc2V0TWludXRl
IFRpbWVab25lVVRDT2Zmc2V0U2Vjb25kW29wdF0KLSAgICAvLwotICAgIC8vICBNYXhpbXVtIGFu
ZCBtaW5pbXVtIHZhbHVlcyBhcmUgwrEyMzo1OTo1OS45OTk5OTk5OTkgPSDCsTg2Mzk5OTk5OTk5
OTk5bnMsIHdoaWNoIGNhbiBiZSByZXByZXNlbnRlZCBieSBpbnQ2NF90IC8gZG91YmxlJ3MgaW50
ZWdlciBwYXJ0LgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJv
ZC1UaW1lU3BlYworICAgIC8vIFRpbWVTcGVjIDoKKyAgICAvLyAgICAgVGltZUhvdXIKKyAgICAv
LyAgICAgVGltZUhvdXIgOiBUaW1lTWludXRlCisgICAgLy8gICAgIFRpbWVIb3VyIFRpbWVNaW51
dGUKKyAgICAvLyAgICAgVGltZUhvdXIgOiBUaW1lTWludXRlIDogVGltZVNlY29uZCBUaW1lRnJh
Y3Rpb25bb3B0XQorICAgIC8vICAgICBUaW1lSG91ciBUaW1lTWludXRlIFRpbWVTZWNvbmQgVGlt
ZUZyYWN0aW9uW29wdF0KIAotICAgIC8vIHNpZ24gYW5kIGhvdXIuCi0gICAgaWYgKGJ1ZmZlci5s
ZW5ndGhSZW1haW5pbmcoKSA8IDMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAg
ICBpbnQ2NF90IGZhY3RvciA9IDE7Ci0gICAgaWYgKCpidWZmZXIgPT0gJysnKQotICAgICAgICBi
dWZmZXIuYWR2YW5jZSgpOwotICAgIGVsc2UgaWYgKCpidWZmZXIgPT0gJy0nIHx8ICpidWZmZXIg
PT0gMHgyMjEyKSB7Ci0gICAgICAgIGZhY3RvciA9IC0xOwotICAgICAgICBidWZmZXIuYWR2YW5j
ZSgpOwotICAgIH0gZWxzZQorICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCAyKQog
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaW50NjRfdCBob3VyID0gMDsKQEAg
LTI4NCwxMyArMjg0LDE0IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGlt
ZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAgICAgIHJldHVy
biAobnNQZXJIb3VyICogaG91cikgKiBmYWN0b3I7CisgICAgICAgIHJldHVybiBQbGFpblRpbWUo
aG91ciwgMCwgMCwgMCwgMCwgMCk7CiAKICAgICBib29sIHNwbGl0QnlDb2xvbiA9IGZhbHNlOwog
ICAgIGlmICgqYnVmZmVyID09ICc6JykgewotICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwogICAg
ICAgICBzcGxpdEJ5Q29sb24gPSB0cnVlOwotICAgIH0KKyAgICAgICAgYnVmZmVyLmFkdmFuY2Uo
KTsKKyAgICB9IGVsc2UgaWYgKCEoKmJ1ZmZlciA+PSAnMCcgJiYgKmJ1ZmZlciA8PSAnNScpKQor
ICAgICAgICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIDAsIDAsIDAsIDAsIDApOwogCiAgICAgaW50
NjRfdCBtaW51dGUgPSAwOwogICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCAyKQpA
QCAtMzA4LDE0ICszMDksMTUgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VU
aW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nUGFyc2luZ0J1ZmZlcjwKICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0
dXJuIChuc1BlckhvdXIgKiBob3VyICsgbnNQZXJNaW51dGUgKiBtaW51dGUpICogZmFjdG9yOwor
ICAgICAgICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgMCwgMCwgMCwgMCk7CiAKICAg
ICBpZiAoc3BsaXRCeUNvbG9uKSB7CiAgICAgICAgIGlmICgqYnVmZmVyID09ICc6JykKICAgICAg
ICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci0gICAgfQorICAgICAgICAgICAgcmV0dXJuIFBsYWluVGltZShob3Vy
LCBtaW51dGUsIDAsIDAsIDAsIDApOworICAgIH0gZWxzZSBpZiAoISgqYnVmZmVyID49ICcwJyAm
JiAqYnVmZmVyIDw9ICc1JykpCisgICAgICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwgbWludXRl
LCAwLCAwLCAwLCAwKTsKIAogICAgIGludDY0X3Qgc2Vjb25kID0gMDsKICAgICBpZiAoYnVmZmVy
Lmxlbmd0aFJlbWFpbmluZygpIDwgMikKQEAgLTMyNyw0MiArMzI5LDI3MCBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChTdHJpbmdQ
YXJzaW5nQnVmZmVyPAogICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChzZWNvbmRTZWNvbmRDaGFy
YWN0ZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgc2Vjb25k
ID0gKHNlY29uZFNlY29uZENoYXJhY3RlciAtICcwJykgKyAxMCAqIChmaXJzdFNlY29uZENoYXJh
Y3RlciAtICcwJyk7Ci0gICAgICAgIEFTU0VSVChtaW51dGUgPCA2MCk7CisgICAgICAgIEFTU0VS
VChzZWNvbmQgPCA2MCk7CiAgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CiAgICAgfSBlbHNlCiAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0g
ICAgICAgIHJldHVybiAobnNQZXJIb3VyICogaG91ciArIG5zUGVyTWludXRlICogbWludXRlICsg
bnNQZXJTZWNvbmQgKiBzZWNvbmQpICogZmFjdG9yOworICAgICAgICByZXR1cm4gUGxhaW5UaW1l
KGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCAwLCAwLCAwKTsKIAogICAgIGlmICgqYnVmZmVyICE9ICcu
JyAmJiAqYnVmZmVyICE9ICcsJykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgMCwgMCwgMCk7CiAgICAg
YnVmZmVyLmFkdmFuY2UoKTsKIAogICAgIHVuc2lnbmVkIGRpZ2l0cyA9IDA7Ci0gICAgd2hpbGUg
KGRpZ2l0cyA8IGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSAmJiBpc0FTQ0lJRGlnaXQoYnVmZmVy
W2RpZ2l0c10pKQotICAgICAgICBkaWdpdHMrKzsKLSAgICBpZiAoIWRpZ2l0cyB8fCBkaWdpdHMg
PiA5KQorICAgIHVuc2lnbmVkIG1heENvdW50ID0gc3RkOjptaW48dW5zaWduZWQ+KGJ1ZmZlci5s
ZW5ndGhSZW1haW5pbmcoKSwgOSk7CisgICAgZm9yICg7IGRpZ2l0cyA8IG1heENvdW50OyArK2Rp
Z2l0cykgeworICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChidWZmZXJbZGlnaXRzXSkpCisgICAg
ICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKCFkaWdpdHMpCiAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8TENoYXIsIDk+IHBhZGRlZCg5LCAnMCcpOwogICAg
IGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaWdpdHM7ICsraSkKICAgICAgICAgcGFkZGVkW2ld
ID0gYnVmZmVyW2ldOwogICAgIGJ1ZmZlci5hZHZhbmNlQnkoZGlnaXRzKTsKLSAgICBpZiAoIWJ1
ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaW50NjRf
dCBtaWxsaXNlY29uZCA9IHBhcnNlRGVjaW1hbEludDMyKHBhZGRlZC5kYXRhKCksIDMpOwogICAg
IGludDY0X3QgbWljcm9zZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQzMihwYWRkZWQuZGF0YSgpICsg
MywgMyk7CiAgICAgaW50NjRfdCBuYW5vc2Vjb25kID0gcGFyc2VEZWNpbWFsSW50MzIocGFkZGVk
LmRhdGEoKSArIDYsIDMpOwogCisgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIHNl
Y29uZCwgbWlsbGlzZWNvbmQsIG1pY3Jvc2Vjb25kLCBuYW5vc2Vjb25kKTsKK30KKwordGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+
IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFj
dGVyVHlwZT4mIGJ1ZmZlcikKK3sKKyAgICAvLyBUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQgOgor
ICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyCisg
ICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lWm9uZVVUQ09mZnNldEhvdXIgOiBU
aW1lWm9uZVVUQ09mZnNldE1pbnV0ZQorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24g
VGltZVpvbmVVVENPZmZzZXRIb3VyIFRpbWVab25lVVRDT2Zmc2V0TWludXRlCisgICAgLy8gICAg
IFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lWm9uZVVUQ09mZnNldEhvdXIgOiBUaW1lWm9uZVVU
Q09mZnNldE1pbnV0ZSA6IFRpbWVab25lVVRDT2Zmc2V0U2Vjb25kIFRpbWVab25lVVRDT2Zmc2V0
RnJhY3Rpb25bb3B0XQorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVV
VENPZmZzZXRIb3VyIFRpbWVab25lVVRDT2Zmc2V0TWludXRlIFRpbWVab25lVVRDT2Zmc2V0U2Vj
b25kIFRpbWVab25lVVRDT2Zmc2V0RnJhY3Rpb25bb3B0XQorICAgIC8vCisgICAgLy8gIFRoaXMg
aXMgdGhlIHNhbWUgdG8KKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVTcGVj
CisgICAgLy8KKyAgICAvLyAgTWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMgYXJlIMKxMjM6NTk6
NTkuOTk5OTk5OTk5ID0gwrE4NjM5OTk5OTk5OTk5OW5zLCB3aGljaCBjYW4gYmUgcmVwcmVzZW50
ZWQgYnkgaW50NjRfdCAvIGRvdWJsZSdzIGludGVnZXIgcGFydC4KKworICAgIC8vIHNpZ24gYW5k
IGhvdXIuCisgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDMpCisgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpbnQ2NF90IGZhY3RvciA9IDE7CisgICAgaWYgKCpi
dWZmZXIgPT0gJysnKQorICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgIGVsc2UgaWYgKCpi
dWZmZXIgPT0gJy0nIHx8ICpidWZmZXIgPT0gMHgyMjEyKSB7CisgICAgICAgIGZhY3RvciA9IC0x
OworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworCisgICAgYXV0byBwbGFpblRpbWUgPSBwYXJzZVRpbWVTcGVjKGJ1ZmZl
cik7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBpbnQ2NF90IGhvdXIgPSBwbGFpblRpbWUtPmhvdXIoKTsKKyAgICBpbnQ2NF90IG1pbnV0
ZSA9IHBsYWluVGltZS0+bWludXRlKCk7CisgICAgaW50NjRfdCBzZWNvbmQgPSBwbGFpblRpbWUt
PnNlY29uZCgpOworICAgIGludDY0X3QgbWlsbGlzZWNvbmQgPSBwbGFpblRpbWUtPm1pbGxpc2Vj
b25kKCk7CisgICAgaW50NjRfdCBtaWNyb3NlY29uZCA9IHBsYWluVGltZS0+bWljcm9zZWNvbmQo
KTsKKyAgICBpbnQ2NF90IG5hbm9zZWNvbmQgPSBwbGFpblRpbWUtPm5hbm9zZWNvbmQoKTsKKwog
ICAgIHJldHVybiAobnNQZXJIb3VyICogaG91ciArIG5zUGVyTWludXRlICogbWludXRlICsgbnNQ
ZXJTZWNvbmQgKiBzZWNvbmQgKyBuc1Blck1pbGxpc2Vjb25kICogbWlsbGlzZWNvbmQgKyBuc1Bl
ck1pY3Jvc2Vjb25kICogbWljcm9zZWNvbmQgKyBuYW5vc2Vjb25kKSAqIGZhY3RvcjsKIH0KIAog
c3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChTdHJp
bmdWaWV3IHN0cmluZykKIHsKICAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0
cmluZywgW10oYXV0byBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gewotICAgICAg
ICByZXR1cm4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoYnVmZmVyKTsKKyAgICAgICAg
YXV0byByZXN1bHQgPSBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChidWZmZXIpOworICAg
ICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgIGlmICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxUaW1lWm9uZT4gcGFyc2VUaW1lWm9uZUJy
YWNrZXRlZEFubm90YXRpb24oU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVm
ZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1U
aW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICAvLyBUaW1lWm9uZUJyYWNrZXRlZEFubm90
YXRpb24gOgorICAgIC8vICAgICBbIFRpbWVab25lQnJhY2tldGVkTmFtZSBdCisgICAgLy8KKyAg
ICAvLyBUaW1lWm9uZUJyYWNrZXRlZE5hbWUgOgorICAgIC8vICAgICBUaW1lWm9uZUlBTkFOYW1l
CisgICAgLy8gICAgIEV0Yy9HTVQgQVNDSUlTaWduIEhvdXIKKyAgICAvLyAgICAgVGltZVpvbmVV
VENPZmZzZXROYW1lCisKKyAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgMykKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlmICgqYnVmZmVyICE9ICdbJykKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBidWZmZXIuYWR2YW5jZSgpOworCisgICAg
c3dpdGNoICgqYnVmZmVyKSB7CisgICAgY2FzZSAnKyc6CisgICAgY2FzZSAnLSc6CisgICAgY2Fz
ZSAweDIyMTI6IHsKKyAgICAgICAgLy8gVGltZVpvbmVVVENPZmZzZXROYW1lIGlzIHRoZSBzYW1l
IHRvIFRpbWVab25lTnVtZXJpY1VUQ09mZnNldC4KKyAgICAgICAgYXV0byBvZmZzZXQgPSBwYXJz
ZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChidWZmZXIpOworICAgICAgICBpZiAoIW9mZnNldCkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmIChidWZmZXIuYXRF
bmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmICgqYnVm
ZmVyICE9ICddJykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGJ1
ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIHJldHVybiBvZmZzZXQudmFsdWUoKTsKKyAgICB9Cisg
ICAgY2FzZSAnRSc6IHsKKyAgICAgICAgLy8gIkV0Yy9HTVQrMjAiIGFuZCAiXSIgPT4gbGVuZ3Ro
IGlzIDExLgorICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpID49IDExKSB7Cisg
ICAgICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdFJyAmJiBidWZmZXJbMV0gPT0gJ3QnICYmIGJ1
ZmZlclsyXSA9PSAnYycgJiYgYnVmZmVyWzNdID09ICcvJyAmJiBidWZmZXJbNF0gPT0gJ0cnICYm
IGJ1ZmZlcls1XSA9PSAnTScgJiYgYnVmZmVyWzZdID09ICdUJykgeworICAgICAgICAgICAgICAg
IGF1dG8gc2lnbkNoYXJhY3RlciA9IGJ1ZmZlcls3XTsKKyAgICAgICAgICAgICAgICAvLyBOb3Qg
aW5jbHVkaW5nIDB4MjIxMiBzaW5jZSBpdCBpcyBBU0NJSVNpZ24uCisgICAgICAgICAgICAgICAg
aWYgKHNpZ25DaGFyYWN0ZXIgPT0gJysnIHx8IHNpZ25DaGFyYWN0ZXIgPT0gJy0nKSB7CisgICAg
ICAgICAgICAgICAgICAgIGludDY0X3QgZmFjdG9yID0gc2lnbkNoYXJhY3RlciA9PSAnKycgPyAx
IDogLTE7CisgICAgICAgICAgICAgICAgICAgIGludDY0X3QgaG91ciA9IDA7CisgICAgICAgICAg
ICAgICAgICAgIGF1dG8gZmlyc3RIb3VyQ2hhcmFjdGVyID0gYnVmZmVyWzhdOworICAgICAgICAg
ICAgICAgICAgICBpZiAoZmlyc3RIb3VyQ2hhcmFjdGVyID49ICcwJyAmJiBmaXJzdEhvdXJDaGFy
YWN0ZXIgPD0gJzInKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHNlY29uZEhvdXJD
aGFyYWN0ZXIgPSBidWZmZXJbOV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNBU0NJ
SURpZ2l0KHNlY29uZEhvdXJDaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaG91ciA9IChzZWNvbmRIb3VyQ2hhcmFjdGVyIC0gJzAnKSArIDEwICogKGZpcnN0SG91ckNo
YXJhY3RlciAtICcwJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvdXIgPCAy
NCAmJiBidWZmZXJbMTBdID09ICddJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBidWZmZXIuYWR2YW5jZUJ5KDExKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIG5zUGVySG91ciAqIGhvdXIgKiBmYWN0b3I7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIEZB
TExUSFJPVUdIOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIHVuc2lnbmVkIGluZGV4
ID0gMDsKKyAgICAgICAgZm9yICg7IGluZGV4IDwgYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpOyAr
K2luZGV4KSB7CisgICAgICAgICAgICBpZiAoYnVmZmVyW2luZGV4XSA9PSAnXScpCisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgaWYgKCFpbmRleCkKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIFN0cmluZ1ZpZXcgdGltZVpvbmVTdHJp
bmcgPSBidWZmZXIuc3RyaW5nVmlld09mQ2hhcmFjdGVyc1JlbWFpbmluZygpLmxlZnQoaW5kZXgp
OworICAgICAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkZW50aWZpZXIgPSBpZEZvclRp
bWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7CisgICAgICAgIGlmICghaWRlbnRpZmllcikKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlQnko
aW5kZXgpOworICAgICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICBpZiAoKmJ1ZmZlciAhPSAnXScpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBy
ZXR1cm4gaWRlbnRpZmllci52YWx1ZSgpOworICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5
cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFsPFRpbWVab25lPiBwYXJzZVRpbWVa
b25lKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3sKKyAgICBp
ZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgc3dp
dGNoICgqYnVmZmVyKSB7CisgICAgLy8gVVRDRGVzaWduYXRvcgorICAgIC8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1VVENEZXNpZ25hdG9yCisgICAgY2FzZSAneic6
CisgICAgY2FzZSAnWic6IHsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgaWYg
KGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHV0Y1RpbWVab25lSUQoKTsKKyAg
ICAgICAgaWYgKCpidWZmZXIgPT0gJ1snKSB7CisgICAgICAgICAgICBhdXRvIHRpbWVab25lID0g
cGFyc2VUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24oYnVmZmVyKTsKKyAgICAgICAgICAgIGlm
ICghdGltZVpvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgICAgIHJldHVybiB0aW1lWm9uZS52YWx1ZSgpOworICAgICAgICB9CisgICAgICAgIHJldHVy
biB1dGNUaW1lWm9uZUlEKCk7CisgICAgfQorICAgIC8vIFRpbWVab25lVVRDT2Zmc2V0U2lnbgor
ICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1UaW1lWm9uZVVU
Q09mZnNldFNpZ24KKyAgICBjYXNlICcrJzoKKyAgICBjYXNlICctJzoKKyAgICBjYXNlIDB4MjIx
MjogeworICAgICAgICBhdXRvIG9mZnNldCA9IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0
KGJ1ZmZlcik7CisgICAgICAgIGlmICghb2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IG9mZnNldC52YWx1ZSgpOworICAgICAgICBpZiAoKmJ1ZmZlciA9PSAnWycpIHsKKyAgICAgICAg
ICAgIGF1dG8gdGltZVpvbmUgPSBwYXJzZVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbihidWZm
ZXIpOworICAgICAgICAgICAgaWYgKCF0aW1lWm9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIHRpbWVab25lLnZhbHVlKCk7CisgICAg
ICAgIH0KKyAgICAgICAgcmV0dXJuIG9mZnNldC52YWx1ZSgpOworICAgIH0KKyAgICAvLyBUaW1l
Wm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwt
dGVtcG9yYWwvI3Byb2QtVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uCisgICAgY2FzZSAnWyc6
IHsKKyAgICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0
aW9uKGJ1ZmZlcik7CisgICAgICAgIGlmICghdGltZVpvbmUpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gdGltZVpvbmUudmFsdWUoKTsKKyAgICB9Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8
UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lPj4+IHBhcnNlVGltZShTdHJpbmdQYXJz
aW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAgLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWUKKyAgICAvLyBUaW1lIDoKKyAgICAvLyAg
ICAgVGltZVNwZWMgVGltZVpvbmVbb3B0XQorICAgIGF1dG8gcGxhaW5UaW1lID0gcGFyc2VUaW1l
U3BlYyhidWZmZXIpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgIGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6dHVw
bGUgeyBwbGFpblRpbWUudmFsdWUoKSwgc3RkOjpudWxsb3B0IH07CisgICAgc3dpdGNoICgqYnVm
ZmVyKSB7CisgICAgLy8gVVRDRGVzaWduYXRvcgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jcHJvZC1VVENEZXNpZ25hdG9yCisgICAgY2FzZSAneic6CisgICAgY2Fz
ZSAnWic6CisgICAgLy8gVGltZVpvbmVVVENPZmZzZXRTaWduCisgICAgLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25lVVRDT2Zmc2V0U2lnbgorICAgIGNh
c2UgJysnOgorICAgIGNhc2UgJy0nOgorICAgIGNhc2UgMHgyMjEyOgorICAgIC8vIFRpbWVab25l
QnJhY2tldGVkQW5ub3RhdGlvbgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1w
b3JhbC8jcHJvZC1UaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICBjYXNlICdbJzogewor
ICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VUaW1lWm9uZShidWZmZXIpOworICAgICAgICBp
ZiAoIXRpbWVab25lKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpblRpbWUudmFsdWUoKSwgdGltZVpvbmUgfTsKKyAgICB9
CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpblRpbWUudmFs
dWUoKSwgc3RkOjpudWxsb3B0IH07CisgICAgfQorfQorCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVw
bGU8UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lPj4+IHBhcnNlVGltZShTdHJpbmdW
aWV3IHN0cmluZykKK3sKKyAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmlu
ZywgW10oYXV0byBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpblRpbWUs
IHN0ZDo6b3B0aW9uYWw8VGltZVpvbmU+Pj4geworICAgICAgICBhdXRvIHJlc3VsdCA9IHBhcnNl
VGltZShidWZmZXIpOworICAgICAgICBpZiAoIXJlc3VsdCkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIGlmICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0pOwogfQog
CkBAIC0zODIsMTMgKzYxMiwxOSBAQCBTdHJpbmcgZm9ybWF0VGltZVpvbmVPZmZzZXRTdHJpbmco
aW50NjRfdCBvZmZzZXQpCiAgICAgaWYgKG5hbm9zZWNvbmRzKSB7CiAgICAgICAgIC8vIFNpbmNl
IG5zUGVyU2Vjb25kIGlzIDEwMDAwMDAwMDAsIHN0cmluZ2lmaWVkIG5hbm9zZWNvbmRzIHRha2Vz
IGF0IG1vc3QgOSBjaGFyYWN0ZXJzICg5OTk5OTk5OTkpLgogICAgICAgICBhdXRvIGZyYWN0aW9u
ID0gV1RGOjpudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwgOT4+KG5hbm9zZWNv
bmRzKTsKLSAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgICAgICB1bnNpZ25lZCBwYWRk
aW5nTGVuZ3RoID0gOSAtIGZyYWN0aW9uLnNpemUoKTsKLSAgICAgICAgZm9yICg7IGluZGV4IDwg
ZnJhY3Rpb24uc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgICAgICBpZiAoZnJhY3Rpb25baW5k
ZXhdID09ICcwJykKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBmcmFjdGlvbi5zaXplKCk7Cisg
ICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZhbGlkTGVuZ3RoOworICAgICAgICB3aGls
ZSAoaW5kZXgtLSkgeworICAgICAgICAgICAgaWYgKGZyYWN0aW9uW2luZGV4XSAhPSAnMCcpIHsK
KyAgICAgICAgICAgICAgICB2YWxpZExlbmd0aCA9IGluZGV4ICsgMTsKICAgICAgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmcmFjdGlvbi5yZXNp
emUoaW5kZXgpOworICAgICAgICBpZiAodmFsaWRMZW5ndGgpCisgICAgICAgICAgICBmcmFjdGlv
bi5yZXNpemUodmFsaWRMZW5ndGgudmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAg
IGZyYWN0aW9uLmNsZWFyKCk7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG5lZ2F0aXZlID8g
Jy0nIDogJysnLCBwYWQoJzAnLCAyLCBob3VycyksICc6JywgcGFkKCcwJywgMiwgbWludXRlcyks
ICc6JywgcGFkKCcwJywgMiwgc2Vjb25kcyksICcuJywgcGFkKCcwJywgcGFkZGluZ0xlbmd0aCwg
ZW1wdHlTdHJpbmcoKSksIGZyYWN0aW9uKTsKICAgICB9CiAgICAgaWYgKHNlY29uZHMpCkBAIC0z
OTYsNSArNjMyLDQwIEBAIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNldFN0cmluZyhpbnQ2NF90
IG9mZnNldCkKICAgICByZXR1cm4gbWFrZVN0cmluZyhuZWdhdGl2ZSA/ICctJyA6ICcrJywgcGFk
KCcwJywgMiwgaG91cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpKTsKIH0KIAorU3RyaW5n
IHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGltZSBwbGFpblRpbWUsIHN0ZDo6dHVwbGU8UHJl
Y2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uKQoreworICAgIGF1dG8gW3ByZWNpc2lvblR5cGUs
IHByZWNpc2lvblZhbHVlXSA9IHByZWNpc2lvbjsKKyAgICBBU1NFUlQocHJlY2lzaW9uVHlwZSA9
PSBQcmVjaXNpb246OkF1dG8gfHwgcHJlY2lzaW9uVmFsdWUgPCAxMCk7CisgICAgaWYgKHByZWNp
c2lvblR5cGUgPT0gUHJlY2lzaW9uOjpNaW51dGUpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5n
KHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGlt
ZS5taW51dGUoKSkpOworCisgICAgaW50NjRfdCBmcmFjdGlvbk5hbm9zZWNvbmRzID0gc3RhdGlj
X2Nhc3Q8aW50NjRfdD4ocGxhaW5UaW1lLm1pbGxpc2Vjb25kKCkpICogbnNQZXJNaWxsaXNlY29u
ZCArIHN0YXRpY19jYXN0PGludDY0X3Q+KHBsYWluVGltZS5taWNyb3NlY29uZCgpKSAqIG5zUGVy
TWljcm9zZWNvbmQgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihwbGFpblRpbWUubmFub3NlY29uZCgp
KTsKKyAgICBpZiAocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8pIHsKKyAgICAgICAg
aWYgKCFmcmFjdGlvbk5hbm9zZWNvbmRzKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmco
cGFkKCcwJywgMiwgcGxhaW5UaW1lLmhvdXIoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1l
Lm1pbnV0ZSgpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUuc2Vjb25kKCkpKTsKKyAgICAg
ICAgYXV0byBmcmFjdGlvbiA9IFdURjo6bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TENo
YXIsIDk+PihmcmFjdGlvbk5hbm9zZWNvbmRzKTsKKyAgICAgICAgdW5zaWduZWQgcGFkZGluZ0xl
bmd0aCA9IDkgLSBmcmFjdGlvbi5zaXplKCk7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gZnJh
Y3Rpb24uc2l6ZSgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2YWxpZExlbmd0
aDsKKyAgICAgICAgd2hpbGUgKGluZGV4LS0pIHsKKyAgICAgICAgICAgIGlmIChmcmFjdGlvbltp
bmRleF0gIT0gJzAnKSB7CisgICAgICAgICAgICAgICAgdmFsaWRMZW5ndGggPSBpbmRleCArIDE7
CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKHZhbGlkTGVuZ3RoKQorICAgICAgICAgICAgZnJhY3Rpb24ucmVzaXplKHZhbGlkTGVu
Z3RoLnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmcmFjdGlvbi5jbGVhcigp
OworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBwbGFpblRpbWUuaG91cigp
KSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUubWludXRlKCkpLCAnOicsIHBhZCgnMCcsIDIs
IHBsYWluVGltZS5zZWNvbmQoKSksICcuJywgcGFkKCcwJywgcGFkZGluZ0xlbmd0aCwgZW1wdHlT
dHJpbmcoKSksIGZyYWN0aW9uKTsKKyAgICB9CisgICAgaWYgKCFwcmVjaXNpb25WYWx1ZSkKKyAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgMiwgcGxhaW5UaW1lLmhvdXIoKSksICc6
JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLm1pbnV0ZSgpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFp
blRpbWUuc2Vjb25kKCkpKTsKKyAgICBhdXRvIGZyYWN0aW9uID0gV1RGOjpudW1iZXJUb1N0cmlu
Z1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwgOT4+KGZyYWN0aW9uTmFub3NlY29uZHMpOworICAgIHVu
c2lnbmVkIHBhZGRpbmdMZW5ndGggPSA5IC0gZnJhY3Rpb24uc2l6ZSgpOworICAgIGZyYWN0aW9u
LnJlc2l6ZShwcmVjaXNpb25WYWx1ZSk7CisgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywg
MiwgcGxhaW5UaW1lLmhvdXIoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLm1pbnV0ZSgp
KSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUuc2Vjb25kKCkpLCAnLicsIHBhZCgnMCcsIHBh
ZGRpbmdMZW5ndGgsIGVtcHR5U3RyaW5nKCkpLCBmcmFjdGlvbik7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIElTTzg2MDEKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSVNPODYwMS5oCmluZGV4IDY3Njg5ZDFjMjQ1YWZlZTJhYzI2OTU5YzI5NzBkZDQ5NjNhZTMw
MDIuLmY2YmMxZGI5YWRiNDg3NzUyNzNmYjJhMmE1Y2FiNTY4ODQzMTJlZjEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdt
YSBvbmNlCiAKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxPYmpl
Y3QuaCIKIAogbmFtZXNwYWNlIEpTQyB7CkBAIC00OCw5ICs0OSw0MiBAQCBzdHJ1Y3QgRHVyYXRp
b24gewogICAgIHN0ZDo6YXJyYXk8ZG91YmxlLCBudW1iZXJPZlRlbXBvcmFsVW5pdHM+IGRhdGEg
eyB9OwogfTsKIAorY2xhc3MgUGxhaW5UaW1lIHsKK3B1YmxpYzoKKyAgICBQbGFpblRpbWUoKSA9
IGRlZmF1bHQ7CisgICAgUGxhaW5UaW1lKHVuc2lnbmVkIGhvdXIsIHVuc2lnbmVkIG1pbnV0ZSwg
dW5zaWduZWQgc2Vjb25kLCB1bnNpZ25lZCBtaWxsaXNlY29uZCwgdW5zaWduZWQgbWljcm9zZWNv
bmQsIHVuc2lnbmVkIG5hbm9zZWNvbmQpCisgICAgICAgIDogbV9ob3VyKGhvdXIpCisgICAgICAg
ICwgbV9taW51dGUobWludXRlKQorICAgICAgICAsIG1fc2Vjb25kKHNlY29uZCkKKyAgICAgICAg
LCBtX21pbGxpc2Vjb25kKG1pbGxpc2Vjb25kKQorICAgICAgICAsIG1fbWljcm9zZWNvbmQobWlj
cm9zZWNvbmQpCisgICAgICAgICwgbV9uYW5vc2Vjb25kKG5hbm9zZWNvbmQpCisgICAgeyB9CisK
KyNkZWZpbmUgSlNDX0RFRklORV9JU084NjAxX1BMQUlOX1RJTUVfRklFTEQobmFtZSwgY2FwaXRh
bGl6ZWROYW1lKSBcCisgICAgdW5zaWduZWQgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fIyNuYW1l
OyB9IFwKKyAgICB2b2lkIHNldCMjY2FwaXRhbGl6ZWROYW1lKHVuc2lnbmVkIHZhbHVlKSB7IG1f
IyNuYW1lID0gdmFsdWU7IH0KKyAgICBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhKU0Nf
REVGSU5FX0lTTzg2MDFfUExBSU5fVElNRV9GSUVMRCk7CisjdW5kZWYgSlNDX0RFRklORV9JU084
NjAxX0RVUkFUSU9OX0ZJRUxECisKK3ByaXZhdGU6CisgICAgdWludDhfdCBtX2hvdXIgeyAwIH07
CisgICAgdWludDhfdCBtX21pbnV0ZSB7IDAgfTsKKyAgICB1aW50OF90IG1fc2Vjb25kIHsgMCB9
OworICAgIHVpbnQxNl90IG1fbWlsbGlzZWNvbmQgeyAwIH07CisgICAgdWludDE2X3QgbV9taWNy
b3NlY29uZCB7IDAgfTsKKyAgICB1aW50MTZfdCBtX25hbm9zZWNvbmQgeyAwIH07Cit9OworCit1
c2luZyBUaW1lWm9uZSA9IFZhcmlhbnQ8VGltZVpvbmVJRCwgaW50NjRfdD47CisKKy8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc3VwLWlzdmFsaWR0aW1lem9uZW5hbWUKK3N0
ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRGb3JUaW1lWm9uZU5hbWUoU3RyaW5nVmlldyk7CiBz
dGQ6Om9wdGlvbmFsPER1cmF0aW9uPiBwYXJzZUR1cmF0aW9uKFN0cmluZ1ZpZXcpOwogc3RkOjpv
cHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChTdHJpbmdWaWV3
KTsKK3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpblRpbWUsIHN0ZDo6b3B0aW9uYWw8VGlt
ZVpvbmU+Pj4gcGFyc2VUaW1lKFN0cmluZ1ZpZXcpOwogU3RyaW5nIGZvcm1hdFRpbWVab25lT2Zm
c2V0U3RyaW5nKGludDY0X3QpOworU3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGlt
ZSwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24pOwogCiB9IC8vIG5h
bWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggOGQ4ZTk2ZTc3NTVkNThhYjg0MmUzNjBj
ZmFmYjE5ZDAwZmUyNjI3MC4uNzk3NTliYzVmYTQ0ZmUyOTc3MjYwNWY1NmE1Y2E5YjA4OTU2MzFj
MyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAg
LTE4MzksNiArMTgzOSwyMyBAQCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgaW50bEF2YWlsYWJsZVRp
bWVab25lcygpCiAgICAgcmV0dXJuIGF2YWlsYWJsZVRpbWVab25lczsKIH0KIAorVGltZVpvbmVJ
RCB1dGNUaW1lWm9uZUlEU3RvcmFnZSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8VGltZVpvbmVJRD46
Om1heCgpIH07CitUaW1lWm9uZUlEIHV0Y1RpbWVab25lSURTbG93KCkKK3sKKyAgICBzdGF0aWMg
c3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlh
bGl6ZU9uY2UsIFsmXSB7CisgICAgICAgIGNvbnN0IGF1dG8mIHRpbWVab25lcyA9IGludGxBdmFp
bGFibGVUaW1lWm9uZXMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4
IDwgdGltZVpvbmVzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICAgICAgaWYgKHRpbWVab25l
c1tpbmRleF0gPT0gIlVUQyJfcykgeworICAgICAgICAgICAgICAgIHV0Y1RpbWVab25lSURTdG9y
YWdlID0gaW5kZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAg
ICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSk7Cisg
ICAgcmV0dXJuIHV0Y1RpbWVab25lSURTdG9yYWdlOworfQorCiAvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtaW50bC1lbnVtZXJhdGlvbi8jc2VjLWF2YWlsYWJsZXRpbWV6b25lcwogc3RhdGlj
IEpTQXJyYXkqIGF2YWlsYWJsZVRpbWVab25lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IDk2
ZDIxODU1YzljYTZmM2UzMTk2Yjc0ZWEwMmQwZWQ1M2QzOWMxMzAuLmIzZTE1ZDMwYmE5M2I1YjIw
NWI1NzNlMDg5ZWJiYmYzOWNlMjExM2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmgKQEAgLTExNyw2ICsxMTcsMTYgQEAgaW5saW5lIENhbGVuZGFySUQgaXNv
ODYwMUNhbGVuZGFySUQoKQogdXNpbmcgVGltZVpvbmVJRCA9IHVuc2lnbmVkOwogY29uc3QgVmVj
dG9yPFN0cmluZz4mIGludGxBdmFpbGFibGVUaW1lWm9uZXMoKTsKIAorZXh0ZXJuIFRpbWVab25l
SUQgdXRjVGltZVpvbmVJRFN0b3JhZ2U7CitUaW1lWm9uZUlEIHV0Y1RpbWVab25lSURTbG93KCk7
CitpbmxpbmUgQ2FsZW5kYXJJRCB1dGNUaW1lWm9uZUlEKCkKK3sKKyAgICB1bnNpZ25lZCB2YWx1
ZSA9IHV0Y1RpbWVab25lSURTdG9yYWdlOworICAgIGlmICh2YWx1ZSA9PSBzdGQ6Om51bWVyaWNf
bGltaXRzPFRpbWVab25lSUQ+OjptYXgoKSkKKyAgICAgICAgcmV0dXJuIHV0Y1RpbWVab25lSURT
bG93KCk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiBUcmlTdGF0ZSBpbnRsQm9vbGVhbk9wdGlv
bihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUpOwogU3Ry
aW5nIGludGxTdHJpbmdPcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywg
UHJvcGVydHlOYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IHZhbHVlcywg
Y29uc3QgY2hhciogbm90Rm91bmQsIGNvbnN0IGNoYXIqIGZhbGxiYWNrKTsKIHVuc2lnbmVkIGlu
dGxOdW1iZXJPcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVy
dHlOYW1lLCB1bnNpZ25lZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVtLCB1bnNpZ25lZCBmYWxs
YmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2Jh
bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5jcHAKaW5kZXggYjJmZGY0NjQzNmU4Nzc2MDQ5MDY0OGFmZDAxNDFjODIyMzYxNDk1MS4uNmRh
NDU4ODM0MWEwMTZlOTFhYjkxMzY5MDM2ZjBjOTZkYTQxNGZiNSAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjA2LDYgKzIwNiw4
IEBACiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVy
YXRpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgorI2luY2x1ZGUg
IlRlbXBvcmFsUGxhaW5UaW1lLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxU
aW1lWm9uZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlZNVHJhcHNJbmxpbmVzLmgiCkBAIC0xMjMy
LDYgKzEyMzQsMTMgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBD
b25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgICAgICBp
bml0LnNldChUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFs
T2JqZWN0LCBkdXJhdGlvblByb3RvdHlwZSkpOwogICAgICAgICAgICAgfSk7CiAKKyAgICAgICAg
bV9wbGFpblRpbWVTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAgICAgICAgW10gKGNvbnN0IElu
aXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKKyAgICAgICAgICAgICAgICBKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7
CisgICAgICAgICAgICAgICAgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUqIHBsYWluVGltZVBy
b3RvdHlwZSA9IFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xv
YmFsT2JqZWN0LCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOwor
ICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBwbGFpblRpbWVQcm90b3R5cGUpKTsKKyAgICAgICAg
ICAgIH0pOworCiAgICAgICAgIG1fdGltZVpvbmVTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAg
ICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0yMTE5LDYgKzIxMjgsNyBAQCB2b2lkIEpTR2xvYmFsT2Jq
ZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAK
ICAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAg
IHRoaXNPYmplY3QtPm1fZHVyYXRpb25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhp
c09iamVjdC0+bV9wbGFpblRpbWVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09i
amVjdC0+bV90aW1lWm9uZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKIAogICAgIHZpc2l0b3Iu
YXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbEdldHRlckZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGRlYjMzZGJkMTAzMDgz
YTE4ZjQwYmE3YWRjNTY5NTI2MDE0OTdkMjkuLjEyOGIzOTkxMGRkODA1N2Y3YWFiYjU5Nzc3Y2E2
ODBlOWRmNjE4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuaApAQCAtMzI2LDYgKzMyNiw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xv
YmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2FsZW5kYXJTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3Bl
cnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZHVyYXRpb25TdHJ1Y3R1cmU7CisgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGxhaW5UaW1lU3RydWN0
dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3RpbWVa
b25lU3RydWN0dXJlOwogCiAgICAgV3JpdGVCYXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9u
dWxsR2V0dGVyRnVuY3Rpb247CkBAIC04NzYsNiArODc3LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmpl
Y3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBTdHJ1Y3R1cmUq
IGNhbGVuZGFyU3RydWN0dXJlKCkgeyByZXR1cm4gbV9jYWxlbmRhclN0cnVjdHVyZS5nZXQodGhp
cyk7IH0KICAgICBTdHJ1Y3R1cmUqIGR1cmF0aW9uU3RydWN0dXJlKCkgeyByZXR1cm4gbV9kdXJh
dGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1cmUqIHBsYWluVGltZVN0cnVj
dHVyZSgpIHsgcmV0dXJuIG1fcGxhaW5UaW1lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0
cnVjdHVyZSogdGltZVpvbmVTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3RpbWVab25lU3RydWN0dXJl
LmdldCh0aGlzKTsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRSZW1vdGVEZWJ1
Z2dpbmdFbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTBmYWEz
ZmZjZDA0NDQ3NzJjNDFhNGNiNzM1NmEyZDY4NjcwYTY5Yy4uNjUzMGRkMDFlYjY3YzUzY2Q4ZTll
MzA4ODk5MTA1NjZlOGNiNTdmNCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwCkBAIC03Myw2
ICs3Myw3IEBAIHZvaWQgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0sIDAsICJDYWxlbmRhciJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRT
dHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwg
dm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgdGVtcG9yYWxDYWxlbmRhclBy
b3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnRFbnVtKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RU
ZW1wb3JhbENhbGVuZGFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxEdXJhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uLmNwcAppbmRleCAwZGEyNGE1MjU1N2ViY2RlNThmMzVkZTE4ZDc2YzJlNzJi
NjI2ZjhkLi44ZDhmYTRmODMwOTY5ZjkwYTc3YjgwZjhkMDU0NWZkMWJhNTJlYjgzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcApA
QCAtNTMwLDcgKzUzMCwxMCBAQCBTdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVgogCiAgICAgUHJlY2lz
aW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlv
bnMpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgQVNTRVJUKGRh
dGEudW5pdCA+PSBUZW1wb3JhbFVuaXQ6OlNlY29uZCk7CisgICAgaWYgKGRhdGEudW5pdCA8IFRl
bXBvcmFsVW5pdDo6U2Vjb25kKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3Qgbm90IGJlIFwibWludXRlXCIiX3MpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KIAogICAgIGF1dG8gcm91bmRpbmdNb2RlID0gaW50bE9w
dGlvbjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1l
cy0+cm91bmRpbmdNb2RlLAogICAgICAgICB7IHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2Vp
bCB9LCB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7ICJ0cnVuYyJfcywgUm91
bmRpbmdNb2RlOjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZF
eHBhbmQgfSB9LApAQCAtNTM4LDcgKzU0MSw3IEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0
b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIC8vIE5vIG5lZWQgdG8g
bWFrZSBhIG5ldyBvYmplY3QgaWYgd2Ugd2VyZSBnaXZlbiBleHBsaWNpdCBkZWZhdWx0cy4KLSAg
ICBpZiAoIWRhdGEucHJlY2lzaW9uICYmIHJvdW5kaW5nTW9kZSA9PSBSb3VuZGluZ01vZGU6OlRy
dW5jKQorICAgIGlmIChzdGQ6OmdldDwwPihkYXRhLnByZWNpc2lvbikgPT0gUHJlY2lzaW9uOjpB
dXRvICYmIHJvdW5kaW5nTW9kZSA9PSBSb3VuZGluZ01vZGU6OlRydW5jKQogICAgICAgICByZXR1
cm4gdG9TdHJpbmcoKTsKIAogICAgIFN1YmR1cmF0aW9ucyBuZXdTdWJkdXJhdGlvbnMgPSBtX3N1
YmR1cmF0aW9uczsKQEAgLTU0OCw5ICs1NTEsMTAgQEAgU3RyaW5nIFRlbXBvcmFsRHVyYXRpb246
OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1YK
IAogLy8gVGVtcG9yYWxEdXJhdGlvblRvU3RyaW5nICggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRh
eXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcywg
bmFub3NlY29uZHMsIHByZWNpc2lvbiApCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC10ZW1wb3JhbGR1cmF0aW9udG9zdHJpbmcKLVN0cmluZyBUZW1w
b3JhbER1cmF0aW9uOjp0b1N0cmluZyhjb25zdCBUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlv
bnMmIHN1YmR1cmF0aW9ucywgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uKQorU3Ry
aW5nIFRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKGNvbnN0IFRlbXBvcmFsRHVyYXRpb246OlN1
YmR1cmF0aW9ucyYgc3ViZHVyYXRpb25zLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+
IHByZWNpc2lvbikKIHsKLSAgICBBU1NFUlQoIXByZWNpc2lvbiB8fCBwcmVjaXNpb24udmFsdWUo
KSA8IDEwKTsKKyAgICBhdXRvIFtwcmVjaXNpb25UeXBlLCBwcmVjaXNpb25WYWx1ZV0gPSBwcmVj
aXNpb247CisgICAgQVNTRVJUKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpBdXRvIHx8IHBy
ZWNpc2lvblZhbHVlIDwgMTApOwogCiAgICAgYXV0byBiYWxhbmNlZE1pY3Jvc2Vjb25kcyA9IHN1
YmR1cmF0aW9ucy5taWNyb3NlY29uZHMoKSArIHN0ZDo6dHJ1bmMoc3ViZHVyYXRpb25zLm5hbm9z
ZWNvbmRzKCkgLyAxMDAwKTsKICAgICBhdXRvIGJhbGFuY2VkTmFub3NlY29uZHMgPSBzdGQ6OmZt
b2Qoc3ViZHVyYXRpb25zLm5hbm9zZWNvbmRzKCksIDEwMDApOwpAQCAtNTk3LDEwICs2MDEsMTAg
QEAgU3RyaW5nIFRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKGNvbnN0IFRlbXBvcmFsRHVyYXRp
b246OlN1YmR1cmF0aW9ucyYgc3ViZHVyYXQKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZm9ybWF0
SW50ZWdlcihiYWxhbmNlZFNlY29uZHMpKTsKIAogICAgICAgICBhdXRvIGZyYWN0aW9uID0gc3Rk
OjphYnMoYmFsYW5jZWRNaWxsaXNlY29uZHMpICogMWU2ICsgc3RkOjphYnMoYmFsYW5jZWRNaWNy
b3NlY29uZHMpICogMWUzICsgc3RkOjphYnMoYmFsYW5jZWROYW5vc2Vjb25kcyk7Ci0gICAgICAg
IGlmICgoIXByZWNpc2lvbiAmJiBmcmFjdGlvbikgfHwgKHByZWNpc2lvbiAmJiBwcmVjaXNpb24u
dmFsdWUoKSkpIHsKKyAgICAgICAgaWYgKChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6QXV0
byAmJiBmcmFjdGlvbikgfHwgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpGaXhlZCAmJiBw
cmVjaXNpb25WYWx1ZSkpIHsKICAgICAgICAgICAgIGF1dG8gcGFkZGVkID0gbWFrZVN0cmluZygn
LicsIHBhZCgnMCcsIDksIGZyYWN0aW9uKSk7Ci0gICAgICAgICAgICBpZiAocHJlY2lzaW9uKQot
ICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcocGFkZGVkKS5sZWZ0KHBh
ZGRlZC5sZW5ndGgoKSAtICg5IC0gcHJlY2lzaW9uLnZhbHVlKCkpKSk7CisgICAgICAgICAgICBp
ZiAocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkZpeGVkKQorICAgICAgICAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcocGFkZGVkKS5sZWZ0KHBhZGRlZC5sZW5ndGgoKSAtICg5
IC0gcHJlY2lzaW9uVmFsdWUpKSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAg
ICBhdXRvIGxlbmd0aFdpdGhvdXRUcmFpbGluZ1plcm9lcyA9IHBhZGRlZC5sZW5ndGgoKTsKICAg
ICAgICAgICAgICAgICB3aGlsZSAocGFkZGVkW2xlbmd0aFdpdGhvdXRUcmFpbGluZ1plcm9lcyAt
IDFdID09ICcwJykKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsRHVyYXRpb24uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
RHVyYXRpb24uaAppbmRleCA1OTIwNGRjOTUzN2FhZjc2MDFlMGU4ZDE1NzA1NmJkYTE5YWY3MzU1
Li40Mzg2ZTJiNzlhZTMwODdiOTU4NDhkNDI4ZjM2MWE5N2RiOTc4OGQ2IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCkBAIC02Niw3ICs2
Niw3IEBAIGNsYXNzIFRlbXBvcmFsRHVyYXRpb24gZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9i
amVjdCB7CiAgICAgU3ViZHVyYXRpb25zIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBv
cHRpb25zKSBjb25zdDsKICAgICBkb3VibGUgdG90YWwoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
IG9wdGlvbnMpIGNvbnN0OwogICAgIFN0cmluZyB0b1N0cmluZyhKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgb3B0aW9ucykgY29uc3Q7Ci0gICAgU3RyaW5nIHRvU3RyaW5nKHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IHByZWNpc2lvbiA9IHN0ZDo6bnVsbG9wdCkgY29uc3QgeyByZXR1cm4gdG9TdHJp
bmcobV9zdWJkdXJhdGlvbnMsIHByZWNpc2lvbik7IH0KKyAgICBTdHJpbmcgdG9TdHJpbmcoc3Rk
Ojp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24gPSB7IFByZWNpc2lvbjo6QXV0
bywgMCB9KSBjb25zdCB7IHJldHVybiB0b1N0cmluZyhtX3N1YmR1cmF0aW9ucywgcHJlY2lzaW9u
KTsgfQogCiBwcml2YXRlOgogICAgIFRlbXBvcmFsRHVyYXRpb24oVk0mLCBTdHJ1Y3R1cmUqLCBT
dWJkdXJhdGlvbnMmJik7CkBAIC03OSw3ICs3OSw3IEBAIGNsYXNzIFRlbXBvcmFsRHVyYXRpb24g
ZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAgICAgc3RhdGljIGludCBzaWduKGNv
bnN0IFN1YmR1cmF0aW9ucyYpOwogICAgIHN0YXRpYyB2b2lkIGJhbGFuY2UoU3ViZHVyYXRpb25z
JiwgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0KTsKICAgICBzdGF0aWMgZG91YmxlIHJvdW5kKFN1
YmR1cmF0aW9ucyYsIGRvdWJsZSBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2Rl
KTsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFN1YmR1cmF0aW9ucyYsIHN0ZDo6
b3B0aW9uYWw8dW5zaWduZWQ+IHByZWNpc2lvbik7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmlu
Zyhjb25zdCBTdWJkdXJhdGlvbnMmLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHBy
ZWNpc2lvbik7CiAKICAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFN1YmR1cmF0aW9uKCkgY29uc3Q7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcAppbmRl
eCBiMGE3ZWVlNGM0YTAxMzYwYmEzY2ZhNWFkNWU1YTQ3Yjk0YjY3MzNhLi43YzBmZWM1MzkxM2U4
YzVkNjlkNWQ2M2ViYWE3ZmZkOTFkZmM4YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxOb3cuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIEpTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTih0ZW1wb3JhbE5vd0Z1bmNUaW1lWm9uZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCiAgICAgU3RyaW5n
IHRpbWVab25lU3RyaW5nID0gdm0uZGF0ZUNhY2hlLmRlZmF1bHRUaW1lWm9uZSgpOwotICAgIHN0
ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IFRlbXBvcmFsVGltZVpvbmU6Omlk
Rm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRpbWVa
b25lSUQ+IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0
cmluZyk7CiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFRlbXBvcmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENPZmZzZXQodm0sIGdsb2JhbE9iamVj
dC0+dGltZVpvbmVTdHJ1Y3R1cmUoKSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
VGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbUlEKHZtLCBnbG9iYWxPYmplY3QtPnRpbWVab25l
U3RydWN0dXJlKCksIGlkZW50aWZpZXIudmFsdWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IGIyNGUzYTllOWRhMjIwMjZj
MmEzYmZkYjI4YmFmN2NlZTNkM2VmOTcuLjhlMzdkN2NmZjM1Zjk4OWUzZWVmYWI0MDkzNTU4MGFl
MGI0ZGRlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bE9iamVjdC5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9u
Q29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiVGVtcG9yYWxOb3cuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKICNpbmNs
dWRlICJUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRp
bWVab25lUHJvdG90eXBlLmgiCiAKQEAgLTYxLDYgKzYzLDEzIEBAIHN0YXRpYyBKU1ZhbHVlIGNy
ZWF0ZUR1cmF0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJl
dHVybiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxEdXJh
dGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFs
T2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PFRlbXBvcmFsRHVyYXRpb25Qcm90
b3R5cGUqPihnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlw
ZU9iamVjdCgpKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVj
dG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBUZW1wb3JhbE9iamVjdCogdGVt
cG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOworICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0ZW1wb3JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0KHZt
KTsKKyAgICByZXR1cm4gVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBU
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PFRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKS0+
c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKK30KKwogc3RhdGljIEpTVmFsdWUgY3JlYXRlVGlt
ZVpvbmVDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgVGVtcG9y
YWxPYmplY3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0PFRlbXBvcmFsT2JqZWN0Kj4ob2JqZWN0
KTsKQEAgLTc5LDYgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgIENhbGVuZGFyICAgICAgIGNy
ZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawog
ICBEdXJhdGlvbiAgICAgICBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVt
fFByb3BlcnR5Q2FsbGJhY2sKICAgTm93ICAgICAgICAgICAgY3JlYXRlTm93T2JqZWN0ICAgICAg
ICAgICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCisgIFBsYWluVGltZSAgICAgIGNy
ZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawog
ICBUaW1lWm9uZSAgICAgICBjcmVhdGVUaW1lWm9uZUNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVt
fFByb3BlcnR5Q2FsbGJhY2sKIEBlbmQKICovCkBAIC0yNDIsMTkgKzI1MiwyMSBAQCBQcmVjaXNp
b25EYXRhIHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIG9wdAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIHNtYWxsZXN0
VW5pdCA9IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1w
b3JhbFVuaXQ6OlllYXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2Vlaywg
VGVtcG9yYWxVbml0OjpEYXksIFRlbXBvcmFsVW5pdDo6SG91ciwgVGVtcG9yYWxVbml0OjpNaW51
dGUgfSk7CisgICAgYXV0byBzbWFsbGVzdFVuaXQgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1v
bnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5LCBUZW1wb3JhbFVuaXQ6
OkhvdXIgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlm
IChzbWFsbGVzdFVuaXQpIHsKICAgICAgICAgc3dpdGNoIChzbWFsbGVzdFVuaXQudmFsdWUoKSkg
eworICAgICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWludXRlOgorICAgICAgICAgICAgcmV0dXJu
IHsgeyBQcmVjaXNpb246Ok1pbnV0ZSwgMCB9LCBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZSwgMSB9Owog
ICAgICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOgotICAgICAgICAgICAgcmV0dXJuIHsg
MCwgVGVtcG9yYWxVbml0OjpTZWNvbmQsIDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsgUHJl
Y2lzaW9uOjpGaXhlZCwgMCB9LCBUZW1wb3JhbFVuaXQ6OlNlY29uZCwgMSB9OwogICAgICAgICBj
YXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6Ci0gICAgICAgICAgICByZXR1cm4geyAzLCBU
ZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLCAxIH07CisgICAgICAgICAgICByZXR1cm4geyB7IFBy
ZWNpc2lvbjo6Rml4ZWQsIDMgfSwgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZCwgMSB9OwogICAg
ICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6Ci0gICAgICAgICAgICByZXR1cm4g
eyA2LCBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kLCAxIH07CisgICAgICAgICAgICByZXR1cm4g
eyB7IFByZWNpc2lvbjo6Rml4ZWQsIDYgfSwgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZCwgMSB9
OwogICAgICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZDoKLSAgICAgICAgICAgIHJl
dHVybiB7IDksIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9OworICAgICAgICAgICAgcmV0
dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCA5IH0sIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwg
MSB9OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JF
QUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0yNjUsMjAgKzI3NywyNyBAQCBQ
cmVjaXNpb25EYXRhIHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNPYmplY3QqIG9wdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKICAgICBpZiAoIXByZWNpc2lvbikKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0
LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfTsKKyAgICAgICAgcmV0dXJuIHsgeyBQcmVj
aXNpb246OkF1dG8sIDAgfSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAxIH07CisKKyAgICBh
dXRvIHBvdzEwVW5zaWduZWQgPSBbXSh1bnNpZ25lZCBuKSAtPiB1bnNpZ25lZCB7CisgICAgICAg
IHVuc2lnbmVkIHJlc3VsdCA9IDE7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBu
OyArK2kpCisgICAgICAgICAgICByZXN1bHQgKj0gMTA7CisgICAgICAgIHJldHVybiByZXN1bHQ7
CisgICAgfTsKIAogICAgIHVuc2lnbmVkIGRpZ2l0cyA9IHByZWNpc2lvbi52YWx1ZSgpOwogICAg
IGlmICghZGlnaXRzKQotICAgICAgICByZXR1cm4geyAwLCBUZW1wb3JhbFVuaXQ6OlNlY29uZCwg
MSB9OworICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIDAgfSwgVGVtcG9yYWxV
bml0OjpTZWNvbmQsIDEgfTsKIAogICAgIGlmIChkaWdpdHMgPD0gMykKLSAgICAgICAgcmV0dXJu
IHsgZGlnaXRzLCBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLCBzdGQ6OnBvdygxMCwgMyAtIGRp
Z2l0cykgfTsKKyAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCBkaWdpdHMgfSwg
VGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZCwgcG93MTBVbnNpZ25lZCgzIC0gZGlnaXRzKSB9Owog
CiAgICAgaWYgKGRpZ2l0cyA8PSA2KQotICAgICAgICByZXR1cm4geyBkaWdpdHMsIFRlbXBvcmFs
VW5pdDo6TWljcm9zZWNvbmQsIHN0ZDo6cG93KDEwLCA2IC0gZGlnaXRzKSB9OworICAgICAgICBy
ZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIGRpZ2l0cyB9LCBUZW1wb3JhbFVuaXQ6Ok1pY3Jv
c2Vjb25kLCBwb3cxMFVuc2lnbmVkKDYgLSBkaWdpdHMpIH07CiAKICAgICBBU1NFUlQoZGlnaXRz
IDw9IDkpOwotICAgIHJldHVybiB7IGRpZ2l0cywgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCBz
dGQ6OnBvdygxMCwgOSAtIGRpZ2l0cykgfTsKKyAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4
ZWQsIGRpZ2l0cyB9LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIHBvdzEwVW5zaWduZWQoOSAt
IGRpZ2l0cykgfTsKIH0KIAogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0luY3Jl
bWVudCAoIHVuaXQgKQpAQCAtMzQyLDQgKzM2MSwxMSBAQCBkb3VibGUgcm91bmROdW1iZXJUb0lu
Y3JlbWVudChkb3VibGUgeCwgZG91YmxlIGluY3JlbWVudCwgUm91bmRpbmdNb2RlIG1vZGUpCiAg
ICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorVGVtcG9yYWxPdmVyZmxvdyB0
b1RlbXBvcmFsT3ZlcmZsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IG9wdGlvbnMpCit7CisgICAgcmV0dXJuIGludGxPcHRpb248VGVtcG9yYWxPdmVyZmxvdz4oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCBnbG9iYWxPYmplY3QtPnZtKCkucHJvcGVydHlOYW1lcy0+b3Zl
cmZsb3csCisgICAgICAgIHsgeyAiY29uc3RyYWluIl9zLCBUZW1wb3JhbE92ZXJmbG93OjpDb25z
dHJhaW4gfSwgeyAicmVqZWN0Il9zLCBUZW1wb3JhbE92ZXJmbG93OjpSZWplY3QgfSB9LAorICAg
ICAgICAib3ZlcmZsb3cgbXVzdCBiZSBlaXRoZXIgXCJjb25zdHJhaW5cIiBvciBcInJlamVjdFwi
Il9zLCBUZW1wb3JhbE92ZXJmbG93OjpDb25zdHJhaW4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCmlu
ZGV4IDcyNDNjOWJhNTg0MzI2MmQyZDBjYmI4MTkzM2Y0Y2RkMTMwOGZiNDguLjg5YTE1NmU4YzE1
YjgxMjVjMjA0NDEwYmVlMDRkYjdhZWQyYmEzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaApAQCAtMjEsMTQgKzIxLDExIEBACiAjcHJhZ21h
IG9uY2UKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4K
IAogbmFtZXNwYWNlIEpTQyB7CiAKLSNkZWZpbmUgSlNDX1RFTVBPUkFMX1VOSVRTKG1hY3JvKSBc
Ci0gICAgbWFjcm8oeWVhciwgWWVhcikgXAotICAgIG1hY3JvKG1vbnRoLCBNb250aCkgXAotICAg
IG1hY3JvKHdlZWssIFdlZWspIFwKLSAgICBtYWNybyhkYXksIERheSkgXAorI2RlZmluZSBKU0Nf
VEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhtYWNybykgXAogICAgIG1hY3JvKGhvdXIsIEhvdXIp
IFwKICAgICBtYWNybyhtaW51dGUsIE1pbnV0ZSkgXAogICAgIG1hY3JvKHNlY29uZCwgU2Vjb25k
KSBcCkBAIC0zNiw2ICszMywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhtaWNyb3Nl
Y29uZCwgTWljcm9zZWNvbmQpIFwKICAgICBtYWNybyhuYW5vc2Vjb25kLCBOYW5vc2Vjb25kKSBc
CiAKKworI2RlZmluZSBKU0NfVEVNUE9SQUxfVU5JVFMobWFjcm8pIFwKKyAgICBtYWNybyh5ZWFy
LCBZZWFyKSBcCisgICAgbWFjcm8obW9udGgsIE1vbnRoKSBcCisgICAgbWFjcm8od2VlaywgV2Vl
aykgXAorICAgIG1hY3JvKGRheSwgRGF5KSBcCisgICAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVf
VU5JVFMobWFjcm8pIFwKKworCiBlbnVtIGNsYXNzIFRlbXBvcmFsVW5pdCA6IHVpbnQ4X3Qgewog
I2RlZmluZSBKU0NfREVGSU5FX1RFTVBPUkFMX1VOSVRfRU5VTShuYW1lLCBjYXBpdGFsaXplZE5h
bWUpIGNhcGl0YWxpemVkTmFtZSwKICAgICBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX0RFRklORV9U
RU1QT1JBTF9VTklUX0VOVU0pCkBAIC00Myw2ICs0OSw3IEBAIGVudW0gY2xhc3MgVGVtcG9yYWxV
bml0IDogdWludDhfdCB7CiB9OwogI2RlZmluZSBKU0NfQ09VTlRfVEVNUE9SQUxfVU5JVFMobmFt
ZSwgY2FwaXRhbGl6ZWROYW1lKSArIDEKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVy
T2ZUZW1wb3JhbFVuaXRzID0gMCBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX0NPVU5UX1RFTVBPUkFM
X1VOSVRTKTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZUZW1wb3JhbFBsYWlu
VGltZVVuaXRzID0gMCBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhKU0NfQ09VTlRfVEVN
UE9SQUxfVU5JVFMpOwogI3VuZGVmIEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUwogCiBjbGFzcyBU
ZW1wb3JhbE9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTc0LDEw
ICs4MSwxNiBAQCBlbnVtIGNsYXNzIFJvdW5kaW5nTW9kZSA6IHVpbnQ4X3QgewogICAgIEhhbGZF
eHBhbmQKIH07CiAKK2VudW0gY2xhc3MgUHJlY2lzaW9uIHsKKyAgICBNaW51dGUsCisgICAgRml4
ZWQsCisgICAgQXV0bywKK307CisKIHN0cnVjdCBQcmVjaXNpb25EYXRhIHsKLSAgICBzdGQ6Om9w
dGlvbmFsPHVuc2lnbmVkPiBwcmVjaXNpb247CisgICAgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVu
c2lnbmVkPiBwcmVjaXNpb247CiAgICAgVGVtcG9yYWxVbml0IHVuaXQ7Ci0gICAgZG91YmxlIGlu
Y3JlbWVudDsKKyAgICB1bnNpZ25lZCBpbmNyZW1lbnQ7CiB9OwogCiBzdGQ6Om9wdGlvbmFsPFRl
bXBvcmFsVW5pdD4gdGVtcG9yYWxVbml0VHlwZShTdHJpbmdWaWV3KTsKQEAgLTg5LDQgKzEwMiwx
MSBAQCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KFRlbXBv
cmFsVW5pdCk7CiBkb3VibGUgdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChKU0dsb2JhbE9iamVj
dCosIEpTT2JqZWN0KiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGl2aWRlbmQsIGJv
b2wgaW5jbHVzaXZlKTsKIGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRvdWJsZSwgZG91
YmxlIGluY3JlbWVudCwgUm91bmRpbmdNb2RlKTsKIAorZW51bSBjbGFzcyBUZW1wb3JhbE92ZXJm
bG93IDogdWludDhfdCB7CisgICAgQ29uc3RyYWluLAorICAgIFJlamVjdCwKK307CisKK1RlbXBv
cmFsT3ZlcmZsb3cgdG9UZW1wb3JhbE92ZXJmbG93KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3Qq
KTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzE4MTVmNmVkZTRmM2Q4
YTcwMDEyYjI1NDNhNDA3MjMyNGRkNTJmOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcApAQCAtMCwwICsxLDM1OCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpblRpbWUuaCIKKworI2luY2x1ZGUgIkFic3RyYWN0U2xvdFZpc2l0b3IuaCIKKyNpbmNs
dWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJMYXp5UHJvcGVydHlJbmxpbmVzLmgiCisjaW5jbHVkZSAiVk1UcmFwc0lubGluZXMuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbFBsYWluVGltZTo6
c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWluVGltZSkgfTsKKworVGVtcG9yYWxQbGFpblRp
bWUqIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSVNPODYwMTo6UGxhaW5UaW1lJiYgcGxhaW5UaW1lKQoreworICAgIGF1dG8qIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1lPih2bS5oZWFwKSkg
VGVtcG9yYWxQbGFpblRpbWUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShwbGFpblRpbWUpKTsKKyAg
ICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitT
dHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsUGxh
aW5UaW1lOjpUZW1wb3JhbFBsYWluVGltZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJ
U084NjAxOjpQbGFpblRpbWUmJiBwbGFpblRpbWUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUp
CisgICAgLCBtX3BsYWluVGltZShXVEZNb3ZlKHBsYWluVGltZSkpCit7Cit9CisKK3ZvaWQgVGVt
cG9yYWxQbGFpblRpbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBt
X2NhbGVuZGFyLmluaXRMYXRlcigKKyAgICAgICAgW10gKGNvbnN0IGF1dG8mIGluaXQpIHsKKyAg
ICAgICAgICAgIFZNJiB2bSA9IGluaXQudm07CisgICAgICAgICAgICBhdXRvKiBwbGFpblRpbWUg
PSBqc0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIGF1
dG8qIGdsb2JhbE9iamVjdCA9IHBsYWluVGltZS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAg
ICAgIGF1dG8qIGNhbGVuZGFyID0gVGVtcG9yYWxDYWxlbmRhcjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPmNhbGVuZGFyU3RydWN0dXJlKCksIGlzbzg2MDFDYWxlbmRhcklEKCkpOworICAgICAg
ICAgICAgaW5pdC5zZXQoY2FsZW5kYXIpOworICAgICAgICB9KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVmlzaXRvcj4KK3ZvaWQgVGVtcG9yYWxQbGFpblRpbWU6OnZpc2l0Q2hpbGRyZW5JbXBs
KEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKGNlbGwsIHZpc2l0b3IpOworCisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxUZW1w
b3JhbFBsYWluVGltZSo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPm1fY2FsZW5kYXIudmlzaXQo
dmlzaXRvcik7Cit9CisKK0RFRklORV9WSVNJVF9DSElMRFJFTihUZW1wb3JhbFBsYWluVGltZSk7
CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWlz
dmFsaWR0aW1lCitzdGF0aWMgSVNPODYwMTo6UGxhaW5UaW1lIHRvUGxhaW5UaW1lKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIElTTzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRpb24pCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBob3VyID0gZHVyYXRpb24uaG91cnMoKTsK
KyAgICBkb3VibGUgbWludXRlID0gZHVyYXRpb24ubWludXRlcygpOworICAgIGRvdWJsZSBzZWNv
bmQgPSBkdXJhdGlvbi5zZWNvbmRzKCk7CisgICAgZG91YmxlIG1pbGxpc2Vjb25kID0gZHVyYXRp
b24ubWlsbGlzZWNvbmRzKCk7CisgICAgZG91YmxlIG1pY3Jvc2Vjb25kID0gZHVyYXRpb24ubWlj
cm9zZWNvbmRzKCk7CisgICAgZG91YmxlIG5hbm9zZWNvbmQgPSBkdXJhdGlvbi5uYW5vc2Vjb25k
cygpOworICAgIGlmICghKGhvdXIgPj0gMCAmJiBob3VyIDw9IDIzKSkgeworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImhvdXIgaXMgb3V0IG9mIHJhbmdlIl9z
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgaWYgKCEobWludXRlID49IDAgfHwg
bWludXRlIDw9IDU5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIm1pbnV0ZSBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9Owor
ICAgIH0KKyAgICBpZiAoIShzZWNvbmQgPj0gMCB8fCBzZWNvbmQgPD0gNTkpKSB7CisgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic2Vjb25kIGlzIG91dCBvZiBy
YW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKG1pbGxpc2Vj
b25kID49IDAgfHwgbWlsbGlzZWNvbmQgPD0gOTk5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm1pbGxpc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKG1pY3Jvc2Vjb25kID49IDAg
fHwgbWljcm9zZWNvbmQgPD0gOTk5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIm1pY3Jvc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAg
IHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKG5hbm9zZWNvbmQgPj0gMCB8fCBuYW5vc2Vj
b25kIDw9IDk5OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJuYW5vc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorICAgIHJldHVybiBJU084NjAxOjpQbGFpblRpbWUgeworICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaG91ciksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtaW51
dGUpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2Vjb25kKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1pbGxpc2Vjb25kKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1pY3Jvc2Vjb25kKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5hbm9z
ZWNvbmQpCisgICAgfTsKK30KKworLy8gQ3JlYXRlVGVtcG9yYWxQbGFpblRpbWUgKCB5ZWFycywg
bW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25k
cywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcyBbICwgbmV3VGFyZ2V0IF0gKQorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtY3JlYXRldGVtcG9yYWxw
bGFpblRpbWUKK1RlbXBvcmFsUGxhaW5UaW1lKiBUZW1wb3JhbFBsYWluVGltZTo6dHJ5Q3JlYXRl
SWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSVNPODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgYXV0byBwbGFpblRpbWUgPSB0b1BsYWluVGltZShnbG9iYWxPYmplY3QsIFdURk1vdmUo
ZHVyYXRpb24pKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
cmV0dXJuIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShw
bGFpblRpbWUpKTsKK30KKworc3RhdGljIHN0ZDo6dHVwbGU8ZG91YmxlLCBJU084NjAxOjpQbGFp
blRpbWU+IGJhbGFuY2VUaW1lKGRvdWJsZSBob3VyLCBkb3VibGUgbWludXRlLCBkb3VibGUgc2Vj
b25kLCBkb3VibGUgbWlsbGlzZWNvbmQsIGRvdWJsZSBtaWNyb3NlY29uZCwgZG91YmxlIG5hbm9z
ZWNvbmQpCit7CisgICAgbWljcm9zZWNvbmQgPSBtaWNyb3NlY29uZCArIHN0ZDo6dHJ1bmMobmFu
b3NlY29uZCAvIDEwMDApOworICAgIG5hbm9zZWNvbmQgPSBzdGQ6OmZtb2QobmFub3NlY29uZCwg
MTAwMCk7CisgICAgbWlsbGlzZWNvbmQgPSBtaWxsaXNlY29uZCArIHN0ZDo6dHJ1bmMobWljcm9z
ZWNvbmQgLyAxMDAwKTsKKyAgICBtaWNyb3NlY29uZCA9IHN0ZDo6Zm1vZChtaWNyb3NlY29uZCwg
MTAwMCk7CisgICAgc2Vjb25kID0gc2Vjb25kICsgc3RkOjp0cnVuYyhtaWxsaXNlY29uZCAvIDEw
MDApOworICAgIG1pbGxpc2Vjb25kID0gc3RkOjpmbW9kKG1pbGxpc2Vjb25kLCAxMDAwKTsKKyAg
ICBtaW51dGUgPSBtaW51dGUgKyBzdGQ6OnRydW5jKHNlY29uZCAvIDYwKTsKKyAgICBzZWNvbmQg
PSBzdGQ6OmZtb2Qoc2Vjb25kLCA2MCk7CisgICAgaG91ciA9IGhvdXIgKyBzdGQ6OnRydW5jKG1p
bnV0ZSAvIDYwKTsKKyAgICBtaW51dGUgPSBzdGQ6OmZtb2QobWludXRlLCA2MCk7CisgICAgZG91
YmxlIGRheXMgPSBzdGQ6OnRydW5jKGhvdXIgLyAyNCk7CisgICAgaG91ciA9IHN0ZDo6Zm1vZCht
aW51dGUsIDI0KTsKKyAgICByZXR1cm4geyBkYXlzLCBJU084NjAxOjpQbGFpblRpbWUoaG91ciwg
bWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBtaWNyb3NlY29uZCwgbmFub3NlY29uZCkgfTsK
K30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwt
cm91bmR0aW1lCitzdGF0aWMgc3RkOjp0dXBsZTxkb3VibGUsIElTTzg2MDE6OlBsYWluVGltZT4g
cm91bmRUaW1lKElTTzg2MDE6OlBsYWluVGltZSBwbGFpblRpbWUsIGRvdWJsZSBpbmNyZW1lbnQs
IFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUgcm91bmRpbmdNb2RlLCBzdGQ6Om9wdGlv
bmFsPGRvdWJsZT4gZGF5TGVuZ3RoTnMpCit7CisgICAgYXV0byBmcmFjdGlvbmFsU2Vjb25kID0g
W10oSVNPODYwMTo6UGxhaW5UaW1lIHBsYWluVGltZSkgLT4gZG91YmxlIHsKKyAgICAgICAgcmV0
dXJuIHBsYWluVGltZS5zZWNvbmQoKSArIHBsYWluVGltZS5taWxsaXNlY29uZCgpICogMWUtMyAr
IHBsYWluVGltZS5taWNyb3NlY29uZCgpICogMWUtNiArIHBsYWluVGltZS5uYW5vc2Vjb25kKCkg
KiAxZS05OworICAgIH07CisKKyAgICBkb3VibGUgcXVhbnRpdHkgPSAwOworICAgIHN3aXRjaCAo
dW5pdCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpEYXk6IHsKKyAgICAgICAgZG91YmxlIGxl
bmd0aCA9IGRheUxlbmd0aE5zLnZhbHVlX29yKDguNjQgKiAxZSsxMyk7CisgICAgICAgIHF1YW50
aXR5ID0gKCgoKHBsYWluVGltZS5ob3VyKCkgKiA2MC4wICsgcGxhaW5UaW1lLm1pbnV0ZSgpKSAq
IDYwLjAgKyBwbGFpblRpbWUuc2Vjb25kKCkpICogMTAwMC4wICsgcGxhaW5UaW1lLm1pbGxpc2Vj
b25kKCkpICogMTAwMC4wICsgcGxhaW5UaW1lLm5hbm9zZWNvbmQoKSkgLyBsZW5ndGg7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0luY3JlbWVudChxdWFudGl0eSwgaW5jcmVt
ZW50LCByb3VuZGluZ01vZGUpOworICAgICAgICByZXR1cm4geyByZXN1bHQsIHsgfSB9OworICAg
IH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6SG91cjogeworICAgICAgICBxdWFudGl0eSA9IChm
cmFjdGlvbmFsU2Vjb25kKHBsYWluVGltZSkgLyA2MC4wICsgcGxhaW5UaW1lLm1pbnV0ZSgpKSAv
IDYwLjAgKyBwbGFpblRpbWUuaG91cigpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVt
YmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAg
ICAgcmV0dXJuIGJhbGFuY2VUaW1lKHJlc3VsdCwgMCwgMCwgMCwgMCwgMCk7CisgICAgfQorICAg
IGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBmcmFjdGlv
bmFsU2Vjb25kKHBsYWluVGltZSkgLyA2MC4wICsgcGxhaW5UaW1lLm1pbnV0ZSgpOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVu
dCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5o
b3VyKCksIHJlc3VsdCwgMCwgMCwgMCwgMCk7CisgICAgfQorICAgIGNhc2UgVGVtcG9yYWxVbml0
OjpTZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBmcmFjdGlvbmFsU2Vjb25kKHBsYWluVGlt
ZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0luY3JlbWVudChxdWFudGl0
eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOworICAgICAgICByZXR1cm4gYmFsYW5jZVRpbWUo
cGxhaW5UaW1lLmhvdXIoKSwgcGxhaW5UaW1lLm1pbnV0ZSgpLCByZXN1bHQsIDAsIDAsIDApOwor
ICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IHsKKyAgICAgICAgcXVh
bnRpdHkgPSBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSArIHBsYWluVGltZS5taWNyb3NlY29uZCgp
ICogMWUtMyArIHBsYWluVGltZS5uYW5vc2Vjb25kKCkgKiAxZS02OworICAgICAgICBhdXRvIHJl
c3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRp
bmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBs
YWluVGltZS5taW51dGUoKSwgcGxhaW5UaW1lLnNlY29uZCgpLCByZXN1bHQsIDAsIDApOworICAg
IH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRp
dHkgPSBwbGFpblRpbWUubWljcm9zZWNvbmQoKSArIHBsYWluVGltZS5uYW5vc2Vjb25kKCkgKiAx
ZS0zOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRp
dHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1l
KHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5taW51dGUoKSwgcGxhaW5UaW1lLnNlY29uZCgp
LCBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSwgcmVzdWx0LCAwKTsKKyAgICB9CisgICAgY2FzZSBU
ZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBwbGFpblRpbWUu
bmFub3NlY29uZCgpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1l
bnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJh
bGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5taW51dGUoKSwgcGxhaW5UaW1l
LnNlY29uZCgpLCBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSwgcGxhaW5UaW1lLm1pY3Jvc2Vjb25k
KCksIHJlc3VsdCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworSVNPODYwMTo6UGxh
aW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmpl
Y3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1w
b3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5IH0pOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisgICAgaWYgKCFzbWFsbGVzdCkgeworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0IGEgc21h
bGxlc3RVbml0IG9wdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRl
bXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1ZSgpOworCisgICAgYXV0byBy
b3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsCisgICAgICAgIHsgeyAiY2VpbCJf
cywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29y
IH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZFeHBhbmQiX3Ms
IFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCisgICAgICAgICJyb3VuZGluZ01vZGUgbXVz
dCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wiLCBvciBcImhhbGZFeHBh
bmRcIiJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5n
SW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50
KHNtYWxsZXN0VW5pdCksIGZhbHNlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgYXV0byBbZGF5LCBwbGFpblRpbWVdID0gcm91bmRUaW1lKG1fcGxhaW5UaW1l
LCBpbmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlLCBzdGQ6Om51bGxvcHQpOwor
ICAgIHJldHVybiBwbGFpblRpbWU7Cit9CisKK1N0cmluZyBUZW1wb3JhbFBsYWluVGltZTo6dG9T
dHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUp
IGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0g
aW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoIW9wdGlvbnMpCisgICAg
ICAgIHJldHVybiB0b1N0cmluZygpOworCisgICAgUHJlY2lzaW9uRGF0YSBkYXRhID0gc2Vjb25k
c1N0cmluZ1ByZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRp
b248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMt
PnJvdW5kaW5nTW9kZSwKKyAgICAgICAgeyB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwg
fSwgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5k
aW5nTW9kZTo6VHJ1bmMgfSwgeyAiaGFsZkV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhw
YW5kIH0gfSwKKyAgICAgICAgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwg
XCJmbG9vclwiLCBcInRydW5jXCIsIG9yIFwiaGFsZkV4cGFuZFwiIl9zLCBSb3VuZGluZ01vZGU6
OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgLy8g
Tm8gbmVlZCB0byBtYWtlIGEgbmV3IG9iamVjdCBpZiB3ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRl
ZmF1bHRzLgorICAgIGlmIChzdGQ6OmdldDwwPihkYXRhLnByZWNpc2lvbikgPT0gUHJlY2lzaW9u
OjpBdXRvICYmIHJvdW5kaW5nTW9kZSA9PSBSb3VuZGluZ01vZGU6OlRydW5jKQorICAgICAgICBy
ZXR1cm4gdG9TdHJpbmcoKTsKKworICAgIGF1dG8gW2RheSwgcGxhaW5UaW1lXSA9IHJvdW5kVGlt
ZShtX3BsYWluVGltZSwgZGF0YS5pbmNyZW1lbnQsIGRhdGEudW5pdCwgcm91bmRpbmdNb2RlLCBz
dGQ6Om51bGxvcHQpOworICAgIHJldHVybiBJU084NjAxOjp0ZW1wb3JhbFRpbWVUb1N0cmluZyhw
bGFpblRpbWUsIGRhdGEucHJlY2lzaW9uKTsKK30KKworCitzdGF0aWMgUHJvcGVydHlOYW1lIHBy
b3BlcnR5TmFtZShWTSYgdm0sIHVuc2lnbmVkIGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA8
IG51bWJlck9mVGVtcG9yYWxVbml0cyk7CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxUZW1wb3Jh
bFVuaXQ+KGluZGV4KSkgeworI2RlZmluZSBKU0NfVEVNUE9SQUxfRFVSQVRJT05fUFJPUEVSVFlf
TkFNRShuYW1lLCBjYXBpdGFsaXplZE5hbWUpIGNhc2UgVGVtcG9yYWxVbml0OjpjYXBpdGFsaXpl
ZE5hbWU6IHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lOworICAgICAgICBKU0NfVEVNUE9S
QUxfVU5JVFMoSlNDX1RFTVBPUkFMX0RVUkFUSU9OX1BST1BFUlRZX05BTUUpCisjdW5kZWYgSlND
X1RFTVBPUkFMX0RVUkFUSU9OX1BST1BFUlRZX05BTUUKKyAgICB9CisKKyAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gdG9UZW1w
b3JhbFRpbWVSZWNvcmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRl
bXBvcmFsVGltZUxpa2UpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElTTzg2MDE6OkR1
cmF0aW9uIGR1cmF0aW9uIHsgfTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHM7ICsraW5kZXgpIHsKKyAgICAgICAgdW5z
aWduZWQgZHVyYXRpb25JbmRleCA9IGluZGV4ICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRlbXBv
cmFsVW5pdDo6SG91cik7CisgICAgICAgIGF1dG8gbmFtZSA9IHByb3BlcnR5TmFtZSh2bSwgZHVy
YXRpb25JbmRleCk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSB0ZW1wb3JhbFRpbWVMaWtlLT5n
ZXQoZ2xvYmFsT2JqZWN0LCBuYW1lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKyAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAg
IHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoJyInLCBTdHJp
bmdWaWV3KG5hbWUudWlkKCkpLCAiIGZpZWxkIGlzIG1pc3NpbmciX3MpKTsKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgZG91YmxlIGludGVnZXIgPSB2YWx1ZS50
b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShpbnRlZ2VyKSkg
eworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5QbGFpblRpbWUgcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGR1cmF0aW9uW2R1cmF0aW9uSW5kZXhd
ID0gaW50ZWdlcjsKKyAgICB9CisgICAgcmV0dXJuIGR1cmF0aW9uOworfQorCitzdGF0aWMgSVNP
ODYwMTo6UGxhaW5UaW1lIGNvbnN0cmFpbnRUaW1lKElTTzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRp
b24pCit7CisgICAgYXV0byBjb25zdHJhaW5Ub1JhbmdlID0gW10oZG91YmxlIHZhbHVlLCB1bnNp
Z25lZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVtKSAtPiB1bnNpZ25lZCB7CisgICAgICAgIHJl
dHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjptaW48ZG91YmxlPihzdGQ6Om1heDxkb3Vi
bGU+KHZhbHVlLCBtaW5pbXVtKSwgbWF4aW11bSkpOworICAgIH07CisgICAgcmV0dXJuIElTTzg2
MDE6OlBsYWluVGltZSgKKyAgICAgICAgY29uc3RyYWluVG9SYW5nZShkdXJhdGlvbi5ob3Vycygp
LCAwLCAyMyksCisgICAgICAgIGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRpb24ubWludXRlcygpLCAw
LCA1OSksCisgICAgICAgIGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRpb24uc2Vjb25kcygpLCAwLCA1
OSksCisgICAgICAgIGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRpb24ubWlsbGlzZWNvbmRzKCksIDAs
IDEwMDApLAorICAgICAgICBjb25zdHJhaW5Ub1JhbmdlKGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygp
LCAwLCAxMDAwKSwKKyAgICAgICAgY29uc3RyYWluVG9SYW5nZShkdXJhdGlvbi5uYW5vc2Vjb25k
cygpLCAwLCAxMDAwKSk7Cit9CisKK3N0YXRpYyBJU084NjAxOjpQbGFpblRpbWUgcmVndWxhdGVU
aW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElTTzg2MDE6OkR1cmF0aW9uJiYgZHVy
YXRpb24sIFRlbXBvcmFsT3ZlcmZsb3cgb3ZlcmZsb3cpCit7CisgICAgc3dpdGNoIChvdmVyZmxv
dykgeworICAgIGNhc2UgVGVtcG9yYWxPdmVyZmxvdzo6Q29uc3RyYWluOgorICAgICAgICByZXR1
cm4gY29uc3RyYWludFRpbWUoV1RGTW92ZShkdXJhdGlvbikpOworICAgIGNhc2UgVGVtcG9yYWxP
dmVyZmxvdzo6UmVqZWN0OgorICAgICAgICByZXR1cm4gdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGR1cmF0aW9uKSk7CisgICAgfQorICAgIHJldHVybiB7IH07Cit9CisKKy8vIGh0
dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvdGVtcG9yYWx0
aW1lCitUZW1wb3JhbFBsYWluVGltZSogVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUsIHN0ZDo6b3B0aW9uYWw8VGVt
cG9yYWxPdmVyZmxvdz4gb3ZlcmZsb3dWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byBvdmVyZmxvdyA9IG92ZXJmbG93VmFsdWUudmFsdWVfb3IoVGVtcG9yYWxPdmVyZmxv
dzo6Q29uc3RyYWluKTsKKworICAgIGlmIChpdGVtVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAg
ICBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsUGxhaW5UaW1lPih2bSkpCisgICAgICAg
ICAgICByZXR1cm4ganNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4oaXRlbVZhbHVlKTsKKyAgICAg
ICAgYXV0byBkdXJhdGlvbiA9IHRvVGVtcG9yYWxUaW1lUmVjb3JkKGdsb2JhbE9iamVjdCwganND
YXN0PEpTT2JqZWN0Kj4oaXRlbVZhbHVlKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgICAgIGF1dG8gcGxhaW5UaW1lID0gcmVndWxhdGVUaW1lKGdsb2Jh
bE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbiksIG92ZXJmbG93KTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFsUGxhaW5UaW1l
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCksIFdURk1vdmUo
cGxhaW5UaW1lKSk7CisgICAgfQorCisgICAgYXV0byBzdHJpbmcgPSBpdGVtVmFsdWUudG9XVEZT
dHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgYXV0byB0aW1lID0gSVNPODYwMTo6cGFyc2VUaW1lKHN0cmluZyk7CisgICAgaWYg
KCF0aW1lKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
aW52YWxpZCB0aW1lIHN0cmluZyJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAg
IGF1dG8gW3BsYWluVGltZSwgdGltZVpvbmVdID0gdGltZS52YWx1ZSgpOworICAgIHJldHVybiBU
ZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVj
dHVyZSgpLCBXVEZNb3ZlKHBsYWluVGltZSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1l
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5oCm5l
dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAuLjgxZmYyNWM4NTQxYTZjNTQ3YjlkMTMwZjkwZTA1YWY4OWI1NDUzMzAKLS0tIC9k
ZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWlu
VGltZS5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJ
bnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiTGF6eVByb3BlcnR5LmgiCisjaW5jbHVk
ZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9y
YWxQbGFpblRpbWUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS50ZW1wb3JhbFBs
YWluVGltZVNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBvcmFsUGxhaW5U
aW1lKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpQbGFpblRpbWUmJik7CisgICAg
c3RhdGljIFRlbXBvcmFsUGxhaW5UaW1lKiB0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgSVNPODYwMTo6RHVyYXRpb24mJik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluVGltZSogZnJvbShKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUsIHN0ZDo6b3B0aW9uYWw8VGVtcG9yYWxPdmVyZmxvdz4pOwor
ICAgIHN0YXRpYyBKU1ZhbHVlIGNvbXBhcmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBKU1Zh
bHVlKTsKKworICAgIFRlbXBvcmFsQ2FsZW5kYXIqIGNhbGVuZGFyKCkgeyByZXR1cm4gbV9jYWxl
bmRhci5nZXQodGhpcyk7IH0KKworI2RlZmluZSBKU0NfREVGSU5FX1RFTVBPUkFMX1BMQUlOX1RJ
TUVfRklFTEQobmFtZSwgY2FwaXRhbGl6ZWROYW1lKSBcCisgICAgdW5zaWduZWQgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhaW5UaW1lLm5hbWUoKTsgfQorICAgIEpTQ19URU1QT1JBTF9QTEFJ
Tl9USU1FX1VOSVRTKEpTQ19ERUZJTkVfVEVNUE9SQUxfUExBSU5fVElNRV9GSUVMRCk7CisjdW5k
ZWYgSlNDX0RFRklORV9URU1QT1JBTF9QTEFJTl9USU1FX0ZJRUxECisKKyAgICBJU084NjAxOjpQ
bGFpblRpbWUgd2l0aChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBwbGFpblRpbWVMaWtlKSBj
b25zdDsKKyAgICBJU084NjAxOjpQbGFpblRpbWUgYWRkKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSkgY29uc3Q7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHN1YnRyYWN0KEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHJvdW5kKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmlu
ZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbiA9IHsgUHJlY2lzaW9u
OjpBdXRvLCAwIH0pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSVNPODYwMTo6dGVtcG9y
YWxUaW1lVG9TdHJpbmcobV9wbGFpblRpbWUsIHByZWNpc2lvbik7CisgICAgfQorCisgICAgSVNP
ODYwMTo6UGxhaW5UaW1lIHBsYWluVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5UaW1lOyB9
CisKKyAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOworCitwcml2YXRlOgorICAgIFRlbXBvcmFs
UGxhaW5UaW1lKFZNJiwgU3RydWN0dXJlKiwgSVNPODYwMTo6UGxhaW5UaW1lJiYpOworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6UGxhaW5UaW1lPiBwYXJz
ZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+Jik7CisgICAgc3RhdGljIElTTzg2
MDE6OlBsYWluVGltZSBmcm9tT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKKwor
ICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0U3VicGxhaW5UaW1lKCkgY29uc3Q7CisKKyAgICBJU084
NjAxOjpQbGFpblRpbWUgbV9wbGFpblRpbWU7CisgICAgTGF6eVByb3BlcnR5PFRlbXBvcmFsUGxh
aW5UaW1lLCBUZW1wb3JhbENhbGVuZGFyPiBtX2NhbGVuZGFyOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjQ2MTNjMGFkYTY0
NTU3ZTdkMGM4YWZiMmU0M2UzZWNlZThhMjM1ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcApA
QCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0
aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisj
aW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAiSlND
SW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJQ19B
U1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVj
dG9yKTsKKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRp
bWVDb25zdHJ1Y3RvckZ1bmNGcm9tKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jQ29tcGFyZSk7CisKK30KKworI2luY2x1
ZGUgIlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBKU0Mg
eworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6c19pbmZv
ID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmdGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1
Y3RvclRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1
Y3Rvci5sdXQuaAorQGJlZ2luIHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JUYWJsZQorICBm
cm9tICAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jRnJvbSAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGNvbXBhcmUgICAgICAgICAgdGVtcG9yYWxQ
bGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNDb21wYXJlICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDIKK0BlbmQKKyovCisKK1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IqIFRlbXBvcmFsUGxh
aW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBU
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogcGxhaW5UaW1lUHJvdG90eXBlKQoreworICAgIGF1
dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3Io
dm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBwbGFp
blRpbWVQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0dXJl
KiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQor
CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxsVGVtcG9yYWxQbGFpblRpbWUp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxQbGFp
blRpbWUpOworCitUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpUZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNlKHZt
LCBzdHJ1Y3R1cmUsIGNhbGxUZW1wb3JhbFBsYWluVGltZSwgY29uc3RydWN0VGVtcG9yYWxQbGFp
blRpbWUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6ZmluaXNo
Q3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogcGxhaW5UaW1lUHJv
dG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiUGxhaW5UaW1lIl9z
LCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOworICAg
IHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5
cGUsIHBsYWluVGltZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OworICAgIHBsYWluVGltZVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFyZ2V0
KCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVDVFVS
RSh2bSwgcGxhaW5UaW1lU3RydWN0dXJlLCBuZXdUYXJnZXQsIGNhbGxGcmFtZS0+anNDYWxsZWUo
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIElTTzg2MDE6
OkR1cmF0aW9uIGR1cmF0aW9uIHsgfTsKKyAgICBhdXRvIGNvdW50ID0gc3RkOjptaW48c2l6ZV90
PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSwgbnVtYmVyT2ZUZW1wb3JhbFBsYWluVGltZVVu
aXRzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgICAg
ICB1bnNpZ25lZCBkdXJhdGlvbkluZGV4ID0gaSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZW1w
b3JhbFVuaXQ6OkhvdXIpOworICAgICAgICBkdXJhdGlvbltkdXJhdGlvbkluZGV4XSA9IGNhbGxG
cmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmpl
Y3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICBp
ZiAoIXN0ZDo6aXNmaW5pdGUoZHVyYXRpb25bZHVyYXRpb25JbmRleF0pKQorICAgICAgICAgICAg
cmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5Q
bGFpblRpbWUgcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAgfQorICAgIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjp0
cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBXVEZNb3ZlKGR1cmF0aW9u
KSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbFBsYWluVGlt
ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3RydWN0
b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlBsYWluVGltZSIpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxh
aW5UaW1lQ29uc3RydWN0b3JGdW5jRnJvbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNP
YmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBUZW1wb3JhbE92ZXJmbG93IG92ZXJmbG93ID0gdG9UZW1wb3JhbE92ZXJmbG93KGds
b2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIEpTVmFsdWUgaXRlbVZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKwor
ICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxQbGFpblRpbWU+KHZtKSkKKyAgICAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFp
blRpbWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwganND
YXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4oaXRlbVZhbHVlKS0+cGxhaW5UaW1lKCkpKSk7CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWlu
VGltZTo6ZnJvbShnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSwgb3ZlcmZsb3cpKSk7Cit9CisKK0pT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yRnVuY0Nv
bXBhcmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCit7CisgICAgVU5VU0VEX1BBUkFNKGdsb2JhbE9iamVjdCk7CisgICAgVU5VU0VEX1BBUkFN
KGNhbGxGcmFtZSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICAvLyByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjpjb21wYXJl
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuaApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4wMjAxMzc4MTMxZWM1YjYzZjhmNzkyY2U0MGYwZmU0NmUwOTFlYjQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMp
IDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTsKKworY2xhc3MgVGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToK
KyAgICBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKik7Cit9
OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxQbGFpblRpbWVD
b25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUzYmYzMDU3MDQ0MTZlNzg2OTViYTg1MmE4
MmNmZGI2MzlkZGFiYjEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwzMDQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1dpdGgp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGVGdW5jQWRkKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlRnVuY1N1YnRyYWN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1JvdW5kKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1Rv
U3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1RvSlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNW
YWx1ZU9mKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlR2V0dGVySG91cik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbnV0ZSk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlclNlY29u
ZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZUdldHRlck1pbGxpc2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VU
VEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0
ZXJOYW5vc2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIpOworCit9CisKKyNpbmNsdWRlICJUZW1w
b3JhbFBsYWluVGltZVByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0
IENsYXNzSW5mbyBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVtcG9y
YWwuUGxhaW5UaW1lIiwgJkJhc2U6OnNfaW5mbywgJnBsYWluVGltZVByb3RvdHlwZVRhYmxlLCBu
dWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKSB9
OworCisvKiBTb3VyY2UgZm9yIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCitAYmVn
aW4gcGxhaW5UaW1lUHJvdG90eXBlVGFibGUKKyAgd2l0aCAgICAgICAgICAgICB0ZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZUZ1bmNXaXRoICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQorICBhZGQgICAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0FkZCAg
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHN1YnRyYWN0ICAgICAgICAgdGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jU3VidHJhY3QgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgcm91bmQgICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1
bmNSb3VuZCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0b1N0cmluZyAgICAg
ICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvU3RyaW5nICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAwCisgIHRvSlNPTiAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGVGdW5jVG9KU09OICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2Nh
bGVTdHJpbmcgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAg
ICAgRG9udEVudW18RnVuY3Rpb24gMAorICB2YWx1ZU9mICAgICAgICAgIHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1ZhbHVlT2YgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisg
IGhvdXIgICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyICAg
ICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG1pbnV0ZSAgICAg
ICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUgICAgICAgICAgIERv
bnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIHNlY29uZCAgICAgICAgICAgdGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJTZWNvbmQgICAgICAgICAgIERvbnRFbnVtfFJlYWRP
bmx5fEN1c3RvbUFjY2Vzc29yCisgIG1pbGxpc2Vjb25kICAgICAgdGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGVHZXR0ZXJNaWxsaXNlY29uZCAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFj
Y2Vzc29yCisgIG1pY3Jvc2Vjb25kICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0
ZXJNaWNyb3NlY29uZCAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG5h
bm9zZWNvbmQgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJOYW5vc2Vjb25k
ICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGNhbGVuZGFyICAgICAg
ICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciAgICAgICAgIERvbnRF
bnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCitAZW5kCisqLworCitUZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZSogVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAg
IGF1dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7CisgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKKyAgICByZXR1cm4gcHJvdG90eXBlOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZt
LCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
RnVuY1dpdGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLndpdGgg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShwbGFpblRpbWUpOworCisgICAgLy8gSlNWYWx1ZSBwbGFpblRpbWVM
aWtlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICAvLyBpZiAoIXBsYWluVGltZUxpa2Uu
aXNPYmplY3QoKSkKKyAgICAvLyAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5
cGUud2l0aCBtdXN0IGJlIGFuIG9iamVjdCJfcyk7CisKKyAgICAvLyBhdXRvIHN1YnBsYWluVGlt
ZXMgPSBwbGFpblRpbWUtPndpdGgoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChwbGFpblRpbWVMaWtl
KSk7CisgICAgLy8gUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8vIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1l
Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJwbGFpblRpbWVzKSkp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlRnVuY0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0g
anNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuYWRk
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUocGxhaW5UaW1lKTsKKworICAgIC8vIGF1dG8gc3VicGxhaW5UaW1l
cyA9IHBsYWluVGltZS0+YWRkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7
CisgICAgLy8gUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8vIFJFTEVB
U0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjp0
cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJwbGFpblRpbWVzKSkpKTsK
K30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
RnVuY1N1YnRyYWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUg
PSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5z
dWJ0cmFjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBsYWluVGltZSk7CisKKyAgICAvLyBhdXRvIHN1YnBs
YWluVGltZXMgPSBwbGFpblRpbWUtPnN1YnRyYWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5h
cmd1bWVudCgwKSk7CisgICAgLy8gUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIC8vIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFs
UGxhaW5UaW1lOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJwbGFp
blRpbWVzKSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1JvdW5kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBw
bGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7
CisKKyAgICBhdXRvIG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmIChv
cHRpb25zLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnJvdW5kIHJl
cXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworCisgICAgYXV0byByb3VuZGVkID0gcGxh
aW5UaW1lLT5yb3VuZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBs
YWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJvdW5kZWQpKSkpOworfQorCitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9TdHJpbmcsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8
VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYg
KCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3Ry
aW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKSk7Cit9CisKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0pTT04s
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nh
c3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAg
aWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkpKTsKK30KKworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvTG9j
YWxlU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b0xv
Y2FsZVN0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3Ry
aW5nKCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUu
dmFsdWVPZiBtdXN0IG5vdCBiZSBjYWxsZWQuIFRvIGNvbXBhcmUgUGxhaW5UaW1lIHZhbHVlcywg
dXNlIFRlbXBvcmFsLlBsYWluVGltZS5jb21wYXJlIl9zKTsKK30KKworSlNDX0RFRklORV9DVVNU
T01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVySG91ciwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlO
YW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1Zh
bHVlKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmhv
dXIgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPmhvdXIoKSkpOworfQorCitK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJN
aW51dGUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8q
IHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5U
aW1lLnByb3RvdHlwZS5taW51dGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRp
bWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUt
Pm1pbnV0ZSgpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZUdldHRlclNlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBs
YWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFp
blRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnNlY29uZCBjYWxsZWQgb24gdmFsdWUg
dGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KGpzTnVtYmVyKHBsYWluVGltZS0+c2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWlsbGlzZWNvbmQsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9
IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlw
ZS5taWxsaXNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7
CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+bWlsbGlz
ZWNvbmQoKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGVHZXR0ZXJNaWNyb3NlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3Jh
bFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFw
bGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1pY3Jvc2Vjb25kIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5taWNyb3NlY29uZCgpKSk7Cit9CisKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck5hbm9z
ZWNvbmQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlz
VmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8q
IHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1
ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5U
aW1lLnByb3RvdHlwZS5uYW5vc2Vjb25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxh
aW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5U
aW1lLT5uYW5vc2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8
VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAg
IGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5jYWxlbmRhciBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKHBsYWluVGltZS0+Y2FsZW5kYXIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjlmNDI5NGE0M2UzMjM3MzFhNTUy
YjM2M2VjZWRmYzM2NmNiM2ZlOAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBA
QAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1l
bnQgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0Lmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNl
ID0gSlNOb25GaW5hbE9iamVjdDsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVj
dHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxl
OworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAg
IHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAg
U1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGUsIEJhc2UpOworICAgICAgICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAg
fQorCisgICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJF
X0lORk87CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUoVk0mLCBT
dHJ1Y3R1cmUqKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3Qq
KTsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmNwcAppbmRleCA5Nzg0YzNkMTc0OTk2OTE1MGIz
ZWQ2ZTY4NmQ1Y2E4OTY5ZTJiMmQyLi43NjU5YjA1ODJjY2QyOTVlOGQxYmE1ZjM4ZWViZDQxNDcx
ODYxNzJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bFRpbWVab25lLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bFRpbWVab25lLmNwcApAQCAtNTcsMTcgKzU3LDYgQEAgVGVtcG9yYWxUaW1lWm9uZTo6VGVtcG9y
YWxUaW1lWm9uZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBUaW1lWm9uZSB0aW1lWm8K
IHsKIH0KIAotLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzdXAtaXN2YWxp
ZHRpbWV6b25lbmFtZQotc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBUZW1wb3JhbFRpbWVab25l
OjppZEZvclRpbWVab25lTmFtZShTdHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBjb25zdCBhdXRv
JiB0aW1lWm9uZXMgPSBpbnRsQXZhaWxhYmxlVGltZVpvbmVzKCk7Ci0gICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgdGltZVpvbmVzLnNpemUoKTsgKytpbmRleCkgewotICAgICAg
ICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0aW1lWm9uZXNbaW5kZXhdLCBzdHJpbmcpKQot
ICAgICAgICAgICAgcmV0dXJuIGluZGV4OwotICAgIH0KLSAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwotfQotCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3Jh
bC1wYXJzZXRlbXBvcmFsdGltZVpvbmVzdHJpbmcKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0
X3Q+IHBhcnNlVGVtcG9yYWxUaW1lWm9uZVN0cmluZyhTdHJpbmdWaWV3KQogewpAQCAtMTEwLDcg
Kzk5LDcgQEAgSlNPYmplY3QqIFRlbXBvcmFsVGltZVpvbmU6OmZyb20oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0aW1lWm9uZUwKICAgICBpZiAodXRjT2Zmc2V0KQogICAg
ICAgICByZXR1cm4gVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbVVUQ09mZnNldCh2bSwgZ2xv
YmFsT2JqZWN0LT50aW1lWm9uZVN0cnVjdHVyZSgpLCB1dGNPZmZzZXQudmFsdWUoKSk7CiAKLSAg
ICBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkZW50aWZpZXIgPSBpZEZvclRpbWVab25lTmFt
ZSh0aW1lWm9uZVN0cmluZyk7CisgICAgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZGVudGlm
aWVyID0gSVNPODYwMTo6aWRGb3JUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcpOwogICAgIGlm
IChpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJv
bUlEKHZtLCBnbG9iYWxPYmplY3QtPnRpbWVab25lU3RydWN0dXJlKCksIGlkZW50aWZpZXIudmFs
dWUoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsVGltZVpvbmUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGlt
ZVpvbmUuaAppbmRleCBiYzI4MTUzYjdmZDI1YmI3NjVlMjUwNmZkOTZmYTc2YjVlNTEwYWRiLi5l
NTc5ZWEzYTYzZjYyMWZkZjQzMjYxMTMyOTc0OWJmM2M0NzQ2YTZkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oCkBAIC0yNSw2ICsyNSw3
IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiSVNPODYwMS5oIgogI2luY2x1ZGUgIklu
dGxPYmplY3QuaCIKICNpbmNsdWRlICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50
Lmg+CkBAIC00NywxMCArNDgsOSBAQCBjbGFzcyBUZW1wb3JhbFRpbWVab25lIGZpbmFsIDogcHVi
bGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgdXNpbmcg
VGltZVpvbmUgPSBWYXJpYW50PFRpbWVab25lSUQsIGludDY0X3Q+OwotICAgIFRpbWVab25lIHRp
bWVab25lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lWm9uZTsgfQorICAgIHVzaW5nIFRpbWVab25l
ID0gSVNPODYwMTo6VGltZVpvbmU7CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUaW1lWm9u
ZUlEPiBpZEZvclRpbWVab25lTmFtZShTdHJpbmdWaWV3KTsKKyAgICBUaW1lWm9uZSB0aW1lWm9u
ZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVpvbmU7IH0KIAogICAgIHN0YXRpYyBKU09iamVjdCog
ZnJvbShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNw
cAppbmRleCA5OTMzNjVhYjMzMmY4ZmZhZDg3NTg4MDAwODEwY2QzMGVkZGE2MWQ3Li42ZDIzZThm
MDU5ZGM3OWJjZmEyOWQ5YzY1YTA1ZWVlODNiM2E1Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rv
ci5jcHAKQEAgLTc0LDYgKzc0LDcgQEAgdm9pZCBUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3I6
OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxUaW1lWm9uZVByb3RvdHkKIHsKICAgICBC
YXNlOjpmaW5pc2hDcmVhdGlvbih2bSwgMCwgIlRpbWVab25lIl9zLCBQcm9wZXJ0eUFkZGl0aW9u
TW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRU
cmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHRlbXBvcmFsVGltZVpv
bmVQcm90b3R5cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmli
dXRlOjpEb250RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICB0ZW1w
b3JhbFRpbWVab25lUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKGNvbnN0cnVjdFRlbXBvcmFsVGltZVpvbmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCkBAIC05Miw3ICs5Myw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFRpbWVab25lLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjCiAgICAgaWYgKHV0Y09mZnNldCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShUZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tVVRDT2Zmc2V0KHZtLCBzdHJ1Y3R1
cmUsIHV0Y09mZnNldC52YWx1ZSgpKSk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+
IGlkZW50aWZpZXIgPSBUZW1wb3JhbFRpbWVab25lOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9u
ZVN0cmluZyk7CisgICAgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZGVudGlmaWVyID0gSVNP
ODYwMTo6aWRGb3JUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcpOwogICAgIGlmICghaWRlbnRp
ZmllcikgewogICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFy
Z3VtZW50IG5lZWRzIHRvIGJlIFVUQyBvZmZzZXQgc3RyaW5nIG9yIFRpbWVab25lIGlkZW50aWZp
ZXIiX3MpOwogICAgICAgICByZXR1cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVk0uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
Y3BwCmluZGV4IDAyZjE4OTdiMGYzOTE4NTYwYjUwNTMxOWQ2ZTQ2MWJkYjVkNzEwZGQuLjE1ZGRi
MmFmYWU1MjM3NzdhZTkwNjZiMzFiMGQ3MTA1NDZiN2Q4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKQEAgLTE2NCw2ICsxNjQsNyBAQAogI2luY2x1ZGUgIlN5bWJvbE9iamVj
dC5oIgogI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1
cmF0aW9uLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKICNpbmNsdWRlICJUZW1w
b3JhbFRpbWVab25lLmgiCiAjaW5jbHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAi
VGh1bmtHZW5lcmF0b3JzLmgiCkBAIC0xNTg4LDYgKzE1ODksOCBAQCBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFw
Q2VsbFR5cAogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9i
amVjdFNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBTeW1ib2xPYmplY3QpCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
U3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVtcGxhdGVPYmpl
Y3REZXNjcmlwdG9yKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRl
bXBvcmFsQ2FsZW5kYXJTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxDYWxl
bmRhcikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbER1
cmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsRHVyYXRpb24pCitE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxQbGFpblRpbWVT
cGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxQbGFpblRpbWUpCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbFRpbWVab25lKQogRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNVaW50OEFycmF5KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpT
VWludDhDbGFtcGVkQXJyYXkpCkBAIC0xNjIyLDcgKzE2MjUsNiBAQCBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRs
UmVsYXRpdgogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdt
ZW50SXRlcmF0b3JTcGFjZSwgaW50bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZS5nZXQoKSwg
SW50bFNlZ21lbnRJdGVyYXRvcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJf
U0xPVyhpbnRsU2VnbWVudGVyU3BhY2UsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUuZ2V0KCks
IEludGxTZWdtZW50ZXIpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
aW50bFNlZ21lbnRzU3BhY2UsIGludGxTZWdtZW50c0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNl
Z21lbnRzKQotRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFs
RHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxEdXJhdGlvbikK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1coanNUb1dhc21JQ0NhbGxlZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBK
U1RvV2FzbUlDQ2FsbGVlKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxU
eXBlLmdldCgpLCBKU1dlYkFzc2VtYmx5Q29kZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCmluZGV4IDFlNzI1Y2UzNzQ4NzNlMDA3ZDFiMDNmNTQ5
NTZjNTAyMzA0YzZiMzcuLjdhNThiMjc5ZTY3MGE4NDAzZDFmMzk0MTIzNTdkNWU3NzExM2Y1Nzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaApAQCAtMTk1LDYgKzE5NSw3IEBAIGNsYXNz
IFVubGlua2VkTW9kdWxlUHJvZ3JhbUNvZGVCbG9jazsKIGNsYXNzIFZpcnR1YWxSZWdpc3RlcjsK
IGNsYXNzIFZNRW50cnlTY29wZTsKIGNsYXNzIFRlbXBvcmFsQ2FsZW5kYXI7CitjbGFzcyBUZW1w
b3JhbFBsYWluVGltZTsKIGNsYXNzIFRlbXBvcmFsVGltZVpvbmU7CiBjbGFzcyBUb3BMZXZlbEds
b2JhbE9iamVjdFNjb3BlOwogY2xhc3MgVHlwZVByb2ZpbGVyOwpAQCAtNTk1LDYgKzU5Niw4IEBA
IGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJs
eUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUihzeW1ib2xPYmplY3RTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxDYWxlbmRhclNwYWNlKQorICAgIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxEdXJhdGlvblNwYWNlKQorICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxQbGFpblRpbWVTcGFjZSkK
ICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsVGltZVpvbmVT
cGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4QXJyYXlT
cGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4Q2xhbXBl
ZEFycmF5U3BhY2UpCkBAIC02MjAsNyArNjIzLDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFk
U2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50SXRlcmF0b3JT
cGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50
ZXJTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdt
ZW50c1NwYWNlKQotICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9y
YWxEdXJhdGlvblNwYWNlKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSkKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2Up
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDMyMjM2NmE4NjgzNDU2ZjBhNGIxZGE3OGY5YjkyNjE3ZWIwMDFlMjYuLmViYzJiZDAzZDlkNmU1
M2ExMDNiMDEwNDhjMTlkZDkyMzRkMDNhZWQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9n
CisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMjEtMDktMDQgIFl1
c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1l
bnQgVGVtcG9yYWwuUGxhaW5UaW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMjk4OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMh
KS4KKworICAgICAgICAqIHN0cmVzcy90ZW1wb3JhbC1wbGFpbnRpbWUuanM6IEFkZGVkLgorICAg
ICAgICAoc2hvdWxkQmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAqIHN0cmVz
cy90ZW1wb3JhbC10aW1lem9uZS5qczoKKwogMjAyMS0wOS0wMyAgWXVzdWtlIFN1enVraSAgPHlz
dXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIE1ha2UgRW51bWVyYXRvck5leHRVcGRh
dGVJbmRleEFuZE1vZGUgY2xvYmJlcml6aW5nIHJ1bGUgcHJlY2lzZQpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9zdHJlc3MvdGVtcG9yYWwtcGxhaW50aW1lLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9y
YWwtcGxhaW50aW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjA3YWFkOTAwOTM2ZDM2YjA5MDQ1ZTFmMDJkMDhh
MzNjZGU1YmUzMzEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1w
bGFpbnRpbWUuanMKQEAgLTAsMCArMSwyNSBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVRl
bXBvcmFsPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAg
aWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0
ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxk
VGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRy
eSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0g
ZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAg
aWYgKG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVycm9y
KSwgbWVzc2FnZSk7Cit9CisKK3sKKyAgICBsZXQgdGltZSA9IG5ldyBUZW1wb3JhbC5QbGFpblRp
bWUoMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBg
MDA6MDE6MDIuMDAzMDA0MDA1YCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1w
b3JhbC10aW1lem9uZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzCmlu
ZGV4IGQ4OGY4Yzg4N2U4NDRhZTJmMDMwOWVhZjE1MWVjYTIyMDE0NDE5NTYuLmI0M2E5MDZmNmZl
ZDRjZTIzYjQwYTY5Y2Y1NGNmY2U1MGFlYmEyOTUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNz
L3RlbXBvcmFsLXRpbWV6b25lLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRpbWV6
b25lLmpzCkBAIC0yNiw2ICsyNiwxOCBAQCBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJv
clR5cGUsIG1lc3NhZ2UpIHsKICAgICAiKzI0IiwKICAgICAiKzIzOiIsCiAgICAgIjIwOjAwIiwK
KyAgICAiKzI6MDAiLAorICAgICIrMzI6MDAiLAorICAgICIrMjM6MDAxIiwKKyAgICAiKzIzOjk5
IiwKKyAgICAiKzIzOjk5MCIsCisgICAgIisyMzo1OTo5OSIsCisgICAgIisyMzo1OTowMDEiLAor
ICAgICIrMjM6NTk6OTk5IiwKKyAgICAiKzIzOjU5OjU5LiIsCisgICAgIisyMzo1OTo1OSwiLAor
ICAgICIrMjM6NTk6NTlhIiwKKyAgICAiKzIzOjU5OjU5LmEiLAogICAgICIrMjA6MDAwMCIsCiAg
ICAgIisyMDo2MCIsCiAgICAgIisyMDo1OToiLApAQCAtNTIsNiArNjQsMTAgQEAgZnVuY3Rpb24g
c2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CiBzaG91bGRCZShuZXcgVGVt
cG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTAwMDAiKS5pZCwgYC0wMTo1OTozMC4xMjM0
NWApOwogc2hvdWxkQmUobmV3IFRlbXBvcmFsLlRpbWVab25lKCItMDE6NTk6MzAuMDAwMDAwMDAx
IikuaWQsIGAtMDE6NTk6MzAuMDAwMDAwMDAxYCk7CiBzaG91bGRCZShuZXcgVGVtcG9yYWwuVGlt
ZVpvbmUoIi0wMTo1OTozMC4xMjM0NTY3ODkiKS5pZCwgYC0wMTo1OTozMC4xMjM0NTY3ODlgKTsK
K3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjMwLjAwMTAwMjAwMyIpLmlk
LCBgLTAxOjU5OjMwLjAwMTAwMjAwM2ApOworc2hvdWxkQmUobmV3IFRlbXBvcmFsLlRpbWVab25l
KCItMDE6NTk6MzAuMDAwMDAwMDAwIikuaWQsIGAtMDE6NTk6MzBgKTsKK3Nob3VsZEJlKG5ldyBU
ZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjAwLjAwMDAwMDAwMCIpLmlkLCBgLTAxOjU5YCk7Citz
aG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTowMDowMC4wMDAwMDAwMDAiKS5pZCwg
YC0wMTowMGApOwogCiBsZXQgdHogPSBuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4x
MjM0NTY3ODkiKQogc2hvdWxkQmUodHouaWQsIFN0cmluZyh0eikpOwo=
</data>
<flag name="commit-queue"
          id="460522"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437350</attachid>
            <date>2021-09-04 18:32:06 -0700</date>
            <delta_ts>2021-09-04 18:49:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229892-20210904183205.patch</filename>
            <type>text/plain</type>
            <size>106201</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTM5NDE1YzNmNmI3NTVlOTY3YjE3MTMzYjU5ZTY5ZWM1NjNkOWNjLi5lZTI4YTY4MDA2YzM0YTcw
ZThkZTVmY2RkODE1MDdhYjNhNmU5YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMS0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5QbGFpblRpbWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTg5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0lTTzg2MDEuY3BwOgorICAgICAgICAo
SlNDOjpJU084NjAxOjppZEZvclRpbWVab25lTmFtZSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6
OnBhcnNlVGltZVNwZWMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZVRpbWVab25lTnVt
ZXJpY1VUQ09mZnNldCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlVGltZVpvbmVCcmFj
a2V0ZWRBbm5vdGF0aW9uKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lWm9uZSk6
CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlVGltZSk6CisgICAgICAgIChKU0M6OklTTzg2
MDE6OmZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
dGVtcG9yYWxUaW1lVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpQbGFpblRpbWU6OlBsYWluVGltZSk6CisgICAgICAgICogcnVu
dGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6dXRjVGltZVpvbmVJRFNsb3cpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjp1dGNUaW1lWm9u
ZUlEKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnBsYWluVGltZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bER1cmF0aW9uOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRp
b246OnRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsTm93LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6Y3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0b3IpOgorICAgICAgICAoSlND
OjpzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKToKKyAgICAgICAgKEpTQzo6dG9UZW1wb3JhbE92ZXJm
bG93KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bFBsYWluVGltZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpUZW1wb3Jh
bFBsYWluVGltZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp2aXNpdENoaWxkcmVuSW1w
bCk6CisgICAgICAgIChKU0M6OnRvUGxhaW5UaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQ
bGFpblRpbWU6OnRyeUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpiYWxhbmNlVGltZSk6
CisgICAgICAgIChKU0M6OnJvdW5kVGltZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5U
aW1lOjpyb3VuZCBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp0b1N0
cmluZyBjb25zdCk6CisgICAgICAgIChKU0M6OnByb3BlcnR5TmFtZSk6CisgICAgICAgIChKU0M6
OnRvVGVtcG9yYWxUaW1lUmVjb3JkKToKKyAgICAgICAgKEpTQzo6Y29uc3RyYWludFRpbWUpOgor
ICAgICAgICAoSlNDOjpyZWd1bGF0ZVRpbWUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWlu
VGltZTo6ZnJvbSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgu
CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OlRlbXBv
cmFsUGxhaW5UaW1lQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsVGltZVpvbmUuaC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6
OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaC4K
KyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbFRpbWVab25lOjpmcm9tKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZTo6
aWRGb3JUaW1lWm9uZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxU
aW1lWm9uZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA5
LTAzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
TWFrZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZSBjbG9iYmVyaXppbmcgcnVsZSBw
cmVjaXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWNhMDgzMTRiNjQ0
NTljNzhjYTAzODY0MjgxNTM3Zjg1MThkYmVlMC4uMzhjYjg0ZGEwNTZlMmI2YTZjMTNlZDlmOGQ3
MDUxOGVhZjA4OTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEz
LDYgKzExMyw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBy
dW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3Jh
bE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorICAgIHJ1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9y
LmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCBjZTVmNjI4OGFhYTI3Y2I3ODE3YmVhZTE0NDM3NmVhMjhhZmFlNjNmLi4yODg1YjUx
MDE3Y2MxYWUzZDg5MmVmM2M1ZjI3YTRiMTIzNzUzODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTc1LDYg
KzE3NSw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVj
dG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJPSkVDVF9E
SVIpL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1Rl
bXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1Rl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1w
b3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBv
cmFsVGltZVpvbmVQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS91Y2QvQ2FzZUZvbGRpbmcu
dHh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKaW5kZXggMWIwNTVjOTIyYzA5NGE1OTU4NDI2MDg0MWRjZWRmY2FhNzM3
NjUwMy4uMmFkMjEzMWM1ODY2OWJkMDU3NWM3YWY0MGE2YzQyN2E1OTRmNWMzZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdApAQCAtNzIsNiArNzIsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLgogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsRHVyYXRp
b25Qcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxU
aW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5sdXQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1VuaWNvZGVQ
YXR0ZXJuVGFibGVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggODgxOTI3ZTE3YmRhMjM4ZDdkYWNlZjFkNmViNWMzYzNiNzQ4YjM3Ny4uZWNiY2U2N2Y3
OGMwMDM0YzE2NmY1MGQ1ODkyYTZmMDhjNWRhNDBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE5Nyw2ICsxOTcsOCBAQCBPQkpFQ1RfTFVUX0hFQURF
UlMgPSBcCiAgICAgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9y
YWxOb3cubHV0LmggXAogICAgIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBUZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBU
ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmx1dC5oIFwKICAgICBXZWJBc3NlbWJseUNvbXBpbGVF
cnJvckNvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAz
MjhmOTJmNWIyZmIyMDVjODM4NzgyMjQxOWE1MDg0ZTBmYTFmN2NhLi44NDZlOWVlNzVmZWQwNTQ3
NTU2YzRiZmQ0YTI2MWQ4MGQ1OWFmYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBA
IC0xMDE5LDYgKzEwMTksOSBAQCBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5j
cHAKIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9y
YWxOb3cuY3BwCiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorcnVudGltZS9UZW1wb3JhbFBs
YWluVGltZS5jcHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKK3J1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBvcmFsVGlt
ZVpvbmUuY3BwCiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDcxNGFhMmZlYjIyNGZhNThm
MjdlZDU1NTFiNjdjOWYzMjY1Y2JkMjcuLmJkZWQ2OTkyZjdhOTY4ZTFjNzA2NDU4M2QzZTA4MTJm
Nzc0YzZlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtMTY5LDcgKzE2OSw5IEBACiAgICAgbWFjcm8obWF4aW11bUZyYWN0
aW9uRGlnaXRzKSBcCiAgICAgbWFjcm8obWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSBcCiAgICAg
bWFjcm8obWVzc2FnZSkgXAorICAgIG1hY3JvKG1pY3Jvc2Vjb25kKSBcCiAgICAgbWFjcm8obWlj
cm9zZWNvbmRzKSBcCisgICAgbWFjcm8obWlsbGlzZWNvbmQpIFwKICAgICBtYWNybyhtaWxsaXNl
Y29uZHMpIFwKICAgICBtYWNybyhtaW5pbXVtRnJhY3Rpb25EaWdpdHMpIFwKICAgICBtYWNybyht
aW5pbXVtSW50ZWdlckRpZ2l0cykgXApAQCAtMTgxLDYgKzE4Myw3IEBACiAgICAgbWFjcm8obW9u
dGhzKSBcCiAgICAgbWFjcm8obXVsdGlsaW5lKSBcCiAgICAgbWFjcm8obmFtZSkgXAorICAgIG1h
Y3JvKG5hbm9zZWNvbmQpIFwKICAgICBtYWNybyhuYW5vc2Vjb25kcykgXAogICAgIG1hY3JvKG5l
eHQpIFwKICAgICBtYWNybyhub3cpIFwKQEAgLTE5NCw2ICsxOTcsNyBAQAogICAgIG1hY3JvKG9y
aWdpbikgXAogICAgIG1hY3JvKG9zckV4aXRTaXRlcykgXAogICAgIG1hY3JvKG9zckV4aXRzKSBc
CisgICAgbWFjcm8ob3ZlcmZsb3cpIFwKICAgICBtYWNybyhwYXJzZSkgXAogICAgIG1hY3JvKHBh
cnNlSW50KSBcCiAgICAgbWFjcm8ocGFyc2VGbG9hdCkgXApAQCAtMjQ1LDYgKzI0OSw3IEBACiAg
ICAgbWFjcm8odXNhZ2UpIFwKICAgICBtYWNybyh2YWx1ZSkgXAogICAgIG1hY3JvKHZhbHVlT2Yp
IFwKKyAgICBtYWNybyh3ZWVrKSBcCiAgICAgbWFjcm8od2Vla2RheSkgXAogICAgIG1hY3JvKHdl
ZWtzKSBcCiAgICAgbWFjcm8od3JpdGFibGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSVNPODYwMS5jcHAKaW5kZXggOWU0MmFmYzEzM2MwN2UzZmI5MWI4OTc3NTZlM2ExNTUxMjNh
ZjkzNy4uNTZmMWRlMDYwYzM5ODQ3NWEzYjI1ZWMxNzA5NWU5NDUyNmYzYjJkYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSVNPODYwMS5oIgogCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIlBhcnNl
SW50LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oPgogCkBAIC0z
OCw2ICs0MCwxNiBAQCBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbnNQZXJTZWNvbmQgPSAxMDAw
TEwgKiAxMDAwICogMTAwMDsKIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBuc1Blck1pbGxpc2Vj
b25kID0gMTAwMExMICogMTAwMDsKIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBuc1Blck1pY3Jv
c2Vjb25kID0gMTAwMExMOwogCitzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkRm9yVGltZVpv
bmVOYW1lKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGNvbnN0IGF1dG8mIHRpbWVab25lcyA9
IGludGxBdmFpbGFibGVUaW1lWm9uZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCB0aW1lWm9uZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKHRpbWVab25lc1tpbmRleF0sIHN0cmluZykpCisgICAgICAgICAgICBy
ZXR1cm4gaW5kZXg7CisgICAgfQorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJUeXBlPgogaW50MzJfdCBwYXJzZURlY2ltYWxJbnQzMihjb25zdCBD
aGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewpAQCAtMjQ0LDI4ICsyNTYs
MTcgQEAgc3RkOjpvcHRpb25hbDxEdXJhdGlvbj4gcGFyc2VEdXJhdGlvbihTdHJpbmdWaWV3IHN0
cmluZykKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBzdGQ6
Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1Bh
cnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PFBsYWluVGltZT4gcGFyc2VUaW1lU3BlYyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5
cGU+JiBidWZmZXIpCiB7Ci0gICAgLy8gVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0IDoKLSAgICAv
LyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91cgotICAgIC8v
ICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpv
bmVVVENPZmZzZXRNaW51dGUKLSAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVa
b25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZQotICAgIC8vICAgICBUaW1l
Wm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZz
ZXRNaW51dGUgOiBUaW1lWm9uZVVUQ09mZnNldFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0
aW9uW29wdF0KLSAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zm
c2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZSBUaW1lWm9uZVVUQ09mZnNldFNlY29uZFtv
cHRdCi0gICAgLy8KLSAgICAvLyAgTWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMgYXJlIMKxMjM6
NTk6NTkuOTk5OTk5OTk5ID0gwrE4NjM5OTk5OTk5OTk5OW5zLCB3aGljaCBjYW4gYmUgcmVwcmVz
ZW50ZWQgYnkgaW50NjRfdCAvIGRvdWJsZSdzIGludGVnZXIgcGFydC4KKyAgICAvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVNwZWMKKyAgICAvLyBUaW1lU3Bl
YyA6CisgICAgLy8gICAgIFRpbWVIb3VyCisgICAgLy8gICAgIFRpbWVIb3VyIDogVGltZU1pbnV0
ZQorICAgIC8vICAgICBUaW1lSG91ciBUaW1lTWludXRlCisgICAgLy8gICAgIFRpbWVIb3VyIDog
VGltZU1pbnV0ZSA6IFRpbWVTZWNvbmQgVGltZUZyYWN0aW9uW29wdF0KKyAgICAvLyAgICAgVGlt
ZUhvdXIgVGltZU1pbnV0ZSBUaW1lU2Vjb25kIFRpbWVGcmFjdGlvbltvcHRdCiAKLSAgICAvLyBz
aWduIGFuZCBob3VyLgotICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCAzKQotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaW50NjRfdCBmYWN0b3IgPSAxOwotICAg
IGlmICgqYnVmZmVyID09ICcrJykKLSAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKLSAgICBlbHNl
IGlmICgqYnVmZmVyID09ICctJyB8fCAqYnVmZmVyID09IDB4MjIxMikgewotICAgICAgICBmYWN0
b3IgPSAtMTsKLSAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKLSAgICB9IGVsc2UKKyAgICBpZiAo
YnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGludDY0X3QgaG91ciA9IDA7CkBAIC0yODQsMTMgKzI4NSwxNCBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChTdHJp
bmdQYXJzaW5nQnVmZmVyPAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KGJ1ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gKG5zUGVySG91ciAqIGhvdXIpICogZmFj
dG9yOworICAgICAgICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIDAsIDAsIDAsIDAsIDApOwogCiAg
ICAgYm9vbCBzcGxpdEJ5Q29sb24gPSBmYWxzZTsKICAgICBpZiAoKmJ1ZmZlciA9PSAnOicpIHsK
LSAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKICAgICAgICAgc3BsaXRCeUNvbG9uID0gdHJ1ZTsK
LSAgICB9CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgfSBlbHNlIGlmICghKCpidWZm
ZXIgPj0gJzAnICYmICpidWZmZXIgPD0gJzUnKSkKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZSho
b3VyLCAwLCAwLCAwLCAwLCAwKTsKIAogICAgIGludDY0X3QgbWludXRlID0gMDsKICAgICBpZiAo
YnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgMikKQEAgLTMwOCwxNCArMzEwLDE1IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0
cmluZ1BhcnNpbmdCdWZmZXI8CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiAobnNQZXJIb3VyICogaG91ciArIG5z
UGVyTWludXRlICogbWludXRlKSAqIGZhY3RvcjsKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZSho
b3VyLCBtaW51dGUsIDAsIDAsIDAsIDApOwogCiAgICAgaWYgKHNwbGl0QnlDb2xvbikgewogICAg
ICAgICBpZiAoKmJ1ZmZlciA9PSAnOicpCiAgICAgICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwgbWludXRlLCAwLCAwLCAwLCAwKTsKKyAg
ICB9IGVsc2UgaWYgKCEoKmJ1ZmZlciA+PSAnMCcgJiYgKmJ1ZmZlciA8PSAnNScpKQorICAgICAg
ICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgMCwgMCwgMCwgMCk7CiAKICAgICBpbnQ2
NF90IHNlY29uZCA9IDA7CiAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDIpCkBA
IC0zMjcsNDIgKzMzMCwyNzAgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VU
aW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nUGFyc2luZ0J1ZmZlcjwKICAgICAgICAgaWYg
KCFpc0FTQ0lJRGlnaXQoc2Vjb25kU2Vjb25kQ2hhcmFjdGVyKSkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHNlY29uZCA9IChzZWNvbmRTZWNvbmRDaGFyYWN0ZXIg
LSAnMCcpICsgMTAgKiAoZmlyc3RTZWNvbmRDaGFyYWN0ZXIgLSAnMCcpOwotICAgICAgICBBU1NF
UlQobWludXRlIDwgNjApOworICAgICAgICBBU1NFUlQoc2Vjb25kIDwgNjApOwogICAgICAgICBi
dWZmZXIuYWR2YW5jZSgpOwogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gKG5zUGVySG91ciAq
IGhvdXIgKyBuc1Blck1pbnV0ZSAqIG1pbnV0ZSArIG5zUGVyU2Vjb25kICogc2Vjb25kKSAqIGZh
Y3RvcjsKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgMCwg
MCwgMCk7CiAKICAgICBpZiAoKmJ1ZmZlciAhPSAnLicgJiYgKmJ1ZmZlciAhPSAnLCcpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwg
bWludXRlLCBzZWNvbmQsIDAsIDAsIDApOwogICAgIGJ1ZmZlci5hZHZhbmNlKCk7CiAKICAgICB1
bnNpZ25lZCBkaWdpdHMgPSAwOwotICAgIHdoaWxlIChkaWdpdHMgPCBidWZmZXIubGVuZ3RoUmVt
YWluaW5nKCkgJiYgaXNBU0NJSURpZ2l0KGJ1ZmZlcltkaWdpdHNdKSkKLSAgICAgICAgZGlnaXRz
Kys7Ci0gICAgaWYgKCFkaWdpdHMgfHwgZGlnaXRzID4gOSkKKyAgICB1bnNpZ25lZCBtYXhDb3Vu
dCA9IHN0ZDo6bWluPHVuc2lnbmVkPihidWZmZXIubGVuZ3RoUmVtYWluaW5nKCksIDkpOworICAg
IGZvciAoOyBkaWdpdHMgPCBtYXhDb3VudDsgKytkaWdpdHMpIHsKKyAgICAgICAgaWYgKCFpc0FT
Q0lJRGlnaXQoYnVmZmVyW2RpZ2l0c10pKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGlmICghZGlnaXRzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9y
PExDaGFyLCA5PiBwYWRkZWQoOSwgJzAnKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZGlnaXRzOyArK2kpCiAgICAgICAgIHBhZGRlZFtpXSA9IGJ1ZmZlcltpXTsKICAgICBidWZmZXIu
YWR2YW5jZUJ5KGRpZ2l0cyk7Ci0gICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGludDY0X3QgbWlsbGlzZWNvbmQgPSBwYXJzZURlY2lt
YWxJbnQzMihwYWRkZWQuZGF0YSgpLCAzKTsKICAgICBpbnQ2NF90IG1pY3Jvc2Vjb25kID0gcGFy
c2VEZWNpbWFsSW50MzIocGFkZGVkLmRhdGEoKSArIDMsIDMpOwogICAgIGludDY0X3QgbmFub3Nl
Y29uZCA9IHBhcnNlRGVjaW1hbEludDMyKHBhZGRlZC5kYXRhKCkgKyA2LCAzKTsKIAorICAgIHJl
dHVybiBQbGFpblRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBtaWNyb3Nl
Y29uZCwgbmFub3NlY29uZCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09m
ZnNldChTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAg
Ly8gVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0IDoKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZz
ZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91cgorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNl
dFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUKKyAg
ICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBUaW1l
Wm9uZVVUQ09mZnNldE1pbnV0ZQorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGlt
ZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUgOiBUaW1lWm9uZVVU
Q09mZnNldFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0aW9uW29wdF0KKyAgICAvLyAgICAg
VGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVUQ09m
ZnNldE1pbnV0ZSBUaW1lWm9uZVVUQ09mZnNldFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0
aW9uW29wdF0KKyAgICAvLworICAgIC8vICBUaGlzIGlzIHRoZSBzYW1lIHRvCisgICAgLy8gICAg
IFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lU3BlYworICAgIC8vCisgICAgLy8gIE1heGltdW0g
YW5kIG1pbmltdW0gdmFsdWVzIGFyZSDCsTIzOjU5OjU5Ljk5OTk5OTk5OSA9IMKxODYzOTk5OTk5
OTk5OTlucywgd2hpY2ggY2FuIGJlIHJlcHJlc2VudGVkIGJ5IGludDY0X3QgLyBkb3VibGUncyBp
bnRlZ2VyIHBhcnQuCisKKyAgICAvLyBzaWduIGFuZCBob3VyLgorICAgIGlmIChidWZmZXIubGVu
Z3RoUmVtYWluaW5nKCkgPCAzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
aW50NjRfdCBmYWN0b3IgPSAxOworICAgIGlmICgqYnVmZmVyID09ICcrJykKKyAgICAgICAgYnVm
ZmVyLmFkdmFuY2UoKTsKKyAgICBlbHNlIGlmICgqYnVmZmVyID09ICctJyB8fCAqYnVmZmVyID09
IDB4MjIxMikgeworICAgICAgICBmYWN0b3IgPSAtMTsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2Uo
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8g
cGxhaW5UaW1lID0gcGFyc2VUaW1lU3BlYyhidWZmZXIpOworICAgIGlmICghcGxhaW5UaW1lKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaW50NjRfdCBob3VyID0gcGxhaW5U
aW1lLT5ob3VyKCk7CisgICAgaW50NjRfdCBtaW51dGUgPSBwbGFpblRpbWUtPm1pbnV0ZSgpOwor
ICAgIGludDY0X3Qgc2Vjb25kID0gcGxhaW5UaW1lLT5zZWNvbmQoKTsKKyAgICBpbnQ2NF90IG1p
bGxpc2Vjb25kID0gcGxhaW5UaW1lLT5taWxsaXNlY29uZCgpOworICAgIGludDY0X3QgbWljcm9z
ZWNvbmQgPSBwbGFpblRpbWUtPm1pY3Jvc2Vjb25kKCk7CisgICAgaW50NjRfdCBuYW5vc2Vjb25k
ID0gcGxhaW5UaW1lLT5uYW5vc2Vjb25kKCk7CisKICAgICByZXR1cm4gKG5zUGVySG91ciAqIGhv
dXIgKyBuc1Blck1pbnV0ZSAqIG1pbnV0ZSArIG5zUGVyU2Vjb25kICogc2Vjb25kICsgbnNQZXJN
aWxsaXNlY29uZCAqIG1pbGxpc2Vjb25kICsgbnNQZXJNaWNyb3NlY29uZCAqIG1pY3Jvc2Vjb25k
ICsgbmFub3NlY29uZCkgKiBmYWN0b3I7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFy
c2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgcmV0
dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBz
dGQ6Om9wdGlvbmFsPGludDY0X3Q+IHsKLSAgICAgICAgcmV0dXJuIHBhcnNlVGltZVpvbmVOdW1l
cmljVVRDT2Zmc2V0KGJ1ZmZlcik7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VUaW1lWm9u
ZU51bWVyaWNVVENPZmZzZXQoYnVmZmVyKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0
aW9uYWw8VGltZVpvbmU+IHBhcnNlVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uKFN0cmluZ1Bh
cnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3sKKyAgICAvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9u
CisgICAgLy8gVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uIDoKKyAgICAvLyAgICAgWyBUaW1l
Wm9uZUJyYWNrZXRlZE5hbWUgXQorICAgIC8vCisgICAgLy8gVGltZVpvbmVCcmFja2V0ZWROYW1l
IDoKKyAgICAvLyAgICAgVGltZVpvbmVJQU5BTmFtZQorICAgIC8vICAgICBFdGMvR01UIEFTQ0lJ
U2lnbiBIb3VyCisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0TmFtZQorCisgICAgaWYgKGJ1
ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoKmJ1ZmZlciAhPSAnWycpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgYnVmZmVyLmFkdmFuY2UoKTsKKworICAgIHN3aXRjaCAoKmJ1ZmZlcikgeworICAgIGNh
c2UgJysnOgorICAgIGNhc2UgJy0nOgorICAgIGNhc2UgMHgyMjEyOiB7CisgICAgICAgIC8vIFRp
bWVab25lVVRDT2Zmc2V0TmFtZSBpcyB0aGUgc2FtZSB0byBUaW1lWm9uZU51bWVyaWNVVENPZmZz
ZXQuCisgICAgICAgIGF1dG8gb2Zmc2V0ID0gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQo
YnVmZmVyKTsKKyAgICAgICAgaWYgKCFvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICBpZiAoKmJ1ZmZlciAhPSAnXScpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBy
ZXR1cm4gb2Zmc2V0LnZhbHVlKCk7CisgICAgfQorICAgIGNhc2UgJ0UnOiB7CisgICAgICAgIC8v
ICJFdGMvR01UKzIwIiBhbmQgIl0iID0+IGxlbmd0aCBpcyAxMS4KKyAgICAgICAgaWYgKGJ1ZmZl
ci5sZW5ndGhSZW1haW5pbmcoKSA+PSAxMSkgeworICAgICAgICAgICAgaWYgKGJ1ZmZlclswXSA9
PSAnRScgJiYgYnVmZmVyWzFdID09ICd0JyAmJiBidWZmZXJbMl0gPT0gJ2MnICYmIGJ1ZmZlclsz
XSA9PSAnLycgJiYgYnVmZmVyWzRdID09ICdHJyAmJiBidWZmZXJbNV0gPT0gJ00nICYmIGJ1ZmZl
cls2XSA9PSAnVCcpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHNpZ25DaGFyYWN0ZXIgPSBidWZm
ZXJbN107CisgICAgICAgICAgICAgICAgLy8gTm90IGluY2x1ZGluZyAweDIyMTIgc2luY2UgaXQg
aXMgQVNDSUlTaWduLgorICAgICAgICAgICAgICAgIGlmIChzaWduQ2hhcmFjdGVyID09ICcrJyB8
fCBzaWduQ2hhcmFjdGVyID09ICctJykgeworICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGZh
Y3RvciA9IHNpZ25DaGFyYWN0ZXIgPT0gJysnID8gMSA6IC0xOworICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IGhvdXIgPSAwOworICAgICAgICAgICAgICAgICAgICBhdXRvIGZpcnN0SG91ckNo
YXJhY3RlciA9IGJ1ZmZlcls4XTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0SG91ckNo
YXJhY3RlciA+PSAnMCcgJiYgZmlyc3RIb3VyQ2hhcmFjdGVyIDw9ICcyJykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBzZWNvbmRIb3VyQ2hhcmFjdGVyID0gYnVmZmVyWzldOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChzZWNvbmRIb3VyQ2hhcmFjdGVy
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXIgPSAoc2Vjb25kSG91ckNoYXJh
Y3RlciAtICcwJykgKyAxMCAqIChmaXJzdEhvdXJDaGFyYWN0ZXIgLSAnMCcpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChob3VyIDwgMjQgJiYgYnVmZmVyWzEwXSA9PSAnXScpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFkdmFuY2VCeSgxMSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuc1BlckhvdXIgKiBob3VyICog
ZmFjdG9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisgICAgZGVm
YXVsdDogeworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgIGZvciAoOyBpbmRl
eCA8IGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKTsgKytpbmRleCkgeworICAgICAgICAgICAgaWYg
KGJ1ZmZlcltpbmRleF0gPT0gJ10nKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICBTdHJpbmdWaWV3IHRpbWVab25lU3RyaW5nID0gYnVmZmVyLnN0cmluZ1ZpZXdPZkNo
YXJhY3RlcnNSZW1haW5pbmcoKS5sZWZ0KGluZGV4KTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxU
aW1lWm9uZUlEPiBpZGVudGlmaWVyID0gaWRGb3JUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcp
OworICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICBidWZmZXIuYWR2YW5jZUJ5KGluZGV4KTsKKyAgICAgICAgaWYgKGJ1ZmZl
ci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYg
KCpidWZmZXIgIT0gJ10nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIudmFsdWUoKTsK
KyAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3Rk
OjpvcHRpb25hbDxUaW1lWm9uZT4gcGFyc2VUaW1lWm9uZShTdHJpbmdQYXJzaW5nQnVmZmVyPENo
YXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN3aXRjaCAoKmJ1ZmZlcikgeworICAgIC8vIFVU
Q0Rlc2lnbmF0b3IKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3By
b2QtVVRDRGVzaWduYXRvcgorICAgIGNhc2UgJ3onOgorICAgIGNhc2UgJ1onOiB7CisgICAgICAg
IGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAgICAg
ICAgIHJldHVybiB1dGNUaW1lWm9uZUlEKCk7CisgICAgICAgIGlmICgqYnVmZmVyID09ICdbJykg
eworICAgICAgICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpvbmVCcmFja2V0ZWRBbm5v
dGF0aW9uKGJ1ZmZlcik7CisgICAgICAgICAgICBpZiAoIXRpbWVab25lKQorICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gdGltZVpvbmUudmFs
dWUoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdXRjVGltZVpvbmVJRCgpOworICAgIH0K
KyAgICAvLyBUaW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVVVENPZmZzZXRTaWduCisgICAgY2FzZSAnKyc6
CisgICAgY2FzZSAnLSc6CisgICAgY2FzZSAweDIyMTI6IHsKKyAgICAgICAgYXV0byBvZmZzZXQg
PSBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChidWZmZXIpOworICAgICAgICBpZiAoIW9m
ZnNldCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmIChidWZm
ZXIuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQudmFsdWUoKTsKKyAgICAgICAg
aWYgKCpidWZmZXIgPT0gJ1snKSB7CisgICAgICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VU
aW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24oYnVmZmVyKTsKKyAgICAgICAgICAgIGlmICghdGlt
ZVpvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiB0aW1lWm9uZS52YWx1ZSgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBvZmZz
ZXQudmFsdWUoKTsKKyAgICB9CisgICAgLy8gVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uCisg
ICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25lQnJh
Y2tldGVkQW5ub3RhdGlvbgorICAgIGNhc2UgJ1snOiB7CisgICAgICAgIGF1dG8gdGltZVpvbmUg
PSBwYXJzZVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbihidWZmZXIpOworICAgICAgICBpZiAo
IXRpbWVab25lKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHRpbWVab25lLnZhbHVlKCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgorc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25hbDxU
aW1lWm9uZT4+PiBwYXJzZVRpbWUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYg
YnVmZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJv
ZC1UaW1lCisgICAgLy8gVGltZSA6CisgICAgLy8gICAgIFRpbWVTcGVjIFRpbWVab25lW29wdF0K
KyAgICBhdXRvIHBsYWluVGltZSA9IHBhcnNlVGltZVNwZWMoYnVmZmVyKTsKKyAgICBpZiAoIXBs
YWluVGltZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoYnVmZmVyLmF0
RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZhbHVlKCksIHN0
ZDo6bnVsbG9wdCB9OworICAgIHN3aXRjaCAoKmJ1ZmZlcikgeworICAgIC8vIFVUQ0Rlc2lnbmF0
b3IKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVVRDRGVz
aWduYXRvcgorICAgIGNhc2UgJ3onOgorICAgIGNhc2UgJ1onOgorICAgIC8vIFRpbWVab25lVVRD
T2Zmc2V0U2lnbgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJv
ZC1UaW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICBjYXNlICcrJzoKKyAgICBjYXNlICctJzoKKyAg
ICBjYXNlIDB4MjIxMjoKKyAgICAvLyBUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICAv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVCcmFja2V0
ZWRBbm5vdGF0aW9uCisgICAgY2FzZSAnWyc6IHsKKyAgICAgICAgYXV0byB0aW1lWm9uZSA9IHBh
cnNlVGltZVpvbmUoYnVmZmVyKTsKKyAgICAgICAgaWYgKCF0aW1lWm9uZSkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5U
aW1lLnZhbHVlKCksIHRpbWVab25lIH07CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCB9OworICAg
IH0KK30KKworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25h
bDxUaW1lWm9uZT4+PiBwYXJzZVRpbWUoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgcmV0dXJu
IHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6
Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lPj4+
IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBwYXJzZVRpbWUoYnVmZmVyKTsKKyAgICAgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAo
IWJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9KTsKIH0KIApAQCAtMzgyLDEzICs2MTMsMTkgQEAgU3Ry
aW5nIGZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKGludDY0X3Qgb2Zmc2V0KQogICAgIGlmIChu
YW5vc2Vjb25kcykgewogICAgICAgICAvLyBTaW5jZSBuc1BlclNlY29uZCBpcyAxMDAwMDAwMDAw
LCBzdHJpbmdpZmllZCBuYW5vc2Vjb25kcyB0YWtlcyBhdCBtb3N0IDkgY2hhcmFjdGVycyAoOTk5
OTk5OTk5KS4KICAgICAgICAgYXV0byBmcmFjdGlvbiA9IFdURjo6bnVtYmVyVG9TdHJpbmdVbnNp
Z25lZDxWZWN0b3I8TENoYXIsIDk+PihuYW5vc2Vjb25kcyk7Ci0gICAgICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKICAgICAgICAgdW5zaWduZWQgcGFkZGluZ0xlbmd0aCA9IDkgLSBmcmFjdGlvbi5z
aXplKCk7Ci0gICAgICAgIGZvciAoOyBpbmRleCA8IGZyYWN0aW9uLnNpemUoKTsgKytpbmRleCkg
ewotICAgICAgICAgICAgaWYgKGZyYWN0aW9uW2luZGV4XSA9PSAnMCcpCisgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gZnJhY3Rpb24uc2l6ZSgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiB2YWxpZExlbmd0aDsKKyAgICAgICAgd2hpbGUgKGluZGV4LS0pIHsKKyAgICAgICAgICAg
IGlmIChmcmFjdGlvbltpbmRleF0gIT0gJzAnKSB7CisgICAgICAgICAgICAgICAgdmFsaWRMZW5n
dGggPSBpbmRleCArIDE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgZnJhY3Rpb24ucmVzaXplKGluZGV4KTsKKyAgICAgICAgaWYgKHZh
bGlkTGVuZ3RoKQorICAgICAgICAgICAgZnJhY3Rpb24ucmVzaXplKHZhbGlkTGVuZ3RoLnZhbHVl
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmcmFjdGlvbi5jbGVhcigpOwogICAgICAg
ICByZXR1cm4gbWFrZVN0cmluZyhuZWdhdGl2ZSA/ICctJyA6ICcrJywgcGFkKCcwJywgMiwgaG91
cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpLCAnOicsIHBhZCgnMCcsIDIsIHNlY29uZHMp
LCAnLicsIHBhZCgnMCcsIHBhZGRpbmdMZW5ndGgsIGVtcHR5U3RyaW5nKCkpLCBmcmFjdGlvbik7
CiAgICAgfQogICAgIGlmIChzZWNvbmRzKQpAQCAtMzk2LDUgKzYzMyw0MCBAQCBTdHJpbmcgZm9y
bWF0VGltZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCBvZmZzZXQpCiAgICAgcmV0dXJuIG1ha2VT
dHJpbmcobmVnYXRpdmUgPyAnLScgOiAnKycsIHBhZCgnMCcsIDIsIGhvdXJzKSwgJzonLCBwYWQo
JzAnLCAyLCBtaW51dGVzKSk7CiB9CiAKK1N0cmluZyB0ZW1wb3JhbFRpbWVUb1N0cmluZyhQbGFp
blRpbWUgcGxhaW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lv
bikKK3sKKyAgICBhdXRvIFtwcmVjaXNpb25UeXBlLCBwcmVjaXNpb25WYWx1ZV0gPSBwcmVjaXNp
b247CisgICAgQVNTRVJUKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpBdXRvIHx8IHByZWNp
c2lvblZhbHVlIDwgMTApOworICAgIGlmIChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6TWlu
dXRlKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBwbGFpblRpbWUuaG91
cigpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUubWludXRlKCkpKTsKKworICAgIGludDY0
X3QgZnJhY3Rpb25OYW5vc2Vjb25kcyA9IHN0YXRpY19jYXN0PGludDY0X3Q+KHBsYWluVGltZS5t
aWxsaXNlY29uZCgpKSAqIG5zUGVyTWlsbGlzZWNvbmQgKyBzdGF0aWNfY2FzdDxpbnQ2NF90Pihw
bGFpblRpbWUubWljcm9zZWNvbmQoKSkgKiBuc1Blck1pY3Jvc2Vjb25kICsgc3RhdGljX2Nhc3Q8
aW50NjRfdD4ocGxhaW5UaW1lLm5hbm9zZWNvbmQoKSk7CisgICAgaWYgKHByZWNpc2lvblR5cGUg
PT0gUHJlY2lzaW9uOjpBdXRvKSB7CisgICAgICAgIGlmICghZnJhY3Rpb25OYW5vc2Vjb25kcykK
KyAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3Vy
KCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSksICc6JywgcGFkKCcwJywg
MiwgcGxhaW5UaW1lLnNlY29uZCgpKSk7CisgICAgICAgIGF1dG8gZnJhY3Rpb24gPSBXVEY6Om51
bWJlclRvU3RyaW5nVW5zaWduZWQ8VmVjdG9yPExDaGFyLCA5Pj4oZnJhY3Rpb25OYW5vc2Vjb25k
cyk7CisgICAgICAgIHVuc2lnbmVkIHBhZGRpbmdMZW5ndGggPSA5IC0gZnJhY3Rpb24uc2l6ZSgp
OworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGZyYWN0aW9uLnNpemUoKTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gdmFsaWRMZW5ndGg7CisgICAgICAgIHdoaWxlIChpbmRleC0t
KSB7CisgICAgICAgICAgICBpZiAoZnJhY3Rpb25baW5kZXhdICE9ICcwJykgeworICAgICAgICAg
ICAgICAgIHZhbGlkTGVuZ3RoID0gaW5kZXggKyAxOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICh2YWxpZExlbmd0aCkKKyAgICAg
ICAgICAgIGZyYWN0aW9uLnJlc2l6ZSh2YWxpZExlbmd0aC52YWx1ZSgpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgZnJhY3Rpb24uY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcocGFkKCcwJywgMiwgcGxhaW5UaW1lLmhvdXIoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5U
aW1lLm1pbnV0ZSgpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUuc2Vjb25kKCkpLCAnLics
IHBhZCgnMCcsIHBhZGRpbmdMZW5ndGgsIGVtcHR5U3RyaW5nKCkpLCBmcmFjdGlvbik7CisgICAg
fQorICAgIGlmICghcHJlY2lzaW9uVmFsdWUpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBh
ZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5t
aW51dGUoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLnNlY29uZCgpKSk7CisgICAgYXV0
byBmcmFjdGlvbiA9IFdURjo6bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TENoYXIsIDk+
PihmcmFjdGlvbk5hbm9zZWNvbmRzKTsKKyAgICB1bnNpZ25lZCBwYWRkaW5nTGVuZ3RoID0gOSAt
IGZyYWN0aW9uLnNpemUoKTsKKyAgICBmcmFjdGlvbi5yZXNpemUocHJlY2lzaW9uVmFsdWUpOwor
ICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOics
IHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5U
aW1lLnNlY29uZCgpKSwgJy4nLCBwYWQoJzAnLCBwYWRkaW5nTGVuZ3RoLCBlbXB0eVN0cmluZygp
KSwgZnJhY3Rpb24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAppbmRleCA2NzY4OWQx
YzI0NWFmZWUyYWMyNjk1OWMyOTcwZGQ0OTYzYWUzMDAyLi5jY2E0NDExZjlhNTYxNGIyNmM3ODc4
MWEyMjI5NTk2MjliZTkwYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JU084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYw
MS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNiArMjYsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3Jh
bE9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ4LDkgKzUwLDQyIEBAIHN0cnVjdCBE
dXJhdGlvbiB7CiAgICAgc3RkOjphcnJheTxkb3VibGUsIG51bWJlck9mVGVtcG9yYWxVbml0cz4g
ZGF0YSB7IH07CiB9OwogCitjbGFzcyBQbGFpblRpbWUgeworcHVibGljOgorICAgIFBsYWluVGlt
ZSgpID0gZGVmYXVsdDsKKyAgICBQbGFpblRpbWUodW5zaWduZWQgaG91ciwgdW5zaWduZWQgbWlu
dXRlLCB1bnNpZ25lZCBzZWNvbmQsIHVuc2lnbmVkIG1pbGxpc2Vjb25kLCB1bnNpZ25lZCBtaWNy
b3NlY29uZCwgdW5zaWduZWQgbmFub3NlY29uZCkKKyAgICAgICAgOiBtX2hvdXIoaG91cikKKyAg
ICAgICAgLCBtX21pbnV0ZShtaW51dGUpCisgICAgICAgICwgbV9zZWNvbmQoc2Vjb25kKQorICAg
ICAgICAsIG1fbWlsbGlzZWNvbmQobWlsbGlzZWNvbmQpCisgICAgICAgICwgbV9taWNyb3NlY29u
ZChtaWNyb3NlY29uZCkKKyAgICAgICAgLCBtX25hbm9zZWNvbmQobmFub3NlY29uZCkKKyAgICB7
IH0KKworI2RlZmluZSBKU0NfREVGSU5FX0lTTzg2MDFfUExBSU5fVElNRV9GSUVMRChuYW1lLCBj
YXBpdGFsaXplZE5hbWUpIFwKKyAgICB1bnNpZ25lZCBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV8j
I25hbWU7IH0gXAorICAgIHZvaWQgc2V0IyNjYXBpdGFsaXplZE5hbWUodW5zaWduZWQgdmFsdWUp
IHsgbV8jI25hbWUgPSB2YWx1ZTsgfQorICAgIEpTQ19URU1QT1JBTF9QTEFJTl9USU1FX1VOSVRT
KEpTQ19ERUZJTkVfSVNPODYwMV9QTEFJTl9USU1FX0ZJRUxEKTsKKyN1bmRlZiBKU0NfREVGSU5F
X0lTTzg2MDFfRFVSQVRJT05fRklFTEQKKworcHJpdmF0ZToKKyAgICB1aW50OF90IG1faG91ciB7
IDAgfTsKKyAgICB1aW50OF90IG1fbWludXRlIHsgMCB9OworICAgIHVpbnQ4X3QgbV9zZWNvbmQg
eyAwIH07CisgICAgdWludDE2X3QgbV9taWxsaXNlY29uZCB7IDAgfTsKKyAgICB1aW50MTZfdCBt
X21pY3Jvc2Vjb25kIHsgMCB9OworICAgIHVpbnQxNl90IG1fbmFub3NlY29uZCB7IDAgfTsKK307
CisKK3VzaW5nIFRpbWVab25lID0gVmFyaWFudDxUaW1lWm9uZUlELCBpbnQ2NF90PjsKKworLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzdXAtaXN2YWxpZHRpbWV6b25lbmFt
ZQorc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZEZvclRpbWVab25lTmFtZShTdHJpbmdWaWV3
KTsKIHN0ZDo6b3B0aW9uYWw8RHVyYXRpb24+IHBhcnNlRHVyYXRpb24oU3RyaW5nVmlldyk7CiBz
dGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmlu
Z1ZpZXcpOworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25h
bDxUaW1lWm9uZT4+PiBwYXJzZVRpbWUoU3RyaW5nVmlldyk7CiBTdHJpbmcgZm9ybWF0VGltZVpv
bmVPZmZzZXRTdHJpbmcoaW50NjRfdCk7CitTdHJpbmcgdGVtcG9yYWxUaW1lVG9TdHJpbmcoUGxh
aW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbik7CiAKIH0g
Ly8gbmFtZXNwYWNlIElTTzg2MDEKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCA4ZDhlOTZlNzc1NWQ1OGFiODQy
ZTM2MGNmYWZiMTlkMDBmZTI2MjcwLi43OTc1OWJjNWZhNDRmZTI5NzcyNjA1ZjU2YTVjYTliMDg5
NTYzMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNw
cApAQCAtMTgzOSw2ICsxODM5LDIzIEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRsQXZhaWxh
YmxlVGltZVpvbmVzKCkKICAgICByZXR1cm4gYXZhaWxhYmxlVGltZVpvbmVzOwogfQogCitUaW1l
Wm9uZUlEIHV0Y1RpbWVab25lSURTdG9yYWdlIHsgc3RkOjpudW1lcmljX2xpbWl0czxUaW1lWm9u
ZUlEPjo6bWF4KCkgfTsKK1RpbWVab25lSUQgdXRjVGltZVpvbmVJRFNsb3coKQoreworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShp
bml0aWFsaXplT25jZSwgWyZdIHsKKyAgICAgICAgY29uc3QgYXV0byYgdGltZVpvbmVzID0gaW50
bEF2YWlsYWJsZVRpbWVab25lcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCB0aW1lWm9uZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAodGlt
ZVpvbmVzW2luZGV4XSA9PSAiVVRDIl9zKSB7CisgICAgICAgICAgICAgICAgdXRjVGltZVpvbmVJ
RFN0b3JhZ2UgPSBpbmRleDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
KTsKKyAgICByZXR1cm4gdXRjVGltZVpvbmVJRFN0b3JhZ2U7Cit9CisKIC8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC1pbnRsLWVudW1lcmF0aW9uLyNzZWMtYXZhaWxhYmxldGltZXpvbmVzCiBz
dGF0aWMgSlNBcnJheSogYXZhaWxhYmxlVGltZVpvbmVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKaW5k
ZXggOTZkMjE4NTVjOWNhNmYzZTMxOTZiNzRlYTAyZDBlZDUzZDM5YzEzMC4uYjNlMTVkMzBiYTkz
YjViMjA1YjU3M2UwODllYmJiZjM5Y2UyMTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuaApAQCAtMTE3LDYgKzExNywxNiBAQCBpbmxpbmUgQ2FsZW5kYXJJ
RCBpc284NjAxQ2FsZW5kYXJJRCgpCiB1c2luZyBUaW1lWm9uZUlEID0gdW5zaWduZWQ7CiBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaW50bEF2YWlsYWJsZVRpbWVab25lcygpOwogCitleHRlcm4gVGlt
ZVpvbmVJRCB1dGNUaW1lWm9uZUlEU3RvcmFnZTsKK1RpbWVab25lSUQgdXRjVGltZVpvbmVJRFNs
b3coKTsKK2lubGluZSBDYWxlbmRhcklEIHV0Y1RpbWVab25lSUQoKQoreworICAgIHVuc2lnbmVk
IHZhbHVlID0gdXRjVGltZVpvbmVJRFN0b3JhZ2U7CisgICAgaWYgKHZhbHVlID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8VGltZVpvbmVJRD46Om1heCgpKQorICAgICAgICByZXR1cm4gdXRjVGltZVpv
bmVJRFNsb3coKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIFRyaVN0YXRlIGludGxCb29sZWFu
T3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSk7
CiBTdHJpbmcgaW50bFN0cmluZ09wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRp
b25zLCBQcm9wZXJ0eU5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gdmFs
dWVzLCBjb25zdCBjaGFyKiBub3RGb3VuZCwgY29uc3QgY2hhciogZmFsbGJhY2spOwogdW5zaWdu
ZWQgaW50bE51bWJlck9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIG1pbmltdW0sIHVuc2lnbmVkIG1heGltdW0sIHVuc2lnbmVk
IGZhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBiMmZkZjQ2NDM2ZTg3NzYwNDkwNjQ4YWZkMDE0MWM4MjIzNjE0OTUx
Li42ZGE0NTg4MzQxYTAxNmU5MWFiOTEzNjkwMzZmMGM5NmRhNDE0ZmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yMDYsNiAr
MjA2LDggQEAKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCisjaW5j
bHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZW1w
b3JhbFRpbWVab25lUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVk1UcmFwc0lubGluZXMuaCIKQEAg
LTEyMzIsNiArMTIzNCwxMyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1l
ICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAg
ICAgIGluaXQuc2V0KFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIGR1cmF0aW9uUHJvdG90eXBlKSk7CiAgICAgICAgICAgICB9KTsKIAorICAg
ICAgICBtX3BsYWluVGltZVN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgICAgICBbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKTsKKyAgICAgICAgICAgICAgICBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogcGxhaW5U
aW1lUHJvdG90eXBlID0gVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZt
LCBnbG9iYWxPYmplY3QsIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgp
KSk7CisgICAgICAgICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIHBsYWluVGltZVByb3RvdHlwZSkpOworICAg
ICAgICAgICAgfSk7CisKICAgICAgICAgbV90aW1lWm9uZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAg
ICAgICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewogICAg
ICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKTsKQEAgLTIxMTksNiArMjEyOCw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRv
cikKIAogICAgIHRoaXNPYmplY3QtPm1fY2FsZW5kYXJTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7
CiAgICAgdGhpc09iamVjdC0+bV9kdXJhdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAg
ICB0aGlzT2JqZWN0LT5tX3BsYWluVGltZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX3RpbWVab25lU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsR2V0dGVyRnVuY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZGViMzNkYmQx
MDMwODNhMThmNDBiYTdhZGM1Njk1MjYwMTQ5N2QyOS4uMTI4YjM5OTEwZGQ4MDU3ZjdhYWJiNTk3
NzdjYTY4MGU5ZGY2MTg5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0zMjYsNiArMzI2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxlbmRhclN0cnVjdHVyZTsKICAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kdXJhdGlvblN0cnVjdHVyZTsK
KyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wbGFpblRpbWVT
dHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
dGltZVpvbmVTdHJ1Y3R1cmU7CiAKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9u
PiBtX251bGxHZXR0ZXJGdW5jdGlvbjsKQEAgLTg3Niw2ICs4NzcsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKIAogICAgIFN0cnVj
dHVyZSogY2FsZW5kYXJTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NhbGVuZGFyU3RydWN0dXJlLmdl
dCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZHVyYXRpb25TdHJ1Y3R1cmUoKSB7IHJldHVybiBt
X2R1cmF0aW9uU3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogcGxhaW5UaW1l
U3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbGFpblRpbWVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiB0aW1lWm9uZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fdGltZVpvbmVTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFJlbW90
ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAppbmRleCBh
MGZhYTNmZmNkMDQ0NDc3MmM0MWE0Y2I3MzU2YTJkNjg2NzBhNjljLi42NTMwZGQwMWViNjdjNTNj
ZDhlOWUzMDg4OTkxMDU2NmU4Y2I1N2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKQEAg
LTczLDYgKzczLDcgQEAgdm9pZCBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxDYWxlbmRhclByb3RvdHkKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgMCwgIkNhbGVuZGFyIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0
aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5
cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICB0ZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0
cnVjdFRlbXBvcmFsQ2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsRHVyYXRpb24uY3BwCmluZGV4IDBkYTI0YTUyNTU3ZWJjZGU1OGYzNWRlMThkNzZj
MmU3MmI2MjZmOGQuLjhkOGZhNGY4MzA5NjlmOTBhNzdiODBmOGQwNTQ1ZmQxYmE1MmViODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
Y3BwCkBAIC01MzAsNyArNTMwLDEwIEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAKICAgICBQ
cmVjaXNpb25EYXRhIGRhdGEgPSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKGdsb2JhbE9iamVjdCwg
b3B0aW9ucyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBBU1NF
UlQoZGF0YS51bml0ID49IFRlbXBvcmFsVW5pdDo6U2Vjb25kKTsKKyAgICBpZiAoZGF0YS51bml0
IDwgVGVtcG9yYWxVbml0OjpTZWNvbmQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgbXVzdCBub3QgYmUgXCJtaW51dGVcIiJfcyk7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQogCiAgICAgYXV0byByb3VuZGluZ01vZGUgPSBp
bnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0
eU5hbWVzLT5yb3VuZGluZ01vZGUsCiAgICAgICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdNb2Rl
OjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5jIl9z
LCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6
SGFsZkV4cGFuZCB9IH0sCkBAIC01MzgsNyArNTQxLDcgQEAgU3RyaW5nIFRlbXBvcmFsRHVyYXRp
b246OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9u
c1YKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgLy8gTm8gbmVl
ZCB0byBtYWtlIGEgbmV3IG9iamVjdCBpZiB3ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRz
LgotICAgIGlmICghZGF0YS5wcmVjaXNpb24gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9k
ZTo6VHJ1bmMpCisgICAgaWYgKHN0ZDo6Z2V0PDA+KGRhdGEucHJlY2lzaW9uKSA9PSBQcmVjaXNp
b246OkF1dG8gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9kZTo6VHJ1bmMpCiAgICAgICAg
IHJldHVybiB0b1N0cmluZygpOwogCiAgICAgU3ViZHVyYXRpb25zIG5ld1N1YmR1cmF0aW9ucyA9
IG1fc3ViZHVyYXRpb25zOwpAQCAtNTQ4LDkgKzU1MSwxMCBAQCBTdHJpbmcgVGVtcG9yYWxEdXJh
dGlvbjo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRp
b25zVgogCiAvLyBUZW1wb3JhbER1cmF0aW9uVG9TdHJpbmcgKCB5ZWFycywgbW9udGhzLCB3ZWVr
cywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNv
bmRzLCBuYW5vc2Vjb25kcywgcHJlY2lzaW9uICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRlbXBvcmFsZHVyYXRpb250b3N0cmluZwotU3RyaW5n
IFRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKGNvbnN0IFRlbXBvcmFsRHVyYXRpb246OlN1YmR1
cmF0aW9ucyYgc3ViZHVyYXRpb25zLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjaXNpb24p
CitTdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoY29uc3QgVGVtcG9yYWxEdXJhdGlv
bjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNp
Z25lZD4gcHJlY2lzaW9uKQogewotICAgIEFTU0VSVCghcHJlY2lzaW9uIHx8IHByZWNpc2lvbi52
YWx1ZSgpIDwgMTApOworICAgIGF1dG8gW3ByZWNpc2lvblR5cGUsIHByZWNpc2lvblZhbHVlXSA9
IHByZWNpc2lvbjsKKyAgICBBU1NFUlQocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8g
fHwgcHJlY2lzaW9uVmFsdWUgPCAxMCk7CiAKICAgICBhdXRvIGJhbGFuY2VkTWljcm9zZWNvbmRz
ID0gc3ViZHVyYXRpb25zLm1pY3Jvc2Vjb25kcygpICsgc3RkOjp0cnVuYyhzdWJkdXJhdGlvbnMu
bmFub3NlY29uZHMoKSAvIDEwMDApOwogICAgIGF1dG8gYmFsYW5jZWROYW5vc2Vjb25kcyA9IHN0
ZDo6Zm1vZChzdWJkdXJhdGlvbnMubmFub3NlY29uZHMoKSwgMTAwMCk7CkBAIC01OTcsMTAgKzYw
MSwxMCBAQCBTdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoY29uc3QgVGVtcG9yYWxE
dXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdAogICAgICAgICBidWlsZGVyLmFwcGVuZChm
b3JtYXRJbnRlZ2VyKGJhbGFuY2VkU2Vjb25kcykpOwogCiAgICAgICAgIGF1dG8gZnJhY3Rpb24g
PSBzdGQ6OmFicyhiYWxhbmNlZE1pbGxpc2Vjb25kcykgKiAxZTYgKyBzdGQ6OmFicyhiYWxhbmNl
ZE1pY3Jvc2Vjb25kcykgKiAxZTMgKyBzdGQ6OmFicyhiYWxhbmNlZE5hbm9zZWNvbmRzKTsKLSAg
ICAgICAgaWYgKCghcHJlY2lzaW9uICYmIGZyYWN0aW9uKSB8fCAocHJlY2lzaW9uICYmIHByZWNp
c2lvbi52YWx1ZSgpKSkgeworICAgICAgICBpZiAoKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9u
OjpBdXRvICYmIGZyYWN0aW9uKSB8fCAocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkZpeGVk
ICYmIHByZWNpc2lvblZhbHVlKSkgewogICAgICAgICAgICAgYXV0byBwYWRkZWQgPSBtYWtlU3Ry
aW5nKCcuJywgcGFkKCcwJywgOSwgZnJhY3Rpb24pKTsKLSAgICAgICAgICAgIGlmIChwcmVjaXNp
b24pCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhwYWRkZWQpLmxl
ZnQocGFkZGVkLmxlbmd0aCgpIC0gKDkgLSBwcmVjaXNpb24udmFsdWUoKSkpKTsKKyAgICAgICAg
ICAgIGlmIChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6Rml4ZWQpCisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhwYWRkZWQpLmxlZnQocGFkZGVkLmxlbmd0aCgp
IC0gKDkgLSBwcmVjaXNpb25WYWx1ZSkpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIGF1dG8gbGVuZ3RoV2l0aG91dFRyYWlsaW5nWmVyb2VzID0gcGFkZGVkLmxlbmd0aCgp
OwogICAgICAgICAgICAgICAgIHdoaWxlIChwYWRkZWRbbGVuZ3RoV2l0aG91dFRyYWlsaW5nWmVy
b2VzIC0gMV0gPT0gJzAnKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbi5oCmluZGV4IDU5MjA0ZGM5NTM3YWFmNzYwMWUwZThkMTU3MDU2YmRhMTlh
ZjczNTUuLjQzODZlMmI3OWFlMzA4N2I5NTg0OGQ0MjhmMzYxYTk3ZGI5Nzg4ZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKQEAgLTY2
LDcgKzY2LDcgQEAgY2xhc3MgVGVtcG9yYWxEdXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICBTdWJkdXJhdGlvbnMgcm91bmQoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIG9wdGlvbnMpIGNvbnN0OwogICAgIGRvdWJsZSB0b3RhbChKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgb3B0aW9ucykgY29uc3Q7CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKLSAgICBTdHJpbmcgdG9TdHJpbmcoc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uID0gc3RkOjpudWxsb3B0KSBjb25zdCB7IHJldHVybiB0
b1N0cmluZyhtX3N1YmR1cmF0aW9ucywgcHJlY2lzaW9uKTsgfQorICAgIFN0cmluZyB0b1N0cmlu
ZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbiA9IHsgUHJlY2lzaW9u
OjpBdXRvLCAwIH0pIGNvbnN0IHsgcmV0dXJuIHRvU3RyaW5nKG1fc3ViZHVyYXRpb25zLCBwcmVj
aXNpb24pOyB9CiAKIHByaXZhdGU6CiAgICAgVGVtcG9yYWxEdXJhdGlvbihWTSYsIFN0cnVjdHVy
ZSosIFN1YmR1cmF0aW9ucyYmKTsKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgVGVtcG9yYWxEdXJh
dGlvbiBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgaW50IHNp
Z24oY29uc3QgU3ViZHVyYXRpb25zJik7CiAgICAgc3RhdGljIHZvaWQgYmFsYW5jZShTdWJkdXJh
dGlvbnMmLCBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQpOwogICAgIHN0YXRpYyBkb3VibGUgcm91
bmQoU3ViZHVyYXRpb25zJiwgZG91YmxlIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGlu
Z01vZGUpOwotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU3ViZHVyYXRpb25zJiwg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uKTsKKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKGNvbnN0IFN1YmR1cmF0aW9ucyYsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25l
ZD4gcHJlY2lzaW9uKTsKIAogICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0U3ViZHVyYXRpb24oKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxOb3cuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuY3Bw
CmluZGV4IGIwYTdlZWU0YzRhMDEzNjBiYTNjZmE1YWQ1ZTVhNDdiOTRiNjczM2EuLjdjMGZlYzUz
OTEzZThjNWQ2OWQ1ZDYzZWJhYTdmZmQ5MWRmYzhiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsTm93RnVuY1RpbWVab25lLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKICAgICBT
dHJpbmcgdGltZVpvbmVTdHJpbmcgPSB2bS5kYXRlQ2FjaGUuZGVmYXVsdFRpbWVab25lKCk7Ci0g
ICAgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZGVudGlmaWVyID0gVGVtcG9yYWxUaW1lWm9u
ZTo6aWRGb3JUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcpOworICAgIHN0ZDo6b3B0aW9uYWw8
VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IElTTzg2MDE6OmlkRm9yVGltZVpvbmVOYW1lKHRpbWVa
b25lU3RyaW5nKTsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbVVUQ09mZnNldCh2bSwgZ2xvYmFs
T2JqZWN0LT50aW1lWm9uZVN0cnVjdHVyZSgpLCAwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShUZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tSUQodm0sIGdsb2JhbE9iamVjdC0+dGlt
ZVpvbmVTdHJ1Y3R1cmUoKSwgaWRlbnRpZmllci52YWx1ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKaW5kZXggYjI0ZTNhOWU5ZGEy
MjAyNmMyYTNiZmRiMjhiYWY3Y2VlM2QzZWY5Ny4uOGUzN2Q3Y2ZmMzVmOTg5ZTNlZWZhYjQwOTM1
NTgwYWUwYjRkZGVkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsT2JqZWN0LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsRHVy
YXRpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUu
aCIKICNpbmNsdWRlICJUZW1wb3JhbE5vdy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBv
cmFsVGltZVpvbmVQcm90b3R5cGUuaCIKIApAQCAtNjEsNiArNjMsMTMgQEAgc3RhdGljIEpTVmFs
dWUgY3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAg
ICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3Jh
bER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxEdXJhdGlv
blByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKS0+c3RvcmVkUHJv
dG90eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlUGxhaW5UaW1lQ29u
c3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0
KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmpl
Y3Qodm0pOworICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVy
ZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworfQorCiBzdGF0aWMgSlNWYWx1ZSBjcmVh
dGVUaW1lWm9uZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBU
ZW1wb3JhbE9iamVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihv
YmplY3QpOwpAQCAtNzksNiArODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgQ2FsZW5kYXIgICAg
ICAgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxi
YWNrCiAgIER1cmF0aW9uICAgICAgIGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0b3IgICAgICAgRG9u
dEVudW18UHJvcGVydHlDYWxsYmFjawogICBOb3cgICAgICAgICAgICBjcmVhdGVOb3dPYmplY3Qg
ICAgICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKKyAgUGxhaW5UaW1lICAg
ICAgY3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0b3IgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxi
YWNrCiAgIFRpbWVab25lICAgICAgIGNyZWF0ZVRpbWVab25lQ29uc3RydWN0b3IgICAgICAgRG9u
dEVudW18UHJvcGVydHlDYWxsYmFjawogQGVuZAogKi8KQEAgLTI0MiwxOSArMjUyLDIxIEBAIFBy
ZWNpc2lvbkRhdGEgc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU09iamVjdCogb3B0CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gc21h
bGxlc3RVbml0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7
IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpX
ZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSwgVGVtcG9yYWxVbml0OjpIb3VyLCBUZW1wb3JhbFVuaXQ6
Ok1pbnV0ZSB9KTsKKyAgICBhdXRvIHNtYWxsZXN0VW5pdCA9IHRlbXBvcmFsU21hbGxlc3RVbml0
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVuaXQ6OlllYXIsIFRlbXBvcmFsVW5p
dDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9yYWxVbml0OjpEYXksIFRlbXBvcmFs
VW5pdDo6SG91ciB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgaWYgKHNtYWxsZXN0VW5pdCkgewogICAgICAgICBzd2l0Y2ggKHNtYWxsZXN0VW5pdC52YWx1
ZSgpKSB7CisgICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6CisgICAgICAgICAgICBy
ZXR1cm4geyB7IFByZWNpc2lvbjo6TWludXRlLCAwIH0sIFRlbXBvcmFsVW5pdDo6TWludXRlLCAx
IH07CiAgICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6Ci0gICAgICAgICAgICByZXR1
cm4geyAwLCBUZW1wb3JhbFVuaXQ6OlNlY29uZCwgMSB9OworICAgICAgICAgICAgcmV0dXJuIHsg
eyBQcmVjaXNpb246OkZpeGVkLCAwIH0sIFRlbXBvcmFsVW5pdDo6U2Vjb25kLCAxIH07CiAgICAg
ICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDoKLSAgICAgICAgICAgIHJldHVybiB7
IDMsIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQsIDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7
IHsgUHJlY2lzaW9uOjpGaXhlZCwgMyB9LCBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLCAxIH07
CiAgICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZDoKLSAgICAgICAgICAgIHJl
dHVybiB7IDYsIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQsIDEgfTsKKyAgICAgICAgICAgIHJl
dHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgNiB9LCBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25k
LCAxIH07CiAgICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kOgotICAgICAgICAg
ICAgcmV0dXJuIHsgOSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAxIH07CisgICAgICAgICAg
ICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIDkgfSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vj
b25kLCAxIH07CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTI2NSwyMCArMjc3LDI3
IEBAIFByZWNpc2lvbkRhdGEgc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKIAogICAgIGlmICghcHJlY2lzaW9uKQotICAgICAgICByZXR1cm4geyBzdGQ6Om51
bGxvcHQsIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9OworICAgICAgICByZXR1cm4geyB7
IFByZWNpc2lvbjo6QXV0bywgMCB9LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfTsKKwor
ICAgIGF1dG8gcG93MTBVbnNpZ25lZCA9IFtdKHVuc2lnbmVkIG4pIC0+IHVuc2lnbmVkIHsKKyAg
ICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG47ICsraSkKKyAgICAgICAgICAgIHJlc3VsdCAqPSAxMDsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9OwogCiAgICAgdW5zaWduZWQgZGlnaXRzID0gcHJlY2lzaW9uLnZhbHVlKCk7
CiAgICAgaWYgKCFkaWdpdHMpCi0gICAgICAgIHJldHVybiB7IDAsIFRlbXBvcmFsVW5pdDo6U2Vj
b25kLCAxIH07CisgICAgICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgMCB9LCBUZW1w
b3JhbFVuaXQ6OlNlY29uZCwgMSB9OwogCiAgICAgaWYgKGRpZ2l0cyA8PSAzKQotICAgICAgICBy
ZXR1cm4geyBkaWdpdHMsIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQsIHN0ZDo6cG93KDEwLCAz
IC0gZGlnaXRzKSB9OworICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIGRpZ2l0
cyB9LCBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLCBwb3cxMFVuc2lnbmVkKDMgLSBkaWdpdHMp
IH07CiAKICAgICBpZiAoZGlnaXRzIDw9IDYpCi0gICAgICAgIHJldHVybiB7IGRpZ2l0cywgVGVt
cG9yYWxVbml0OjpNaWNyb3NlY29uZCwgc3RkOjpwb3coMTAsIDYgLSBkaWdpdHMpIH07CisgICAg
ICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgZGlnaXRzIH0sIFRlbXBvcmFsVW5pdDo6
TWljcm9zZWNvbmQsIHBvdzEwVW5zaWduZWQoNiAtIGRpZ2l0cykgfTsKIAogICAgIEFTU0VSVChk
aWdpdHMgPD0gOSk7Ci0gICAgcmV0dXJuIHsgZGlnaXRzLCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNv
bmQsIHN0ZDo6cG93KDEwLCA5IC0gZGlnaXRzKSB9OworICAgIHJldHVybiB7IHsgUHJlY2lzaW9u
OjpGaXhlZCwgZGlnaXRzIH0sIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgcG93MTBVbnNpZ25l
ZCg5IC0gZGlnaXRzKSB9OwogfQogCiAvLyBNYXhpbXVtVGVtcG9yYWxEdXJhdGlvblJvdW5kaW5n
SW5jcmVtZW50ICggdW5pdCApCkBAIC0zNDIsNCArMzYxLDExIEBAIGRvdWJsZSByb3VuZE51bWJl
clRvSW5jcmVtZW50KGRvdWJsZSB4LCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGluZ01vZGUgbW9k
ZSkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitUZW1wb3JhbE92ZXJm
bG93IHRvVGVtcG9yYWxPdmVyZmxvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCogb3B0aW9ucykKK3sKKyAgICByZXR1cm4gaW50bE9wdGlvbjxUZW1wb3JhbE92ZXJmbG93
PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIGdsb2JhbE9iamVjdC0+dm0oKS5wcm9wZXJ0eU5hbWVz
LT5vdmVyZmxvdywKKyAgICAgICAgeyB7ICJjb25zdHJhaW4iX3MsIFRlbXBvcmFsT3ZlcmZsb3c6
OkNvbnN0cmFpbiB9LCB7ICJyZWplY3QiX3MsIFRlbXBvcmFsT3ZlcmZsb3c6OlJlamVjdCB9IH0s
CisgICAgICAgICJvdmVyZmxvdyBtdXN0IGJlIGVpdGhlciBcImNvbnN0cmFpblwiIG9yIFwicmVq
ZWN0XCIiX3MsIFRlbXBvcmFsT3ZlcmZsb3c6OkNvbnN0cmFpbik7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0
LmgKaW5kZXggNzI0M2M5YmE1ODQzMjYyZDJkMGNiYjgxOTMzZjRjZGQxMzA4ZmI0OC4uODlhMTU2
ZThjMTViODEyNWMyMDQ0MTBiZWUwNGRiN2FlZDJiYTM4MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCkBAIC0yMSwxNCArMjEsMTEgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvVmFyaWFu
dC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2RlZmluZSBKU0NfVEVNUE9SQUxfVU5JVFMobWFj
cm8pIFwKLSAgICBtYWNybyh5ZWFyLCBZZWFyKSBcCi0gICAgbWFjcm8obW9udGgsIE1vbnRoKSBc
Ci0gICAgbWFjcm8od2VlaywgV2VlaykgXAotICAgIG1hY3JvKGRheSwgRGF5KSBcCisjZGVmaW5l
IEpTQ19URU1QT1JBTF9QTEFJTl9USU1FX1VOSVRTKG1hY3JvKSBcCiAgICAgbWFjcm8oaG91ciwg
SG91cikgXAogICAgIG1hY3JvKG1pbnV0ZSwgTWludXRlKSBcCiAgICAgbWFjcm8oc2Vjb25kLCBT
ZWNvbmQpIFwKQEAgLTM2LDYgKzMzLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKG1p
Y3Jvc2Vjb25kLCBNaWNyb3NlY29uZCkgXAogICAgIG1hY3JvKG5hbm9zZWNvbmQsIE5hbm9zZWNv
bmQpIFwKIAorCisjZGVmaW5lIEpTQ19URU1QT1JBTF9VTklUUyhtYWNybykgXAorICAgIG1hY3Jv
KHllYXIsIFllYXIpIFwKKyAgICBtYWNybyhtb250aCwgTW9udGgpIFwKKyAgICBtYWNybyh3ZWVr
LCBXZWVrKSBcCisgICAgbWFjcm8oZGF5LCBEYXkpIFwKKyAgICBKU0NfVEVNUE9SQUxfUExBSU5f
VElNRV9VTklUUyhtYWNybykgXAorCisKIGVudW0gY2xhc3MgVGVtcG9yYWxVbml0IDogdWludDhf
dCB7CiAjZGVmaW5lIEpTQ19ERUZJTkVfVEVNUE9SQUxfVU5JVF9FTlVNKG5hbWUsIGNhcGl0YWxp
emVkTmFtZSkgY2FwaXRhbGl6ZWROYW1lLAogICAgIEpTQ19URU1QT1JBTF9VTklUUyhKU0NfREVG
SU5FX1RFTVBPUkFMX1VOSVRfRU5VTSkKQEAgLTQzLDYgKzQ5LDcgQEAgZW51bSBjbGFzcyBUZW1w
b3JhbFVuaXQgOiB1aW50OF90IHsKIH07CiAjZGVmaW5lIEpTQ19DT1VOVF9URU1QT1JBTF9VTklU
UyhuYW1lLCBjYXBpdGFsaXplZE5hbWUpICsgMQogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBu
dW1iZXJPZlRlbXBvcmFsVW5pdHMgPSAwIEpTQ19URU1QT1JBTF9VTklUUyhKU0NfQ09VTlRfVEVN
UE9SQUxfVU5JVFMpOworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlRlbXBvcmFs
UGxhaW5UaW1lVW5pdHMgPSAwIEpTQ19URU1QT1JBTF9QTEFJTl9USU1FX1VOSVRTKEpTQ19DT1VO
VF9URU1QT1JBTF9VTklUUyk7CiAjdW5kZWYgSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRTCiAKIGNs
YXNzIFRlbXBvcmFsT2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewpAQCAt
NzQsMTAgKzgxLDE2IEBAIGVudW0gY2xhc3MgUm91bmRpbmdNb2RlIDogdWludDhfdCB7CiAgICAg
SGFsZkV4cGFuZAogfTsKIAorZW51bSBjbGFzcyBQcmVjaXNpb24geworICAgIE1pbnV0ZSwKKyAg
ICBGaXhlZCwKKyAgICBBdXRvLAorfTsKKwogc3RydWN0IFByZWNpc2lvbkRhdGEgewotICAgIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHByZWNpc2lvbjsKKyAgICBzdGQ6OnR1cGxlPFByZWNpc2lv
biwgdW5zaWduZWQ+IHByZWNpc2lvbjsKICAgICBUZW1wb3JhbFVuaXQgdW5pdDsKLSAgICBkb3Vi
bGUgaW5jcmVtZW50OworICAgIHVuc2lnbmVkIGluY3JlbWVudDsKIH07CiAKIHN0ZDo6b3B0aW9u
YWw8VGVtcG9yYWxVbml0PiB0ZW1wb3JhbFVuaXRUeXBlKFN0cmluZ1ZpZXcpOwpAQCAtODksNCAr
MTAyLDExIEBAIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQo
VGVtcG9yYWxVbml0KTsKIGRvdWJsZSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KEpTR2xvYmFs
T2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkaXZpZGVu
ZCwgYm9vbCBpbmNsdXNpdmUpOwogZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZG91Ymxl
LCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGluZ01vZGUpOwogCitlbnVtIGNsYXNzIFRlbXBvcmFs
T3ZlcmZsb3cgOiB1aW50OF90IHsKKyAgICBDb25zdHJhaW4sCisgICAgUmVqZWN0LAorfTsKKwor
VGVtcG9yYWxPdmVyZmxvdyB0b1RlbXBvcmFsT3ZlcmZsb3coSlNHbG9iYWxPYmplY3QqLCBKU09i
amVjdCopOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kODc1OTFkYjA1
Njc5ZmY4ZTMwYzgwZTVlNDlmMjk2ZjIwNzgzNTNkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwCkBAIC0wLDAgKzEs
MzU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCisKKyNp
bmNsdWRlICJBYnN0cmFjdFNsb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTGF6eVByb3BlcnR5SW5s
aW5lcy5oIgorI2luY2x1ZGUgIlZNVHJhcHNJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxQbGFpblRpbWU6OnNfaW5mbyA9IHsgIk9iamVjdCIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVt
cG9yYWxQbGFpblRpbWUpIH07CisKK1RlbXBvcmFsUGxhaW5UaW1lKiBUZW1wb3JhbFBsYWluVGlt
ZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OlBsYWluVGlt
ZSYmIHBsYWluVGltZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZT4odm0uaGVhcCkpIFRlbXBvcmFsUGxhaW5UaW1lKHZt
LCBzdHJ1Y3R1cmUsIFdURk1vdmUocGxhaW5UaW1lKSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBUZW1wb3JhbFBs
YWluVGltZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitUZW1wb3JhbFBsYWluVGltZTo6VGVtcG9yYWxQbGFp
blRpbWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6UGxhaW5UaW1lJiYg
cGxhaW5UaW1lKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgICwgbV9wbGFpblRpbWUo
V1RGTW92ZShwbGFpblRpbWUpKQoreworfQorCit2b2lkIFRlbXBvcmFsUGxhaW5UaW1lOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgbV9jYWxlbmRhci5pbml0TGF0ZXIo
CisgICAgICAgIFtdIChjb25zdCBhdXRvJiBpbml0KSB7CisgICAgICAgICAgICBWTSYgdm0gPSBp
bml0LnZtOworICAgICAgICAgICAgYXV0byogcGxhaW5UaW1lID0ganNDYXN0PFRlbXBvcmFsUGxh
aW5UaW1lKj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBw
bGFpblRpbWUtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgICAgICAgICBhdXRvKiBjYWxlbmRhciA9
IFRlbXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5jYWxlbmRhclN0cnVj
dHVyZSgpLCBpc284NjAxQ2FsZW5kYXJJRCgpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KGNhbGVu
ZGFyKTsKKyAgICAgICAgfSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Cit2b2lk
IFRlbXBvcmFsUGxhaW5UaW1lOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsK
KworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPihjZWxs
KTsKKyAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyLnZpc2l0KHZpc2l0b3IpOworfQorCitERUZJ
TkVfVklTSVRfQ0hJTERSRU4oVGVtcG9yYWxQbGFpblRpbWUpOworCisvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkdGltZQorc3RhdGljIElT
Tzg2MDE6OlBsYWluVGltZSB0b1BsYWluVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBJU084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBkb3VibGUgaG91ciA9IGR1cmF0aW9uLmhvdXJzKCk7CisgICAgZG91YmxlIG1pbnV0ZSA9
IGR1cmF0aW9uLm1pbnV0ZXMoKTsKKyAgICBkb3VibGUgc2Vjb25kID0gZHVyYXRpb24uc2Vjb25k
cygpOworICAgIGRvdWJsZSBtaWxsaXNlY29uZCA9IGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpOwor
ICAgIGRvdWJsZSBtaWNyb3NlY29uZCA9IGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpOworICAgIGRv
dWJsZSBuYW5vc2Vjb25kID0gZHVyYXRpb24ubmFub3NlY29uZHMoKTsKKyAgICBpZiAoIShob3Vy
ID49IDAgJiYgaG91ciA8PSAyMykpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJob3VyIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgfQorICAgIGlmICghKG1pbnV0ZSA+PSAwIHx8IG1pbnV0ZSA8PSA1OSkpIHsKKyAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJtaW51dGUgaXMgb3V0
IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgaWYgKCEoc2Vj
b25kID49IDAgfHwgc2Vjb25kIDw9IDU5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInNlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICBy
ZXR1cm4geyB9OworICAgIH0KKyAgICBpZiAoIShtaWxsaXNlY29uZCA+PSAwIHx8IG1pbGxpc2Vj
b25kIDw9IDk5OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJtaWxsaXNlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9
OworICAgIH0KKyAgICBpZiAoIShtaWNyb3NlY29uZCA+PSAwIHx8IG1pY3Jvc2Vjb25kIDw9IDk5
OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJtaWNy
b3NlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0K
KyAgICBpZiAoIShuYW5vc2Vjb25kID49IDAgfHwgbmFub3NlY29uZCA8PSA5OTkpKSB7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibmFub3NlY29uZCBpcyBv
dXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICByZXR1cm4g
SVNPODYwMTo6UGxhaW5UaW1lIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGhvdXIp
LAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWludXRlKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNlY29uZCksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
aWxsaXNlY29uZCksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtaWNyb3NlY29uZCks
CisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihuYW5vc2Vjb25kKQorICAgIH07Cit9CisK
Ky8vIENyZWF0ZVRlbXBvcmFsUGxhaW5UaW1lICggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMs
IGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcywgbmFu
b3NlY29uZHMgWyAsIG5ld1RhcmdldCBdICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWNyZWF0ZXRlbXBvcmFscGxhaW5UaW1lCitUZW1wb3JhbFBs
YWluVGltZSogVGVtcG9yYWxQbGFpblRpbWU6OnRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OkR1cmF0aW9u
JiYgZHVyYXRpb24pCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gcGxhaW5UaW1l
ID0gdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGR1cmF0aW9uKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBUZW1wb3JhbFBsYWlu
VGltZTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUocGxhaW5UaW1lKSk7Cit9CisKK3N0
YXRpYyBzdGQ6OnR1cGxlPGRvdWJsZSwgSVNPODYwMTo6UGxhaW5UaW1lPiBiYWxhbmNlVGltZShk
b3VibGUgaG91ciwgZG91YmxlIG1pbnV0ZSwgZG91YmxlIHNlY29uZCwgZG91YmxlIG1pbGxpc2Vj
b25kLCBkb3VibGUgbWljcm9zZWNvbmQsIGRvdWJsZSBuYW5vc2Vjb25kKQoreworICAgIG1pY3Jv
c2Vjb25kID0gbWljcm9zZWNvbmQgKyBzdGQ6OnRydW5jKG5hbm9zZWNvbmQgLyAxMDAwKTsKKyAg
ICBuYW5vc2Vjb25kID0gc3RkOjpmbW9kKG5hbm9zZWNvbmQsIDEwMDApOworICAgIG1pbGxpc2Vj
b25kID0gbWlsbGlzZWNvbmQgKyBzdGQ6OnRydW5jKG1pY3Jvc2Vjb25kIC8gMTAwMCk7CisgICAg
bWljcm9zZWNvbmQgPSBzdGQ6OmZtb2QobWljcm9zZWNvbmQsIDEwMDApOworICAgIHNlY29uZCA9
IHNlY29uZCArIHN0ZDo6dHJ1bmMobWlsbGlzZWNvbmQgLyAxMDAwKTsKKyAgICBtaWxsaXNlY29u
ZCA9IHN0ZDo6Zm1vZChtaWxsaXNlY29uZCwgMTAwMCk7CisgICAgbWludXRlID0gbWludXRlICsg
c3RkOjp0cnVuYyhzZWNvbmQgLyA2MCk7CisgICAgc2Vjb25kID0gc3RkOjpmbW9kKHNlY29uZCwg
NjApOworICAgIGhvdXIgPSBob3VyICsgc3RkOjp0cnVuYyhtaW51dGUgLyA2MCk7CisgICAgbWlu
dXRlID0gc3RkOjpmbW9kKG1pbnV0ZSwgNjApOworICAgIGRvdWJsZSBkYXlzID0gc3RkOjp0cnVu
Yyhob3VyIC8gMjQpOworICAgIGhvdXIgPSBzdGQ6OmZtb2QobWludXRlLCAyNCk7CisgICAgcmV0
dXJuIHsgZGF5cywgSVNPODYwMTo6UGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxs
aXNlY29uZCwgbWljcm9zZWNvbmQsIG5hbm9zZWNvbmQpIH07Cit9CisKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXJvdW5kdGltZQorc3RhdGljIHN0
ZDo6dHVwbGU8ZG91YmxlLCBJU084NjAxOjpQbGFpblRpbWU+IHJvdW5kVGltZShJU084NjAxOjpQ
bGFpblRpbWUgcGxhaW5UaW1lLCBkb3VibGUgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQgdW5pdCwg
Um91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRheUxlbmd0
aE5zKQoreworICAgIGF1dG8gZnJhY3Rpb25hbFNlY29uZCA9IFtdKElTTzg2MDE6OlBsYWluVGlt
ZSBwbGFpblRpbWUpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBwbGFpblRpbWUuc2Vjb25k
KCkgKyBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSAqIDFlLTMgKyBwbGFpblRpbWUubWljcm9zZWNv
bmQoKSAqIDFlLTYgKyBwbGFpblRpbWUubmFub3NlY29uZCgpICogMWUtOTsKKyAgICB9OworCisg
ICAgZG91YmxlIHF1YW50aXR5ID0gMDsKKyAgICBzd2l0Y2ggKHVuaXQpIHsKKyAgICBjYXNlIFRl
bXBvcmFsVW5pdDo6RGF5OiB7CisgICAgICAgIGRvdWJsZSBsZW5ndGggPSBkYXlMZW5ndGhOcy52
YWx1ZV9vcig4LjY0ICogMWUrMTMpOworICAgICAgICBxdWFudGl0eSA9ICgoKChwbGFpblRpbWUu
aG91cigpICogNjAuMCArIHBsYWluVGltZS5taW51dGUoKSkgKiA2MC4wICsgcGxhaW5UaW1lLnNl
Y29uZCgpKSAqIDEwMDAuMCArIHBsYWluVGltZS5taWxsaXNlY29uZCgpKSAqIDEwMDAuMCArIHBs
YWluVGltZS5uYW5vc2Vjb25kKCkpIC8gbGVuZ3RoOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJv
dW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsK
KyAgICAgICAgcmV0dXJuIHsgcmVzdWx0LCB7IH0gfTsKKyAgICB9CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6OkhvdXI6IHsKKyAgICAgICAgcXVhbnRpdHkgPSAoZnJhY3Rpb25hbFNlY29uZChwbGFp
blRpbWUpIC8gNjAuMCArIHBsYWluVGltZS5taW51dGUoKSkgLyA2MC4wICsgcGxhaW5UaW1lLmhv
dXIoKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50
aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVybiBiYWxhbmNlVGlt
ZShyZXN1bHQsIDAsIDAsIDAsIDAsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6
TWludXRlOiB7CisgICAgICAgIHF1YW50aXR5ID0gZnJhY3Rpb25hbFNlY29uZChwbGFpblRpbWUp
IC8gNjAuMCArIHBsYWluVGltZS5taW51dGUoKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3Vu
ZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7Cisg
ICAgICAgIHJldHVybiBiYWxhbmNlVGltZShwbGFpblRpbWUuaG91cigpLCByZXN1bHQsIDAsIDAs
IDAsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOiB7CisgICAgICAg
IHF1YW50aXR5ID0gZnJhY3Rpb25hbFNlY29uZChwbGFpblRpbWUpOworICAgICAgICBhdXRvIHJl
c3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRp
bmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBs
YWluVGltZS5taW51dGUoKSwgcmVzdWx0LCAwLCAwLCAwKTsKKyAgICB9CisgICAgY2FzZSBUZW1w
b3JhbFVuaXQ6Ok1pbGxpc2Vjb25kOiB7CisgICAgICAgIHF1YW50aXR5ID0gcGxhaW5UaW1lLm1p
bGxpc2Vjb25kKCkgKyBwbGFpblRpbWUubWljcm9zZWNvbmQoKSAqIDFlLTMgKyBwbGFpblRpbWUu
bmFub3NlY29uZCgpICogMWUtNjsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJlclRv
SW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIHJl
dHVybiBiYWxhbmNlVGltZShwbGFpblRpbWUuaG91cigpLCBwbGFpblRpbWUubWludXRlKCksIHBs
YWluVGltZS5zZWNvbmQoKSwgcmVzdWx0LCAwLCAwKTsKKyAgICB9CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6Ok1pY3Jvc2Vjb25kOiB7CisgICAgICAgIHF1YW50aXR5ID0gcGxhaW5UaW1lLm1pY3Jv
c2Vjb25kKCkgKyBwbGFpblRpbWUubmFub3NlY29uZCgpICogMWUtMzsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5k
aW5nTW9kZSk7CisgICAgICAgIHJldHVybiBiYWxhbmNlVGltZShwbGFpblRpbWUuaG91cigpLCBw
bGFpblRpbWUubWludXRlKCksIHBsYWluVGltZS5zZWNvbmQoKSwgcGxhaW5UaW1lLm1pbGxpc2Vj
b25kKCksIHJlc3VsdCwgMCk7CisgICAgfQorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpOYW5vc2Vj
b25kOiB7CisgICAgICAgIHF1YW50aXR5ID0gcGxhaW5UaW1lLm5hbm9zZWNvbmQoKTsKKyAgICAg
ICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1l
bnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVybiBiYWxhbmNlVGltZShwbGFpblRpbWUu
aG91cigpLCBwbGFpblRpbWUubWludXRlKCksIHBsYWluVGltZS5zZWNvbmQoKSwgcGxhaW5UaW1l
Lm1pbGxpc2Vjb25kKCksIHBsYWluVGltZS5taWNyb3NlY29uZCgpLCByZXN1bHQpOworICAgIH0K
KyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKK0lTTzg2MDE6OlBsYWluVGltZSBUZW1wb3JhbFBsYWlu
VGltZTo6cm91bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25z
VmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvcHRp
b25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHNtYWxsZXN0
ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IFRlbXBvcmFs
VW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpXZWVrLCBUZW1w
b3JhbFVuaXQ6OkRheSB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgIGlmICghc21hbGxlc3QpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJDYW5ub3Qgcm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvcHRpb24iX3Mp
OworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RV
bml0ID0gc21hbGxlc3QudmFsdWUoKTsKKworICAgIGF1dG8gcm91bmRpbmdNb2RlID0gaW50bE9w
dGlvbjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1l
cy0+cm91bmRpbmdNb2RlLAorICAgICAgICB7IHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2Vp
bCB9LCB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7ICJ0cnVuYyJfcywgUm91
bmRpbmdNb2RlOjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZF
eHBhbmQgfSB9LAorICAgICAgICAicm91bmRpbmdNb2RlIG11c3QgYmUgZWl0aGVyIFwiY2VpbFwi
LCBcImZsb29yXCIsIFwidHJ1bmNcIiwgb3IgXCJoYWxmRXhwYW5kXCIiX3MsIFJvdW5kaW5nTW9k
ZTo6SGFsZkV4cGFuZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGF1dG8gaW5jcmVtZW50ID0gdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChzbWFsbGVzdFVuaXQpLCBmYWxz
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gW2Rh
eSwgcGxhaW5UaW1lXSA9IHJvdW5kVGltZShtX3BsYWluVGltZSwgaW5jcmVtZW50LCBzbWFsbGVz
dFVuaXQsIHJvdW5kaW5nTW9kZSwgc3RkOjpudWxsb3B0KTsKKyAgICByZXR1cm4gcGxhaW5UaW1l
OworfQorCitTdHJpbmcgVGVtcG9yYWxQbGFpblRpbWU6OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0
KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gdG9TdHJpbmco
KTsKKworICAgIFByZWNpc2lvbkRhdGEgZGF0YSA9IHNlY29uZHNTdHJpbmdQcmVjaXNpb24oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgYXV0byByb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsCisgICAg
ICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3Vu
ZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsg
ImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCisgICAgICAgICJy
b3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wi
LCBvciBcImhhbGZFeHBhbmRcIiJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8vIE5vIG5lZWQgdG8gbWFrZSBhIG5l
dyBvYmplY3QgaWYgd2Ugd2VyZSBnaXZlbiBleHBsaWNpdCBkZWZhdWx0cy4KKyAgICBpZiAoc3Rk
OjpnZXQ8MD4oZGF0YS5wcmVjaXNpb24pID09IFByZWNpc2lvbjo6QXV0byAmJiByb3VuZGluZ01v
ZGUgPT0gUm91bmRpbmdNb2RlOjpUcnVuYykKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CisK
KyAgICBhdXRvIFtkYXksIHBsYWluVGltZV0gPSByb3VuZFRpbWUobV9wbGFpblRpbWUsIGRhdGEu
aW5jcmVtZW50LCBkYXRhLnVuaXQsIHJvdW5kaW5nTW9kZSwgc3RkOjpudWxsb3B0KTsKKyAgICBy
ZXR1cm4gSVNPODYwMTo6dGVtcG9yYWxUaW1lVG9TdHJpbmcocGxhaW5UaW1lLCBkYXRhLnByZWNp
c2lvbik7Cit9CisKKworc3RhdGljIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUoVk0mIHZtLCB1
bnNpZ25lZCBpbmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlRlbXBvcmFsVW5p
dHMpOworICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8VGVtcG9yYWxVbml0PihpbmRleCkpIHsKKyNk
ZWZpbmUgSlNDX1RFTVBPUkFMX0RVUkFUSU9OX1BST1BFUlRZX05BTUUobmFtZSwgY2FwaXRhbGl6
ZWROYW1lKSBjYXNlIFRlbXBvcmFsVW5pdDo6Y2FwaXRhbGl6ZWROYW1lOiByZXR1cm4gdm0ucHJv
cGVydHlOYW1lcy0+bmFtZTsKKyAgICAgICAgSlNDX1RFTVBPUkFMX1VOSVRTKEpTQ19URU1QT1JB
TF9EVVJBVElPTl9QUk9QRVJUWV9OQU1FKQorI3VuZGVmIEpTQ19URU1QT1JBTF9EVVJBVElPTl9Q
Uk9QRVJUWV9OQU1FCisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIHRvVGVtcG9yYWxUaW1lUmVjb3JkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0ZW1wb3JhbFRpbWVMaWtlKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiB7IH07
CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZUZW1wb3JhbFBs
YWluVGltZVVuaXRzOyArK2luZGV4KSB7CisgICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uSW5kZXgg
PSBpbmRleCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZW1wb3JhbFVuaXQ6OkhvdXIpOworICAg
ICAgICBhdXRvIG5hbWUgPSBwcm9wZXJ0eU5hbWUodm0sIGR1cmF0aW9uSW5kZXgpOworICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgbmFt
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlm
ICh2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKCciJywgU3RyaW5nVmlldyhuYW1lLnVpZCgpKSwg
IiBmaWVsZCBpcyBtaXNzaW5nIl9zKSk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAg
ICB9CisgICAgICAgIGRvdWJsZSBpbnRlZ2VyID0gdmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShn
bG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoaW50ZWdlcikpIHsKKyAgICAgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lIHByb3Bl
cnRpZXMgbXVzdCBiZSBmaW5pdGUiX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgfQorICAgICAgICBkdXJhdGlvbltkdXJhdGlvbkluZGV4XSA9IGludGVnZXI7CisgICAgfQor
ICAgIHJldHVybiBkdXJhdGlvbjsKK30KKworc3RhdGljIElTTzg2MDE6OlBsYWluVGltZSBjb25z
dHJhaW50VGltZShJU084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uKQoreworICAgIGF1dG8gY29u
c3RyYWluVG9SYW5nZSA9IFtdKGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgbWluaW11bSwgdW5zaWdu
ZWQgbWF4aW11bSkgLT4gdW5zaWduZWQgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN0ZDo6bWluPGRvdWJsZT4oc3RkOjptYXg8ZG91YmxlPih2YWx1ZSwgbWluaW11bSks
IG1heGltdW0pKTsKKyAgICB9OworICAgIHJldHVybiBJU084NjAxOjpQbGFpblRpbWUoCisgICAg
ICAgIGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRpb24uaG91cnMoKSwgMCwgMjMpLAorICAgICAgICBj
b25zdHJhaW5Ub1JhbmdlKGR1cmF0aW9uLm1pbnV0ZXMoKSwgMCwgNTkpLAorICAgICAgICBjb25z
dHJhaW5Ub1JhbmdlKGR1cmF0aW9uLnNlY29uZHMoKSwgMCwgNTkpLAorICAgICAgICBjb25zdHJh
aW5Ub1JhbmdlKGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpLCAwLCAxMDAwKSwKKyAgICAgICAgY29u
c3RyYWluVG9SYW5nZShkdXJhdGlvbi5taWNyb3NlY29uZHMoKSwgMCwgMTAwMCksCisgICAgICAg
IGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRpb24ubmFub3NlY29uZHMoKSwgMCwgMTAwMCkpOworfQor
CitzdGF0aWMgSVNPODYwMTo6UGxhaW5UaW1lIHJlZ3VsYXRlVGltZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBJU084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uLCBUZW1wb3JhbE92ZXJm
bG93IG92ZXJmbG93KQoreworICAgIHN3aXRjaCAob3ZlcmZsb3cpIHsKKyAgICBjYXNlIFRlbXBv
cmFsT3ZlcmZsb3c6OkNvbnN0cmFpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRUaW1lKFdU
Rk1vdmUoZHVyYXRpb24pKTsKKyAgICBjYXNlIFRlbXBvcmFsT3ZlcmZsb3c6OlJlamVjdDoKKyAg
ICAgICAgcmV0dXJuIHRvUGxhaW5UaW1lKGdsb2JhbE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbikp
OworICAgIH0KKyAgICByZXR1cm4geyB9OworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b3RlbXBvcmFsdGltZQorVGVtcG9yYWxQbGFpblRp
bWUqIFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgaXRlbVZhbHVlLCBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFsT3ZlcmZsb3c+IG92ZXJm
bG93VmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3ZlcmZsb3cgPSBv
dmVyZmxvd1ZhbHVlLnZhbHVlX29yKFRlbXBvcmFsT3ZlcmZsb3c6OkNvbnN0cmFpbik7CisKKyAg
ICBpZiAoaXRlbVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGl0ZW1WYWx1ZS5pbmhl
cml0czxUZW1wb3JhbFBsYWluVGltZT4odm0pKQorICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxU
ZW1wb3JhbFBsYWluVGltZSo+KGl0ZW1WYWx1ZSk7CisgICAgICAgIGF1dG8gZHVyYXRpb24gPSB0
b1RlbXBvcmFsVGltZVJlY29yZChnbG9iYWxPYmplY3QsIGpzQ2FzdDxKU09iamVjdCo+KGl0ZW1W
YWx1ZSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAg
ICBhdXRvIHBsYWluVGltZSA9IHJlZ3VsYXRlVGltZShnbG9iYWxPYmplY3QsIFdURk1vdmUoZHVy
YXRpb24pLCBvdmVyZmxvdyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHBsYWluVGltZSkpOworICAgIH0K
KworICAgIGF1dG8gc3RyaW5nID0gaXRlbVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gdGltZSA9
IElTTzg2MDE6OnBhcnNlVGltZShzdHJpbmcpOworICAgIGlmICghdGltZSkgeworICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgdGltZSBzdHJpbmci
X3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBhdXRvIFtwbGFpblRpbWUsIHRp
bWVab25lXSA9IHRpbWUudmFsdWUoKTsKKyAgICByZXR1cm4gVGVtcG9yYWxQbGFpblRpbWU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShwbGFp
blRpbWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjk0MTQ5YTZj
ZjUyMWI2ZjNhNmMwZmViMTExZWI4ZmU2ZGEyMGJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaApAQCAtMCwwICsxLDg4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiTGF6eVByb3BlcnR5
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgVGVtcG9yYWxQbGFpblRpbWUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2
bS50ZW1wb3JhbFBsYWluVGltZVNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFRl
bXBvcmFsUGxhaW5UaW1lKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpQbGFpblRp
bWUmJik7CisgICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1lKiB0cnlDcmVhdGVJZlZhbGlkKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSVNPODYwMTo6RHVyYXRpb24mJik7CisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluVGlt
ZSogZnJvbShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIHN0ZDo6b3B0aW9uYWw8VGVtcG9yYWxP
dmVyZmxvdz4pOworICAgIHN0YXRpYyBKU1ZhbHVlIGNvbXBhcmUoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlLCBKU1ZhbHVlKTsKKworICAgIFRlbXBvcmFsQ2FsZW5kYXIqIGNhbGVuZGFyKCkgeyBy
ZXR1cm4gbV9jYWxlbmRhci5nZXQodGhpcyk7IH0KKworI2RlZmluZSBKU0NfREVGSU5FX1RFTVBP
UkFMX1BMQUlOX1RJTUVfRklFTEQobmFtZSwgY2FwaXRhbGl6ZWROYW1lKSBcCisgICAgdW5zaWdu
ZWQgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5UaW1lLm5hbWUoKTsgfQorICAgIEpTQ19U
RU1QT1JBTF9QTEFJTl9USU1FX1VOSVRTKEpTQ19ERUZJTkVfVEVNUE9SQUxfUExBSU5fVElNRV9G
SUVMRCk7CisjdW5kZWYgSlNDX0RFRklORV9URU1QT1JBTF9QTEFJTl9USU1FX0ZJRUxECisKKyAg
ICBJU084NjAxOjpQbGFpblRpbWUgd2l0aChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBwbGFp
blRpbWVMaWtlKSBjb25zdDsKKyAgICBJU084NjAxOjpQbGFpblRpbWUgYWRkKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHN1YnRyYWN0KEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHJv
dW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBTdHJpbmcg
dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0
cmluZyB0b1N0cmluZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbiA9
IHsgUHJlY2lzaW9uOjpBdXRvLCAwIH0pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSVNP
ODYwMTo6dGVtcG9yYWxUaW1lVG9TdHJpbmcobV9wbGFpblRpbWUsIHByZWNpc2lvbik7CisgICAg
fQorCisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHBsYWluVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhaW5UaW1lOyB9CisKKyAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOworCitwcml2YXRlOgor
ICAgIFRlbXBvcmFsUGxhaW5UaW1lKFZNJiwgU3RydWN0dXJlKiwgSVNPODYwMTo6UGxhaW5UaW1l
JiYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6UGxh
aW5UaW1lPiBwYXJzZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+Jik7CisgICAg
c3RhdGljIElTTzg2MDE6OlBsYWluVGltZSBmcm9tT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNP
YmplY3QqKTsKKworICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0U3VicGxhaW5UaW1lKCkgY29uc3Q7
CisKKyAgICBJU084NjAxOjpQbGFpblRpbWUgbV9wbGFpblRpbWU7CisgICAgTGF6eVByb3BlcnR5
PFRlbXBvcmFsUGxhaW5UaW1lLCBUZW1wb3JhbENhbGVuZGFyPiBtX2NhbGVuZGFyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFkZTVhNDA0NWYzYzVhMDFiNGQ1YTIzZTEzOGQzM2JkYWE0MDNmYmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLmNwcApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisj
aW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklW
SUFMTFlfREVTVFJVQ1RJQkxFKFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IpOworCitzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9y
RnVuY0Zyb20pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3RvckZ1bmNDb21wYXJlKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxQ
bGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENs
YXNzSW5mbyBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlv
biIsICZCYXNlOjpzX2luZm8sICZ0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yVGFibGUsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcikg
fTsKKworLyogU291cmNlIGZvciBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oCitA
YmVnaW4gdGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvclRhYmxlCisgIGZyb20gICAgICAgICAg
ICAgdGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNGcm9tICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgY29tcGFyZSAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yRnVuY0NvbXBhcmUgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorQGVuZAorKi8K
KworVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvciogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlKiBwbGFpblRpbWVQcm90b3R5cGUpCit7CisgICAgYXV0byogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJl
KTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHBsYWluVGltZVByb3RvdHlw
ZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxh
aW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFs
RnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3N0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbFBsYWluVGltZSk7CitzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSk7CisKK1Rl
bXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3Io
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwg
Y2FsbFRlbXBvcmFsUGxhaW5UaW1lLCBjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSkKK3sKK30K
Kwordm9pZCBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKiBwbGFpblRpbWVQcm90b3R5cGUpCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJQbGFpblRpbWUiX3MsIFByb3BlcnR5QWRk
aXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcGxhaW5UaW1l
UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcGxhaW5U
aW1lUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0
cnVjdFRlbXBvcmFsUGxhaW5UaW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVj
dCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0NfR0VUX0RFUklWRURfU1RSVUNUVVJFKHZtLCBwbGFpblRp
bWVTdHJ1Y3R1cmUsIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVy
YXRpb24geyB9OworICAgIGF1dG8gY291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpLCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHMpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIHVuc2lnbmVkIGR1
cmF0aW9uSW5kZXggPSBpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRlbXBvcmFsVW5pdDo6SG91
cik7CisgICAgICAgIGR1cmF0aW9uW2R1cmF0aW9uSW5kZXhdID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudChpKS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlmICghc3RkOjppc2Zp
bml0ZShkdXJhdGlvbltkdXJhdGlvbkluZGV4XSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZSBwcm9w
ZXJ0aWVzIG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OnRyeUNyZWF0ZUlmVmFs
aWQoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIFdURk1vdmUoZHVyYXRpb24pKSkpOworfQorCitK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsUGxhaW5UaW1lLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2Fs
bGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGxhaW5UaW1lIikp
OworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1
Y3RvckZ1bmNGcm9tLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9u
cyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFRlbXBv
cmFsT3ZlcmZsb3cgb3ZlcmZsb3cgPSB0b1RlbXBvcmFsT3ZlcmZsb3coZ2xvYmFsT2JqZWN0LCBv
cHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNW
YWx1ZSBpdGVtVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworCisgICAgaWYgKGl0ZW1W
YWx1ZS5pbmhlcml0czxUZW1wb3JhbFBsYWluVGltZT4odm0pKQorICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBqc0Nhc3Q8VGVtcG9yYWxQ
bGFpblRpbWUqPihpdGVtVmFsdWUpLT5wbGFpblRpbWUoKSkpKTsKKworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKGds
b2JhbE9iamVjdCwgaXRlbVZhbHVlLCBvdmVyZmxvdykpKTsKK30KKworSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jQ29tcGFyZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIC8vIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNvbXBhcmUoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjky
YTkzNjVlMTUwZDUzOTg2NWFmNWVmMzIzMTYxY2ViZGMxZjA1ZjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVj
dG9yLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlv
bi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGU7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVu
Y3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRp
YyBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBU
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJF
X0lORk87CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvcihWTSYs
IFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBUZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MGRiZmFh
MjA2N2ZmMTU1MzFjYmZjYWE0MjFiOGQ5NTk4NjM5NjE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3Bw
CkBAIC0wLDAgKzEsMzA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxQbGFpblRpbWUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1dpdGgpOworc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVG
dW5jQWRkKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1N1YnRyYWN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1JvdW5kKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvU3RyaW5n
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlRnVuY1RvSlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNWYWx1ZU9m
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlR2V0dGVySG91cik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1w
b3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbnV0ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlclNlY29uZCk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZUdldHRlck1pbGxpc2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQpOworc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJOYW5v
c2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVtcG9yYWwuUGxh
aW5UaW1lIiwgJkJhc2U6OnNfaW5mbywgJnBsYWluVGltZVByb3RvdHlwZVRhYmxlLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKSB9OworCisv
KiBTb3VyY2UgZm9yIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gcGxh
aW5UaW1lUHJvdG90eXBlVGFibGUKKyAgd2l0aCAgICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZUZ1bmNXaXRoICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBh
ZGQgICAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0FkZCAgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHN1YnRyYWN0ICAgICAgICAgdGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGVGdW5jU3VidHJhY3QgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgcm91bmQgICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNSb3Vu
ZCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0b1N0cmluZyAgICAgICAgIHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvU3RyaW5nICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAwCisgIHRvSlNPTiAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVG
dW5jVG9KU09OICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2NhbGVTdHJp
bmcgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAgICAgRG9u
dEVudW18RnVuY3Rpb24gMAorICB2YWx1ZU9mICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlRnVuY1ZhbHVlT2YgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIGhvdXIg
ICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyICAgICAgICAg
ICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG1pbnV0ZSAgICAgICAgICAg
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUgICAgICAgICAgIERvbnRFbnVt
fFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIHNlY29uZCAgICAgICAgICAgdGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGVHZXR0ZXJTZWNvbmQgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCisgIG1pbGxpc2Vjb25kICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVHZXR0ZXJNaWxsaXNlY29uZCAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29y
CisgIG1pY3Jvc2Vjb25kICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaWNy
b3NlY29uZCAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG5hbm9zZWNv
bmQgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJOYW5vc2Vjb25kICAgICAg
IERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGNhbGVuZGFyICAgICAgICAgdGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciAgICAgICAgIERvbnRFbnVtfFJl
YWRPbmx5fEN1c3RvbUFjY2Vzc29yCitAZW5kCisqLworCitUZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZSogVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8q
IHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7CisgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsK
KyAgICByZXR1cm4gcHJvdG90eXBlOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpU
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKwor
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1dp
dGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cisg
ICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLndpdGggY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShwbGFpblRpbWUpOworCisgICAgLy8gSlNWYWx1ZSBwbGFpblRpbWVMaWtlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICAvLyBpZiAoIXBsYWluVGltZUxpa2UuaXNPYmpl
Y3QoKSkKKyAgICAvLyAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUud2l0
aCBtdXN0IGJlIGFuIG9iamVjdCJfcyk7CisKKyAgICAvLyBhdXRvIHN1YnBsYWluVGltZXMgPSBw
bGFpblRpbWUtPndpdGgoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChwbGFpblRpbWVMaWtlKSk7Cisg
ICAgLy8gUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8vIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjp0cnlD
cmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJwbGFpblRpbWVzKSkpKTsKK30K
KworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVu
Y0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5h
bWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuYWRkIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocGxhaW5UaW1lKTsKKworICAgIC8vIGF1dG8gc3VicGxhaW5UaW1lcyA9IHBs
YWluVGltZS0+YWRkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAg
Ly8gUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8vIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjp0cnlDcmVh
dGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJwbGFpblRpbWVzKSkpKTsKK30KKwor
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1N1
YnRyYWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5
bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5zdWJ0cmFj
dCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHBsYWluVGltZSk7CisKKyAgICAvLyBhdXRvIHN1YnBsYWluVGlt
ZXMgPSBwbGFpblRpbWUtPnN1YnRyYWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSk7CisgICAgLy8gUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8v
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5U
aW1lOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJwbGFpblRpbWVz
KSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlRnVuY1JvdW5kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRp
bWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlw
ZS5yb3VuZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAg
ICBhdXRvIG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmIChvcHRpb25z
LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVz
IGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworCisgICAgYXV0byByb3VuZGVkID0gcGxhaW5UaW1l
LT5yb3VuZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGlt
ZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJvdW5kZWQpKSkpOworfQorCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9TdHJpbmcsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFp
blRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKSk7Cit9CisKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0pTT04sIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFw
bGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkpKTsKK30KKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvTG9jYWxlU3Ry
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b0xvY2FsZVN0
cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudmFsdWVP
ZiBtdXN0IG5vdCBiZSBjYWxsZWQuIFRvIGNvbXBhcmUgUGxhaW5UaW1lIHZhbHVlcywgdXNlIFRl
bXBvcmFsLlBsYWluVGltZS5jb21wYXJlIl9zKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVySG91ciwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWlj
Q2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmhvdXIgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPmhvdXIoKSkpOworfQorCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWlu
VGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS5taW51dGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3Mp
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm1pbnV0
ZSgpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZUdldHRlclNlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGlt
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRpbWUp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHBsYWluVGltZS0+c2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWlsbGlzZWNvbmQsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWxs
aXNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+bWlsbGlzZWNvbmQo
KSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGVHZXR0ZXJNaWNyb3NlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWlu
VGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRp
bWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1pY3Jvc2Vjb25kIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIocGxhaW5UaW1lLT5taWNyb3NlY29uZCgpKSk7Cit9CisKK0pTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck5hbm9zZWNvbmQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWlu
VGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS5uYW5vc2Vjb25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1l
Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5u
YW5vc2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICgh
cGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHBsYWluVGltZS0+Y2FsZW5kYXIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVhMjI5YTdiZDUxOTRiYjQ2MTZmYTQ3MmMy
ZmFkNjE0ZDNhZTU4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBUZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3Bw
CmluZGV4IDk3ODRjM2QxNzQ5OTY5MTUwYjNlZDZlNjg2ZDVjYTg5NjllMmIyZDIuLjc2NTliMDU4
MmNjZDI5NWU4ZDFiYTVmMzhlZWJkNDE0NzE4NjE3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCkBAIC01NywxNyArNTcsNiBA
QCBUZW1wb3JhbFRpbWVab25lOjpUZW1wb3JhbFRpbWVab25lKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFRpbWVab25lIHRpbWVabwogewogfQogCi0vLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3N1cC1pc3ZhbGlkdGltZXpvbmVuYW1lCi1zdGQ6Om9wdGlvbmFsPFRp
bWVab25lSUQ+IFRlbXBvcmFsVGltZVpvbmU6OmlkRm9yVGltZVpvbmVOYW1lKFN0cmluZ1ZpZXcg
c3RyaW5nKQotewotICAgIGNvbnN0IGF1dG8mIHRpbWVab25lcyA9IGludGxBdmFpbGFibGVUaW1l
Wm9uZXMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB0aW1lWm9uZXMu
c2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRp
bWVab25lc1tpbmRleF0sIHN0cmluZykpCi0gICAgICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAg
fQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBhcnNldGVtcG9yYWx0aW1lWm9uZXN0cmluZwog
c3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUZW1wb3JhbFRpbWVab25lU3RyaW5n
KFN0cmluZ1ZpZXcpCiB7CkBAIC0xMTAsNyArOTksNyBAQCBKU09iamVjdCogVGVtcG9yYWxUaW1l
Wm9uZTo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRpbWVab25l
TAogICAgIGlmICh1dGNPZmZzZXQpCiAgICAgICAgIHJldHVybiBUZW1wb3JhbFRpbWVab25lOjpj
cmVhdGVGcm9tVVRDT2Zmc2V0KHZtLCBnbG9iYWxPYmplY3QtPnRpbWVab25lU3RydWN0dXJlKCks
IHV0Y09mZnNldC52YWx1ZSgpKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRl
bnRpZmllciA9IGlkRm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFRpbWVab25lSUQ+IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFt
ZSh0aW1lWm9uZVN0cmluZyk7CiAgICAgaWYgKGlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBU
ZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tSUQodm0sIGdsb2JhbE9iamVjdC0+dGltZVpvbmVT
dHJ1Y3R1cmUoKSwgaWRlbnRpZmllci52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oCmluZGV4IGJjMjgxNTNiN2ZkMjViYjc2
NWUyNTA2ZmQ5NmZhNzZiNWU1MTBhZGIuLmU1NzllYTNhNjNmNjIxZmRmNDMyNjExMzI5NzQ5YmYz
YzQ3NDZhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsVGltZVpvbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bFRpbWVab25lLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJJU084NjAxLmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KQEAgLTQ3LDEwICs0OCw5IEBAIGNsYXNzIFRl
bXBvcmFsVGltZVpvbmUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBE
RUNMQVJFX0lORk87CiAKLSAgICB1c2luZyBUaW1lWm9uZSA9IFZhcmlhbnQ8VGltZVpvbmVJRCwg
aW50NjRfdD47Ci0gICAgVGltZVpvbmUgdGltZVpvbmUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVa
b25lOyB9CisgICAgdXNpbmcgVGltZVpvbmUgPSBJU084NjAxOjpUaW1lWm9uZTsKIAotICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkRm9yVGltZVpvbmVOYW1lKFN0cmluZ1Zp
ZXcpOworICAgIFRpbWVab25lIHRpbWVab25lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lWm9uZTsg
fQogCiAgICAgc3RhdGljIEpTT2JqZWN0KiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGlt
ZVpvbmVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCmluZGV4IDk5MzM2NWFiMzMyZjhmZmFkODc1ODgw
MDA4MTBjZDMwZWRkYTYxZDcuLjZkMjNlOGYwNTlkYzc5YmNmYTI5ZDljNjVhMDVlZWU4M2IzYTVj
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGlt
ZVpvbmVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcApAQCAtNzQsNiArNzQsNyBAQCB2b2lkIFRl
bXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3Jh
bFRpbWVab25lUHJvdG90eQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiVGlt
ZVpvbmUiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlv
bik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgdGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOworICAgIHRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUtPnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhp
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxUaW1lWm9uZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTkyLDcgKzkzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFs
VGltZVpvbmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBpZiAodXRjT2Zmc2V0
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsVGltZVpvbmU6OmNyZWF0
ZUZyb21VVENPZmZzZXQodm0sIHN0cnVjdHVyZSwgdXRjT2Zmc2V0LnZhbHVlKCkpKTsKIAotICAg
IHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IFRlbXBvcmFsVGltZVpvbmU6
OmlkRm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRp
bWVab25lSUQ+IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9u
ZVN0cmluZyk7CiAgICAgaWYgKCFpZGVudGlmaWVyKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgbmVlZHMgdG8gYmUgVVRDIG9mZnNldCBz
dHJpbmcgb3IgVGltZVpvbmUgaWRlbnRpZmllciJfcyk7CiAgICAgICAgIHJldHVybiB7IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMDJmMTg5N2IwZjM5MTg1NjBiNTA1
MzE5ZDZlNDYxYmRiNWQ3MTBkZC4uMTVkZGIyYWZhZTUyMzc3N2FlOTA2NmIzMWIwZDcxMDU0NmI3
ZDg3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTY0LDYgKzE2NCw3
IEBACiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRh
ci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBs
YWluVGltZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0
UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKQEAgLTE1ODgsNiAr
MTU4OSw4IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xT
cGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIFN5bWJvbE9iamVjdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBUZW1wb3JhbENhbGVuZGFyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgVGVtcG9yYWxEdXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBU
ZW1wb3JhbFBsYWluVGltZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFs
VGltZVpvbmUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhB
cnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQ4QXJyYXkpCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50OENsYW1wZWRBcnJheSkKQEAgLTE2MjIsNyAr
MTYyNSw2IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVs
YXRpdmVUaW1lRm9ybWF0U3BhY2UsIGludGxSZWxhdGl2CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlLCBpbnRsU2VnbWVudEl0
ZXJhdG9ySGVhcENlbGxUeXBlLmdldCgpLCBJbnRsU2VnbWVudEl0ZXJhdG9yKQogRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50ZXJTcGFjZSwgaW50bFNl
Z21lbnRlckhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21lbnRlcikKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgaW50bFNlZ21lbnRz
SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsU2VnbWVudHMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBUZW1wb3JhbER1cmF0aW9uKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVG9XYXNtSUNDYWxsZWUpCiBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2Vi
QXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2spIC8vIEhhc2g6MHg5YWQ5OTVjZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXgg
MWU3MjVjZTM3NDg3M2UwMDdkMWIwM2Y1NDk1NmM1MDIzMDRjNmIzNy4uN2E1OGIyNzllNjcwYTg0
MDNkMWYzOTQxMjM1N2Q1ZTc3MTEzZjU3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CkBAIC0xOTUsNiArMTk1LDcgQEAgY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
OwogY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogY2xhc3MgVk1FbnRyeVNjb3BlOwogY2xhc3MgVGVt
cG9yYWxDYWxlbmRhcjsKK2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lOwogY2xhc3MgVGVtcG9yYWxU
aW1lWm9uZTsKIGNsYXNzIFRvcExldmVsR2xvYmFsT2JqZWN0U2NvcGU7CiBjbGFzcyBUeXBlUHJv
ZmlsZXI7CkBAIC01OTUsNiArNTk2LDggQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN5bWJvbE9iamVjdFNwYWNlKQogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENh
bGVuZGFyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1w
b3JhbER1cmF0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih0ZW1wb3JhbFBsYWluVGltZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodGVtcG9yYWxUaW1lWm9uZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodWludDhBcnJheVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkKQEAgLTYyMCw3ICs2MjMsNiBA
QCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3Vi
bHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRlclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRzU3BhY2UpCi0gICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3BhY2UpCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNUb1dh
c21JQ0NhbGxlZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
d2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzIyMzY2YTg2ODM0NTZmMGE0YjFkYTc4ZjliOTI2
MTdlYjAwMWUyNi4uZWJjMmJkMDNkOWQ2ZTUzYTEwM2IwMTA0OGMxOWRkOTIzNGQwM2FlZCAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5QbGFpblRpbWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTg5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3RlbXBvcmFs
LXBsYWludGltZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91
bGRUaHJvdyk6CisgICAgICAgICogc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzOgorCiAyMDIx
LTA5LTAzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pT
Q10gTWFrZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZSBjbG9iYmVyaXppbmcgcnVs
ZSBwcmVjaXNlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1wbGFpbnRpbWUu
anMgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1wbGFpbnRpbWUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDdh
YWQ5MDA5MzZkMzZiMDkwNDVlMWYwMmQwOGEzM2NkZTViZTMzMQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXBsYWludGltZS5qcwpAQCAtMCwwICsxLDI1IEBACisv
L0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlVGVtcG9yYWw9MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJl
KGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAoYWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAke2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFs
fWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2Up
IHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsKKyAgICAgICAgZnVuYygpOworICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOworICAgIH0KKworICAgIGlmICghKGVycm9yIGlu
c3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAk
e2Vycm9yVHlwZS5uYW1lfSFgKTsKKyAgICBpZiAobWVzc2FnZSAhPT0gdW5kZWZpbmVkKQorICAg
ICAgICBzaG91bGRCZShTdHJpbmcoZXJyb3IpLCBtZXNzYWdlKTsKK30KKworeworICAgIGxldCB0
aW1lID0gbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsKKyAg
ICBzaG91bGRCZShTdHJpbmcodGltZSksIGAwMDowMTowMi4wMDMwMDQwMDVgKTsKK30KZGlmZiAt
LWdpdCBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzIGIvSlNUZXN0cy9zdHJl
c3MvdGVtcG9yYWwtdGltZXpvbmUuanMKaW5kZXggZDg4ZjhjODg3ZTg0NGFlMmYwMzA5ZWFmMTUx
ZWNhMjIwMTQ0MTk1Ni4uYjQzYTkwNmY2ZmVkNGNlMjNiNDBhNjljZjU0Y2ZjZTUwYWViYTI5NSAx
MDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtdGltZXpvbmUuanMKKysrIGIvSlNU
ZXN0cy9zdHJlc3MvdGVtcG9yYWwtdGltZXpvbmUuanMKQEAgLTI2LDYgKzI2LDE4IEBAIGZ1bmN0
aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSwgbWVzc2FnZSkgewogICAgICIrMjQiLAog
ICAgICIrMjM6IiwKICAgICAiMjA6MDAiLAorICAgICIrMjowMCIsCisgICAgIiszMjowMCIsCisg
ICAgIisyMzowMDEiLAorICAgICIrMjM6OTkiLAorICAgICIrMjM6OTkwIiwKKyAgICAiKzIzOjU5
Ojk5IiwKKyAgICAiKzIzOjU5OjAwMSIsCisgICAgIisyMzo1OTo5OTkiLAorICAgICIrMjM6NTk6
NTkuIiwKKyAgICAiKzIzOjU5OjU5LCIsCisgICAgIisyMzo1OTo1OWEiLAorICAgICIrMjM6NTk6
NTkuYSIsCiAgICAgIisyMDowMDAwIiwKICAgICAiKzIwOjYwIiwKICAgICAiKzIwOjU5OiIsCkBA
IC01Miw2ICs2NCwxMCBAQCBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1l
c3NhZ2UpIHsKIHNob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjMwLjEyMzQ1
MDAwMCIpLmlkLCBgLTAxOjU5OjMwLjEyMzQ1YCk7CiBzaG91bGRCZShuZXcgVGVtcG9yYWwuVGlt
ZVpvbmUoIi0wMTo1OTozMC4wMDAwMDAwMDEiKS5pZCwgYC0wMTo1OTozMC4wMDAwMDAwMDFgKTsK
IHNob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjMwLjEyMzQ1Njc4OSIpLmlk
LCBgLTAxOjU5OjMwLjEyMzQ1Njc4OWApOworc2hvdWxkQmUobmV3IFRlbXBvcmFsLlRpbWVab25l
KCItMDE6NTk6MzAuMDAxMDAyMDAzIikuaWQsIGAtMDE6NTk6MzAuMDAxMDAyMDAzYCk7CitzaG91
bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4wMDAwMDAwMDAiKS5pZCwgYC0w
MTo1OTozMGApOworc2hvdWxkQmUobmV3IFRlbXBvcmFsLlRpbWVab25lKCItMDE6NTk6MDAuMDAw
MDAwMDAwIikuaWQsIGAtMDE6NTlgKTsKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgi
LTAxOjAwOjAwLjAwMDAwMDAwMCIpLmlkLCBgLTAxOjAwYCk7CiAKIGxldCB0eiA9IG5ldyBUZW1w
b3JhbC5UaW1lWm9uZSgiLTAxOjU5OjMwLjEyMzQ1Njc4OSIpCiBzaG91bGRCZSh0ei5pZCwgU3Ry
aW5nKHR6KSk7Cg==
</data>
<flag name="commit-queue"
          id="460523"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437351</attachid>
            <date>2021-09-04 18:43:54 -0700</date>
            <delta_ts>2021-09-04 23:43:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229892-20210904184353.patch</filename>
            <type>text/plain</type>
            <size>110155</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTM5NDE1YzNmNmI3NTVlOTY3YjE3MTMzYjU5ZTY5ZWM1NjNkOWNjLi5lZTI4YTY4MDA2YzM0YTcw
ZThkZTVmY2RkODE1MDdhYjNhNmU5YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw5MiBAQAorMjAyMS0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5QbGFpblRpbWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTg5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6
CisgICAgICAgICogRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBE
ZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy5tYWtlOgorICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIHJ1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaDoKKyAgICAgICAgKiBydW50aW1lL0lTTzg2MDEuY3BwOgorICAgICAgICAo
SlNDOjpJU084NjAxOjppZEZvclRpbWVab25lTmFtZSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6
OnBhcnNlVGltZVNwZWMpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZVRpbWVab25lTnVt
ZXJpY1VUQ09mZnNldCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlVGltZVpvbmVCcmFj
a2V0ZWRBbm5vdGF0aW9uKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lWm9uZSk6
CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlVGltZSk6CisgICAgICAgIChKU0M6OklTTzg2
MDE6OmZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
dGVtcG9yYWxUaW1lVG9TdHJpbmcpOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpQbGFpblRpbWU6OlBsYWluVGltZSk6CisgICAgICAgICogcnVu
dGltZS9JbnRsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpTQzo6dXRjVGltZVpvbmVJRFNsb3cpOgor
ICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5oOgorICAgICAgICAoSlNDOjp1dGNUaW1lWm9u
ZUlEKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SlNHbG9iYWxPYmplY3Q6OmluaXQpOgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6
dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuaDoK
KyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnBsYWluVGltZVN0cnVjdHVyZSk6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKToKKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bER1cmF0aW9uOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRp
b246OnRvU3RyaW5nKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaDoKKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsTm93LmNwcDoKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcDoK
KyAgICAgICAgKEpTQzo6Y3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0b3IpOgorICAgICAgICAoSlND
OjpzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKToKKyAgICAgICAgKEpTQzo6dG9UZW1wb3JhbE92ZXJm
bG93KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3Jh
bFBsYWluVGltZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6OmNy
ZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpUZW1wb3Jh
bFBsYWluVGltZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpmaW5pc2hDcmVh
dGlvbik6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp2aXNpdENoaWxkcmVuSW1w
bCk6CisgICAgICAgIChKU0M6OnRvUGxhaW5UaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQ
bGFpblRpbWU6OnRyeUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpiYWxhbmNlVGltZSk6
CisgICAgICAgIChKU0M6OnJvdW5kVGltZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5U
aW1lOjpyb3VuZCBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp0b1N0
cmluZyBjb25zdCk6CisgICAgICAgIChKU0M6OnByb3BlcnR5TmFtZSk6CisgICAgICAgIChKU0M6
OnRvVGVtcG9yYWxUaW1lUmVjb3JkKToKKyAgICAgICAgKEpTQzo6Y29uc3RyYWludFRpbWUpOgor
ICAgICAgICAoSlNDOjpyZWd1bGF0ZVRpbWUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWlu
VGltZTo6ZnJvbSk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgu
CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZSk6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVj
dHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OlRlbXBv
cmFsUGxhaW5UaW1lQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsVGltZVpvbmUuaC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3Jl
YXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6
OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmg6IENvcGll
ZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaC4K
KyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbFRpbWVab25lOjpmcm9tKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZTo6
aWRGb3JUaW1lWm9uZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxU
aW1lWm9uZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9y
LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAg
ICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA5
LTAzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10g
TWFrZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZSBjbG9iYmVyaXppbmcgcnVsZSBw
cmVjaXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWNhMDgzMTRiNjQ0
NTljNzhjYTAzODY0MjgxNTM3Zjg1MThkYmVlMC4uMzhjYjg0ZGEwNTZlMmI2YTZjMTNlZDlmOGQ3
MDUxOGVhZjA4OTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlz
dHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEz
LDYgKzExMyw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBy
dW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3Jh
bE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorICAgIHJ1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9y
LmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKIApkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxp
c3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlz
dAppbmRleCBjZTVmNjI4OGFhYTI3Y2I3ODE3YmVhZTE0NDM3NmVhMjhhZmFlNjNmLi4yODg1YjUx
MDE3Y2MxYWUzZDg5MmVmM2M1ZjI3YTRiMTIzNzUzODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTc1LDYg
KzE3NSw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVj
dG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJPSkVDVF9E
SVIpL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1Rl
bXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1Rl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1w
b3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBv
cmFsVGltZVpvbmVQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS91Y2QvQ2FzZUZvbGRpbmcu
dHh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0
cHV0LnhjZmlsZWxpc3QKaW5kZXggMWIwNTVjOTIyYzA5NGE1OTU4NDI2MDg0MWRjZWRmY2FhNzM3
NjUwMy4uMmFkMjEzMWM1ODY2OWJkMDU3NWM3YWY0MGE2YzQyN2E1OTRmNWMzZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxl
bGlzdApAQCAtNzIsNiArNzIsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLgogJChCVUlMVF9Q
Uk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsRHVyYXRp
b25Qcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9K
YXZhU2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCiskKEJVSUxU
X1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3Vy
Y2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxU
aW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNv
dXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5sdXQuaAogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1VuaWNvZGVQ
YXR0ZXJuVGFibGVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVk
U291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
aW5kZXggODgxOTI3ZTE3YmRhMjM4ZDdkYWNlZjFkNmViNWMzYzNiNzQ4YjM3Ny4uZWNiY2U2N2Y3
OGMwMDM0YzE2NmY1MGQ1ODkyYTZmMDhjNWRhNDBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE5Nyw2ICsxOTcsOCBAQCBPQkpFQ1RfTFVUX0hFQURF
UlMgPSBcCiAgICAgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9y
YWxOb3cubHV0LmggXAogICAgIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBUZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBU
ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmx1dC5oIFwKICAgICBXZWJBc3NlbWJseUNvbXBpbGVF
cnJvckNvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAz
MjhmOTJmNWIyZmIyMDVjODM4NzgyMjQxOWE1MDg0ZTBmYTFmN2NhLi44NDZlOWVlNzVmZWQwNTQ3
NTU2YzRiZmQ0YTI2MWQ4MGQ1OWFmYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBA
IC0xMDE5LDYgKzEwMTksOSBAQCBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5j
cHAKIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9y
YWxOb3cuY3BwCiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorcnVudGltZS9UZW1wb3JhbFBs
YWluVGltZS5jcHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKK3J1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBvcmFsVGlt
ZVpvbmUuY3BwCiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDcxNGFhMmZlYjIyNGZhNThm
MjdlZDU1NTFiNjdjOWYzMjY1Y2JkMjcuLmJkZWQ2OTkyZjdhOTY4ZTFjNzA2NDU4M2QzZTA4MTJm
Nzc0YzZlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaApAQCAtMTY5LDcgKzE2OSw5IEBACiAgICAgbWFjcm8obWF4aW11bUZyYWN0
aW9uRGlnaXRzKSBcCiAgICAgbWFjcm8obWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSBcCiAgICAg
bWFjcm8obWVzc2FnZSkgXAorICAgIG1hY3JvKG1pY3Jvc2Vjb25kKSBcCiAgICAgbWFjcm8obWlj
cm9zZWNvbmRzKSBcCisgICAgbWFjcm8obWlsbGlzZWNvbmQpIFwKICAgICBtYWNybyhtaWxsaXNl
Y29uZHMpIFwKICAgICBtYWNybyhtaW5pbXVtRnJhY3Rpb25EaWdpdHMpIFwKICAgICBtYWNybyht
aW5pbXVtSW50ZWdlckRpZ2l0cykgXApAQCAtMTgxLDYgKzE4Myw3IEBACiAgICAgbWFjcm8obW9u
dGhzKSBcCiAgICAgbWFjcm8obXVsdGlsaW5lKSBcCiAgICAgbWFjcm8obmFtZSkgXAorICAgIG1h
Y3JvKG5hbm9zZWNvbmQpIFwKICAgICBtYWNybyhuYW5vc2Vjb25kcykgXAogICAgIG1hY3JvKG5l
eHQpIFwKICAgICBtYWNybyhub3cpIFwKQEAgLTE5NCw2ICsxOTcsNyBAQAogICAgIG1hY3JvKG9y
aWdpbikgXAogICAgIG1hY3JvKG9zckV4aXRTaXRlcykgXAogICAgIG1hY3JvKG9zckV4aXRzKSBc
CisgICAgbWFjcm8ob3ZlcmZsb3cpIFwKICAgICBtYWNybyhwYXJzZSkgXAogICAgIG1hY3JvKHBh
cnNlSW50KSBcCiAgICAgbWFjcm8ocGFyc2VGbG9hdCkgXApAQCAtMjQ1LDYgKzI0OSw3IEBACiAg
ICAgbWFjcm8odXNhZ2UpIFwKICAgICBtYWNybyh2YWx1ZSkgXAogICAgIG1hY3JvKHZhbHVlT2Yp
IFwKKyAgICBtYWNybyh3ZWVrKSBcCiAgICAgbWFjcm8od2Vla2RheSkgXAogICAgIG1hY3JvKHdl
ZWtzKSBcCiAgICAgbWFjcm8od3JpdGFibGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSVNPODYwMS5jcHAKaW5kZXggOWU0MmFmYzEzM2MwN2UzZmI5MWI4OTc3NTZlM2ExNTUxMjNh
ZjkzNy4uNTZmMWRlMDYwYzM5ODQ3NWEzYjI1ZWMxNzA5NWU5NDUyNmYzYjJkYyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKQEAgLTEsNSArMSw2IEBACiAvKgog
ICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVudCBJbmMu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgogICoKICAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAogICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCkBAIC0yNiw2ICsyNyw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVk
ZSAiSVNPODYwMS5oIgogCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIlBhcnNl
SW50LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oPgogCkBAIC0z
OCw2ICs0MCwxNiBAQCBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbnNQZXJTZWNvbmQgPSAxMDAw
TEwgKiAxMDAwICogMTAwMDsKIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBuc1Blck1pbGxpc2Vj
b25kID0gMTAwMExMICogMTAwMDsKIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBuc1Blck1pY3Jv
c2Vjb25kID0gMTAwMExMOwogCitzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkRm9yVGltZVpv
bmVOYW1lKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGNvbnN0IGF1dG8mIHRpbWVab25lcyA9
IGludGxBdmFpbGFibGVUaW1lWm9uZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCB0aW1lWm9uZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKHRpbWVab25lc1tpbmRleF0sIHN0cmluZykpCisgICAgICAgICAgICBy
ZXR1cm4gaW5kZXg7CisgICAgfQorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJUeXBlPgogaW50MzJfdCBwYXJzZURlY2ltYWxJbnQzMihjb25zdCBD
aGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewpAQCAtMjQ0LDI4ICsyNTYs
MTcgQEAgc3RkOjpvcHRpb25hbDxEdXJhdGlvbj4gcGFyc2VEdXJhdGlvbihTdHJpbmdWaWV3IHN0
cmluZykKIH0KIAogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBzdGQ6
Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1Bh
cnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFs
PFBsYWluVGltZT4gcGFyc2VUaW1lU3BlYyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5
cGU+JiBidWZmZXIpCiB7Ci0gICAgLy8gVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0IDoKLSAgICAv
LyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91cgotICAgIC8v
ICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpv
bmVVVENPZmZzZXRNaW51dGUKLSAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVa
b25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZQotICAgIC8vICAgICBUaW1l
Wm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZz
ZXRNaW51dGUgOiBUaW1lWm9uZVVUQ09mZnNldFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0
aW9uW29wdF0KLSAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zm
c2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZSBUaW1lWm9uZVVUQ09mZnNldFNlY29uZFtv
cHRdCi0gICAgLy8KLSAgICAvLyAgTWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMgYXJlIMKxMjM6
NTk6NTkuOTk5OTk5OTk5ID0gwrE4NjM5OTk5OTk5OTk5OW5zLCB3aGljaCBjYW4gYmUgcmVwcmVz
ZW50ZWQgYnkgaW50NjRfdCAvIGRvdWJsZSdzIGludGVnZXIgcGFydC4KKyAgICAvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVNwZWMKKyAgICAvLyBUaW1lU3Bl
YyA6CisgICAgLy8gICAgIFRpbWVIb3VyCisgICAgLy8gICAgIFRpbWVIb3VyIDogVGltZU1pbnV0
ZQorICAgIC8vICAgICBUaW1lSG91ciBUaW1lTWludXRlCisgICAgLy8gICAgIFRpbWVIb3VyIDog
VGltZU1pbnV0ZSA6IFRpbWVTZWNvbmQgVGltZUZyYWN0aW9uW29wdF0KKyAgICAvLyAgICAgVGlt
ZUhvdXIgVGltZU1pbnV0ZSBUaW1lU2Vjb25kIFRpbWVGcmFjdGlvbltvcHRdCiAKLSAgICAvLyBz
aWduIGFuZCBob3VyLgotICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCAzKQotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaW50NjRfdCBmYWN0b3IgPSAxOwotICAg
IGlmICgqYnVmZmVyID09ICcrJykKLSAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKLSAgICBlbHNl
IGlmICgqYnVmZmVyID09ICctJyB8fCAqYnVmZmVyID09IDB4MjIxMikgewotICAgICAgICBmYWN0
b3IgPSAtMTsKLSAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKLSAgICB9IGVsc2UKKyAgICBpZiAo
YnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAogICAgIGludDY0X3QgaG91ciA9IDA7CkBAIC0yODQsMTMgKzI4NSwxNCBAQCBzdGF0aWMg
c3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChTdHJp
bmdQYXJzaW5nQnVmZmVyPAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYg
KGJ1ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gKG5zUGVySG91ciAqIGhvdXIpICogZmFj
dG9yOworICAgICAgICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIDAsIDAsIDAsIDAsIDApOwogCiAg
ICAgYm9vbCBzcGxpdEJ5Q29sb24gPSBmYWxzZTsKICAgICBpZiAoKmJ1ZmZlciA9PSAnOicpIHsK
LSAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKICAgICAgICAgc3BsaXRCeUNvbG9uID0gdHJ1ZTsK
LSAgICB9CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgfSBlbHNlIGlmICghKCpidWZm
ZXIgPj0gJzAnICYmICpidWZmZXIgPD0gJzUnKSkKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZSho
b3VyLCAwLCAwLCAwLCAwLCAwKTsKIAogICAgIGludDY0X3QgbWludXRlID0gMDsKICAgICBpZiAo
YnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgMikKQEAgLTMwOCwxNCArMzEwLDE1IEBAIHN0YXRp
YyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0
cmluZ1BhcnNpbmdCdWZmZXI8CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBp
ZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiAobnNQZXJIb3VyICogaG91ciArIG5z
UGVyTWludXRlICogbWludXRlKSAqIGZhY3RvcjsKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZSho
b3VyLCBtaW51dGUsIDAsIDAsIDAsIDApOwogCiAgICAgaWYgKHNwbGl0QnlDb2xvbikgewogICAg
ICAgICBpZiAoKmJ1ZmZlciA9PSAnOicpCiAgICAgICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwog
ICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KKyAg
ICAgICAgICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwgbWludXRlLCAwLCAwLCAwLCAwKTsKKyAg
ICB9IGVsc2UgaWYgKCEoKmJ1ZmZlciA+PSAnMCcgJiYgKmJ1ZmZlciA8PSAnNScpKQorICAgICAg
ICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgMCwgMCwgMCwgMCk7CiAKICAgICBpbnQ2
NF90IHNlY29uZCA9IDA7CiAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDIpCkBA
IC0zMjcsNDIgKzMzMCwyNzAgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VU
aW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nUGFyc2luZ0J1ZmZlcjwKICAgICAgICAgaWYg
KCFpc0FTQ0lJRGlnaXQoc2Vjb25kU2Vjb25kQ2hhcmFjdGVyKSkKICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHNlY29uZCA9IChzZWNvbmRTZWNvbmRDaGFyYWN0ZXIg
LSAnMCcpICsgMTAgKiAoZmlyc3RTZWNvbmRDaGFyYWN0ZXIgLSAnMCcpOwotICAgICAgICBBU1NF
UlQobWludXRlIDwgNjApOworICAgICAgICBBU1NFUlQoc2Vjb25kIDwgNjApOwogICAgICAgICBi
dWZmZXIuYWR2YW5jZSgpOwogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gKG5zUGVySG91ciAq
IGhvdXIgKyBuc1Blck1pbnV0ZSAqIG1pbnV0ZSArIG5zUGVyU2Vjb25kICogc2Vjb25kKSAqIGZh
Y3RvcjsKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgMCwg
MCwgMCk7CiAKICAgICBpZiAoKmJ1ZmZlciAhPSAnLicgJiYgKmJ1ZmZlciAhPSAnLCcpCi0gICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwg
bWludXRlLCBzZWNvbmQsIDAsIDAsIDApOwogICAgIGJ1ZmZlci5hZHZhbmNlKCk7CiAKICAgICB1
bnNpZ25lZCBkaWdpdHMgPSAwOwotICAgIHdoaWxlIChkaWdpdHMgPCBidWZmZXIubGVuZ3RoUmVt
YWluaW5nKCkgJiYgaXNBU0NJSURpZ2l0KGJ1ZmZlcltkaWdpdHNdKSkKLSAgICAgICAgZGlnaXRz
Kys7Ci0gICAgaWYgKCFkaWdpdHMgfHwgZGlnaXRzID4gOSkKKyAgICB1bnNpZ25lZCBtYXhDb3Vu
dCA9IHN0ZDo6bWluPHVuc2lnbmVkPihidWZmZXIubGVuZ3RoUmVtYWluaW5nKCksIDkpOworICAg
IGZvciAoOyBkaWdpdHMgPCBtYXhDb3VudDsgKytkaWdpdHMpIHsKKyAgICAgICAgaWYgKCFpc0FT
Q0lJRGlnaXQoYnVmZmVyW2RpZ2l0c10pKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAg
IGlmICghZGlnaXRzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9y
PExDaGFyLCA5PiBwYWRkZWQoOSwgJzAnKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
ZGlnaXRzOyArK2kpCiAgICAgICAgIHBhZGRlZFtpXSA9IGJ1ZmZlcltpXTsKICAgICBidWZmZXIu
YWR2YW5jZUJ5KGRpZ2l0cyk7Ci0gICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGludDY0X3QgbWlsbGlzZWNvbmQgPSBwYXJzZURlY2lt
YWxJbnQzMihwYWRkZWQuZGF0YSgpLCAzKTsKICAgICBpbnQ2NF90IG1pY3Jvc2Vjb25kID0gcGFy
c2VEZWNpbWFsSW50MzIocGFkZGVkLmRhdGEoKSArIDMsIDMpOwogICAgIGludDY0X3QgbmFub3Nl
Y29uZCA9IHBhcnNlRGVjaW1hbEludDMyKHBhZGRlZC5kYXRhKCkgKyA2LCAzKTsKIAorICAgIHJl
dHVybiBQbGFpblRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBtaWNyb3Nl
Y29uZCwgbmFub3NlY29uZCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+
CitzdGF0aWMgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09m
ZnNldChTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAg
Ly8gVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0IDoKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZz
ZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91cgorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNl
dFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUKKyAg
ICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBUaW1l
Wm9uZVVUQ09mZnNldE1pbnV0ZQorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGlt
ZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUgOiBUaW1lWm9uZVVU
Q09mZnNldFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0aW9uW29wdF0KKyAgICAvLyAgICAg
VGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVUQ09m
ZnNldE1pbnV0ZSBUaW1lWm9uZVVUQ09mZnNldFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0
aW9uW29wdF0KKyAgICAvLworICAgIC8vICBUaGlzIGlzIHRoZSBzYW1lIHRvCisgICAgLy8gICAg
IFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lU3BlYworICAgIC8vCisgICAgLy8gIE1heGltdW0g
YW5kIG1pbmltdW0gdmFsdWVzIGFyZSDCsTIzOjU5OjU5Ljk5OTk5OTk5OSA9IMKxODYzOTk5OTk5
OTk5OTlucywgd2hpY2ggY2FuIGJlIHJlcHJlc2VudGVkIGJ5IGludDY0X3QgLyBkb3VibGUncyBp
bnRlZ2VyIHBhcnQuCisKKyAgICAvLyBzaWduIGFuZCBob3VyLgorICAgIGlmIChidWZmZXIubGVu
Z3RoUmVtYWluaW5nKCkgPCAzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAg
aW50NjRfdCBmYWN0b3IgPSAxOworICAgIGlmICgqYnVmZmVyID09ICcrJykKKyAgICAgICAgYnVm
ZmVyLmFkdmFuY2UoKTsKKyAgICBlbHNlIGlmICgqYnVmZmVyID09ICctJyB8fCAqYnVmZmVyID09
IDB4MjIxMikgeworICAgICAgICBmYWN0b3IgPSAtMTsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2Uo
KTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8g
cGxhaW5UaW1lID0gcGFyc2VUaW1lU3BlYyhidWZmZXIpOworICAgIGlmICghcGxhaW5UaW1lKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaW50NjRfdCBob3VyID0gcGxhaW5U
aW1lLT5ob3VyKCk7CisgICAgaW50NjRfdCBtaW51dGUgPSBwbGFpblRpbWUtPm1pbnV0ZSgpOwor
ICAgIGludDY0X3Qgc2Vjb25kID0gcGxhaW5UaW1lLT5zZWNvbmQoKTsKKyAgICBpbnQ2NF90IG1p
bGxpc2Vjb25kID0gcGxhaW5UaW1lLT5taWxsaXNlY29uZCgpOworICAgIGludDY0X3QgbWljcm9z
ZWNvbmQgPSBwbGFpblRpbWUtPm1pY3Jvc2Vjb25kKCk7CisgICAgaW50NjRfdCBuYW5vc2Vjb25k
ID0gcGxhaW5UaW1lLT5uYW5vc2Vjb25kKCk7CisKICAgICByZXR1cm4gKG5zUGVySG91ciAqIGhv
dXIgKyBuc1Blck1pbnV0ZSAqIG1pbnV0ZSArIG5zUGVyU2Vjb25kICogc2Vjb25kICsgbnNQZXJN
aWxsaXNlY29uZCAqIG1pbGxpc2Vjb25kICsgbnNQZXJNaWNyb3NlY29uZCAqIG1pY3Jvc2Vjb25k
ICsgbmFub3NlY29uZCkgKiBmYWN0b3I7CiB9CiAKIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFy
c2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgcmV0
dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBz
dGQ6Om9wdGlvbmFsPGludDY0X3Q+IHsKLSAgICAgICAgcmV0dXJuIHBhcnNlVGltZVpvbmVOdW1l
cmljVVRDT2Zmc2V0KGJ1ZmZlcik7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VUaW1lWm9u
ZU51bWVyaWNVVENPZmZzZXQoYnVmZmVyKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsK
KyAgICB9KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0
aW9uYWw8VGltZVpvbmU+IHBhcnNlVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uKFN0cmluZ1Bh
cnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3sKKyAgICAvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9u
CisgICAgLy8gVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uIDoKKyAgICAvLyAgICAgWyBUaW1l
Wm9uZUJyYWNrZXRlZE5hbWUgXQorICAgIC8vCisgICAgLy8gVGltZVpvbmVCcmFja2V0ZWROYW1l
IDoKKyAgICAvLyAgICAgVGltZVpvbmVJQU5BTmFtZQorICAgIC8vICAgICBFdGMvR01UIEFTQ0lJ
U2lnbiBIb3VyCisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0TmFtZQorCisgICAgaWYgKGJ1
ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoKmJ1ZmZlciAhPSAnWycpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgYnVmZmVyLmFkdmFuY2UoKTsKKworICAgIHN3aXRjaCAoKmJ1ZmZlcikgeworICAgIGNh
c2UgJysnOgorICAgIGNhc2UgJy0nOgorICAgIGNhc2UgMHgyMjEyOiB7CisgICAgICAgIC8vIFRp
bWVab25lVVRDT2Zmc2V0TmFtZSBpcyB0aGUgc2FtZSB0byBUaW1lWm9uZU51bWVyaWNVVENPZmZz
ZXQuCisgICAgICAgIGF1dG8gb2Zmc2V0ID0gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQo
YnVmZmVyKTsKKyAgICAgICAgaWYgKCFvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICBpZiAoKmJ1ZmZlciAhPSAnXScpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBy
ZXR1cm4gb2Zmc2V0LnZhbHVlKCk7CisgICAgfQorICAgIGNhc2UgJ0UnOiB7CisgICAgICAgIC8v
ICJFdGMvR01UKzIwIiBhbmQgIl0iID0+IGxlbmd0aCBpcyAxMS4KKyAgICAgICAgaWYgKGJ1ZmZl
ci5sZW5ndGhSZW1haW5pbmcoKSA+PSAxMSkgeworICAgICAgICAgICAgaWYgKGJ1ZmZlclswXSA9
PSAnRScgJiYgYnVmZmVyWzFdID09ICd0JyAmJiBidWZmZXJbMl0gPT0gJ2MnICYmIGJ1ZmZlclsz
XSA9PSAnLycgJiYgYnVmZmVyWzRdID09ICdHJyAmJiBidWZmZXJbNV0gPT0gJ00nICYmIGJ1ZmZl
cls2XSA9PSAnVCcpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHNpZ25DaGFyYWN0ZXIgPSBidWZm
ZXJbN107CisgICAgICAgICAgICAgICAgLy8gTm90IGluY2x1ZGluZyAweDIyMTIgc2luY2UgaXQg
aXMgQVNDSUlTaWduLgorICAgICAgICAgICAgICAgIGlmIChzaWduQ2hhcmFjdGVyID09ICcrJyB8
fCBzaWduQ2hhcmFjdGVyID09ICctJykgeworICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGZh
Y3RvciA9IHNpZ25DaGFyYWN0ZXIgPT0gJysnID8gMSA6IC0xOworICAgICAgICAgICAgICAgICAg
ICBpbnQ2NF90IGhvdXIgPSAwOworICAgICAgICAgICAgICAgICAgICBhdXRvIGZpcnN0SG91ckNo
YXJhY3RlciA9IGJ1ZmZlcls4XTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0SG91ckNo
YXJhY3RlciA+PSAnMCcgJiYgZmlyc3RIb3VyQ2hhcmFjdGVyIDw9ICcyJykgeworICAgICAgICAg
ICAgICAgICAgICAgICAgYXV0byBzZWNvbmRIb3VyQ2hhcmFjdGVyID0gYnVmZmVyWzldOworICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGlzQVNDSUlEaWdpdChzZWNvbmRIb3VyQ2hhcmFjdGVy
KSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhvdXIgPSAoc2Vjb25kSG91ckNoYXJh
Y3RlciAtICcwJykgKyAxMCAqIChmaXJzdEhvdXJDaGFyYWN0ZXIgLSAnMCcpOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChob3VyIDwgMjQgJiYgYnVmZmVyWzEwXSA9PSAnXScpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyLmFkdmFuY2VCeSgxMSk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuc1BlckhvdXIgKiBob3VyICog
ZmFjdG9yOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisgICAgZGVm
YXVsdDogeworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgIGZvciAoOyBpbmRl
eCA8IGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKTsgKytpbmRleCkgeworICAgICAgICAgICAgaWYg
KGJ1ZmZlcltpbmRleF0gPT0gJ10nKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9
CisgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICBTdHJpbmdWaWV3IHRpbWVab25lU3RyaW5nID0gYnVmZmVyLnN0cmluZ1ZpZXdPZkNo
YXJhY3RlcnNSZW1haW5pbmcoKS5sZWZ0KGluZGV4KTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxU
aW1lWm9uZUlEPiBpZGVudGlmaWVyID0gaWRGb3JUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcp
OworICAgICAgICBpZiAoIWlkZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICBidWZmZXIuYWR2YW5jZUJ5KGluZGV4KTsKKyAgICAgICAgaWYgKGJ1ZmZl
ci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYg
KCpidWZmZXIgIT0gJ10nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIudmFsdWUoKTsK
KyAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3Rk
OjpvcHRpb25hbDxUaW1lWm9uZT4gcGFyc2VUaW1lWm9uZShTdHJpbmdQYXJzaW5nQnVmZmVyPENo
YXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN3aXRjaCAoKmJ1ZmZlcikgeworICAgIC8vIFVU
Q0Rlc2lnbmF0b3IKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3By
b2QtVVRDRGVzaWduYXRvcgorICAgIGNhc2UgJ3onOgorICAgIGNhc2UgJ1onOiB7CisgICAgICAg
IGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAgICAg
ICAgIHJldHVybiB1dGNUaW1lWm9uZUlEKCk7CisgICAgICAgIGlmICgqYnVmZmVyID09ICdbJykg
eworICAgICAgICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpvbmVCcmFja2V0ZWRBbm5v
dGF0aW9uKGJ1ZmZlcik7CisgICAgICAgICAgICBpZiAoIXRpbWVab25lKQorICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gdGltZVpvbmUudmFs
dWUoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gdXRjVGltZVpvbmVJRCgpOworICAgIH0K
KyAgICAvLyBUaW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVVVENPZmZzZXRTaWduCisgICAgY2FzZSAnKyc6
CisgICAgY2FzZSAnLSc6CisgICAgY2FzZSAweDIyMTI6IHsKKyAgICAgICAgYXV0byBvZmZzZXQg
PSBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChidWZmZXIpOworICAgICAgICBpZiAoIW9m
ZnNldCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmIChidWZm
ZXIuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQudmFsdWUoKTsKKyAgICAgICAg
aWYgKCpidWZmZXIgPT0gJ1snKSB7CisgICAgICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VU
aW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24oYnVmZmVyKTsKKyAgICAgICAgICAgIGlmICghdGlt
ZVpvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAg
IHJldHVybiB0aW1lWm9uZS52YWx1ZSgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBvZmZz
ZXQudmFsdWUoKTsKKyAgICB9CisgICAgLy8gVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uCisg
ICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25lQnJh
Y2tldGVkQW5ub3RhdGlvbgorICAgIGNhc2UgJ1snOiB7CisgICAgICAgIGF1dG8gdGltZVpvbmUg
PSBwYXJzZVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbihidWZmZXIpOworICAgICAgICBpZiAo
IXRpbWVab25lKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0
dXJuIHRpbWVab25lLnZhbHVlKCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJU
eXBlPgorc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25hbDxU
aW1lWm9uZT4+PiBwYXJzZVRpbWUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYg
YnVmZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJv
ZC1UaW1lCisgICAgLy8gVGltZSA6CisgICAgLy8gICAgIFRpbWVTcGVjIFRpbWVab25lW29wdF0K
KyAgICBhdXRvIHBsYWluVGltZSA9IHBhcnNlVGltZVNwZWMoYnVmZmVyKTsKKyAgICBpZiAoIXBs
YWluVGltZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoYnVmZmVyLmF0
RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZhbHVlKCksIHN0
ZDo6bnVsbG9wdCB9OworICAgIHN3aXRjaCAoKmJ1ZmZlcikgeworICAgIC8vIFVUQ0Rlc2lnbmF0
b3IKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVVRDRGVz
aWduYXRvcgorICAgIGNhc2UgJ3onOgorICAgIGNhc2UgJ1onOgorICAgIC8vIFRpbWVab25lVVRD
T2Zmc2V0U2lnbgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJv
ZC1UaW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICBjYXNlICcrJzoKKyAgICBjYXNlICctJzoKKyAg
ICBjYXNlIDB4MjIxMjoKKyAgICAvLyBUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICAv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVCcmFja2V0
ZWRBbm5vdGF0aW9uCisgICAgY2FzZSAnWyc6IHsKKyAgICAgICAgYXV0byB0aW1lWm9uZSA9IHBh
cnNlVGltZVpvbmUoYnVmZmVyKTsKKyAgICAgICAgaWYgKCF0aW1lWm9uZSkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5U
aW1lLnZhbHVlKCksIHRpbWVab25lIH07CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJl
dHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCB9OworICAg
IH0KK30KKworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25h
bDxUaW1lWm9uZT4+PiBwYXJzZVRpbWUoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgcmV0dXJu
IHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6
Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lPj4+
IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBwYXJzZVRpbWUoYnVmZmVyKTsKKyAgICAgICAgaWYg
KCFyZXN1bHQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAo
IWJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgcmV0dXJuIHJlc3VsdDsKICAgICB9KTsKIH0KIApAQCAtMzgyLDEzICs2MTMsMTkgQEAgU3Ry
aW5nIGZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKGludDY0X3Qgb2Zmc2V0KQogICAgIGlmIChu
YW5vc2Vjb25kcykgewogICAgICAgICAvLyBTaW5jZSBuc1BlclNlY29uZCBpcyAxMDAwMDAwMDAw
LCBzdHJpbmdpZmllZCBuYW5vc2Vjb25kcyB0YWtlcyBhdCBtb3N0IDkgY2hhcmFjdGVycyAoOTk5
OTk5OTk5KS4KICAgICAgICAgYXV0byBmcmFjdGlvbiA9IFdURjo6bnVtYmVyVG9TdHJpbmdVbnNp
Z25lZDxWZWN0b3I8TENoYXIsIDk+PihuYW5vc2Vjb25kcyk7Ci0gICAgICAgIHVuc2lnbmVkIGlu
ZGV4ID0gMDsKICAgICAgICAgdW5zaWduZWQgcGFkZGluZ0xlbmd0aCA9IDkgLSBmcmFjdGlvbi5z
aXplKCk7Ci0gICAgICAgIGZvciAoOyBpbmRleCA8IGZyYWN0aW9uLnNpemUoKTsgKytpbmRleCkg
ewotICAgICAgICAgICAgaWYgKGZyYWN0aW9uW2luZGV4XSA9PSAnMCcpCisgICAgICAgIHVuc2ln
bmVkIGluZGV4ID0gZnJhY3Rpb24uc2l6ZSgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2ln
bmVkPiB2YWxpZExlbmd0aDsKKyAgICAgICAgd2hpbGUgKGluZGV4LS0pIHsKKyAgICAgICAgICAg
IGlmIChmcmFjdGlvbltpbmRleF0gIT0gJzAnKSB7CisgICAgICAgICAgICAgICAgdmFsaWRMZW5n
dGggPSBpbmRleCArIDE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAg
ICAgICAgIH0KLSAgICAgICAgZnJhY3Rpb24ucmVzaXplKGluZGV4KTsKKyAgICAgICAgaWYgKHZh
bGlkTGVuZ3RoKQorICAgICAgICAgICAgZnJhY3Rpb24ucmVzaXplKHZhbGlkTGVuZ3RoLnZhbHVl
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmcmFjdGlvbi5jbGVhcigpOwogICAgICAg
ICByZXR1cm4gbWFrZVN0cmluZyhuZWdhdGl2ZSA/ICctJyA6ICcrJywgcGFkKCcwJywgMiwgaG91
cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpLCAnOicsIHBhZCgnMCcsIDIsIHNlY29uZHMp
LCAnLicsIHBhZCgnMCcsIHBhZGRpbmdMZW5ndGgsIGVtcHR5U3RyaW5nKCkpLCBmcmFjdGlvbik7
CiAgICAgfQogICAgIGlmIChzZWNvbmRzKQpAQCAtMzk2LDUgKzYzMyw0MCBAQCBTdHJpbmcgZm9y
bWF0VGltZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCBvZmZzZXQpCiAgICAgcmV0dXJuIG1ha2VT
dHJpbmcobmVnYXRpdmUgPyAnLScgOiAnKycsIHBhZCgnMCcsIDIsIGhvdXJzKSwgJzonLCBwYWQo
JzAnLCAyLCBtaW51dGVzKSk7CiB9CiAKK1N0cmluZyB0ZW1wb3JhbFRpbWVUb1N0cmluZyhQbGFp
blRpbWUgcGxhaW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lv
bikKK3sKKyAgICBhdXRvIFtwcmVjaXNpb25UeXBlLCBwcmVjaXNpb25WYWx1ZV0gPSBwcmVjaXNp
b247CisgICAgQVNTRVJUKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpBdXRvIHx8IHByZWNp
c2lvblZhbHVlIDwgMTApOworICAgIGlmIChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6TWlu
dXRlKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBwbGFpblRpbWUuaG91
cigpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUubWludXRlKCkpKTsKKworICAgIGludDY0
X3QgZnJhY3Rpb25OYW5vc2Vjb25kcyA9IHN0YXRpY19jYXN0PGludDY0X3Q+KHBsYWluVGltZS5t
aWxsaXNlY29uZCgpKSAqIG5zUGVyTWlsbGlzZWNvbmQgKyBzdGF0aWNfY2FzdDxpbnQ2NF90Pihw
bGFpblRpbWUubWljcm9zZWNvbmQoKSkgKiBuc1Blck1pY3Jvc2Vjb25kICsgc3RhdGljX2Nhc3Q8
aW50NjRfdD4ocGxhaW5UaW1lLm5hbm9zZWNvbmQoKSk7CisgICAgaWYgKHByZWNpc2lvblR5cGUg
PT0gUHJlY2lzaW9uOjpBdXRvKSB7CisgICAgICAgIGlmICghZnJhY3Rpb25OYW5vc2Vjb25kcykK
KyAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3Vy
KCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSksICc6JywgcGFkKCcwJywg
MiwgcGxhaW5UaW1lLnNlY29uZCgpKSk7CisgICAgICAgIGF1dG8gZnJhY3Rpb24gPSBXVEY6Om51
bWJlclRvU3RyaW5nVW5zaWduZWQ8VmVjdG9yPExDaGFyLCA5Pj4oZnJhY3Rpb25OYW5vc2Vjb25k
cyk7CisgICAgICAgIHVuc2lnbmVkIHBhZGRpbmdMZW5ndGggPSA5IC0gZnJhY3Rpb24uc2l6ZSgp
OworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGZyYWN0aW9uLnNpemUoKTsKKyAgICAgICAgc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gdmFsaWRMZW5ndGg7CisgICAgICAgIHdoaWxlIChpbmRleC0t
KSB7CisgICAgICAgICAgICBpZiAoZnJhY3Rpb25baW5kZXhdICE9ICcwJykgeworICAgICAgICAg
ICAgICAgIHZhbGlkTGVuZ3RoID0gaW5kZXggKyAxOworICAgICAgICAgICAgICAgIGJyZWFrOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICh2YWxpZExlbmd0aCkKKyAgICAg
ICAgICAgIGZyYWN0aW9uLnJlc2l6ZSh2YWxpZExlbmd0aC52YWx1ZSgpKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgZnJhY3Rpb24uY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcocGFkKCcwJywgMiwgcGxhaW5UaW1lLmhvdXIoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5U
aW1lLm1pbnV0ZSgpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUuc2Vjb25kKCkpLCAnLics
IHBhZCgnMCcsIHBhZGRpbmdMZW5ndGgsIGVtcHR5U3RyaW5nKCkpLCBmcmFjdGlvbik7CisgICAg
fQorICAgIGlmICghcHJlY2lzaW9uVmFsdWUpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBh
ZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5t
aW51dGUoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLnNlY29uZCgpKSk7CisgICAgYXV0
byBmcmFjdGlvbiA9IFdURjo6bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TENoYXIsIDk+
PihmcmFjdGlvbk5hbm9zZWNvbmRzKTsKKyAgICB1bnNpZ25lZCBwYWRkaW5nTGVuZ3RoID0gOSAt
IGZyYWN0aW9uLnNpemUoKTsKKyAgICBmcmFjdGlvbi5yZXNpemUocHJlY2lzaW9uVmFsdWUpOwor
ICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOics
IHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5U
aW1lLnNlY29uZCgpKSwgJy4nLCBwYWQoJzAnLCBwYWRkaW5nTGVuZ3RoLCBlbXB0eVN0cmluZygp
KSwgZnJhY3Rpb24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAppbmRleCA2NzY4OWQx
YzI0NWFmZWUyYWMyNjk1OWMyOTcwZGQ0OTYzYWUzMDAyLi5jY2E0NDExZjlhNTYxNGIyNmM3ODc4
MWEyMjI5NTk2MjliZTkwYmYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JU084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYw
MS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsNiArMjYsNyBAQAogCiAj
cHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3Jh
bE9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ4LDkgKzUwLDQyIEBAIHN0cnVjdCBE
dXJhdGlvbiB7CiAgICAgc3RkOjphcnJheTxkb3VibGUsIG51bWJlck9mVGVtcG9yYWxVbml0cz4g
ZGF0YSB7IH07CiB9OwogCitjbGFzcyBQbGFpblRpbWUgeworcHVibGljOgorICAgIFBsYWluVGlt
ZSgpID0gZGVmYXVsdDsKKyAgICBQbGFpblRpbWUodW5zaWduZWQgaG91ciwgdW5zaWduZWQgbWlu
dXRlLCB1bnNpZ25lZCBzZWNvbmQsIHVuc2lnbmVkIG1pbGxpc2Vjb25kLCB1bnNpZ25lZCBtaWNy
b3NlY29uZCwgdW5zaWduZWQgbmFub3NlY29uZCkKKyAgICAgICAgOiBtX2hvdXIoaG91cikKKyAg
ICAgICAgLCBtX21pbnV0ZShtaW51dGUpCisgICAgICAgICwgbV9zZWNvbmQoc2Vjb25kKQorICAg
ICAgICAsIG1fbWlsbGlzZWNvbmQobWlsbGlzZWNvbmQpCisgICAgICAgICwgbV9taWNyb3NlY29u
ZChtaWNyb3NlY29uZCkKKyAgICAgICAgLCBtX25hbm9zZWNvbmQobmFub3NlY29uZCkKKyAgICB7
IH0KKworI2RlZmluZSBKU0NfREVGSU5FX0lTTzg2MDFfUExBSU5fVElNRV9GSUVMRChuYW1lLCBj
YXBpdGFsaXplZE5hbWUpIFwKKyAgICB1bnNpZ25lZCBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV8j
I25hbWU7IH0gXAorICAgIHZvaWQgc2V0IyNjYXBpdGFsaXplZE5hbWUodW5zaWduZWQgdmFsdWUp
IHsgbV8jI25hbWUgPSB2YWx1ZTsgfQorICAgIEpTQ19URU1QT1JBTF9QTEFJTl9USU1FX1VOSVRT
KEpTQ19ERUZJTkVfSVNPODYwMV9QTEFJTl9USU1FX0ZJRUxEKTsKKyN1bmRlZiBKU0NfREVGSU5F
X0lTTzg2MDFfRFVSQVRJT05fRklFTEQKKworcHJpdmF0ZToKKyAgICB1aW50OF90IG1faG91ciB7
IDAgfTsKKyAgICB1aW50OF90IG1fbWludXRlIHsgMCB9OworICAgIHVpbnQ4X3QgbV9zZWNvbmQg
eyAwIH07CisgICAgdWludDE2X3QgbV9taWxsaXNlY29uZCB7IDAgfTsKKyAgICB1aW50MTZfdCBt
X21pY3Jvc2Vjb25kIHsgMCB9OworICAgIHVpbnQxNl90IG1fbmFub3NlY29uZCB7IDAgfTsKK307
CisKK3VzaW5nIFRpbWVab25lID0gVmFyaWFudDxUaW1lWm9uZUlELCBpbnQ2NF90PjsKKworLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzdXAtaXN2YWxpZHRpbWV6b25lbmFt
ZQorc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZEZvclRpbWVab25lTmFtZShTdHJpbmdWaWV3
KTsKIHN0ZDo6b3B0aW9uYWw8RHVyYXRpb24+IHBhcnNlRHVyYXRpb24oU3RyaW5nVmlldyk7CiBz
dGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmlu
Z1ZpZXcpOworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25h
bDxUaW1lWm9uZT4+PiBwYXJzZVRpbWUoU3RyaW5nVmlldyk7CiBTdHJpbmcgZm9ybWF0VGltZVpv
bmVPZmZzZXRTdHJpbmcoaW50NjRfdCk7CitTdHJpbmcgdGVtcG9yYWxUaW1lVG9TdHJpbmcoUGxh
aW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbik7CiAKIH0g
Ly8gbmFtZXNwYWNlIElTTzg2MDEKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCA4ZDhlOTZlNzc1NWQ1OGFiODQy
ZTM2MGNmYWZiMTlkMDBmZTI2MjcwLi43OTc1OWJjNWZhNDRmZTI5NzcyNjA1ZjU2YTVjYTliMDg5
NTYzMWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNw
cApAQCAtMTgzOSw2ICsxODM5LDIzIEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRsQXZhaWxh
YmxlVGltZVpvbmVzKCkKICAgICByZXR1cm4gYXZhaWxhYmxlVGltZVpvbmVzOwogfQogCitUaW1l
Wm9uZUlEIHV0Y1RpbWVab25lSURTdG9yYWdlIHsgc3RkOjpudW1lcmljX2xpbWl0czxUaW1lWm9u
ZUlEPjo6bWF4KCkgfTsKK1RpbWVab25lSUQgdXRjVGltZVpvbmVJRFNsb3coKQoreworICAgIHN0
YXRpYyBzdGQ6Om9uY2VfZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShp
bml0aWFsaXplT25jZSwgWyZdIHsKKyAgICAgICAgY29uc3QgYXV0byYgdGltZVpvbmVzID0gaW50
bEF2YWlsYWJsZVRpbWVab25lcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCB0aW1lWm9uZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAodGlt
ZVpvbmVzW2luZGV4XSA9PSAiVVRDIl9zKSB7CisgICAgICAgICAgICAgICAgdXRjVGltZVpvbmVJ
RFN0b3JhZ2UgPSBpbmRleDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisgICAgICAgIH0KKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9
KTsKKyAgICByZXR1cm4gdXRjVGltZVpvbmVJRFN0b3JhZ2U7Cit9CisKIC8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC1pbnRsLWVudW1lcmF0aW9uLyNzZWMtYXZhaWxhYmxldGltZXpvbmVzCiBz
dGF0aWMgSlNBcnJheSogYXZhaWxhYmxlVGltZVpvbmVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRs
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKaW5k
ZXggOTZkMjE4NTVjOWNhNmYzZTMxOTZiNzRlYTAyZDBlZDUzZDM5YzEzMC4uYjNlMTVkMzBiYTkz
YjViMjA1YjU3M2UwODllYmJiZjM5Y2UyMTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxPYmplY3QuaApAQCAtMTE3LDYgKzExNywxNiBAQCBpbmxpbmUgQ2FsZW5kYXJJ
RCBpc284NjAxQ2FsZW5kYXJJRCgpCiB1c2luZyBUaW1lWm9uZUlEID0gdW5zaWduZWQ7CiBjb25z
dCBWZWN0b3I8U3RyaW5nPiYgaW50bEF2YWlsYWJsZVRpbWVab25lcygpOwogCitleHRlcm4gVGlt
ZVpvbmVJRCB1dGNUaW1lWm9uZUlEU3RvcmFnZTsKK1RpbWVab25lSUQgdXRjVGltZVpvbmVJRFNs
b3coKTsKK2lubGluZSBDYWxlbmRhcklEIHV0Y1RpbWVab25lSUQoKQoreworICAgIHVuc2lnbmVk
IHZhbHVlID0gdXRjVGltZVpvbmVJRFN0b3JhZ2U7CisgICAgaWYgKHZhbHVlID09IHN0ZDo6bnVt
ZXJpY19saW1pdHM8VGltZVpvbmVJRD46Om1heCgpKQorICAgICAgICByZXR1cm4gdXRjVGltZVpv
bmVJRFNsb3coKTsKKyAgICByZXR1cm4gdmFsdWU7Cit9CisKIFRyaVN0YXRlIGludGxCb29sZWFu
T3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSk7
CiBTdHJpbmcgaW50bFN0cmluZ09wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRp
b25zLCBQcm9wZXJ0eU5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gdmFs
dWVzLCBjb25zdCBjaGFyKiBub3RGb3VuZCwgY29uc3QgY2hhciogZmFsbGJhY2spOwogdW5zaWdu
ZWQgaW50bE51bWJlck9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zLCBQ
cm9wZXJ0eU5hbWUsIHVuc2lnbmVkIG1pbmltdW0sIHVuc2lnbmVkIG1heGltdW0sIHVuc2lnbmVk
IGZhbGxiYWNrKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcAppbmRleCBiMmZkZjQ2NDM2ZTg3NzYwNDkwNjQ4YWZkMDE0MWM4MjIzNjE0OTUx
Li42ZGE0NTg4MzQxYTAxNmU5MWFiOTEzNjkwMzZmMGM5NmRhNDE0ZmI1IDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yMDYsNiAr
MjA2LDggQEAKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxEdXJhdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCisjaW5j
bHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZW1w
b3JhbFRpbWVab25lUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVk1UcmFwc0lubGluZXMuaCIKQEAg
LTEyMzIsNiArMTIzNCwxMyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1l
ICMjIENvbnN0cnVjdG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAg
ICAgIGluaXQuc2V0KFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIGR1cmF0aW9uUHJvdG90eXBlKSk7CiAgICAgICAgICAgICB9KTsKIAorICAg
ICAgICBtX3BsYWluVGltZVN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgICAgICBbXSAoY29u
c3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgICAgIEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93
bmVyKTsKKyAgICAgICAgICAgICAgICBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogcGxhaW5U
aW1lUHJvdG90eXBlID0gVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZt
LCBnbG9iYWxPYmplY3QsIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgp
KSk7CisgICAgICAgICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZVN0
cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIHBsYWluVGltZVByb3RvdHlwZSkpOworICAg
ICAgICAgICAgfSk7CisKICAgICAgICAgbV90aW1lWm9uZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAg
ICAgICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewogICAg
ICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9i
YWxPYmplY3QqPihpbml0Lm93bmVyKTsKQEAgLTIxMTksNiArMjEyOCw3IEBAIHZvaWQgSlNHbG9i
YWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRv
cikKIAogICAgIHRoaXNPYmplY3QtPm1fY2FsZW5kYXJTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7
CiAgICAgdGhpc09iamVjdC0+bV9kdXJhdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAg
ICB0aGlzT2JqZWN0LT5tX3BsYWluVGltZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0
aGlzT2JqZWN0LT5tX3RpbWVab25lU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCiAgICAgdmlz
aXRvci5hcHBlbmQodGhpc09iamVjdC0+bV9udWxsR2V0dGVyRnVuY3Rpb24pOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZGViMzNkYmQx
MDMwODNhMThmNDBiYTdhZGM1Njk1MjYwMTQ5N2QyOS4uMTI4YjM5OTEwZGQ4MDU3ZjdhYWJiNTk3
NzdjYTY4MGU5ZGY2MTg5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCkBAIC0zMjYsNiArMzI2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3Qg
OiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBMYXp5UHJvcGVydHk8
SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9jYWxlbmRhclN0cnVjdHVyZTsKICAgICBMYXp5
UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kdXJhdGlvblN0cnVjdHVyZTsK
KyAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wbGFpblRpbWVT
dHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1f
dGltZVpvbmVTdHJ1Y3R1cmU7CiAKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9u
PiBtX251bGxHZXR0ZXJGdW5jdGlvbjsKQEAgLTg3Niw2ICs4NzcsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKIAogICAgIFN0cnVj
dHVyZSogY2FsZW5kYXJTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NhbGVuZGFyU3RydWN0dXJlLmdl
dCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogZHVyYXRpb25TdHJ1Y3R1cmUoKSB7IHJldHVybiBt
X2R1cmF0aW9uU3RydWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogcGxhaW5UaW1l
U3RydWN0dXJlKCkgeyByZXR1cm4gbV9wbGFpblRpbWVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiB0aW1lWm9uZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fdGltZVpvbmVTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFJlbW90
ZURlYnVnZ2luZ0VuYWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAppbmRleCBh
MGZhYTNmZmNkMDQ0NDc3MmM0MWE0Y2I3MzU2YTJkNjg2NzBhNjljLi42NTMwZGQwMWViNjdjNTNj
ZDhlOWUzMDg4OTkxMDU2NmU4Y2I1N2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKQEAg
LTczLDYgKzczLDcgQEAgdm9pZCBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmZpbmlzaENy
ZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxDYWxlbmRhclByb3RvdHkKIHsKICAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgMCwgIkNhbGVuZGFyIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0
aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5
cGUsIFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250
RGVsZXRlIHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICB0ZW1wb3JhbENhbGVu
ZGFyUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0
cnVjdFRlbXBvcmFsQ2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxs
RnJhbWUqIGNhbGxGcmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsRHVyYXRpb24uY3BwCmluZGV4IDBkYTI0YTUyNTU3ZWJjZGU1OGYzNWRlMThkNzZj
MmU3MmI2MjZmOGQuLjhkOGZhNGY4MzA5NjlmOTBhNzdiODBmOGQwNTQ1ZmQxYmE1MmViODMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
Y3BwCkBAIC01MzAsNyArNTMwLDEwIEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAKICAgICBQ
cmVjaXNpb25EYXRhIGRhdGEgPSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKGdsb2JhbE9iamVjdCwg
b3B0aW9ucyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBBU1NF
UlQoZGF0YS51bml0ID49IFRlbXBvcmFsVW5pdDo6U2Vjb25kKTsKKyAgICBpZiAoZGF0YS51bml0
IDwgVGVtcG9yYWxVbml0OjpTZWNvbmQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgbXVzdCBub3QgYmUgXCJtaW51dGVcIiJfcyk7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQogCiAgICAgYXV0byByb3VuZGluZ01vZGUgPSBp
bnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0
eU5hbWVzLT5yb3VuZGluZ01vZGUsCiAgICAgICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdNb2Rl
OjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5jIl9z
LCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6
SGFsZkV4cGFuZCB9IH0sCkBAIC01MzgsNyArNTQxLDcgQEAgU3RyaW5nIFRlbXBvcmFsRHVyYXRp
b246OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9u
c1YKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgLy8gTm8gbmVl
ZCB0byBtYWtlIGEgbmV3IG9iamVjdCBpZiB3ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRz
LgotICAgIGlmICghZGF0YS5wcmVjaXNpb24gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9k
ZTo6VHJ1bmMpCisgICAgaWYgKHN0ZDo6Z2V0PDA+KGRhdGEucHJlY2lzaW9uKSA9PSBQcmVjaXNp
b246OkF1dG8gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9kZTo6VHJ1bmMpCiAgICAgICAg
IHJldHVybiB0b1N0cmluZygpOwogCiAgICAgU3ViZHVyYXRpb25zIG5ld1N1YmR1cmF0aW9ucyA9
IG1fc3ViZHVyYXRpb25zOwpAQCAtNTQ4LDkgKzU1MSwxMCBAQCBTdHJpbmcgVGVtcG9yYWxEdXJh
dGlvbjo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRp
b25zVgogCiAvLyBUZW1wb3JhbER1cmF0aW9uVG9TdHJpbmcgKCB5ZWFycywgbW9udGhzLCB3ZWVr
cywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNv
bmRzLCBuYW5vc2Vjb25kcywgcHJlY2lzaW9uICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRlbXBvcmFsZHVyYXRpb250b3N0cmluZwotU3RyaW5n
IFRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKGNvbnN0IFRlbXBvcmFsRHVyYXRpb246OlN1YmR1
cmF0aW9ucyYgc3ViZHVyYXRpb25zLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjaXNpb24p
CitTdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoY29uc3QgVGVtcG9yYWxEdXJhdGlv
bjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNp
Z25lZD4gcHJlY2lzaW9uKQogewotICAgIEFTU0VSVCghcHJlY2lzaW9uIHx8IHByZWNpc2lvbi52
YWx1ZSgpIDwgMTApOworICAgIGF1dG8gW3ByZWNpc2lvblR5cGUsIHByZWNpc2lvblZhbHVlXSA9
IHByZWNpc2lvbjsKKyAgICBBU1NFUlQocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8g
fHwgcHJlY2lzaW9uVmFsdWUgPCAxMCk7CiAKICAgICBhdXRvIGJhbGFuY2VkTWljcm9zZWNvbmRz
ID0gc3ViZHVyYXRpb25zLm1pY3Jvc2Vjb25kcygpICsgc3RkOjp0cnVuYyhzdWJkdXJhdGlvbnMu
bmFub3NlY29uZHMoKSAvIDEwMDApOwogICAgIGF1dG8gYmFsYW5jZWROYW5vc2Vjb25kcyA9IHN0
ZDo6Zm1vZChzdWJkdXJhdGlvbnMubmFub3NlY29uZHMoKSwgMTAwMCk7CkBAIC01OTcsMTAgKzYw
MSwxMCBAQCBTdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoY29uc3QgVGVtcG9yYWxE
dXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdAogICAgICAgICBidWlsZGVyLmFwcGVuZChm
b3JtYXRJbnRlZ2VyKGJhbGFuY2VkU2Vjb25kcykpOwogCiAgICAgICAgIGF1dG8gZnJhY3Rpb24g
PSBzdGQ6OmFicyhiYWxhbmNlZE1pbGxpc2Vjb25kcykgKiAxZTYgKyBzdGQ6OmFicyhiYWxhbmNl
ZE1pY3Jvc2Vjb25kcykgKiAxZTMgKyBzdGQ6OmFicyhiYWxhbmNlZE5hbm9zZWNvbmRzKTsKLSAg
ICAgICAgaWYgKCghcHJlY2lzaW9uICYmIGZyYWN0aW9uKSB8fCAocHJlY2lzaW9uICYmIHByZWNp
c2lvbi52YWx1ZSgpKSkgeworICAgICAgICBpZiAoKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9u
OjpBdXRvICYmIGZyYWN0aW9uKSB8fCAocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkZpeGVk
ICYmIHByZWNpc2lvblZhbHVlKSkgewogICAgICAgICAgICAgYXV0byBwYWRkZWQgPSBtYWtlU3Ry
aW5nKCcuJywgcGFkKCcwJywgOSwgZnJhY3Rpb24pKTsKLSAgICAgICAgICAgIGlmIChwcmVjaXNp
b24pCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhwYWRkZWQpLmxl
ZnQocGFkZGVkLmxlbmd0aCgpIC0gKDkgLSBwcmVjaXNpb24udmFsdWUoKSkpKTsKKyAgICAgICAg
ICAgIGlmIChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6Rml4ZWQpCisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhwYWRkZWQpLmxlZnQocGFkZGVkLmxlbmd0aCgp
IC0gKDkgLSBwcmVjaXNpb25WYWx1ZSkpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIGF1dG8gbGVuZ3RoV2l0aG91dFRyYWlsaW5nWmVyb2VzID0gcGFkZGVkLmxlbmd0aCgp
OwogICAgICAgICAgICAgICAgIHdoaWxlIChwYWRkZWRbbGVuZ3RoV2l0aG91dFRyYWlsaW5nWmVy
b2VzIC0gMV0gPT0gJzAnKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbi5oCmluZGV4IDU5MjA0ZGM5NTM3YWFmNzYwMWUwZThkMTU3MDU2YmRhMTlh
ZjczNTUuLjQzODZlMmI3OWFlMzA4N2I5NTg0OGQ0MjhmMzYxYTk3ZGI5Nzg4ZDYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKQEAgLTY2
LDcgKzY2LDcgQEAgY2xhc3MgVGVtcG9yYWxEdXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKICAgICBTdWJkdXJhdGlvbnMgcm91bmQoSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlIG9wdGlvbnMpIGNvbnN0OwogICAgIGRvdWJsZSB0b3RhbChKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgb3B0aW9ucykgY29uc3Q7CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKLSAgICBTdHJpbmcgdG9TdHJpbmcoc3RkOjpvcHRp
b25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uID0gc3RkOjpudWxsb3B0KSBjb25zdCB7IHJldHVybiB0
b1N0cmluZyhtX3N1YmR1cmF0aW9ucywgcHJlY2lzaW9uKTsgfQorICAgIFN0cmluZyB0b1N0cmlu
ZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbiA9IHsgUHJlY2lzaW9u
OjpBdXRvLCAwIH0pIGNvbnN0IHsgcmV0dXJuIHRvU3RyaW5nKG1fc3ViZHVyYXRpb25zLCBwcmVj
aXNpb24pOyB9CiAKIHByaXZhdGU6CiAgICAgVGVtcG9yYWxEdXJhdGlvbihWTSYsIFN0cnVjdHVy
ZSosIFN1YmR1cmF0aW9ucyYmKTsKQEAgLTc5LDcgKzc5LDcgQEAgY2xhc3MgVGVtcG9yYWxEdXJh
dGlvbiBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBzdGF0aWMgaW50IHNp
Z24oY29uc3QgU3ViZHVyYXRpb25zJik7CiAgICAgc3RhdGljIHZvaWQgYmFsYW5jZShTdWJkdXJh
dGlvbnMmLCBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQpOwogICAgIHN0YXRpYyBkb3VibGUgcm91
bmQoU3ViZHVyYXRpb25zJiwgZG91YmxlIGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGlu
Z01vZGUpOwotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU3ViZHVyYXRpb25zJiwg
c3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uKTsKKyAgICBzdGF0aWMgU3RyaW5nIHRv
U3RyaW5nKGNvbnN0IFN1YmR1cmF0aW9ucyYsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25l
ZD4gcHJlY2lzaW9uKTsKIAogICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0U3ViZHVyYXRpb24oKSBj
b25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxOb3cuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuY3Bw
CmluZGV4IGIwYTdlZWU0YzRhMDEzNjBiYTNjZmE1YWQ1ZTVhNDdiOTRiNjczM2EuLjdjMGZlYzUz
OTEzZThjNWQ2OWQ1ZDYzZWJhYTdmZmQ5MWRmYzhiMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKQEAgLTc3LDcgKzc3LDcgQEAgSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsTm93RnVuY1RpbWVab25lLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAKICAgICBT
dHJpbmcgdGltZVpvbmVTdHJpbmcgPSB2bS5kYXRlQ2FjaGUuZGVmYXVsdFRpbWVab25lKCk7Ci0g
ICAgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZGVudGlmaWVyID0gVGVtcG9yYWxUaW1lWm9u
ZTo6aWRGb3JUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcpOworICAgIHN0ZDo6b3B0aW9uYWw8
VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IElTTzg2MDE6OmlkRm9yVGltZVpvbmVOYW1lKHRpbWVa
b25lU3RyaW5nKTsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbVVUQ09mZnNldCh2bSwgZ2xvYmFs
T2JqZWN0LT50aW1lWm9uZVN0cnVjdHVyZSgpLCAwKSk7CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShUZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tSUQodm0sIGdsb2JhbE9iamVjdC0+dGlt
ZVpvbmVTdHJ1Y3R1cmUoKSwgaWRlbnRpZmllci52YWx1ZSgpKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKaW5kZXggYjI0ZTNhOWU5ZGEy
MjAyNmMyYTNiZmRiMjhiYWY3Y2VlM2QzZWY5Ny4uOGUzN2Q3Y2ZmMzVmOTg5ZTNlZWZhYjQwOTM1
NTgwYWUwYjRkZGVkZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsT2JqZWN0LmNwcApAQCAtMzMsNiArMzMsOCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsRHVy
YXRpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUu
aCIKICNpbmNsdWRlICJUZW1wb3JhbE5vdy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBv
cmFsVGltZVpvbmVQcm90b3R5cGUuaCIKIApAQCAtNjEsNiArNjMsMTMgQEAgc3RhdGljIEpTVmFs
dWUgY3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiAg
ICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3Jh
bER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBn
bG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxEdXJhdGlv
blByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKS0+c3RvcmVkUHJv
dG90eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIEpTVmFsdWUgY3JlYXRlUGxhaW5UaW1lQ29u
c3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQoreworICAgIFRlbXBvcmFsT2JqZWN0
KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CisgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRlbXBvcmFsT2JqZWN0LT5nbG9iYWxPYmpl
Y3Qodm0pOworICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVhdGUo
dm0sIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSh2bSwgZ2xv
YmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBqc0Nhc3Q8VGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVy
ZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworfQorCiBzdGF0aWMgSlNWYWx1ZSBjcmVh
dGVUaW1lWm9uZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKIHsKICAgICBU
ZW1wb3JhbE9iamVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihv
YmplY3QpOwpAQCAtNzksNiArODgsNyBAQCBuYW1lc3BhY2UgSlNDIHsKICAgQ2FsZW5kYXIgICAg
ICAgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxi
YWNrCiAgIER1cmF0aW9uICAgICAgIGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0b3IgICAgICAgRG9u
dEVudW18UHJvcGVydHlDYWxsYmFjawogICBOb3cgICAgICAgICAgICBjcmVhdGVOb3dPYmplY3Qg
ICAgICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKKyAgUGxhaW5UaW1lICAg
ICAgY3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0b3IgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxi
YWNrCiAgIFRpbWVab25lICAgICAgIGNyZWF0ZVRpbWVab25lQ29uc3RydWN0b3IgICAgICAgRG9u
dEVudW18UHJvcGVydHlDYWxsYmFjawogQGVuZAogKi8KQEAgLTI0MiwxOSArMjUyLDIxIEBAIFBy
ZWNpc2lvbkRhdGEgc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU09iamVjdCogb3B0CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGF1dG8gc21h
bGxlc3RVbml0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7
IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpX
ZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSwgVGVtcG9yYWxVbml0OjpIb3VyLCBUZW1wb3JhbFVuaXQ6
Ok1pbnV0ZSB9KTsKKyAgICBhdXRvIHNtYWxsZXN0VW5pdCA9IHRlbXBvcmFsU21hbGxlc3RVbml0
KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVuaXQ6OlllYXIsIFRlbXBvcmFsVW5p
dDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9yYWxVbml0OjpEYXksIFRlbXBvcmFs
VW5pdDo6SG91ciB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgaWYgKHNtYWxsZXN0VW5pdCkgewogICAgICAgICBzd2l0Y2ggKHNtYWxsZXN0VW5pdC52YWx1
ZSgpKSB7CisgICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6CisgICAgICAgICAgICBy
ZXR1cm4geyB7IFByZWNpc2lvbjo6TWludXRlLCAwIH0sIFRlbXBvcmFsVW5pdDo6TWludXRlLCAx
IH07CiAgICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6Ci0gICAgICAgICAgICByZXR1
cm4geyAwLCBUZW1wb3JhbFVuaXQ6OlNlY29uZCwgMSB9OworICAgICAgICAgICAgcmV0dXJuIHsg
eyBQcmVjaXNpb246OkZpeGVkLCAwIH0sIFRlbXBvcmFsVW5pdDo6U2Vjb25kLCAxIH07CiAgICAg
ICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDoKLSAgICAgICAgICAgIHJldHVybiB7
IDMsIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQsIDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7
IHsgUHJlY2lzaW9uOjpGaXhlZCwgMyB9LCBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLCAxIH07
CiAgICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZDoKLSAgICAgICAgICAgIHJl
dHVybiB7IDYsIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQsIDEgfTsKKyAgICAgICAgICAgIHJl
dHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgNiB9LCBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25k
LCAxIH07CiAgICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kOgotICAgICAgICAg
ICAgcmV0dXJuIHsgOSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAxIH07CisgICAgICAgICAg
ICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIDkgfSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vj
b25kLCAxIH07CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVF9O
T1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIHsgfTsKQEAgLTI2NSwyMCArMjc3LDI3
IEBAIFByZWNpc2lvbkRhdGEgc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKIAogICAgIGlmICghcHJlY2lzaW9uKQotICAgICAgICByZXR1cm4geyBzdGQ6Om51
bGxvcHQsIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9OworICAgICAgICByZXR1cm4geyB7
IFByZWNpc2lvbjo6QXV0bywgMCB9LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfTsKKwor
ICAgIGF1dG8gcG93MTBVbnNpZ25lZCA9IFtdKHVuc2lnbmVkIG4pIC0+IHVuc2lnbmVkIHsKKyAg
ICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpID0gMDsg
aSA8IG47ICsraSkKKyAgICAgICAgICAgIHJlc3VsdCAqPSAxMDsKKyAgICAgICAgcmV0dXJuIHJl
c3VsdDsKKyAgICB9OwogCiAgICAgdW5zaWduZWQgZGlnaXRzID0gcHJlY2lzaW9uLnZhbHVlKCk7
CiAgICAgaWYgKCFkaWdpdHMpCi0gICAgICAgIHJldHVybiB7IDAsIFRlbXBvcmFsVW5pdDo6U2Vj
b25kLCAxIH07CisgICAgICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgMCB9LCBUZW1w
b3JhbFVuaXQ6OlNlY29uZCwgMSB9OwogCiAgICAgaWYgKGRpZ2l0cyA8PSAzKQotICAgICAgICBy
ZXR1cm4geyBkaWdpdHMsIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQsIHN0ZDo6cG93KDEwLCAz
IC0gZGlnaXRzKSB9OworICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIGRpZ2l0
cyB9LCBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLCBwb3cxMFVuc2lnbmVkKDMgLSBkaWdpdHMp
IH07CiAKICAgICBpZiAoZGlnaXRzIDw9IDYpCi0gICAgICAgIHJldHVybiB7IGRpZ2l0cywgVGVt
cG9yYWxVbml0OjpNaWNyb3NlY29uZCwgc3RkOjpwb3coMTAsIDYgLSBkaWdpdHMpIH07CisgICAg
ICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgZGlnaXRzIH0sIFRlbXBvcmFsVW5pdDo6
TWljcm9zZWNvbmQsIHBvdzEwVW5zaWduZWQoNiAtIGRpZ2l0cykgfTsKIAogICAgIEFTU0VSVChk
aWdpdHMgPD0gOSk7Ci0gICAgcmV0dXJuIHsgZGlnaXRzLCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNv
bmQsIHN0ZDo6cG93KDEwLCA5IC0gZGlnaXRzKSB9OworICAgIHJldHVybiB7IHsgUHJlY2lzaW9u
OjpGaXhlZCwgZGlnaXRzIH0sIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgcG93MTBVbnNpZ25l
ZCg5IC0gZGlnaXRzKSB9OwogfQogCiAvLyBNYXhpbXVtVGVtcG9yYWxEdXJhdGlvblJvdW5kaW5n
SW5jcmVtZW50ICggdW5pdCApCkBAIC0zNDIsNCArMzYxLDExIEBAIGRvdWJsZSByb3VuZE51bWJl
clRvSW5jcmVtZW50KGRvdWJsZSB4LCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGluZ01vZGUgbW9k
ZSkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCitUZW1wb3JhbE92ZXJm
bG93IHRvVGVtcG9yYWxPdmVyZmxvdyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09i
amVjdCogb3B0aW9ucykKK3sKKyAgICByZXR1cm4gaW50bE9wdGlvbjxUZW1wb3JhbE92ZXJmbG93
PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIGdsb2JhbE9iamVjdC0+dm0oKS5wcm9wZXJ0eU5hbWVz
LT5vdmVyZmxvdywKKyAgICAgICAgeyB7ICJjb25zdHJhaW4iX3MsIFRlbXBvcmFsT3ZlcmZsb3c6
OkNvbnN0cmFpbiB9LCB7ICJyZWplY3QiX3MsIFRlbXBvcmFsT3ZlcmZsb3c6OlJlamVjdCB9IH0s
CisgICAgICAgICJvdmVyZmxvdyBtdXN0IGJlIGVpdGhlciBcImNvbnN0cmFpblwiIG9yIFwicmVq
ZWN0XCIiX3MsIFRlbXBvcmFsT3ZlcmZsb3c6OkNvbnN0cmFpbik7Cit9CisKIH0gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0
LmgKaW5kZXggNzI0M2M5YmE1ODQzMjYyZDJkMGNiYjgxOTMzZjRjZGQxMzA4ZmI0OC4uODlhMTU2
ZThjMTViODEyNWMyMDQ0MTBiZWUwNGRiN2FlZDJiYTM4MSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCkBAIC0yMSwxNCArMjEsMTEgQEAKICNw
cmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKKyNpbmNsdWRlIDx3dGYvVmFyaWFu
dC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2RlZmluZSBKU0NfVEVNUE9SQUxfVU5JVFMobWFj
cm8pIFwKLSAgICBtYWNybyh5ZWFyLCBZZWFyKSBcCi0gICAgbWFjcm8obW9udGgsIE1vbnRoKSBc
Ci0gICAgbWFjcm8od2VlaywgV2VlaykgXAotICAgIG1hY3JvKGRheSwgRGF5KSBcCisjZGVmaW5l
IEpTQ19URU1QT1JBTF9QTEFJTl9USU1FX1VOSVRTKG1hY3JvKSBcCiAgICAgbWFjcm8oaG91ciwg
SG91cikgXAogICAgIG1hY3JvKG1pbnV0ZSwgTWludXRlKSBcCiAgICAgbWFjcm8oc2Vjb25kLCBT
ZWNvbmQpIFwKQEAgLTM2LDYgKzMzLDE1IEBAIG5hbWVzcGFjZSBKU0MgewogICAgIG1hY3JvKG1p
Y3Jvc2Vjb25kLCBNaWNyb3NlY29uZCkgXAogICAgIG1hY3JvKG5hbm9zZWNvbmQsIE5hbm9zZWNv
bmQpIFwKIAorCisjZGVmaW5lIEpTQ19URU1QT1JBTF9VTklUUyhtYWNybykgXAorICAgIG1hY3Jv
KHllYXIsIFllYXIpIFwKKyAgICBtYWNybyhtb250aCwgTW9udGgpIFwKKyAgICBtYWNybyh3ZWVr
LCBXZWVrKSBcCisgICAgbWFjcm8oZGF5LCBEYXkpIFwKKyAgICBKU0NfVEVNUE9SQUxfUExBSU5f
VElNRV9VTklUUyhtYWNybykgXAorCisKIGVudW0gY2xhc3MgVGVtcG9yYWxVbml0IDogdWludDhf
dCB7CiAjZGVmaW5lIEpTQ19ERUZJTkVfVEVNUE9SQUxfVU5JVF9FTlVNKG5hbWUsIGNhcGl0YWxp
emVkTmFtZSkgY2FwaXRhbGl6ZWROYW1lLAogICAgIEpTQ19URU1QT1JBTF9VTklUUyhKU0NfREVG
SU5FX1RFTVBPUkFMX1VOSVRfRU5VTSkKQEAgLTQzLDYgKzQ5LDcgQEAgZW51bSBjbGFzcyBUZW1w
b3JhbFVuaXQgOiB1aW50OF90IHsKIH07CiAjZGVmaW5lIEpTQ19DT1VOVF9URU1QT1JBTF9VTklU
UyhuYW1lLCBjYXBpdGFsaXplZE5hbWUpICsgMQogc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBu
dW1iZXJPZlRlbXBvcmFsVW5pdHMgPSAwIEpTQ19URU1QT1JBTF9VTklUUyhKU0NfQ09VTlRfVEVN
UE9SQUxfVU5JVFMpOworc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlRlbXBvcmFs
UGxhaW5UaW1lVW5pdHMgPSAwIEpTQ19URU1QT1JBTF9QTEFJTl9USU1FX1VOSVRTKEpTQ19DT1VO
VF9URU1QT1JBTF9VTklUUyk7CiAjdW5kZWYgSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRTCiAKIGNs
YXNzIFRlbXBvcmFsT2JqZWN0IGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewpAQCAt
NzQsMTAgKzgxLDE2IEBAIGVudW0gY2xhc3MgUm91bmRpbmdNb2RlIDogdWludDhfdCB7CiAgICAg
SGFsZkV4cGFuZAogfTsKIAorZW51bSBjbGFzcyBQcmVjaXNpb24geworICAgIE1pbnV0ZSwKKyAg
ICBGaXhlZCwKKyAgICBBdXRvLAorfTsKKwogc3RydWN0IFByZWNpc2lvbkRhdGEgewotICAgIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHByZWNpc2lvbjsKKyAgICBzdGQ6OnR1cGxlPFByZWNpc2lv
biwgdW5zaWduZWQ+IHByZWNpc2lvbjsKICAgICBUZW1wb3JhbFVuaXQgdW5pdDsKLSAgICBkb3Vi
bGUgaW5jcmVtZW50OworICAgIHVuc2lnbmVkIGluY3JlbWVudDsKIH07CiAKIHN0ZDo6b3B0aW9u
YWw8VGVtcG9yYWxVbml0PiB0ZW1wb3JhbFVuaXRUeXBlKFN0cmluZ1ZpZXcpOwpAQCAtODksNCAr
MTAyLDExIEBAIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQo
VGVtcG9yYWxVbml0KTsKIGRvdWJsZSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KEpTR2xvYmFs
T2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkaXZpZGVu
ZCwgYm9vbCBpbmNsdXNpdmUpOwogZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZG91Ymxl
LCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGluZ01vZGUpOwogCitlbnVtIGNsYXNzIFRlbXBvcmFs
T3ZlcmZsb3cgOiB1aW50OF90IHsKKyAgICBDb25zdHJhaW4sCisgICAgUmVqZWN0LAorfTsKKwor
VGVtcG9yYWxPdmVyZmxvdyB0b1RlbXBvcmFsT3ZlcmZsb3coSlNHbG9iYWxPYmplY3QqLCBKU09i
amVjdCopOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44YjVmYmM2NjI4
YzYxOWFmMmEyZGM5YjZlMGVlZWRhNjlkN2NmNTViCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwCkBAIC0wLDAgKzEs
MzU4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCisKKyNp
bmNsdWRlICJBYnN0cmFjdFNsb3RWaXNpdG9yLmgiCisjaW5jbHVkZSAiSW50bE9iamVjdElubGlu
ZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiTGF6eVByb3BlcnR5SW5s
aW5lcy5oIgorI2luY2x1ZGUgIlZNVHJhcHNJbmxpbmVzLmgiCisKK25hbWVzcGFjZSBKU0Mgewor
Citjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxQbGFpblRpbWU6OnNfaW5mbyA9IHsgIk9iamVjdCIs
ICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVt
cG9yYWxQbGFpblRpbWUpIH07CisKK1RlbXBvcmFsUGxhaW5UaW1lKiBUZW1wb3JhbFBsYWluVGlt
ZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OlBsYWluVGlt
ZSYmIHBsYWluVGltZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9j
YXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZT4odm0uaGVhcCkpIFRlbXBvcmFsUGxhaW5UaW1lKHZt
LCBzdHJ1Y3R1cmUsIFdURk1vdmUocGxhaW5UaW1lKSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVh
dGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBUZW1wb3JhbFBs
YWluVGltZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0
dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitUZW1wb3JhbFBsYWluVGltZTo6VGVtcG9yYWxQbGFp
blRpbWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6UGxhaW5UaW1lJiYg
cGxhaW5UaW1lKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgICwgbV9wbGFpblRpbWUo
V1RGTW92ZShwbGFpblRpbWUpKQoreworfQorCit2b2lkIFRlbXBvcmFsUGxhaW5UaW1lOjpmaW5p
c2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAg
IEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgbV9jYWxlbmRhci5pbml0TGF0ZXIo
CisgICAgICAgIFtdIChjb25zdCBhdXRvJiBpbml0KSB7CisgICAgICAgICAgICBWTSYgdm0gPSBp
bml0LnZtOworICAgICAgICAgICAgYXV0byogcGxhaW5UaW1lID0ganNDYXN0PFRlbXBvcmFsUGxh
aW5UaW1lKj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBw
bGFpblRpbWUtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgICAgICAgICBhdXRvKiBjYWxlbmRhciA9
IFRlbXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5jYWxlbmRhclN0cnVj
dHVyZSgpLCBpc284NjAxQ2FsZW5kYXJJRCgpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KGNhbGVu
ZGFyKTsKKyAgICAgICAgfSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Cit2b2lk
IFRlbXBvcmFsUGxhaW5UaW1lOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0
b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsK
KworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPihjZWxs
KTsKKyAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyLnZpc2l0KHZpc2l0b3IpOworfQorCitERUZJ
TkVfVklTSVRfQ0hJTERSRU4oVGVtcG9yYWxQbGFpblRpbWUpOworCisvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkdGltZQorc3RhdGljIElT
Tzg2MDE6OlBsYWluVGltZSB0b1BsYWluVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBJU084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBkb3VibGUgaG91ciA9IGR1cmF0aW9uLmhvdXJzKCk7CisgICAgZG91YmxlIG1pbnV0ZSA9
IGR1cmF0aW9uLm1pbnV0ZXMoKTsKKyAgICBkb3VibGUgc2Vjb25kID0gZHVyYXRpb24uc2Vjb25k
cygpOworICAgIGRvdWJsZSBtaWxsaXNlY29uZCA9IGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpOwor
ICAgIGRvdWJsZSBtaWNyb3NlY29uZCA9IGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpOworICAgIGRv
dWJsZSBuYW5vc2Vjb25kID0gZHVyYXRpb24ubmFub3NlY29uZHMoKTsKKyAgICBpZiAoIShob3Vy
ID49IDAgJiYgaG91ciA8PSAyMykpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJob3VyIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgfQorICAgIGlmICghKG1pbnV0ZSA+PSAwICYmIG1pbnV0ZSA8PSA1OSkpIHsKKyAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJtaW51dGUgaXMgb3V0
IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgaWYgKCEoc2Vj
b25kID49IDAgJiYgc2Vjb25kIDw9IDU5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInNlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICBy
ZXR1cm4geyB9OworICAgIH0KKyAgICBpZiAoIShtaWxsaXNlY29uZCA+PSAwICYmIG1pbGxpc2Vj
b25kIDw9IDk5OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJtaWxsaXNlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9
OworICAgIH0KKyAgICBpZiAoIShtaWNyb3NlY29uZCA+PSAwICYmIG1pY3Jvc2Vjb25kIDw9IDk5
OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJtaWNy
b3NlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0K
KyAgICBpZiAoIShuYW5vc2Vjb25kID49IDAgJiYgbmFub3NlY29uZCA8PSA5OTkpKSB7CisgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibmFub3NlY29uZCBpcyBv
dXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICByZXR1cm4g
SVNPODYwMTo6UGxhaW5UaW1lIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGhvdXIp
LAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWludXRlKSwKKyAgICAgICAgc3RhdGlj
X2Nhc3Q8dW5zaWduZWQ+KHNlY29uZCksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPiht
aWxsaXNlY29uZCksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtaWNyb3NlY29uZCks
CisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihuYW5vc2Vjb25kKQorICAgIH07Cit9CisK
Ky8vIENyZWF0ZVRlbXBvcmFsUGxhaW5UaW1lICggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMs
IGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcywgbmFu
b3NlY29uZHMgWyAsIG5ld1RhcmdldCBdICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWNyZWF0ZXRlbXBvcmFscGxhaW5UaW1lCitUZW1wb3JhbFBs
YWluVGltZSogVGVtcG9yYWxQbGFpblRpbWU6OnRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OkR1cmF0aW9u
JiYgZHVyYXRpb24pCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gcGxhaW5UaW1l
ID0gdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGR1cmF0aW9uKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBUZW1wb3JhbFBsYWlu
VGltZTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUocGxhaW5UaW1lKSk7Cit9CisKK3N0
YXRpYyBzdGQ6OnR1cGxlPGRvdWJsZSwgSVNPODYwMTo6UGxhaW5UaW1lPiBiYWxhbmNlVGltZShk
b3VibGUgaG91ciwgZG91YmxlIG1pbnV0ZSwgZG91YmxlIHNlY29uZCwgZG91YmxlIG1pbGxpc2Vj
b25kLCBkb3VibGUgbWljcm9zZWNvbmQsIGRvdWJsZSBuYW5vc2Vjb25kKQoreworICAgIG1pY3Jv
c2Vjb25kID0gbWljcm9zZWNvbmQgKyBzdGQ6OnRydW5jKG5hbm9zZWNvbmQgLyAxMDAwKTsKKyAg
ICBuYW5vc2Vjb25kID0gc3RkOjpmbW9kKG5hbm9zZWNvbmQsIDEwMDApOworICAgIG1pbGxpc2Vj
b25kID0gbWlsbGlzZWNvbmQgKyBzdGQ6OnRydW5jKG1pY3Jvc2Vjb25kIC8gMTAwMCk7CisgICAg
bWljcm9zZWNvbmQgPSBzdGQ6OmZtb2QobWljcm9zZWNvbmQsIDEwMDApOworICAgIHNlY29uZCA9
IHNlY29uZCArIHN0ZDo6dHJ1bmMobWlsbGlzZWNvbmQgLyAxMDAwKTsKKyAgICBtaWxsaXNlY29u
ZCA9IHN0ZDo6Zm1vZChtaWxsaXNlY29uZCwgMTAwMCk7CisgICAgbWludXRlID0gbWludXRlICsg
c3RkOjp0cnVuYyhzZWNvbmQgLyA2MCk7CisgICAgc2Vjb25kID0gc3RkOjpmbW9kKHNlY29uZCwg
NjApOworICAgIGhvdXIgPSBob3VyICsgc3RkOjp0cnVuYyhtaW51dGUgLyA2MCk7CisgICAgbWlu
dXRlID0gc3RkOjpmbW9kKG1pbnV0ZSwgNjApOworICAgIGRvdWJsZSBkYXlzID0gc3RkOjp0cnVu
Yyhob3VyIC8gMjQpOworICAgIGhvdXIgPSBzdGQ6OmZtb2QobWludXRlLCAyNCk7CisgICAgcmV0
dXJuIHsgZGF5cywgSVNPODYwMTo6UGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxs
aXNlY29uZCwgbWljcm9zZWNvbmQsIG5hbm9zZWNvbmQpIH07Cit9CisKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXJvdW5kdGltZQorc3RhdGljIHN0
ZDo6dHVwbGU8ZG91YmxlLCBJU084NjAxOjpQbGFpblRpbWU+IHJvdW5kVGltZShJU084NjAxOjpQ
bGFpblRpbWUgcGxhaW5UaW1lLCBkb3VibGUgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQgdW5pdCwg
Um91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSwgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRheUxlbmd0
aE5zKQoreworICAgIGF1dG8gZnJhY3Rpb25hbFNlY29uZCA9IFtdKElTTzg2MDE6OlBsYWluVGlt
ZSBwbGFpblRpbWUpIC0+IGRvdWJsZSB7CisgICAgICAgIHJldHVybiBwbGFpblRpbWUuc2Vjb25k
KCkgKyBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSAqIDFlLTMgKyBwbGFpblRpbWUubWljcm9zZWNv
bmQoKSAqIDFlLTYgKyBwbGFpblRpbWUubmFub3NlY29uZCgpICogMWUtOTsKKyAgICB9OworCisg
ICAgZG91YmxlIHF1YW50aXR5ID0gMDsKKyAgICBzd2l0Y2ggKHVuaXQpIHsKKyAgICBjYXNlIFRl
bXBvcmFsVW5pdDo6RGF5OiB7CisgICAgICAgIGRvdWJsZSBsZW5ndGggPSBkYXlMZW5ndGhOcy52
YWx1ZV9vcig4LjY0ICogMWUrMTMpOworICAgICAgICBxdWFudGl0eSA9ICgoKChwbGFpblRpbWUu
aG91cigpICogNjAuMCArIHBsYWluVGltZS5taW51dGUoKSkgKiA2MC4wICsgcGxhaW5UaW1lLnNl
Y29uZCgpKSAqIDEwMDAuMCArIHBsYWluVGltZS5taWxsaXNlY29uZCgpKSAqIDEwMDAuMCArIHBs
YWluVGltZS5uYW5vc2Vjb25kKCkpIC8gbGVuZ3RoOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJv
dW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsK
KyAgICAgICAgcmV0dXJuIHsgcmVzdWx0LCB7IH0gfTsKKyAgICB9CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6OkhvdXI6IHsKKyAgICAgICAgcXVhbnRpdHkgPSAoZnJhY3Rpb25hbFNlY29uZChwbGFp
blRpbWUpIC8gNjAuMCArIHBsYWluVGltZS5taW51dGUoKSkgLyA2MC4wICsgcGxhaW5UaW1lLmhv
dXIoKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50
aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVybiBiYWxhbmNlVGlt
ZShyZXN1bHQsIDAsIDAsIDAsIDAsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6
TWludXRlOiB7CisgICAgICAgIHF1YW50aXR5ID0gZnJhY3Rpb25hbFNlY29uZChwbGFpblRpbWUp
IC8gNjAuMCArIHBsYWluVGltZS5taW51dGUoKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3Vu
ZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7Cisg
ICAgICAgIHJldHVybiBiYWxhbmNlVGltZShwbGFpblRpbWUuaG91cigpLCByZXN1bHQsIDAsIDAs
IDAsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOiB7CisgICAgICAg
IHF1YW50aXR5ID0gZnJhY3Rpb25hbFNlY29uZChwbGFpblRpbWUpOworICAgICAgICBhdXRvIHJl
c3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRp
bmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBs
YWluVGltZS5taW51dGUoKSwgcmVzdWx0LCAwLCAwLCAwKTsKKyAgICB9CisgICAgY2FzZSBUZW1w
b3JhbFVuaXQ6Ok1pbGxpc2Vjb25kOiB7CisgICAgICAgIHF1YW50aXR5ID0gcGxhaW5UaW1lLm1p
bGxpc2Vjb25kKCkgKyBwbGFpblRpbWUubWljcm9zZWNvbmQoKSAqIDFlLTMgKyBwbGFpblRpbWUu
bmFub3NlY29uZCgpICogMWUtNjsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJlclRv
SW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIHJl
dHVybiBiYWxhbmNlVGltZShwbGFpblRpbWUuaG91cigpLCBwbGFpblRpbWUubWludXRlKCksIHBs
YWluVGltZS5zZWNvbmQoKSwgcmVzdWx0LCAwLCAwKTsKKyAgICB9CisgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6Ok1pY3Jvc2Vjb25kOiB7CisgICAgICAgIHF1YW50aXR5ID0gcGxhaW5UaW1lLm1pY3Jv
c2Vjb25kKCkgKyBwbGFpblRpbWUubmFub3NlY29uZCgpICogMWUtMzsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5k
aW5nTW9kZSk7CisgICAgICAgIHJldHVybiBiYWxhbmNlVGltZShwbGFpblRpbWUuaG91cigpLCBw
bGFpblRpbWUubWludXRlKCksIHBsYWluVGltZS5zZWNvbmQoKSwgcGxhaW5UaW1lLm1pbGxpc2Vj
b25kKCksIHJlc3VsdCwgMCk7CisgICAgfQorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpOYW5vc2Vj
b25kOiB7CisgICAgICAgIHF1YW50aXR5ID0gcGxhaW5UaW1lLm5hbm9zZWNvbmQoKTsKKyAgICAg
ICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1l
bnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVybiBiYWxhbmNlVGltZShwbGFpblRpbWUu
aG91cigpLCBwbGFpblRpbWUubWludXRlKCksIHBsYWluVGltZS5zZWNvbmQoKSwgcGxhaW5UaW1l
Lm1pbGxpc2Vjb25kKCksIHBsYWluVGltZS5taWNyb3NlY29uZCgpLCByZXN1bHQpOworICAgIH0K
KyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAg
ICAgICBicmVhazsKKyAgICB9Cit9CisKK0lTTzg2MDE6OlBsYWluVGltZSBUZW1wb3JhbFBsYWlu
VGltZTo6cm91bmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25z
VmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvcHRp
b25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHNtYWxsZXN0
ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IFRlbXBvcmFs
VW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpXZWVrLCBUZW1w
b3JhbFVuaXQ6OkRheSB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgIGlmICghc21hbGxlc3QpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJDYW5ub3Qgcm91bmQgd2l0aG91dCBhIHNtYWxsZXN0VW5pdCBvcHRpb24iX3Mp
OworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RV
bml0ID0gc21hbGxlc3QudmFsdWUoKTsKKworICAgIGF1dG8gcm91bmRpbmdNb2RlID0gaW50bE9w
dGlvbjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1l
cy0+cm91bmRpbmdNb2RlLAorICAgICAgICB7IHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2Vp
bCB9LCB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7ICJ0cnVuYyJfcywgUm91
bmRpbmdNb2RlOjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZF
eHBhbmQgfSB9LAorICAgICAgICAicm91bmRpbmdNb2RlIG11c3QgYmUgZWl0aGVyIFwiY2VpbFwi
LCBcImZsb29yXCIsIFwidHJ1bmNcIiwgb3IgXCJoYWxmRXhwYW5kXCIiX3MsIFJvdW5kaW5nTW9k
ZTo6SGFsZkV4cGFuZCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIGF1dG8gaW5jcmVtZW50ID0gdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChzbWFsbGVzdFVuaXQpLCBmYWxz
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gW2Rh
eSwgcGxhaW5UaW1lXSA9IHJvdW5kVGltZShtX3BsYWluVGltZSwgaW5jcmVtZW50LCBzbWFsbGVz
dFVuaXQsIHJvdW5kaW5nTW9kZSwgc3RkOjpudWxsb3B0KTsKKyAgICByZXR1cm4gcGxhaW5UaW1l
OworfQorCitTdHJpbmcgVGVtcG9yYWxQbGFpblRpbWU6OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0
KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gdG9TdHJpbmco
KTsKKworICAgIFByZWNpc2lvbkRhdGEgZGF0YSA9IHNlY29uZHNTdHJpbmdQcmVjaXNpb24oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgYXV0byByb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsCisgICAg
ICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3Vu
ZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsg
ImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCisgICAgICAgICJy
b3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wi
LCBvciBcImhhbGZFeHBhbmRcIiJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8vIE5vIG5lZWQgdG8gbWFrZSBhIG5l
dyBvYmplY3QgaWYgd2Ugd2VyZSBnaXZlbiBleHBsaWNpdCBkZWZhdWx0cy4KKyAgICBpZiAoc3Rk
OjpnZXQ8MD4oZGF0YS5wcmVjaXNpb24pID09IFByZWNpc2lvbjo6QXV0byAmJiByb3VuZGluZ01v
ZGUgPT0gUm91bmRpbmdNb2RlOjpUcnVuYykKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CisK
KyAgICBhdXRvIFtkYXksIHBsYWluVGltZV0gPSByb3VuZFRpbWUobV9wbGFpblRpbWUsIGRhdGEu
aW5jcmVtZW50LCBkYXRhLnVuaXQsIHJvdW5kaW5nTW9kZSwgc3RkOjpudWxsb3B0KTsKKyAgICBy
ZXR1cm4gSVNPODYwMTo6dGVtcG9yYWxUaW1lVG9TdHJpbmcocGxhaW5UaW1lLCBkYXRhLnByZWNp
c2lvbik7Cit9CisKKworc3RhdGljIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUoVk0mIHZtLCB1
bnNpZ25lZCBpbmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlRlbXBvcmFsVW5p
dHMpOworICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8VGVtcG9yYWxVbml0PihpbmRleCkpIHsKKyNk
ZWZpbmUgSlNDX1RFTVBPUkFMX0RVUkFUSU9OX1BST1BFUlRZX05BTUUobmFtZSwgY2FwaXRhbGl6
ZWROYW1lKSBjYXNlIFRlbXBvcmFsVW5pdDo6Y2FwaXRhbGl6ZWROYW1lOiByZXR1cm4gdm0ucHJv
cGVydHlOYW1lcy0+bmFtZTsKKyAgICAgICAgSlNDX1RFTVBPUkFMX1VOSVRTKEpTQ19URU1QT1JB
TF9EVVJBVElPTl9QUk9QRVJUWV9OQU1FKQorI3VuZGVmIEpTQ19URU1QT1JBTF9EVVJBVElPTl9Q
Uk9QRVJUWV9OQU1FCisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIHRvVGVtcG9yYWxUaW1lUmVjb3JkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0ZW1wb3JhbFRpbWVMaWtlKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiB7IH07
CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZUZW1wb3JhbFBs
YWluVGltZVVuaXRzOyArK2luZGV4KSB7CisgICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uSW5kZXgg
PSBpbmRleCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZW1wb3JhbFVuaXQ6OkhvdXIpOworICAg
ICAgICBhdXRvIG5hbWUgPSBwcm9wZXJ0eU5hbWUodm0sIGR1cmF0aW9uSW5kZXgpOworICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgbmFt
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlm
ICh2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCBtYWtlU3RyaW5nKCciJywgU3RyaW5nVmlldyhuYW1lLnVpZCgpKSwg
IiBmaWVsZCBpcyBtaXNzaW5nIl9zKSk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAg
ICB9CisgICAgICAgIGRvdWJsZSBpbnRlZ2VyID0gdmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShn
bG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoaW50ZWdlcikpIHsKKyAgICAgICAgICAgIHRocm93
UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lIHByb3Bl
cnRpZXMgbXVzdCBiZSBmaW5pdGUiX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgfQorICAgICAgICBkdXJhdGlvbltkdXJhdGlvbkluZGV4XSA9IGludGVnZXI7CisgICAgfQor
ICAgIHJldHVybiBkdXJhdGlvbjsKK30KKworc3RhdGljIElTTzg2MDE6OlBsYWluVGltZSBjb25z
dHJhaW50VGltZShJU084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uKQoreworICAgIGF1dG8gY29u
c3RyYWluVG9SYW5nZSA9IFtdKGRvdWJsZSB2YWx1ZSwgdW5zaWduZWQgbWluaW11bSwgdW5zaWdu
ZWQgbWF4aW11bSkgLT4gdW5zaWduZWQgeworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KHN0ZDo6bWluPGRvdWJsZT4oc3RkOjptYXg8ZG91YmxlPih2YWx1ZSwgbWluaW11bSks
IG1heGltdW0pKTsKKyAgICB9OworICAgIHJldHVybiBJU084NjAxOjpQbGFpblRpbWUoCisgICAg
ICAgIGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRpb24uaG91cnMoKSwgMCwgMjMpLAorICAgICAgICBj
b25zdHJhaW5Ub1JhbmdlKGR1cmF0aW9uLm1pbnV0ZXMoKSwgMCwgNTkpLAorICAgICAgICBjb25z
dHJhaW5Ub1JhbmdlKGR1cmF0aW9uLnNlY29uZHMoKSwgMCwgNTkpLAorICAgICAgICBjb25zdHJh
aW5Ub1JhbmdlKGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpLCAwLCAxMDAwKSwKKyAgICAgICAgY29u
c3RyYWluVG9SYW5nZShkdXJhdGlvbi5taWNyb3NlY29uZHMoKSwgMCwgMTAwMCksCisgICAgICAg
IGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRpb24ubmFub3NlY29uZHMoKSwgMCwgMTAwMCkpOworfQor
CitzdGF0aWMgSVNPODYwMTo6UGxhaW5UaW1lIHJlZ3VsYXRlVGltZShKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBJU084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uLCBUZW1wb3JhbE92ZXJm
bG93IG92ZXJmbG93KQoreworICAgIHN3aXRjaCAob3ZlcmZsb3cpIHsKKyAgICBjYXNlIFRlbXBv
cmFsT3ZlcmZsb3c6OkNvbnN0cmFpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRUaW1lKFdU
Rk1vdmUoZHVyYXRpb24pKTsKKyAgICBjYXNlIFRlbXBvcmFsT3ZlcmZsb3c6OlJlamVjdDoKKyAg
ICAgICAgcmV0dXJuIHRvUGxhaW5UaW1lKGdsb2JhbE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbikp
OworICAgIH0KKyAgICByZXR1cm4geyB9OworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9z
YWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b3RlbXBvcmFsdGltZQorVGVtcG9yYWxQbGFpblRp
bWUqIFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgaXRlbVZhbHVlLCBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFsT3ZlcmZsb3c+IG92ZXJm
bG93VmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3ZlcmZsb3cgPSBv
dmVyZmxvd1ZhbHVlLnZhbHVlX29yKFRlbXBvcmFsT3ZlcmZsb3c6OkNvbnN0cmFpbik7CisKKyAg
ICBpZiAoaXRlbVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGl0ZW1WYWx1ZS5pbmhl
cml0czxUZW1wb3JhbFBsYWluVGltZT4odm0pKQorICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxU
ZW1wb3JhbFBsYWluVGltZSo+KGl0ZW1WYWx1ZSk7CisgICAgICAgIGF1dG8gZHVyYXRpb24gPSB0
b1RlbXBvcmFsVGltZVJlY29yZChnbG9iYWxPYmplY3QsIGpzQ2FzdDxKU09iamVjdCo+KGl0ZW1W
YWx1ZSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAg
ICBhdXRvIHBsYWluVGltZSA9IHJlZ3VsYXRlVGltZShnbG9iYWxPYmplY3QsIFdURk1vdmUoZHVy
YXRpb24pLCBvdmVyZmxvdyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHBsYWluVGltZSkpOworICAgIH0K
KworICAgIGF1dG8gc3RyaW5nID0gaXRlbVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gdGltZSA9
IElTTzg2MDE6OnBhcnNlVGltZShzdHJpbmcpOworICAgIGlmICghdGltZSkgeworICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgdGltZSBzdHJpbmci
X3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBhdXRvIFtwbGFpblRpbWUsIHRp
bWVab25lXSA9IHRpbWUudmFsdWUoKTsKKyAgICByZXR1cm4gVGVtcG9yYWxQbGFpblRpbWU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShwbGFp
blRpbWUpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjk0MTQ5YTZj
ZjUyMWI2ZjNhNmMwZmViMTExZWI4ZmU2ZGEyMGJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaApAQCAtMCwwICsxLDg4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiTGF6eVByb3BlcnR5
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgVGVtcG9yYWxQbGFpblRpbWUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2
bS50ZW1wb3JhbFBsYWluVGltZVNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFRl
bXBvcmFsUGxhaW5UaW1lKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpQbGFpblRp
bWUmJik7CisgICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1lKiB0cnlDcmVhdGVJZlZhbGlkKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSVNPODYwMTo6RHVyYXRpb24mJik7CisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluVGlt
ZSogZnJvbShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIHN0ZDo6b3B0aW9uYWw8VGVtcG9yYWxP
dmVyZmxvdz4pOworICAgIHN0YXRpYyBKU1ZhbHVlIGNvbXBhcmUoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlLCBKU1ZhbHVlKTsKKworICAgIFRlbXBvcmFsQ2FsZW5kYXIqIGNhbGVuZGFyKCkgeyBy
ZXR1cm4gbV9jYWxlbmRhci5nZXQodGhpcyk7IH0KKworI2RlZmluZSBKU0NfREVGSU5FX1RFTVBP
UkFMX1BMQUlOX1RJTUVfRklFTEQobmFtZSwgY2FwaXRhbGl6ZWROYW1lKSBcCisgICAgdW5zaWdu
ZWQgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5UaW1lLm5hbWUoKTsgfQorICAgIEpTQ19U
RU1QT1JBTF9QTEFJTl9USU1FX1VOSVRTKEpTQ19ERUZJTkVfVEVNUE9SQUxfUExBSU5fVElNRV9G
SUVMRCk7CisjdW5kZWYgSlNDX0RFRklORV9URU1QT1JBTF9QTEFJTl9USU1FX0ZJRUxECisKKyAg
ICBJU084NjAxOjpQbGFpblRpbWUgd2l0aChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBwbGFp
blRpbWVMaWtlKSBjb25zdDsKKyAgICBJU084NjAxOjpQbGFpblRpbWUgYWRkKEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHN1YnRyYWN0KEpT
R2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHJv
dW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBTdHJpbmcg
dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0
cmluZyB0b1N0cmluZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbiA9
IHsgUHJlY2lzaW9uOjpBdXRvLCAwIH0pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSVNP
ODYwMTo6dGVtcG9yYWxUaW1lVG9TdHJpbmcobV9wbGFpblRpbWUsIHByZWNpc2lvbik7CisgICAg
fQorCisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHBsYWluVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1f
cGxhaW5UaW1lOyB9CisKKyAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOworCitwcml2YXRlOgor
ICAgIFRlbXBvcmFsUGxhaW5UaW1lKFZNJiwgU3RydWN0dXJlKiwgSVNPODYwMTo6UGxhaW5UaW1l
JiYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHRlbXBsYXRlPHR5cGVu
YW1lIENoYXJhY3RlclR5cGU+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6UGxh
aW5UaW1lPiBwYXJzZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+Jik7CisgICAg
c3RhdGljIElTTzg2MDE6OlBsYWluVGltZSBmcm9tT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNP
YmplY3QqKTsKKworICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0U3VicGxhaW5UaW1lKCkgY29uc3Q7
CisKKyAgICBJU084NjAxOjpQbGFpblRpbWUgbV9wbGFpblRpbWU7CisgICAgTGF6eVByb3BlcnR5
PFRlbXBvcmFsUGxhaW5UaW1lLCBUZW1wb3JhbENhbGVuZGFyPiBtX2NhbGVuZGFyOworfTsKKwor
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjFkZTVhNDA0NWYzYzVhMDFiNGQ1YTIzZTEzOGQzM2JkYWE0MDNmYmUKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLmNwcApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisj
aW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklW
SUFMTFlfREVTVFJVQ1RJQkxFKFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IpOworCitzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9y
RnVuY0Zyb20pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3RvckZ1bmNDb21wYXJlKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxQ
bGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENs
YXNzSW5mbyBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlv
biIsICZCYXNlOjpzX2luZm8sICZ0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yVGFibGUsIG51
bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcikg
fTsKKworLyogU291cmNlIGZvciBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oCitA
YmVnaW4gdGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvclRhYmxlCisgIGZyb20gICAgICAgICAg
ICAgdGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNGcm9tICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgY29tcGFyZSAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yRnVuY0NvbXBhcmUgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorQGVuZAorKi8K
KworVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvciogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1
Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlKiBwbGFpblRpbWVQcm90b3R5cGUpCit7CisgICAgYXV0byogY29uc3RydWN0
b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVj
dG9yPih2bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJl
KTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHBsYWluVGltZVByb3RvdHlw
ZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxh
aW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1
cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFs
RnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3N0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbFBsYWluVGltZSk7CitzdGF0aWMgSlND
X0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSk7CisKK1Rl
bXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3Io
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwg
Y2FsbFRlbXBvcmFsUGxhaW5UaW1lLCBjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSkKK3sKK30K
Kwordm9pZCBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYg
dm0sIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKiBwbGFpblRpbWVQcm90b3R5cGUpCit7Cisg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJQbGFpblRpbWUiX3MsIFByb3BlcnR5QWRk
aXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcGxhaW5UaW1l
UHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0
ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcGxhaW5U
aW1lUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlO
YW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udEVudW0pKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0
cnVjdFRlbXBvcmFsUGxhaW5UaW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVj
dCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3Ry
dWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0NfR0VUX0RFUklWRURfU1RSVUNUVVJFKHZtLCBwbGFpblRp
bWVTdHJ1Y3R1cmUsIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVy
YXRpb24geyB9OworICAgIGF1dG8gY291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KGNhbGxGcmFtZS0+
YXJndW1lbnRDb3VudCgpLCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHMpOworICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIHVuc2lnbmVkIGR1
cmF0aW9uSW5kZXggPSBpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRlbXBvcmFsVW5pdDo6SG91
cik7CisgICAgICAgIGR1cmF0aW9uW2R1cmF0aW9uSW5kZXhdID0gY2FsbEZyYW1lLT51bmNoZWNr
ZWRBcmd1bWVudChpKS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CisgICAgICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlmICghc3RkOjppc2Zp
bml0ZShkdXJhdGlvbltkdXJhdGlvbkluZGV4XSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dW
TVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZSBwcm9w
ZXJ0aWVzIG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJO
KHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OnRyeUNyZWF0ZUlmVmFs
aWQoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIFdURk1vdmUoZHVyYXRpb24pKSkpOworfQorCitK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsUGxhaW5UaW1lLCAoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2Fs
bGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGxhaW5UaW1lIikp
OworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1
Y3RvckZ1bmNGcm9tLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9u
cyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFRlbXBv
cmFsT3ZlcmZsb3cgb3ZlcmZsb3cgPSB0b1RlbXBvcmFsT3ZlcmZsb3coZ2xvYmFsT2JqZWN0LCBv
cHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNW
YWx1ZSBpdGVtVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworCisgICAgaWYgKGl0ZW1W
YWx1ZS5pbmhlcml0czxUZW1wb3JhbFBsYWluVGltZT4odm0pKQorICAgICAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBqc0Nhc3Q8VGVtcG9yYWxQ
bGFpblRpbWUqPihpdGVtVmFsdWUpLT5wbGFpblRpbWUoKSkpKTsKKworICAgIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKGds
b2JhbE9iamVjdCwgaXRlbVZhbHVlLCBvdmVyZmxvdykpKTsKK30KKworSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jQ29tcGFyZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBV
TlVTRURfUEFSQU0oZ2xvYmFsT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIC8vIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNvbXBhcmUoZ2xvYmFsT2JqZWN0
LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSk7Cit9CisK
K30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjky
YTkzNjVlMTUwZDUzOTg2NWFmNWVmMzIzMTYxY2ViZGMxZjA1ZjQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVj
dG9yLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJ
bmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBm
b3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJv
dmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBS
ZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHly
aWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxv
d2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11
c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAg
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBk
aXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJ
TkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBU
SEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJ
UkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENP
TlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwg
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBD
QVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05U
UkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0gg
REFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlv
bi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGU7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMg
SW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVu
Y3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJh
c2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRp
YyBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBU
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0
ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJF
X0lORk87CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvcihWTSYs
IFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBUZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxF
KFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MGRiZmFh
MjA2N2ZmMTU1MzFjYmZjYWE0MjFiOGQ5NTk4NjM5NjE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3Bw
CkBAIC0wLDAgKzEsMzA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxQbGFpblRpbWUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1dpdGgpOworc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVG
dW5jQWRkKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1N1YnRyYWN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1JvdW5kKTsKK3N0YXRpYyBKU0NfREVD
TEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvU3RyaW5n
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlRnVuY1RvSlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNWYWx1ZU9m
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlR2V0dGVySG91cik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1w
b3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbnV0ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
Q1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlclNlY29uZCk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZUdldHRlck1pbGxpc2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQpOworc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJOYW5v
c2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVtcG9yYWwuUGxh
aW5UaW1lIiwgJkJhc2U6OnNfaW5mbywgJnBsYWluVGltZVByb3RvdHlwZVRhYmxlLCBudWxscHRy
LCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKSB9OworCisv
KiBTb3VyY2UgZm9yIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gcGxh
aW5UaW1lUHJvdG90eXBlVGFibGUKKyAgd2l0aCAgICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZUZ1bmNXaXRoICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBh
ZGQgICAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0FkZCAgICAgICAg
ICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHN1YnRyYWN0ICAgICAgICAgdGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGVGdW5jU3VidHJhY3QgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgcm91bmQgICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNSb3Vu
ZCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0b1N0cmluZyAgICAgICAgIHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvU3RyaW5nICAgICAgICAgICBEb250RW51bXxG
dW5jdGlvbiAwCisgIHRvSlNPTiAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVG
dW5jVG9KU09OICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2NhbGVTdHJp
bmcgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAgICAgRG9u
dEVudW18RnVuY3Rpb24gMAorICB2YWx1ZU9mICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlRnVuY1ZhbHVlT2YgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIGhvdXIg
ICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyICAgICAgICAg
ICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG1pbnV0ZSAgICAgICAgICAg
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUgICAgICAgICAgIERvbnRFbnVt
fFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIHNlY29uZCAgICAgICAgICAgdGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGVHZXR0ZXJTZWNvbmQgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCisgIG1pbGxpc2Vjb25kICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVHZXR0ZXJNaWxsaXNlY29uZCAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29y
CisgIG1pY3Jvc2Vjb25kICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaWNy
b3NlY29uZCAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG5hbm9zZWNv
bmQgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJOYW5vc2Vjb25kICAgICAg
IERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGNhbGVuZGFyICAgICAgICAgdGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciAgICAgICAgIERvbnRFbnVtfFJl
YWRPbmx5fEN1c3RvbUFjY2Vzc29yCitAZW5kCisqLworCitUZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZSogVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8q
IHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUodm0sIHN0cnVj
dHVyZSk7CisgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsK
KyAgICByZXR1cm4gcHJvdG90eXBlOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVh
dGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1
Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpU
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQor
ICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKK3sKKyAg
ICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZv
KCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKwor
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1dp
dGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cisg
ICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLndpdGggY2FsbGVk
IG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShwbGFpblRpbWUpOworCisgICAgLy8gSlNWYWx1ZSBwbGFpblRpbWVMaWtlID0g
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICAvLyBpZiAoIXBsYWluVGltZUxpa2UuaXNPYmpl
Y3QoKSkKKyAgICAvLyAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUud2l0
aCBtdXN0IGJlIGFuIG9iamVjdCJfcyk7CisKKyAgICAvLyBhdXRvIHN1YnBsYWluVGltZXMgPSBw
bGFpblRpbWUtPndpdGgoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChwbGFpblRpbWVMaWtlKSk7Cisg
ICAgLy8gUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8vIFJFTEVBU0Vf
QU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjp0cnlD
cmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJwbGFpblRpbWVzKSkpKTsKK30K
KworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVu
Y0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1l
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5h
bWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsK
KyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuYWRkIGNhbGxl
ZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUocGxhaW5UaW1lKTsKKworICAgIC8vIGF1dG8gc3VicGxhaW5UaW1lcyA9IHBs
YWluVGltZS0+YWRkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAg
Ly8gUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8vIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjp0cnlDcmVh
dGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJwbGFpblRpbWVzKSkpKTsKK30KKwor
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1N1
YnRyYWN0LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5
bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkp
OworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5zdWJ0cmFj
dCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKHBsYWluVGltZSk7CisKKyAgICAvLyBhdXRvIHN1YnBsYWluVGlt
ZXMgPSBwbGFpblRpbWUtPnN1YnRyYWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKSk7CisgICAgLy8gUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8v
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5U
aW1lOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJwbGFpblRpbWVz
KSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlRnVuY1JvdW5kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1l
KiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRp
bWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhp
c1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlw
ZS5yb3VuZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAg
ICBhdXRvIG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmIChvcHRpb25z
LmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVz
IGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworCisgICAgYXV0byByb3VuZGVkID0gcGxhaW5UaW1l
LT5yb3VuZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVu
Y29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGlt
ZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJvdW5kZWQpKSkpOworfQorCitKU0NfREVGSU5FX0hPU1Rf
RlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9TdHJpbmcsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFp
blRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKGds
b2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKSk7Cit9CisKK0pTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0pTT04sIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFw
bGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkpKTsKK30KKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvTG9jYWxlU3Ry
aW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b0xvY2FsZVN0
cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkp
KTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudmFsdWVP
ZiBtdXN0IG5vdCBiZSBjYWxsZWQuIFRvIGNvbXBhcmUgUGxhaW5UaW1lIHZhbHVlcywgdXNlIFRl
bXBvcmFsLlBsYWluVGltZS5jb21wYXJlIl9zKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVySG91ciwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWlj
Q2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmhvdXIgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPmhvdXIoKSkpOworfQorCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWlu
VGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS5taW51dGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3Mp
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm1pbnV0
ZSgpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZUdldHRlclNlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGlt
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRpbWUp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHBsYWluVGltZS0+c2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWlsbGlzZWNvbmQsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWxs
aXNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+bWlsbGlzZWNvbmQo
KSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGVHZXR0ZXJNaWNyb3NlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWlu
VGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRp
bWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1pY3Jvc2Vjb25kIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIocGxhaW5UaW1lLT5taWNyb3NlY29uZCgpKSk7Cit9CisKK0pTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck5hbm9zZWNvbmQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWlu
VGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS5uYW5vc2Vjb25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1l
Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5u
YW5vc2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICgh
cGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHBsYWluVGltZS0+Y2FsZW5kYXIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVhMjI5YTdiZDUxOTRiYjQ2MTZmYTQ3MmMy
ZmFkNjE0ZDNhZTU4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBUZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3Bw
CmluZGV4IDk3ODRjM2QxNzQ5OTY5MTUwYjNlZDZlNjg2ZDVjYTg5NjllMmIyZDIuLjc2NTliMDU4
MmNjZDI5NWU4ZDFiYTVmMzhlZWJkNDE0NzE4NjE3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCkBAIC01NywxNyArNTcsNiBA
QCBUZW1wb3JhbFRpbWVab25lOjpUZW1wb3JhbFRpbWVab25lKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFRpbWVab25lIHRpbWVabwogewogfQogCi0vLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3N1cC1pc3ZhbGlkdGltZXpvbmVuYW1lCi1zdGQ6Om9wdGlvbmFsPFRp
bWVab25lSUQ+IFRlbXBvcmFsVGltZVpvbmU6OmlkRm9yVGltZVpvbmVOYW1lKFN0cmluZ1ZpZXcg
c3RyaW5nKQotewotICAgIGNvbnN0IGF1dG8mIHRpbWVab25lcyA9IGludGxBdmFpbGFibGVUaW1l
Wm9uZXMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB0aW1lWm9uZXMu
c2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRp
bWVab25lc1tpbmRleF0sIHN0cmluZykpCi0gICAgICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAg
fQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBhcnNldGVtcG9yYWx0aW1lWm9uZXN0cmluZwog
c3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUZW1wb3JhbFRpbWVab25lU3RyaW5n
KFN0cmluZ1ZpZXcpCiB7CkBAIC0xMTAsNyArOTksNyBAQCBKU09iamVjdCogVGVtcG9yYWxUaW1l
Wm9uZTo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRpbWVab25l
TAogICAgIGlmICh1dGNPZmZzZXQpCiAgICAgICAgIHJldHVybiBUZW1wb3JhbFRpbWVab25lOjpj
cmVhdGVGcm9tVVRDT2Zmc2V0KHZtLCBnbG9iYWxPYmplY3QtPnRpbWVab25lU3RydWN0dXJlKCks
IHV0Y09mZnNldC52YWx1ZSgpKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRl
bnRpZmllciA9IGlkRm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFRpbWVab25lSUQ+IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFt
ZSh0aW1lWm9uZVN0cmluZyk7CiAgICAgaWYgKGlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBU
ZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tSUQodm0sIGdsb2JhbE9iamVjdC0+dGltZVpvbmVT
dHJ1Y3R1cmUoKSwgaWRlbnRpZmllci52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oCmluZGV4IGJjMjgxNTNiN2ZkMjViYjc2
NWUyNTA2ZmQ5NmZhNzZiNWU1MTBhZGIuLmU1NzllYTNhNjNmNjIxZmRmNDMyNjExMzI5NzQ5YmYz
YzQ3NDZhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsVGltZVpvbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bFRpbWVab25lLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJJU084NjAxLmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KQEAgLTQ3LDEwICs0OCw5IEBAIGNsYXNzIFRl
bXBvcmFsVGltZVpvbmUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBE
RUNMQVJFX0lORk87CiAKLSAgICB1c2luZyBUaW1lWm9uZSA9IFZhcmlhbnQ8VGltZVpvbmVJRCwg
aW50NjRfdD47Ci0gICAgVGltZVpvbmUgdGltZVpvbmUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVa
b25lOyB9CisgICAgdXNpbmcgVGltZVpvbmUgPSBJU084NjAxOjpUaW1lWm9uZTsKIAotICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkRm9yVGltZVpvbmVOYW1lKFN0cmluZ1Zp
ZXcpOworICAgIFRpbWVab25lIHRpbWVab25lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lWm9uZTsg
fQogCiAgICAgc3RhdGljIEpTT2JqZWN0KiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGlt
ZVpvbmVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCmluZGV4IDk5MzM2NWFiMzMyZjhmZmFkODc1ODgw
MDA4MTBjZDMwZWRkYTYxZDcuLjZkMjNlOGYwNTlkYzc5YmNmYTI5ZDljNjVhMDVlZWU4M2IzYTVj
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGlt
ZVpvbmVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcApAQCAtNzQsNiArNzQsNyBAQCB2b2lkIFRl
bXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3Jh
bFRpbWVab25lUHJvdG90eQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiVGlt
ZVpvbmUiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlv
bik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgdGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOworICAgIHRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUtPnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhp
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxUaW1lWm9uZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTkyLDcgKzkzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFs
VGltZVpvbmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBpZiAodXRjT2Zmc2V0
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsVGltZVpvbmU6OmNyZWF0
ZUZyb21VVENPZmZzZXQodm0sIHN0cnVjdHVyZSwgdXRjT2Zmc2V0LnZhbHVlKCkpKTsKIAotICAg
IHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IFRlbXBvcmFsVGltZVpvbmU6
OmlkRm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRp
bWVab25lSUQ+IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9u
ZVN0cmluZyk7CiAgICAgaWYgKCFpZGVudGlmaWVyKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgbmVlZHMgdG8gYmUgVVRDIG9mZnNldCBz
dHJpbmcgb3IgVGltZVpvbmUgaWRlbnRpZmllciJfcyk7CiAgICAgICAgIHJldHVybiB7IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMDJmMTg5N2IwZjM5MTg1NjBiNTA1
MzE5ZDZlNDYxYmRiNWQ3MTBkZC4uMTVkZGIyYWZhZTUyMzc3N2FlOTA2NmIzMWIwZDcxMDU0NmI3
ZDg3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTY0LDYgKzE2NCw3
IEBACiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRh
ci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBs
YWluVGltZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0
UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKQEAgLTE1ODgsNiAr
MTU4OSw4IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xT
cGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIFN5bWJvbE9iamVjdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBUZW1wb3JhbENhbGVuZGFyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgVGVtcG9yYWxEdXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBU
ZW1wb3JhbFBsYWluVGltZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFs
VGltZVpvbmUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhB
cnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQ4QXJyYXkpCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50OENsYW1wZWRBcnJheSkKQEAgLTE2MjIsNyAr
MTYyNSw2IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVs
YXRpdmVUaW1lRm9ybWF0U3BhY2UsIGludGxSZWxhdGl2CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlLCBpbnRsU2VnbWVudEl0
ZXJhdG9ySGVhcENlbGxUeXBlLmdldCgpLCBJbnRsU2VnbWVudEl0ZXJhdG9yKQogRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50ZXJTcGFjZSwgaW50bFNl
Z21lbnRlckhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21lbnRlcikKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgaW50bFNlZ21lbnRz
SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsU2VnbWVudHMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBUZW1wb3JhbER1cmF0aW9uKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVG9XYXNtSUNDYWxsZWUpCiBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2Vi
QXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2spIC8vIEhhc2g6MHg5YWQ5OTVjZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXgg
MWU3MjVjZTM3NDg3M2UwMDdkMWIwM2Y1NDk1NmM1MDIzMDRjNmIzNy4uN2E1OGIyNzllNjcwYTg0
MDNkMWYzOTQxMjM1N2Q1ZTc3MTEzZjU3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CkBAIC0xOTUsNiArMTk1LDcgQEAgY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
OwogY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogY2xhc3MgVk1FbnRyeVNjb3BlOwogY2xhc3MgVGVt
cG9yYWxDYWxlbmRhcjsKK2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lOwogY2xhc3MgVGVtcG9yYWxU
aW1lWm9uZTsKIGNsYXNzIFRvcExldmVsR2xvYmFsT2JqZWN0U2NvcGU7CiBjbGFzcyBUeXBlUHJv
ZmlsZXI7CkBAIC01OTUsNiArNTk2LDggQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN5bWJvbE9iamVjdFNwYWNlKQogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENh
bGVuZGFyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1w
b3JhbER1cmF0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih0ZW1wb3JhbFBsYWluVGltZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodGVtcG9yYWxUaW1lWm9uZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodWludDhBcnJheVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkKQEAgLTYyMCw3ICs2MjMsNiBA
QCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3Vi
bHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRlclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRzU3BhY2UpCi0gICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3BhY2UpCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNUb1dh
c21JQ0NhbGxlZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
d2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9n
IGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzIyMzY2YTg2ODM0NTZmMGE0YjFkYTc4ZjliOTI2
MTdlYjAwMWUyNi4uZWJjMmJkMDNkOWQ2ZTUzYTEwM2IwMTA0OGMxOWRkOTIzNGQwM2FlZCAxMDA2
NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNSBAQAorMjAyMS0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5QbGFpblRpbWUKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTg5MgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3RlbXBvcmFs
LXBsYWludGltZS5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91
bGRUaHJvdyk6CisgICAgICAgICogc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzOgorCiAyMDIx
LTA5LTAzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pT
Q10gTWFrZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZSBjbG9iYmVyaXppbmcgcnVs
ZSBwcmVjaXNlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1wbGFpbnRpbWUu
anMgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1wbGFpbnRpbWUuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZjgx
MTU1ZjA0ODlmZDlhMGY4YWE0ZjRhYWE3ZGMxYTU4ZTYxYWRlMgotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXBsYWludGltZS5qcwpAQCAtMCwwICsxLDEwMCBAQAor
Ly9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVRlbXBvcmFsPTEiKQorCitmdW5jdGlvbiBzaG91bGRC
ZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAg
ICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVh
bH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdl
KSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBp
bnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQg
JHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAgaWYgKG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkKKyAg
ICAgICAgc2hvdWxkQmUoU3RyaW5nKGVycm9yKSwgbWVzc2FnZSk7Cit9CisKK3sKKyAgICBsZXQg
dGltZSA9IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7Cisg
ICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBgMDA6MDE6MDIuMDAzMDA0MDA1YCk7CisgICAgc2hv
dWxkQmUodGltZS5ob3VyLCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgMSk7CisgICAg
c2hvdWxkQmUodGltZS5zZWNvbmQsIDIpOworICAgIHNob3VsZEJlKHRpbWUubWlsbGlzZWNvbmQs
IDMpOworICAgIHNob3VsZEJlKHRpbWUubWljcm9zZWNvbmQsIDQpOworICAgIHNob3VsZEJlKHRp
bWUubmFub3NlY29uZCwgNSk7Cit9CisKK3sKKyAgICBsZXQgdGltZSA9IG5ldyBUZW1wb3JhbC5Q
bGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBg
MDA6MDA6MDBgKTsKKyAgICBzaG91bGRCZSh0aW1lLmhvdXIsIDApOworICAgIHNob3VsZEJlKHRp
bWUubWludXRlLCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLnNlY29uZCwgMCk7CisgICAgc2hvdWxk
QmUodGltZS5taWxsaXNlY29uZCwgMCk7CisgICAgc2hvdWxkQmUodGltZS5taWNyb3NlY29uZCwg
MCk7CisgICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCAwKTsKK30KKworeworICAgIGxldCB0
aW1lID0gbmV3IFRlbXBvcmFsLlBsYWluVGltZSgyMywgNTksIDU5LCA5OTksIDk5OSwgOTk5KTsK
KyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAyMzo1OTo1OS45OTk5OTk5OTlgKTsKKyAgICBz
aG91bGRCZSh0aW1lLmhvdXIsIDIzKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgNTkpOwor
ICAgIHNob3VsZEJlKHRpbWUuc2Vjb25kLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5taWxsaXNl
Y29uZCwgOTk5KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pY3Jvc2Vjb25kLCA5OTkpOworICAgIHNo
b3VsZEJlKHRpbWUubmFub3NlY29uZCwgOTk5KTsKK30KKworc2hvdWxkVGhyb3coKCkgPT4geyBu
ZXcgVGVtcG9yYWwuUGxhaW5UaW1lKC0xKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygo
KSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMjUpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3Vs
ZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgyNCk7IH0sIFJhbmdlRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDMwKTsgfSwgUmFu
Z2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoSW5m
aW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFs
LlBsYWluVGltZSgtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkg
PT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIC0xKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgNjApOyB9LCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCA2MSk7
IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5U
aW1lKDAsIDc3KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1w
b3JhbC5QbGFpblRpbWUoMCwgMTAwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsK
K3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAtSW5maW5pdHkp
OyB9LCBSYW5nZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxh
aW5UaW1lKDAsIDAsIC0xKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5l
dyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgNjApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRo
cm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCA2MSk7IH0sIFJhbmdlRXJy
b3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDc3
KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFp
blRpbWUoMCwgMCwgMTAwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5l
dyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAtSW5maW5pdHkp
OyB9LCBSYW5nZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxh
aW5UaW1lKDAsIDAsIDAsIC0xKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7
IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMTAwMCk7IH0sIFJhbmdlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDEwMDEp
OyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgwLCAwLCAwLCA1MDAwMCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
eyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDk5OTk5OTk5OTkpOyB9LCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAw
LCBJbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVt
cG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIC1JbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworCitz
aG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgLTEp
OyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgwLCAwLCAwLCAwLCAxMDAwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMTAwMSk7IH0sIFJhbmdlRXJy
b3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAs
IDAsIDUwMDAwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1w
b3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgOTk5OTk5OTk5OSk7IH0sIFJhbmdlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIElu
ZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3Jh
bC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgLUluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CisKK3No
b3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCAt
MSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxh
aW5UaW1lKDAsIDAsIDAsIDAsIDAsIDEwMDApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCAxMDAxKTsgfSwg
UmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUo
MCwgMCwgMCwgMCwgMCwgNTAwMDApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+
IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCA5OTk5OTk5OTk5KTsgfSwg
UmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUo
MCwgMCwgMCwgMCwgMCwgSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgp
ID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCAtSW5maW5pdHkpOyB9
LCBSYW5nZUVycm9yKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRpbWV6
b25lLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtdGltZXpvbmUuanMKaW5kZXggZDg4Zjhj
ODg3ZTg0NGFlMmYwMzA5ZWFmMTUxZWNhMjIwMTQ0MTk1Ni4uYjQzYTkwNmY2ZmVkNGNlMjNiNDBh
NjljZjU0Y2ZjZTUwYWViYTI5NSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwt
dGltZXpvbmUuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtdGltZXpvbmUuanMKQEAg
LTI2LDYgKzI2LDE4IEBAIGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSwgbWVz
c2FnZSkgewogICAgICIrMjQiLAogICAgICIrMjM6IiwKICAgICAiMjA6MDAiLAorICAgICIrMjow
MCIsCisgICAgIiszMjowMCIsCisgICAgIisyMzowMDEiLAorICAgICIrMjM6OTkiLAorICAgICIr
MjM6OTkwIiwKKyAgICAiKzIzOjU5Ojk5IiwKKyAgICAiKzIzOjU5OjAwMSIsCisgICAgIisyMzo1
OTo5OTkiLAorICAgICIrMjM6NTk6NTkuIiwKKyAgICAiKzIzOjU5OjU5LCIsCisgICAgIisyMzo1
OTo1OWEiLAorICAgICIrMjM6NTk6NTkuYSIsCiAgICAgIisyMDowMDAwIiwKICAgICAiKzIwOjYw
IiwKICAgICAiKzIwOjU5OiIsCkBAIC01Miw2ICs2NCwxMCBAQCBmdW5jdGlvbiBzaG91bGRUaHJv
dyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKIHNob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1l
Wm9uZSgiLTAxOjU5OjMwLjEyMzQ1MDAwMCIpLmlkLCBgLTAxOjU5OjMwLjEyMzQ1YCk7CiBzaG91
bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4wMDAwMDAwMDEiKS5pZCwgYC0w
MTo1OTozMC4wMDAwMDAwMDFgKTsKIHNob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAx
OjU5OjMwLjEyMzQ1Njc4OSIpLmlkLCBgLTAxOjU5OjMwLjEyMzQ1Njc4OWApOworc2hvdWxkQmUo
bmV3IFRlbXBvcmFsLlRpbWVab25lKCItMDE6NTk6MzAuMDAxMDAyMDAzIikuaWQsIGAtMDE6NTk6
MzAuMDAxMDAyMDAzYCk7CitzaG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OToz
MC4wMDAwMDAwMDAiKS5pZCwgYC0wMTo1OTozMGApOworc2hvdWxkQmUobmV3IFRlbXBvcmFsLlRp
bWVab25lKCItMDE6NTk6MDAuMDAwMDAwMDAwIikuaWQsIGAtMDE6NTlgKTsKK3Nob3VsZEJlKG5l
dyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjAwOjAwLjAwMDAwMDAwMCIpLmlkLCBgLTAxOjAwYCk7
CiAKIGxldCB0eiA9IG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjMwLjEyMzQ1Njc4OSIp
CiBzaG91bGRCZSh0ei5pZCwgU3RyaW5nKHR6KSk7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437353</attachid>
            <date>2021-09-04 23:43:05 -0700</date>
            <delta_ts>2021-09-05 04:49:10 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229892-20210904234305.patch</filename>
            <type>text/plain</type>
            <size>122102</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTM5NDE1YzNmNmI3NTVlOTY3YjE3MTMzYjU5ZTY5ZWM1NjNkOWNjLi5hOWU1YWY5OTIxMWExMDUy
NjVjNmI5ZGU2NTZjNDVlNTliYTI1YTEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMDAgQEAKKzIwMjEtMDktMDQgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuUGxhaW5UaW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4OTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JU084NjAxLmNwcDoKKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6aWRGb3JUaW1lWm9uZU5hbWUpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpwYXJzZVRpbWVTcGVjKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lWm9uZU51
bWVyaWNVVENPZmZzZXQpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZVRpbWVab25lQnJh
Y2tldGVkQW5ub3RhdGlvbik6CisgICAgICAgIChKU0M6OklTTzg2MDE6OmNhbkJlVGltZVpvbmUp
OgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZVRpbWVab25lKToKKyAgICAgICAgKEpTQzo6
SVNPODYwMTo6cGFyc2VUaW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6ZGF5c0luTW9udGgp
OgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZURhdGUpOgorICAgICAgICAoSlNDOjpJU084
NjAxOjpwYXJzZURhdGVUaW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6Zm9ybWF0VGltZVpv
bmVPZmZzZXRTdHJpbmcpOgorICAgICAgICAoSlNDOjpJU084NjAxOjp0ZW1wb3JhbFRpbWVUb1N0
cmluZyk6CisgICAgICAgICogcnVudGltZS9JU084NjAxLmg6CisgICAgICAgIChKU0M6OklTTzg2
MDE6OlBsYWluVGltZTo6UGxhaW5UaW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5E
YXRlOjpQbGFpbkRhdGUpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpQbGFpbkRhdGU6OnllYXIg
Y29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpQbGFpbkRhdGU6Om1vbnRoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRlOjpkYXkgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OnV0Y1RpbWVab25lSURTbG93
KToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoKKyAgICAgICAgKEpTQzo6dXRjVGlt
ZVpvbmVJRCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAgICAgICAgKEpTQzo6SlNHbG9iYWxPYmpl
Y3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0OjpwbGFpblRpbWVTdHJ1Y3R1cmUpOgor
ICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcDoKKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1
cmF0aW9uOjp0b1N0cmluZyk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmg6
CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbE5vdy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5j
cHA6CisgICAgICAgIChKU0M6OmNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yKToKKyAgICAgICAg
KEpTQzo6c2Vjb25kc1N0cmluZ1ByZWNpc2lvbik6CisgICAgICAgIChKU0M6OnRvVGVtcG9yYWxP
dmVyZmxvdyk6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5oOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxQbGFpblRpbWU6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1l
OjpjcmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6VGVt
cG9yYWxQbGFpblRpbWUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6ZmluaXNo
Q3JlYXRpb24pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dmlzaXRDaGlsZHJl
bkltcGwpOgorICAgICAgICAoSlNDOjp0b1BsYWluVGltZSk6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsUGxhaW5UaW1lOjp0cnlDcmVhdGVJZlZhbGlkKToKKyAgICAgICAgKEpTQzo6YmFsYW5jZVRp
bWUpOgorICAgICAgICAoSlNDOjpyb3VuZFRpbWUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBs
YWluVGltZTo6cm91bmQgY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6
dG9TdHJpbmcgY29uc3QpOgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWUpOgorICAgICAgICAo
SlNDOjp0b1RlbXBvcmFsVGltZVJlY29yZCk6CisgICAgICAgIChKU0M6OmNvbnN0cmFpbnRUaW1l
KToKKyAgICAgICAgKEpTQzo6cmVndWxhdGVUaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQ
bGFpblRpbWU6OmZyb20pOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaDog
QWRkZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNw
cDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNy
ZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0
ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6
OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsVGltZVpvbmUuaC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGU6OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01f
R0VUVEVSKToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmg6
IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpv
bmUuaC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbFRpbWVab25lOjpmcm9tKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1l
Wm9uZTo6aWRGb3JUaW1lWm9uZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxUaW1lWm9uZS5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0
cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6
CisgICAgICAgICogcnVudGltZS9WTS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAy
MDIxLTA5LTAzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAg
W0pTQ10gTWFrZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZSBjbG9iYmVyaXppbmcg
cnVsZSBwcmVjaXNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWNhMDgz
MTRiNjQ0NTljNzhjYTAzODY0MjgxNTM3Zjg1MThkYmVlMC4uMzhjYjg0ZGEwNTZlMmI2YTZjMTNl
ZDlmOGQ3MDUxOGVhZjA4OTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTEzLDYgKzExMyw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMK
ICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9U
ZW1wb3JhbE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorICAgIHJ1bnRp
bWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAppbmRleCBjZTVmNjI4OGFhYTI3Y2I3ODE3YmVhZTE0NDM3NmVhMjhhZmFlNjNmLi4y
ODg1YjUxMDE3Y2MxYWUzZDg5MmVmM2M1ZjI3YTRiMTIzNzUzODQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAt
MTc1LDYgKzE3NSw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNv
bnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJP
SkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGlt
ZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1l
L1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS91Y2QvQ2FzZUZv
bGRpbmcudHh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMWIwNTVjOTIyYzA5NGE1OTU4NDI2MDg0MWRjZWRm
Y2FhNzM3NjUwMy4uMmFkMjEzMWM1ODY2OWJkMDU3NWM3YWY0MGE2YzQyN2E1OTRmNWMzZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdApAQCAtNzIsNiArNzIsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLgogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFs
RHVyYXRpb25Qcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVt
cG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5sdXQu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1Vu
aWNvZGVQYXR0ZXJuVGFibGVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggODgxOTI3ZTE3YmRhMjM4ZDdkYWNlZjFkNmViNWMzYzNiNzQ4YjM3Ny4uZWNi
Y2U2N2Y3OGMwMDM0YzE2NmY1MGQ1ODkyYTZmMDhjNWRhNDBkNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE5Nyw2ICsxOTcsOCBAQCBPQkpFQ1RfTFVU
X0hFQURFUlMgPSBcCiAgICAgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5sdXQuaCBcCiAgICAg
VGVtcG9yYWxOb3cubHV0LmggXAogICAgIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBUZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oIFwK
ICAgICBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmx1dC5oIFwKICAgICBXZWJBc3NlbWJseUNv
bXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCAzMjhmOTJmNWIyZmIyMDVjODM4NzgyMjQxOWE1MDg0ZTBmYTFmN2NhLi44NDZlOWVlNzVm
ZWQwNTQ3NTU2YzRiZmQ0YTI2MWQ4MGQ1OWFmYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xMDE5LDYgKzEwMTksOSBAQCBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1
Y3Rvci5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKIHJ1bnRpbWUv
VGVtcG9yYWxOb3cuY3BwCiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorcnVudGltZS9UZW1w
b3JhbFBsYWluVGltZS5jcHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5j
cHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBv
cmFsVGltZVpvbmUuY3BwCiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAK
IHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDcxNGFhMmZlYjIy
NGZhNThmMjdlZDU1NTFiNjdjOWYzMjY1Y2JkMjcuLmJkZWQ2OTkyZjdhOTY4ZTFjNzA2NDU4M2Qz
ZTA4MTJmNzc0YzZlMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTY5LDcgKzE2OSw5IEBACiAgICAgbWFjcm8obWF4aW11
bUZyYWN0aW9uRGlnaXRzKSBcCiAgICAgbWFjcm8obWF4aW11bVNpZ25pZmljYW50RGlnaXRzKSBc
CiAgICAgbWFjcm8obWVzc2FnZSkgXAorICAgIG1hY3JvKG1pY3Jvc2Vjb25kKSBcCiAgICAgbWFj
cm8obWljcm9zZWNvbmRzKSBcCisgICAgbWFjcm8obWlsbGlzZWNvbmQpIFwKICAgICBtYWNybyht
aWxsaXNlY29uZHMpIFwKICAgICBtYWNybyhtaW5pbXVtRnJhY3Rpb25EaWdpdHMpIFwKICAgICBt
YWNybyhtaW5pbXVtSW50ZWdlckRpZ2l0cykgXApAQCAtMTgxLDYgKzE4Myw3IEBACiAgICAgbWFj
cm8obW9udGhzKSBcCiAgICAgbWFjcm8obXVsdGlsaW5lKSBcCiAgICAgbWFjcm8obmFtZSkgXAor
ICAgIG1hY3JvKG5hbm9zZWNvbmQpIFwKICAgICBtYWNybyhuYW5vc2Vjb25kcykgXAogICAgIG1h
Y3JvKG5leHQpIFwKICAgICBtYWNybyhub3cpIFwKQEAgLTE5NCw2ICsxOTcsNyBAQAogICAgIG1h
Y3JvKG9yaWdpbikgXAogICAgIG1hY3JvKG9zckV4aXRTaXRlcykgXAogICAgIG1hY3JvKG9zckV4
aXRzKSBcCisgICAgbWFjcm8ob3ZlcmZsb3cpIFwKICAgICBtYWNybyhwYXJzZSkgXAogICAgIG1h
Y3JvKHBhcnNlSW50KSBcCiAgICAgbWFjcm8ocGFyc2VGbG9hdCkgXApAQCAtMjQ1LDYgKzI0OSw3
IEBACiAgICAgbWFjcm8odXNhZ2UpIFwKICAgICBtYWNybyh2YWx1ZSkgXAogICAgIG1hY3JvKHZh
bHVlT2YpIFwKKyAgICBtYWNybyh3ZWVrKSBcCiAgICAgbWFjcm8od2Vla2RheSkgXAogICAgIG1h
Y3JvKHdlZWtzKSBcCiAgICAgbWFjcm8od3JpdGFibGUpIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSVNPODYwMS5jcHAKaW5kZXggOWU0MmFmYzEzM2MwN2UzZmI5MWI4OTc3NTZlM2Ex
NTUxMjNhZjkzNy4uNTNmNTk2Yzc0ZDQ2NjQ5MmQwOTM3YjZlMmM1Y2JmM2EwYzYyZWZjOCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAKQEAgLTEsNSArMSw2IEBA
CiAvKgogICogQ29weXJpZ2h0IChDKSAyMDIxIFNvbnkgSW50ZXJhY3RpdmUgRW50ZXJ0YWlubWVu
dCBJbmMuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgogICoKICAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCkBAIC0yNiw3ICsyNyw5IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAj
aW5jbHVkZSAiSVNPODYwMS5oIgogCisjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUg
IlBhcnNlSW50LmgiCisjaW5jbHVkZSA8d3RmL0RhdGVNYXRoLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oPgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTM4LDYgKzQx
LDE2IEBAIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBuc1BlclNlY29uZCA9IDEwMDBMTCAqIDEw
MDAgKiAxMDAwOwogc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IG5zUGVyTWlsbGlzZWNvbmQgPSAx
MDAwTEwgKiAxMDAwOwogc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IG5zUGVyTWljcm9zZWNvbmQg
PSAxMDAwTEw7CiAKK3N0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRGb3JUaW1lWm9uZU5hbWUo
U3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgY29uc3QgYXV0byYgdGltZVpvbmVzID0gaW50bEF2
YWlsYWJsZVRpbWVab25lcygpOworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8
IHRpbWVab25lcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdB
U0NJSUNhc2UodGltZVpvbmVzW2luZGV4XSwgc3RyaW5nKSkKKyAgICAgICAgICAgIHJldHVybiBp
bmRleDsKKyAgICB9CisgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKK30KKwogdGVtcGxhdGU8dHlw
ZW5hbWUgQ2hhclR5cGU+CiBpbnQzMl90IHBhcnNlRGVjaW1hbEludDMyKGNvbnN0IENoYXJUeXBl
KiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW5ndGgpCiB7CkBAIC0yNDMsMzIgKzI1NiwyNiBAQCBz
dGQ6Om9wdGlvbmFsPER1cmF0aW9uPiBwYXJzZUR1cmF0aW9uKFN0cmluZ1ZpZXcgc3RyaW5nKQog
ICAgIH0pOwogfQogCisKK2VudW0gY2xhc3MgU2Vjb25kNjBNb2RlIHsgQWNjZXB0LCBSZWplY3Qg
fTsKIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Ci1zdGF0aWMgc3RkOjpvcHRpb25h
bDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChTdHJpbmdQYXJzaW5nQnVm
ZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCitzdGF0aWMgc3RkOjpvcHRpb25hbDxQbGFpblRp
bWU+IHBhcnNlVGltZVNwZWMoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVm
ZmVyLCBTZWNvbmQ2ME1vZGUgc2Vjb25kNjBNb2RlKQogewotICAgIC8vIFRpbWVab25lTnVtZXJp
Y1VUQ09mZnNldCA6Ci0gICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lWm9uZVVU
Q09mZnNldEhvdXIKLSAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRD
T2Zmc2V0SG91ciA6IFRpbWVab25lVVRDT2Zmc2V0TWludXRlCi0gICAgLy8gICAgIFRpbWVab25l
VVRDT2Zmc2V0U2lnbiBUaW1lWm9uZVVUQ09mZnNldEhvdXIgVGltZVpvbmVVVENPZmZzZXRNaW51
dGUKLSAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91
ciA6IFRpbWVab25lVVRDT2Zmc2V0TWludXRlIDogVGltZVpvbmVVVENPZmZzZXRTZWNvbmQgVGlt
ZVpvbmVVVENPZmZzZXRGcmFjdGlvbltvcHRdCi0gICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0
U2lnbiBUaW1lWm9uZVVUQ09mZnNldEhvdXIgVGltZVpvbmVVVENPZmZzZXRNaW51dGUgVGltZVpv
bmVVVENPZmZzZXRTZWNvbmRbb3B0XQorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jcHJvZC1UaW1lU3BlYworICAgIC8vIFRpbWVTcGVjIDoKKyAgICAvLyAgICAgVGlt
ZUhvdXIKKyAgICAvLyAgICAgVGltZUhvdXIgOiBUaW1lTWludXRlCisgICAgLy8gICAgIFRpbWVI
b3VyIFRpbWVNaW51dGUKKyAgICAvLyAgICAgVGltZUhvdXIgOiBUaW1lTWludXRlIDogVGltZVNl
Y29uZCBUaW1lRnJhY3Rpb25bb3B0XQorICAgIC8vICAgICBUaW1lSG91ciBUaW1lTWludXRlIFRp
bWVTZWNvbmQgVGltZUZyYWN0aW9uW29wdF0KICAgICAvLwotICAgIC8vICBNYXhpbXVtIGFuZCBt
aW5pbXVtIHZhbHVlcyBhcmUgwrEyMzo1OTo1OS45OTk5OTk5OTkgPSDCsTg2Mzk5OTk5OTk5OTk5
bnMsIHdoaWNoIGNhbiBiZSByZXByZXNlbnRlZCBieSBpbnQ2NF90IC8gZG91YmxlJ3MgaW50ZWdl
ciBwYXJ0LgorICAgIC8vICBUaW1lU2Vjb25kIGNhbiBiZSA2MC4gQW5kIGlmIGl0IGlzIDYwLCB3
ZSBpbnRlcnByZXQgaXQgYXMgNTkuCisgICAgLy8gIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBhcnNlaXNvZGF0ZXRpbWUKIAotICAgIC8vIHNpZ24gYW5k
IGhvdXIuCi0gICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDMpCi0gICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7Ci0KLSAgICBpbnQ2NF90IGZhY3RvciA9IDE7Ci0gICAgaWYgKCpi
dWZmZXIgPT0gJysnKQotICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwotICAgIGVsc2UgaWYgKCpi
dWZmZXIgPT0gJy0nIHx8ICpidWZmZXIgPT0gMHgyMjEyKSB7Ci0gICAgICAgIGZhY3RvciA9IC0x
OwotICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwotICAgIH0gZWxzZQorICAgIGlmIChidWZmZXIu
bGVuZ3RoUmVtYWluaW5nKCkgPCAyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0g
ICAgaW50NjRfdCBob3VyID0gMDsKKyAgICB1bnNpZ25lZCBob3VyID0gMDsKICAgICBBU1NFUlQo
YnVmZmVyLmxlbmd0aFJlbWFpbmluZygpID49IDIpOwogICAgIGF1dG8gZmlyc3RIb3VyQ2hhcmFj
dGVyID0gKmJ1ZmZlcjsKICAgICBpZiAoZmlyc3RIb3VyQ2hhcmFjdGVyID49ICcwJyAmJiBmaXJz
dEhvdXJDaGFyYWN0ZXIgPD0gJzInKSB7CkBAIC0yODQsMTUgKzI5MSwxNiBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChTdHJpbmdQ
YXJzaW5nQnVmZmVyPAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGJ1
ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gKG5zUGVySG91ciAqIGhvdXIpICogZmFjdG9y
OworICAgICAgICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIDAsIDAsIDAsIDAsIDApOwogCiAgICAg
Ym9vbCBzcGxpdEJ5Q29sb24gPSBmYWxzZTsKICAgICBpZiAoKmJ1ZmZlciA9PSAnOicpIHsKLSAg
ICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKICAgICAgICAgc3BsaXRCeUNvbG9uID0gdHJ1ZTsKLSAg
ICB9CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgfSBlbHNlIGlmICghKCpidWZmZXIg
Pj0gJzAnICYmICpidWZmZXIgPD0gJzUnKSkKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZShob3Vy
LCAwLCAwLCAwLCAwLCAwKTsKIAotICAgIGludDY0X3QgbWludXRlID0gMDsKKyAgICB1bnNpZ25l
ZCBtaW51dGUgPSAwOwogICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCAyKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gZmlyc3RNaW51dGVDaGFyYWN0ZXIg
PSAqYnVmZmVyOwpAQCAtMzA4LDE2ICszMTYsMTcgQEAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50
NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nUGFyc2luZ0J1ZmZlcjwK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChidWZmZXIuYXRFbmQoKSkK
LSAgICAgICAgcmV0dXJuIChuc1BlckhvdXIgKiBob3VyICsgbnNQZXJNaW51dGUgKiBtaW51dGUp
ICogZmFjdG9yOworICAgICAgICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgMCwgMCwg
MCwgMCk7CiAKICAgICBpZiAoc3BsaXRCeUNvbG9uKSB7CiAgICAgICAgIGlmICgqYnVmZmVyID09
ICc6JykKICAgICAgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CiAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICAgfQorICAgICAgICAgICAgcmV0dXJuIFBs
YWluVGltZShob3VyLCBtaW51dGUsIDAsIDAsIDAsIDApOworICAgIH0gZWxzZSBpZiAoISgqYnVm
ZmVyID49ICcwJyAmJiAoc2Vjb25kNjBNb2RlID09IFNlY29uZDYwTW9kZTo6QWNjZXB0ID8gKCpi
dWZmZXIgPD0gJzYnKSA6ICgqYnVmZmVyIDw9ICc1JykpKSkKKyAgICAgICAgcmV0dXJuIFBsYWlu
VGltZShob3VyLCBtaW51dGUsIDAsIDAsIDAsIDApOwogCi0gICAgaW50NjRfdCBzZWNvbmQgPSAw
OworICAgIHVuc2lnbmVkIHNlY29uZCA9IDA7CiAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5p
bmcoKSA8IDIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBmaXJzdFNl
Y29uZENoYXJhY3RlciA9ICpidWZmZXI7CkBAIC0zMjcsMzQgKzMzNiw4NCBAQCBzdGF0aWMgc3Rk
OjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChTdHJpbmdQ
YXJzaW5nQnVmZmVyPAogICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChzZWNvbmRTZWNvbmRDaGFy
YWN0ZXIpKQogICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICAgICAgc2Vjb25k
ID0gKHNlY29uZFNlY29uZENoYXJhY3RlciAtICcwJykgKyAxMCAqIChmaXJzdFNlY29uZENoYXJh
Y3RlciAtICcwJyk7Ci0gICAgICAgIEFTU0VSVChtaW51dGUgPCA2MCk7CisgICAgICAgIEFTU0VS
VChzZWNvbmQgPCA2MCk7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgfSBlbHNlIGlm
IChzZWNvbmQ2ME1vZGUgPT0gU2Vjb25kNjBNb2RlOjpBY2NlcHQgJiYgZmlyc3RTZWNvbmRDaGFy
YWN0ZXIgPT0gJzYnKSB7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIGF1dG8g
c2Vjb25kU2Vjb25kQ2hhcmFjdGVyID0gKmJ1ZmZlcjsKKyAgICAgICAgaWYgKHNlY29uZFNlY29u
ZENoYXJhY3RlciAhPSAnMCcpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICBzZWNvbmQgPSA1OTsKICAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKICAgICB9IGVsc2UK
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChidWZmZXIuYXRFbmQoKSkK
LSAgICAgICAgcmV0dXJuIChuc1BlckhvdXIgKiBob3VyICsgbnNQZXJNaW51dGUgKiBtaW51dGUg
KyBuc1BlclNlY29uZCAqIHNlY29uZCkgKiBmYWN0b3I7CisgICAgICAgIHJldHVybiBQbGFpblRp
bWUoaG91ciwgbWludXRlLCBzZWNvbmQsIDAsIDAsIDApOwogCiAgICAgaWYgKCpidWZmZXIgIT0g
Jy4nICYmICpidWZmZXIgIT0gJywnKQotICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCAwLCAwLCAwKTsKICAg
ICBidWZmZXIuYWR2YW5jZSgpOwogCiAgICAgdW5zaWduZWQgZGlnaXRzID0gMDsKLSAgICB3aGls
ZSAoZGlnaXRzIDwgYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpICYmIGlzQVNDSUlEaWdpdChidWZm
ZXJbZGlnaXRzXSkpCi0gICAgICAgIGRpZ2l0cysrOwotICAgIGlmICghZGlnaXRzIHx8IGRpZ2l0
cyA+IDkpCisgICAgdW5zaWduZWQgbWF4Q291bnQgPSBzdGQ6Om1pbjx1bnNpZ25lZD4oYnVmZmVy
Lmxlbmd0aFJlbWFpbmluZygpLCA5KTsKKyAgICBmb3IgKDsgZGlnaXRzIDwgbWF4Q291bnQ7ICsr
ZGlnaXRzKSB7CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KGJ1ZmZlcltkaWdpdHNdKSkKKyAg
ICAgICAgICAgIGJyZWFrOworICAgIH0KKyAgICBpZiAoIWRpZ2l0cykKICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKIAogICAgIFZlY3RvcjxMQ2hhciwgOT4gcGFkZGVkKDksICcwJyk7CiAg
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRpZ2l0czsgKytpKQogICAgICAgICBwYWRkZWRb
aV0gPSBidWZmZXJbaV07CiAgICAgYnVmZmVyLmFkdmFuY2VCeShkaWdpdHMpOwotICAgIGlmICgh
YnVmZmVyLmF0RW5kKCkpCisKKyAgICB1bnNpZ25lZCBtaWxsaXNlY29uZCA9IHBhcnNlRGVjaW1h
bEludDMyKHBhZGRlZC5kYXRhKCksIDMpOworICAgIHVuc2lnbmVkIG1pY3Jvc2Vjb25kID0gcGFy
c2VEZWNpbWFsSW50MzIocGFkZGVkLmRhdGEoKSArIDMsIDMpOworICAgIHVuc2lnbmVkIG5hbm9z
ZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQzMihwYWRkZWQuZGF0YSgpICsgNiwgMyk7CisKKyAgICBy
ZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZCwgbWljcm9z
ZWNvbmQsIG5hbm9zZWNvbmQpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBl
Pgorc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENP
ZmZzZXQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQoreworICAg
IC8vIFRpbWVab25lTnVtZXJpY1VUQ09mZnNldCA6CisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zm
c2V0U2lnbiBUaW1lWm9uZVVUQ09mZnNldEhvdXIKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZz
ZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciA6IFRpbWVab25lVVRDT2Zmc2V0TWludXRlCisg
ICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lWm9uZVVUQ09mZnNldEhvdXIgVGlt
ZVpvbmVVVENPZmZzZXRNaW51dGUKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRp
bWVab25lVVRDT2Zmc2V0SG91ciA6IFRpbWVab25lVVRDT2Zmc2V0TWludXRlIDogVGltZVpvbmVV
VENPZmZzZXRTZWNvbmQgVGltZVpvbmVVVENPZmZzZXRGcmFjdGlvbltvcHRdCisgICAgLy8gICAg
IFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lWm9uZVVUQ09mZnNldEhvdXIgVGltZVpvbmVVVENP
ZmZzZXRNaW51dGUgVGltZVpvbmVVVENPZmZzZXRTZWNvbmQgVGltZVpvbmVVVENPZmZzZXRGcmFj
dGlvbltvcHRdCisgICAgLy8KKyAgICAvLyAgVGhpcyBpcyB0aGUgc2FtZSB0bworICAgIC8vICAg
ICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVNwZWMKKyAgICAvLworICAgIC8vICBNYXhpbXVt
IGFuZCBtaW5pbXVtIHZhbHVlcyBhcmUgwrEyMzo1OTo1OS45OTk5OTk5OTkgPSDCsTg2Mzk5OTk5
OTk5OTk5bnMsIHdoaWNoIGNhbiBiZSByZXByZXNlbnRlZCBieSBpbnQ2NF90IC8gZG91YmxlJ3Mg
aW50ZWdlciBwYXJ0LgorCisgICAgLy8gc2lnbiBhbmQgaG91ci4KKyAgICBpZiAoYnVmZmVyLmxl
bmd0aFJlbWFpbmluZygpIDwgMykKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAg
IGludDY0X3QgbWlsbGlzZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQzMihwYWRkZWQuZGF0YSgpLCAz
KTsKLSAgICBpbnQ2NF90IG1pY3Jvc2Vjb25kID0gcGFyc2VEZWNpbWFsSW50MzIocGFkZGVkLmRh
dGEoKSArIDMsIDMpOwotICAgIGludDY0X3QgbmFub3NlY29uZCA9IHBhcnNlRGVjaW1hbEludDMy
KHBhZGRlZC5kYXRhKCkgKyA2LCAzKTsKKyAgICBpbnQ2NF90IGZhY3RvciA9IDE7CisgICAgaWYg
KCpidWZmZXIgPT0gJysnKQorICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgIGVsc2UgaWYg
KCpidWZmZXIgPT0gJy0nIHx8ICpidWZmZXIgPT0gMHgyMjEyKSB7CisgICAgICAgIGZhY3RvciA9
IC0xOworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgYXV0byBwbGFpblRpbWUgPSBwYXJzZVRpbWVTcGVjKGJ1
ZmZlciwgU2Vjb25kNjBNb2RlOjpSZWplY3QpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaW50NjRfdCBob3VyID0gcGxhaW5UaW1lLT5o
b3VyKCk7CisgICAgaW50NjRfdCBtaW51dGUgPSBwbGFpblRpbWUtPm1pbnV0ZSgpOworICAgIGlu
dDY0X3Qgc2Vjb25kID0gcGxhaW5UaW1lLT5zZWNvbmQoKTsKKyAgICBpbnQ2NF90IG1pbGxpc2Vj
b25kID0gcGxhaW5UaW1lLT5taWxsaXNlY29uZCgpOworICAgIGludDY0X3QgbWljcm9zZWNvbmQg
PSBwbGFpblRpbWUtPm1pY3Jvc2Vjb25kKCk7CisgICAgaW50NjRfdCBuYW5vc2Vjb25kID0gcGxh
aW5UaW1lLT5uYW5vc2Vjb25kKCk7CiAKICAgICByZXR1cm4gKG5zUGVySG91ciAqIGhvdXIgKyBu
c1Blck1pbnV0ZSAqIG1pbnV0ZSArIG5zUGVyU2Vjb25kICogc2Vjb25kICsgbnNQZXJNaWxsaXNl
Y29uZCAqIG1pbGxpc2Vjb25kICsgbnNQZXJNaWNyb3NlY29uZCAqIG1pY3Jvc2Vjb25kICsgbmFu
b3NlY29uZCkgKiBmYWN0b3I7CiB9CkBAIC0zNjIsNyArNDIxLDM4NSBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChTdHJpbmdQYXJz
aW5nQnVmZmVyPAogc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VU
Q09mZnNldChTdHJpbmdWaWV3IHN0cmluZykKIHsKICAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNG
b3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8aW50NjRf
dD4gewotICAgICAgICByZXR1cm4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoYnVmZmVy
KTsKKyAgICAgICAgYXV0byByZXN1bHQgPSBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChi
dWZmZXIpOworICAgICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9KTsKK30KKwordGVt
cGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8VGltZVpvbmU+IHBh
cnNlVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFj
dGVyVHlwZT4mIGJ1ZmZlcikKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3Byb2QtVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uCisgICAgLy8gVGltZVpvbmVC
cmFja2V0ZWRBbm5vdGF0aW9uIDoKKyAgICAvLyAgICAgWyBUaW1lWm9uZUJyYWNrZXRlZE5hbWUg
XQorICAgIC8vCisgICAgLy8gVGltZVpvbmVCcmFja2V0ZWROYW1lIDoKKyAgICAvLyAgICAgVGlt
ZVpvbmVJQU5BTmFtZQorICAgIC8vICAgICBFdGMvR01UIEFTQ0lJU2lnbiBIb3VyCisgICAgLy8g
ICAgIFRpbWVab25lVVRDT2Zmc2V0TmFtZQorCisgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5p
bmcoKSA8IDMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoKmJ1ZmZl
ciAhPSAnWycpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgYnVmZmVyLmFkdmFu
Y2UoKTsKKworICAgIHN3aXRjaCAoKmJ1ZmZlcikgeworICAgIGNhc2UgJysnOgorICAgIGNhc2Ug
Jy0nOgorICAgIGNhc2UgMHgyMjEyOiB7CisgICAgICAgIC8vIFRpbWVab25lVVRDT2Zmc2V0TmFt
ZSBpcyB0aGUgc2FtZSB0byBUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQuCisgICAgICAgIGF1dG8g
b2Zmc2V0ID0gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoYnVmZmVyKTsKKyAgICAgICAg
aWYgKCFvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBp
ZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICBpZiAoKmJ1ZmZlciAhPSAnXScpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICByZXR1cm4gb2Zmc2V0LnZhbHVl
KCk7CisgICAgfQorICAgIGNhc2UgJ0UnOiB7CisgICAgICAgIC8vICJFdGMvR01UKzIwIiBhbmQg
Il0iID0+IGxlbmd0aCBpcyAxMS4KKyAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmco
KSA+PSAxMSkgeworICAgICAgICAgICAgaWYgKGJ1ZmZlclswXSA9PSAnRScgJiYgYnVmZmVyWzFd
ID09ICd0JyAmJiBidWZmZXJbMl0gPT0gJ2MnICYmIGJ1ZmZlclszXSA9PSAnLycgJiYgYnVmZmVy
WzRdID09ICdHJyAmJiBidWZmZXJbNV0gPT0gJ00nICYmIGJ1ZmZlcls2XSA9PSAnVCcpIHsKKyAg
ICAgICAgICAgICAgICBhdXRvIHNpZ25DaGFyYWN0ZXIgPSBidWZmZXJbN107CisgICAgICAgICAg
ICAgICAgLy8gTm90IGluY2x1ZGluZyAweDIyMTIgc2luY2UgaXQgaXMgQVNDSUlTaWduLgorICAg
ICAgICAgICAgICAgIGlmIChzaWduQ2hhcmFjdGVyID09ICcrJyB8fCBzaWduQ2hhcmFjdGVyID09
ICctJykgeworICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGZhY3RvciA9IHNpZ25DaGFyYWN0
ZXIgPT0gJysnID8gMSA6IC0xOworICAgICAgICAgICAgICAgICAgICBpbnQ2NF90IGhvdXIgPSAw
OworICAgICAgICAgICAgICAgICAgICBhdXRvIGZpcnN0SG91ckNoYXJhY3RlciA9IGJ1ZmZlcls4
XTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0SG91ckNoYXJhY3RlciA+PSAnMCcgJiYg
Zmlyc3RIb3VyQ2hhcmFjdGVyIDw9ICcyJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYXV0
byBzZWNvbmRIb3VyQ2hhcmFjdGVyID0gYnVmZmVyWzldOworICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKGlzQVNDSUlEaWdpdChzZWNvbmRIb3VyQ2hhcmFjdGVyKSkgeworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGhvdXIgPSAoc2Vjb25kSG91ckNoYXJhY3RlciAtICcwJykgKyAxMCAq
IChmaXJzdEhvdXJDaGFyYWN0ZXIgLSAnMCcpOworICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGlmIChob3VyIDwgMjQgJiYgYnVmZmVyWzEwXSA9PSAnXScpIHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgYnVmZmVyLmFkdmFuY2VCeSgxMSk7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBuc1BlckhvdXIgKiBob3VyICogZmFjdG9yOworICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBGQUxMVEhST1VHSDsKKyAgICB9CisgICAgZGVmYXVsdDogeworICAgICAgICB1
bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAgIGZvciAoOyBpbmRleCA8IGJ1ZmZlci5sZW5ndGhS
ZW1haW5pbmcoKTsgKytpbmRleCkgeworICAgICAgICAgICAgaWYgKGJ1ZmZlcltpbmRleF0gPT0g
J10nKQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGlmICghaW5k
ZXgpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBTdHJpbmdWaWV3
IHRpbWVab25lU3RyaW5nID0gYnVmZmVyLnN0cmluZ1ZpZXdPZkNoYXJhY3RlcnNSZW1haW5pbmco
KS5sZWZ0KGluZGV4KTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZGVudGlm
aWVyID0gaWRGb3JUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcpOworICAgICAgICBpZiAoIWlk
ZW50aWZpZXIpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBidWZm
ZXIuYWR2YW5jZUJ5KGluZGV4KTsKKyAgICAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCpidWZmZXIgIT0gJ10nKQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2Uo
KTsKKyAgICAgICAgcmV0dXJuIGlkZW50aWZpZXIudmFsdWUoKTsKKyAgICB9CisgICAgfQorfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorYm9vbCBjYW5CZVRpbWVab25lKENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKQoreworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CisgICAg
Ly8gVVRDRGVzaWduYXRvcgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3Jh
bC8jcHJvZC1VVENEZXNpZ25hdG9yCisgICAgY2FzZSAneic6CisgICAgY2FzZSAnWic6CisgICAg
Ly8gVGltZVpvbmVVVENPZmZzZXRTaWduCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNwcm9kLVRpbWVab25lVVRDT2Zmc2V0U2lnbgorICAgIGNhc2UgJysnOgorICAg
IGNhc2UgJy0nOgorICAgIGNhc2UgMHgyMjEyOgorICAgIC8vIFRpbWVab25lQnJhY2tldGVkQW5u
b3RhdGlvbgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1U
aW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICBjYXNlICdbJzoKKyAgICAgICAgcmV0dXJu
IHRydWU7CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIH0KK30KKwor
dGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8VGltZVpvbmU+
IHBhcnNlVGltZVpvbmUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVy
KQoreworICAgIGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICBzd2l0Y2ggKCpidWZmZXIpIHsKKyAgICAvLyBVVENEZXNpZ25hdG9yCisgICAgLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVVUQ0Rlc2lnbmF0b3IKKyAg
ICBjYXNlICd6JzoKKyAgICBjYXNlICdaJzogeworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwor
ICAgICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gdXRjVGltZVpv
bmVJRCgpOworICAgICAgICBpZiAoKmJ1ZmZlciA9PSAnWycpIHsKKyAgICAgICAgICAgIGF1dG8g
dGltZVpvbmUgPSBwYXJzZVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbihidWZmZXIpOworICAg
ICAgICAgICAgaWYgKCF0aW1lWm9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIHRpbWVab25lLnZhbHVlKCk7CisgICAgICAgIH0KKyAg
ICAgICAgcmV0dXJuIHV0Y1RpbWVab25lSUQoKTsKKyAgICB9CisgICAgLy8gVGltZVpvbmVVVENP
ZmZzZXRTaWduCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9k
LVRpbWVab25lVVRDT2Zmc2V0U2lnbgorICAgIGNhc2UgJysnOgorICAgIGNhc2UgJy0nOgorICAg
IGNhc2UgMHgyMjEyOiB7CisgICAgICAgIGF1dG8gb2Zmc2V0ID0gcGFyc2VUaW1lWm9uZU51bWVy
aWNVVENPZmZzZXQoYnVmZmVyKTsKKyAgICAgICAgaWYgKCFvZmZzZXQpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAg
ICAgICByZXR1cm4gb2Zmc2V0LnZhbHVlKCk7CisgICAgICAgIGlmICgqYnVmZmVyID09ICdbJykg
eworICAgICAgICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpvbmVCcmFja2V0ZWRBbm5v
dGF0aW9uKGJ1ZmZlcik7CisgICAgICAgICAgICBpZiAoIXRpbWVab25lKQorICAgICAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gdGltZVpvbmUudmFs
dWUoKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gb2Zmc2V0LnZhbHVlKCk7CisgICAgfQor
ICAgIC8vIFRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbgorICAgIC8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1UaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAg
ICBjYXNlICdbJzogeworICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VUaW1lWm9uZUJyYWNr
ZXRlZEFubm90YXRpb24oYnVmZmVyKTsKKyAgICAgICAgaWYgKCF0aW1lWm9uZSkKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiB0aW1lWm9uZS52YWx1ZSgp
OworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
IH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8
c3RkOjp0dXBsZTxQbGFpblRpbWUsIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmU+Pj4gcGFyc2VUaW1l
KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3sKKyAgICAvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZQorICAgIC8vIFRpbWUg
OgorICAgIC8vICAgICBUaW1lU3BlYyBUaW1lWm9uZVtvcHRdCisgICAgYXV0byBwbGFpblRpbWUg
PSBwYXJzZVRpbWVTcGVjKGJ1ZmZlciwgU2Vjb25kNjBNb2RlOjpBY2NlcHQpOworICAgIGlmICgh
cGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmIChidWZmZXIu
YXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpblRpbWUudmFsdWUoKSwg
c3RkOjpudWxsb3B0IH07CisgICAgaWYgKGNhbkJlVGltZVpvbmUoKmJ1ZmZlcikpIHsKKyAgICAg
ICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpvbmUoYnVmZmVyKTsKKyAgICAgICAgaWYgKCF0
aW1lWm9uZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVy
biBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZhbHVlKCksIHRpbWVab25lIH07CisgICAgfQorICAg
IHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCB9Owor
fQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1p
c29kYXlzaW5tb250aAoraW5saW5lIHVuc2lnbmVkIGRheXNJbk1vbnRoKGludDMyX3QgeWVhciwg
dW5zaWduZWQgbW9udGgpCit7CisgICAgc3dpdGNoIChtb250aCkgeworICAgIGNhc2UgMToKKyAg
ICBjYXNlIDM6CisgICAgY2FzZSA1OgorICAgIGNhc2UgNzoKKyAgICBjYXNlIDg6CisgICAgY2Fz
ZSAxMDoKKyAgICBjYXNlIDEyOgorICAgICAgICByZXR1cm4gMzE7CisgICAgY2FzZSA0OgorICAg
IGNhc2UgNjoKKyAgICBjYXNlIDk6CisgICAgY2FzZSAxMToKKyAgICAgICAgcmV0dXJuIDMwOwor
ICAgIGNhc2UgMjoKKyAgICAgICAgaWYgKGlzTGVhcFllYXIoeWVhcikpCisgICAgICAgICAgICBy
ZXR1cm4gMjk7CisgICAgICAgIHJldHVybiAyODsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisK
K3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFsPFBsYWluRGF0
ZT4gcGFyc2VEYXRlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikK
K3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtRGF0ZQor
ICAgIC8vIERhdGUgOgorICAgIC8vICAgICBEYXRlWWVhciAtIERhdGVNb250aCAtIERhdGVEYXkK
KyAgICAvLyAgICAgRGF0ZVllYXIgRGF0ZU1vbnRoIERhdGVEYXkKKyAgICAvLworICAgIC8vIERh
dGVZZWFyIDoKKyAgICAvLyAgICAgRGF0ZUZvdXJEaWdpdFllYXIKKyAgICAvLyAgICAgRGF0ZUV4
dGVuZGVkWWVhcgorICAgIC8vCisgICAgLy8gRGF0ZUZvdXJEaWdpdFllYXIgOgorICAgIC8vICAg
ICBEaWdpdCBEaWdpdCBEaWdpdCBEaWdpdAorICAgIC8vCisgICAgLy8gRGF0ZUV4dGVuZGVkWWVh
ciA6CisgICAgLy8gICAgIFNpZ24gRGlnaXQgRGlnaXQgRGlnaXQgRGlnaXQgRGlnaXQgRGlnaXQK
KyAgICAvLworICAgIC8vIERhdGVNb250aCA6CisgICAgLy8gICAgIDAgTm9uemVyb0RpZ2l0Cisg
ICAgLy8gICAgIDEwCisgICAgLy8gICAgIDExCisgICAgLy8gICAgIDEyCisgICAgLy8KKyAgICAv
LyBEYXRlRGF5IDoKKyAgICAvLyAgICAgMCBOb256ZXJvRGlnaXQKKyAgICAvLyAgICAgMSBEaWdp
dAorICAgIC8vICAgICAyIERpZ2l0CisgICAgLy8gICAgIDMwCisgICAgLy8gICAgIDMxCisKKyAg
ICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBib29sIHNpeERpZ2l0c1llYXIgPSBmYWxzZTsKKyAgICBpbnQgeWVhckZhY3RvciA9IDE7Cisg
ICAgaWYgKCpidWZmZXIgPT0gJysnKSB7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAg
ICAgIHNpeERpZ2l0c1llYXIgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoKmJ1ZmZlciA9PSAnLScg
fHwgKmJ1ZmZlciA9PSAweDIyMTIpIHsKKyAgICAgICAgeWVhckZhY3RvciA9IC0xOworICAgICAg
ICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBzaXhEaWdpdHNZZWFyID0gdHJ1ZTsKKyAgICB9
IGVsc2UgaWYgKCFpc0FTQ0lJRGlnaXQoKmJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisKKyAgICBpbnQzMl90IHllYXIgPSAwOworICAgIGlmIChzaXhEaWdpdHNZZWFyKSB7
CisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCA2KQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGlu
ZGV4IDwgNjsgKytpbmRleCkgeworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoYnVmZmVy
W2luZGV4XSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
fQorICAgICAgICB5ZWFyID0gcGFyc2VEZWNpbWFsSW50MzIoYnVmZmVyLnBvc2l0aW9uKCksIDYp
ICogeWVhckZhY3RvcjsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2VCeSg2KTsKKyAgICB9IGVsc2Ug
eworICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgNCkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IDQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KGJ1ZmZl
cltpbmRleF0pKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IH0KKyAgICAgICAgeWVhciA9IHBhcnNlRGVjaW1hbEludDMyKGJ1ZmZlci5wb3NpdGlvbigpLCA0
KTsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2VCeSg0KTsKKyAgICB9CisKKyAgICBpZiAoYnVmZmVy
LmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBib29sIHNwbGl0
QnlIeXBoZW4gPSBmYWxzZTsKKyAgICBpZiAoKmJ1ZmZlciA9PSAnLScpIHsKKyAgICAgICAgc3Bs
aXRCeUh5cGhlbiA9IHRydWU7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIGlm
IChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCA1KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmlu
ZygpIDwgNCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAgIC8v
IFdlIGVuc3VyZWQgdGhhdCBidWZmZXIgaGFzIGVub3VnaCBsZW5ndGggZm9yIG1vbnRoIGFuZCBk
YXkuIFdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGxlbmd0aC4KKworICAgIHVuc2lnbmVkIG1vbnRo
ID0gMDsKKyAgICBhdXRvIGZpcnN0TW9udGhDaGFyYWN0ZXIgPSAqYnVmZmVyOworICAgIGlmIChm
aXJzdE1vbnRoQ2hhcmFjdGVyID09ICcwJyB8fCBmaXJzdE1vbnRoQ2hhcmFjdGVyID09ICcxJykg
eworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBhdXRvIHNlY29uZE1vbnRoQ2hh
cmFjdGVyID0gKmJ1ZmZlcjsKKyAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc2Vjb25kTW9udGhD
aGFyYWN0ZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgbW9u
dGggPSAoc2Vjb25kTW9udGhDaGFyYWN0ZXIgLSAnMCcpICsgMTAgKiAoZmlyc3RNb250aENoYXJh
Y3RlciAtICcwJyk7CisgICAgICAgIGlmICghbW9udGggfHwgbW9udGggPiAxMikKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAg
fSBlbHNlCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoc3BsaXRCeUh5
cGhlbikgeworICAgICAgICBpZiAoKmJ1ZmZlciA9PSAnLScpCisgICAgICAgICAgICBidWZmZXIu
YWR2YW5jZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgIH0KKworICAgIHVuc2lnbmVkIGRheSA9IDA7CisgICAgYXV0byBmaXJzdERheUNoYXJh
Y3RlciA9ICpidWZmZXI7CisgICAgaWYgKGZpcnN0RGF5Q2hhcmFjdGVyID49ICcwJyAmJiBmaXJz
dERheUNoYXJhY3RlciA8PSAnMycpIHsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICAg
ICAgYXV0byBzZWNvbmREYXlDaGFyYWN0ZXIgPSAqYnVmZmVyOworICAgICAgICBpZiAoIWlzQVND
SUlEaWdpdChzZWNvbmREYXlDaGFyYWN0ZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgZGF5ID0gKHNlY29uZERheUNoYXJhY3RlciAtICcwJykgKyAxMCAqIChm
aXJzdERheUNoYXJhY3RlciAtICcwJyk7CisgICAgICAgIGlmICghZGF5IHx8IGRheSA+IGRheXNJ
bk1vbnRoKHllYXIsIG1vbnRoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICByZXR1cm4gUGxhaW5EYXRlKHllYXIsIG1vbnRoLCBkYXkpOworfQor
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxzdGQ6OnR1
cGxlPFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRpbWU+LCBzdGQ6Om9wdGlvbmFsPFRp
bWVab25lPj4+IHBhcnNlRGF0ZVRpbWUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBl
PiYgYnVmZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
cHJvZC1EYXRlVGltZQorICAgIC8vIERhdGVUaW1lIDoKKyAgICAvLyAgICAgRGF0ZSBUaW1lU3Bl
Y1NlcGFyYXRvcltvcHRdIFRpbWVab25lW29wdF0KKyAgICAvLworICAgIC8vIFRpbWVTcGVjU2Vw
YXJhdG9yIDoKKyAgICAvLyAgICAgRGF0ZVRpbWVTZXBhcmF0b3IgVGltZVNwZWMKKyAgICBhdXRv
IHBsYWluRGF0ZSA9IHBhcnNlRGF0ZShidWZmZXIpOworICAgIGlmICghcGxhaW5EYXRlKQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpbkRhdGUudmFsdWUoKSwgc3RkOjpudWxsb3B0LCBz
dGQ6Om51bGxvcHQgfTsKKworICAgIGlmICgqYnVmZmVyID09ICcgJyB8fCAqYnVmZmVyID09ICdU
JyB8fCAqYnVmZmVyID09ICd0JykgeworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAg
ICBhdXRvIHBsYWluVGltZUFuZFRpbWVab25lID0gcGFyc2VUaW1lKGJ1ZmZlcik7CisgICAgICAg
IGlmICghcGxhaW5UaW1lQW5kVGltZVpvbmUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICBhdXRvIFtwbGFpblRpbWUsIHRpbWVab25lXSA9IHBsYWluVGltZUFuZFRp
bWVab25lLnZhbHVlKCk7CisgICAgICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5EYXRlLnZh
bHVlKCksIHBsYWluVGltZSwgdGltZVpvbmUgfTsKKyAgICB9CisKKyAgICBpZiAoY2FuQmVUaW1l
Wm9uZSgqYnVmZmVyKSkgeworICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VUaW1lWm9uZShi
dWZmZXIpOworICAgICAgICBpZiAoIXRpbWVab25lKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpbkRhdGUudmFsdWUoKSwg
c3RkOjpudWxsb3B0LCB0aW1lWm9uZSB9OworICAgIH0KKworICAgIHJldHVybiBzdGQ6OnR1cGxl
IHsgcGxhaW5EYXRlLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07Cit9CisK
K3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpblRpbWUsIHN0ZDo6b3B0aW9uYWw8VGltZVpv
bmU+Pj4gcGFyc2VUaW1lKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHJldHVybiByZWFkQ2hh
cmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25h
bDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZT4+PiB7CisgICAg
ICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VUaW1lKGJ1ZmZlcik7CisgICAgICAgIGlmICghYnVmZmVy
LmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gcmVzdWx0OworICAgIH0pOworfQorCitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5E
YXRlLCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4sIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmU+Pj4g
cGFyc2VEYXRlVGltZShTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICByZXR1cm4gcmVhZENoYXJh
Y3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZmZXIpIC0+IHN0ZDo6b3B0aW9uYWw8
c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9uYWw8UGxhaW5UaW1lPiwgc3RkOjpvcHRp
b25hbDxUaW1lWm9uZT4+PiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VEYXRlVGltZShi
dWZmZXIpOworICAgICAgICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJu
IHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKICAgICB9KTsKIH0KIApAQCAt
MzgyLDEzICs4MTksMTkgQEAgU3RyaW5nIGZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKGludDY0
X3Qgb2Zmc2V0KQogICAgIGlmIChuYW5vc2Vjb25kcykgewogICAgICAgICAvLyBTaW5jZSBuc1Bl
clNlY29uZCBpcyAxMDAwMDAwMDAwLCBzdHJpbmdpZmllZCBuYW5vc2Vjb25kcyB0YWtlcyBhdCBt
b3N0IDkgY2hhcmFjdGVycyAoOTk5OTk5OTk5KS4KICAgICAgICAgYXV0byBmcmFjdGlvbiA9IFdU
Rjo6bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TENoYXIsIDk+PihuYW5vc2Vjb25kcyk7
Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKICAgICAgICAgdW5zaWduZWQgcGFkZGluZ0xl
bmd0aCA9IDkgLSBmcmFjdGlvbi5zaXplKCk7Ci0gICAgICAgIGZvciAoOyBpbmRleCA8IGZyYWN0
aW9uLnNpemUoKTsgKytpbmRleCkgewotICAgICAgICAgICAgaWYgKGZyYWN0aW9uW2luZGV4XSA9
PSAnMCcpCisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gZnJhY3Rpb24uc2l6ZSgpOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2YWxpZExlbmd0aDsKKyAgICAgICAgd2hpbGUgKGlu
ZGV4LS0pIHsKKyAgICAgICAgICAgIGlmIChmcmFjdGlvbltpbmRleF0gIT0gJzAnKSB7CisgICAg
ICAgICAgICAgICAgdmFsaWRMZW5ndGggPSBpbmRleCArIDE7CiAgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZnJhY3Rpb24ucmVzaXplKGlu
ZGV4KTsKKyAgICAgICAgaWYgKHZhbGlkTGVuZ3RoKQorICAgICAgICAgICAgZnJhY3Rpb24ucmVz
aXplKHZhbGlkTGVuZ3RoLnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmcmFj
dGlvbi5jbGVhcigpOwogICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhuZWdhdGl2ZSA/ICctJyA6
ICcrJywgcGFkKCcwJywgMiwgaG91cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpLCAnOics
IHBhZCgnMCcsIDIsIHNlY29uZHMpLCAnLicsIHBhZCgnMCcsIHBhZGRpbmdMZW5ndGgsIGVtcHR5
U3RyaW5nKCkpLCBmcmFjdGlvbik7CiAgICAgfQogICAgIGlmIChzZWNvbmRzKQpAQCAtMzk2LDUg
KzgzOSw0MCBAQCBTdHJpbmcgZm9ybWF0VGltZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCBvZmZz
ZXQpCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcobmVnYXRpdmUgPyAnLScgOiAnKycsIHBhZCgnMCcs
IDIsIGhvdXJzKSwgJzonLCBwYWQoJzAnLCAyLCBtaW51dGVzKSk7CiB9CiAKK1N0cmluZyB0ZW1w
b3JhbFRpbWVUb1N0cmluZyhQbGFpblRpbWUgcGxhaW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lv
biwgdW5zaWduZWQ+IHByZWNpc2lvbikKK3sKKyAgICBhdXRvIFtwcmVjaXNpb25UeXBlLCBwcmVj
aXNpb25WYWx1ZV0gPSBwcmVjaXNpb247CisgICAgQVNTRVJUKHByZWNpc2lvblR5cGUgPT0gUHJl
Y2lzaW9uOjpBdXRvIHx8IHByZWNpc2lvblZhbHVlIDwgMTApOworICAgIGlmIChwcmVjaXNpb25U
eXBlID09IFByZWNpc2lvbjo6TWludXRlKQorICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhwYWQo
JzAnLCAyLCBwbGFpblRpbWUuaG91cigpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUubWlu
dXRlKCkpKTsKKworICAgIGludDY0X3QgZnJhY3Rpb25OYW5vc2Vjb25kcyA9IHN0YXRpY19jYXN0
PGludDY0X3Q+KHBsYWluVGltZS5taWxsaXNlY29uZCgpKSAqIG5zUGVyTWlsbGlzZWNvbmQgKyBz
dGF0aWNfY2FzdDxpbnQ2NF90PihwbGFpblRpbWUubWljcm9zZWNvbmQoKSkgKiBuc1Blck1pY3Jv
c2Vjb25kICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4ocGxhaW5UaW1lLm5hbm9zZWNvbmQoKSk7Cisg
ICAgaWYgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpBdXRvKSB7CisgICAgICAgIGlmICgh
ZnJhY3Rpb25OYW5vc2Vjb25kcykKKyAgICAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgn
MCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51
dGUoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLnNlY29uZCgpKSk7CisgICAgICAgIGF1
dG8gZnJhY3Rpb24gPSBXVEY6Om51bWJlclRvU3RyaW5nVW5zaWduZWQ8VmVjdG9yPExDaGFyLCA5
Pj4oZnJhY3Rpb25OYW5vc2Vjb25kcyk7CisgICAgICAgIHVuc2lnbmVkIHBhZGRpbmdMZW5ndGgg
PSA5IC0gZnJhY3Rpb24uc2l6ZSgpOworICAgICAgICB1bnNpZ25lZCBpbmRleCA9IGZyYWN0aW9u
LnNpemUoKTsKKyAgICAgICAgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gdmFsaWRMZW5ndGg7Cisg
ICAgICAgIHdoaWxlIChpbmRleC0tKSB7CisgICAgICAgICAgICBpZiAoZnJhY3Rpb25baW5kZXhd
ICE9ICcwJykgeworICAgICAgICAgICAgICAgIHZhbGlkTGVuZ3RoID0gaW5kZXggKyAxOworICAg
ICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlm
ICh2YWxpZExlbmd0aCkKKyAgICAgICAgICAgIGZyYWN0aW9uLnJlc2l6ZSh2YWxpZExlbmd0aC52
YWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgZnJhY3Rpb24uY2xlYXIoKTsKKyAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgMiwgcGxhaW5UaW1lLmhvdXIoKSksICc6
JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLm1pbnV0ZSgpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFp
blRpbWUuc2Vjb25kKCkpLCAnLicsIHBhZCgnMCcsIHBhZGRpbmdMZW5ndGgsIGVtcHR5U3RyaW5n
KCkpLCBmcmFjdGlvbik7CisgICAgfQorICAgIGlmICghcHJlY2lzaW9uVmFsdWUpCisgICAgICAg
IHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOicsIHBh
ZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1l
LnNlY29uZCgpKSk7CisgICAgYXV0byBmcmFjdGlvbiA9IFdURjo6bnVtYmVyVG9TdHJpbmdVbnNp
Z25lZDxWZWN0b3I8TENoYXIsIDk+PihmcmFjdGlvbk5hbm9zZWNvbmRzKTsKKyAgICB1bnNpZ25l
ZCBwYWRkaW5nTGVuZ3RoID0gOSAtIGZyYWN0aW9uLnNpemUoKTsKKyAgICBmcmFjdGlvbi5yZXNp
emUocHJlY2lzaW9uVmFsdWUpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBs
YWluVGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSksICc6
JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLnNlY29uZCgpKSwgJy4nLCBwYWQoJzAnLCBwYWRkaW5n
TGVuZ3RoLCBlbXB0eVN0cmluZygpKSwgZnJhY3Rpb24pOworfQorCiB9IC8vIG5hbWVzcGFjZSBJ
U084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lT
Tzg2MDEuaAppbmRleCA2NzY4OWQxYzI0NWFmZWUyYWMyNjk1OWMyOTcwZGQ0OTYzYWUzMDAyLi5k
OTZmNDJjNTk2NGQ0NTEyYzMxMzBiMzcwZTU3YWYwNzcxOTllM2QzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdo
dCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpA
QCAtMjUsNiArMjYsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkludGxPYmplY3Qu
aCIKICNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKQEAgLTQ4
LDkgKzUwLDY0IEBAIHN0cnVjdCBEdXJhdGlvbiB7CiAgICAgc3RkOjphcnJheTxkb3VibGUsIG51
bWJlck9mVGVtcG9yYWxVbml0cz4gZGF0YSB7IH07CiB9OwogCitjbGFzcyBQbGFpblRpbWUgewor
cHVibGljOgorICAgIFBsYWluVGltZSgpID0gZGVmYXVsdDsKKyAgICBQbGFpblRpbWUodW5zaWdu
ZWQgaG91ciwgdW5zaWduZWQgbWludXRlLCB1bnNpZ25lZCBzZWNvbmQsIHVuc2lnbmVkIG1pbGxp
c2Vjb25kLCB1bnNpZ25lZCBtaWNyb3NlY29uZCwgdW5zaWduZWQgbmFub3NlY29uZCkKKyAgICAg
ICAgOiBtX2hvdXIoaG91cikKKyAgICAgICAgLCBtX21pbnV0ZShtaW51dGUpCisgICAgICAgICwg
bV9zZWNvbmQoc2Vjb25kKQorICAgICAgICAsIG1fbWlsbGlzZWNvbmQobWlsbGlzZWNvbmQpCisg
ICAgICAgICwgbV9taWNyb3NlY29uZChtaWNyb3NlY29uZCkKKyAgICAgICAgLCBtX25hbm9zZWNv
bmQobmFub3NlY29uZCkKKyAgICB7IH0KKworI2RlZmluZSBKU0NfREVGSU5FX0lTTzg2MDFfUExB
SU5fVElNRV9GSUVMRChuYW1lLCBjYXBpdGFsaXplZE5hbWUpIFwKKyAgICB1bnNpZ25lZCBuYW1l
KCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7IH0KKyAgICBKU0NfVEVNUE9SQUxfUExBSU5fVElN
RV9VTklUUyhKU0NfREVGSU5FX0lTTzg2MDFfUExBSU5fVElNRV9GSUVMRCk7CisjdW5kZWYgSlND
X0RFRklORV9JU084NjAxX0RVUkFUSU9OX0ZJRUxECisKK3ByaXZhdGU6CisgICAgdWludDhfdCBt
X2hvdXIgeyAwIH07CisgICAgdWludDhfdCBtX21pbnV0ZSB7IDAgfTsKKyAgICB1aW50OF90IG1f
c2Vjb25kIHsgMCB9OworICAgIHVpbnQxNl90IG1fbWlsbGlzZWNvbmQgeyAwIH07CisgICAgdWlu
dDE2X3QgbV9taWNyb3NlY29uZCB7IDAgfTsKKyAgICB1aW50MTZfdCBtX25hbm9zZWNvbmQgeyAw
IH07Cit9OworCisvLyBOb3RlIHRoYXQgUGxhaW5EYXRlIGRvZXMgbm90IGluY2x1ZGUgd2VlayB1
bml0LgorLy8geWVhciBjYW4gYmUgbmVnYXRpdmUuIEFuZCBtb250aCBhbmQgZGF5IHN0YXJ0cyB3
aXRoIDEuCitjbGFzcyBQbGFpbkRhdGUgeworcHVibGljOgorICAgIFBsYWluRGF0ZSgpID0gZGVm
YXVsdDsKKyAgICBQbGFpbkRhdGUoaW50MzJfdCB5ZWFyLCB1bnNpZ25lZCBtb250aCwgdW5zaWdu
ZWQgZGF5KQorICAgICAgICA6IG1feWVhcih5ZWFyKQorICAgICAgICAsIG1fbW9udGgobW9udGgp
CisgICAgICAgICwgbV9kYXkoZGF5KQorICAgIHsKKyAgICB9CisKKyAgICBpbnQzMl90IHllYXIo
KSBjb25zdCB7IHJldHVybiBtX3llYXI7IH0KKyAgICB1aW50OF90IG1vbnRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9tb250aDsgfQorICAgIHVpbnQ4X3QgZGF5KCkgY29uc3QgeyByZXR1cm4gbV9kYXk7
IH0KKworcHJpdmF0ZToKKyAgICBpbnQzMl90IG1feWVhciB7IDAgfTsKKyAgICB1aW50OF90IG1f
bW9udGggeyAxIH07CisgICAgdWludDhfdCBtX2RheSB7IDEgfTsKK307CisKK3VzaW5nIFRpbWVa
b25lID0gVmFyaWFudDxUaW1lWm9uZUlELCBpbnQ2NF90PjsKKworLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNzdXAtaXN2YWxpZHRpbWV6b25lbmFtZQorc3RkOjpvcHRpb25h
bDxUaW1lWm9uZUlEPiBpZEZvclRpbWVab25lTmFtZShTdHJpbmdWaWV3KTsKIHN0ZDo6b3B0aW9u
YWw8RHVyYXRpb24+IHBhcnNlRHVyYXRpb24oU3RyaW5nVmlldyk7CiBzdGQ6Om9wdGlvbmFsPGlu
dDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1ZpZXcpOworc3RkOjpv
cHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZT4+PiBw
YXJzZVRpbWUoU3RyaW5nVmlldyk7CitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5EYXRl
LCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4sIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmU+Pj4gcGFy
c2VEYXRlVGltZShTdHJpbmdWaWV3KTsKIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNldFN0cmlu
ZyhpbnQ2NF90KTsKK1N0cmluZyB0ZW1wb3JhbFRpbWVUb1N0cmluZyhQbGFpblRpbWUsIHN0ZDo6
dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uKTsKIAogfSAvLyBuYW1lc3BhY2Ug
SVNPODYwMQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDhkOGU5NmU3NzU1ZDU4YWI4NDJlMzYwY2ZhZmIxOWQw
MGZlMjYyNzAuLjc5NzU5YmM1ZmE0NGZlMjk3NzI2MDVmNTZhNWNhOWIwODk1NjMxYzMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBAIC0xODM5LDYg
KzE4MzksMjMgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGxBdmFpbGFibGVUaW1lWm9uZXMo
KQogICAgIHJldHVybiBhdmFpbGFibGVUaW1lWm9uZXM7CiB9CiAKK1RpbWVab25lSUQgdXRjVGlt
ZVpvbmVJRFN0b3JhZ2UgeyBzdGQ6Om51bWVyaWNfbGltaXRzPFRpbWVab25lSUQ+OjptYXgoKSB9
OworVGltZVpvbmVJRCB1dGNUaW1lWm9uZUlEU2xvdygpCit7CisgICAgc3RhdGljIHN0ZDo6b25j
ZV9mbGFnIGluaXRpYWxpemVPbmNlOworICAgIHN0ZDo6Y2FsbF9vbmNlKGluaXRpYWxpemVPbmNl
LCBbJl0geworICAgICAgICBjb25zdCBhdXRvJiB0aW1lWm9uZXMgPSBpbnRsQXZhaWxhYmxlVGlt
ZVpvbmVzKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHRpbWVa
b25lcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlmICh0aW1lWm9uZXNbaW5kZXhd
ID09ICJVVEMiX3MpIHsKKyAgICAgICAgICAgICAgICB1dGNUaW1lWm9uZUlEU3RvcmFnZSA9IGlu
ZGV4OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQor
ICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworICAgIH0pOworICAgIHJldHVy
biB1dGNUaW1lWm9uZUlEU3RvcmFnZTsKK30KKwogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LWludGwtZW51bWVyYXRpb24vI3NlYy1hdmFpbGFibGV0aW1lem9uZXMKIHN0YXRpYyBKU0FycmF5
KiBhdmFpbGFibGVUaW1lWm9uZXMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCkKIHsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCA5NmQyMTg1NWM5
Y2E2ZjNlMzE5NmI3NGVhMDJkMGVkNTNkMzljMTMwLi5iM2UxNWQzMGJhOTNiNWIyMDViNTczZTA4
OWViYmJmMzljZTIxMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9i
amVjdC5oCkBAIC0xMTcsNiArMTE3LDE2IEBAIGlubGluZSBDYWxlbmRhcklEIGlzbzg2MDFDYWxl
bmRhcklEKCkKIHVzaW5nIFRpbWVab25lSUQgPSB1bnNpZ25lZDsKIGNvbnN0IFZlY3RvcjxTdHJp
bmc+JiBpbnRsQXZhaWxhYmxlVGltZVpvbmVzKCk7CiAKK2V4dGVybiBUaW1lWm9uZUlEIHV0Y1Rp
bWVab25lSURTdG9yYWdlOworVGltZVpvbmVJRCB1dGNUaW1lWm9uZUlEU2xvdygpOworaW5saW5l
IENhbGVuZGFySUQgdXRjVGltZVpvbmVJRCgpCit7CisgICAgdW5zaWduZWQgdmFsdWUgPSB1dGNU
aW1lWm9uZUlEU3RvcmFnZTsKKyAgICBpZiAodmFsdWUgPT0gc3RkOjpudW1lcmljX2xpbWl0czxU
aW1lWm9uZUlEPjo6bWF4KCkpCisgICAgICAgIHJldHVybiB1dGNUaW1lWm9uZUlEU2xvdygpOwor
ICAgIHJldHVybiB2YWx1ZTsKK30KKwogVHJpU3RhdGUgaW50bEJvb2xlYW5PcHRpb24oSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1lKTsKIFN0cmluZyBpbnRs
U3RyaW5nT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5
TmFtZSwgc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNoYXIqPiB2YWx1ZXMsIGNvbnN0IGNo
YXIqIG5vdEZvdW5kLCBjb25zdCBjaGFyKiBmYWxsYmFjayk7CiB1bnNpZ25lZCBpbnRsTnVtYmVy
T3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSwg
dW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQgbWF4aW11bSwgdW5zaWduZWQgZmFsbGJhY2spOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCmlu
ZGV4IGIyZmRmNDY0MzZlODc3NjA0OTA2NDhhZmQwMTQxYzgyMjM2MTQ5NTEuLjZkYTQ1ODgzNDFh
MDE2ZTkxYWI5MTM2OTAzNmYwYzk2ZGE0MTRmYjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAgLTIwNiw2ICsyMDYsOCBAQAogI2lu
Y2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKKyNpbmNsdWRlICJUZW1wb3Jh
bFBsYWluVGltZS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgiCiAj
aW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVQ
cm90b3R5cGUuaCIKICNpbmNsdWRlICJWTVRyYXBzSW5saW5lcy5oIgpAQCAtMTIzMiw2ICsxMjM0
LDEzIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBsb3dlck5hbWUgIyMgQ29uc3RydWN0
b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAgICAgICAgICAgICAgaW5pdC5zZXQo
VGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwg
ZHVyYXRpb25Qcm90b3R5cGUpKTsKICAgICAgICAgICAgIH0pOwogCisgICAgICAgIG1fcGxhaW5U
aW1lU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXpl
cjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOworICAgICAg
ICAgICAgICAgIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKiBwbGFpblRpbWVQcm90b3R5cGUg
PSBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3JlYXRlKGluaXQudm0sIGdsb2JhbE9iamVj
dCwgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBn
bG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJvdG90eXBlKCkpKTsKKyAgICAgICAg
ICAgICAgICBpbml0LnNldChUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQu
dm0sIGdsb2JhbE9iamVjdCwgcGxhaW5UaW1lUHJvdG90eXBlKSk7CisgICAgICAgICAgICB9KTsK
KwogICAgICAgICBtX3RpbWVab25lU3RydWN0dXJlLmluaXRMYXRlcigKICAgICAgICAgICAgIFtd
IChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CiAgICAgICAgICAgICAgICAg
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+KGlu
aXQub3duZXIpOwpAQCAtMjExOSw2ICsyMTI4LDcgQEAgdm9pZCBKU0dsb2JhbE9iamVjdDo6dmlz
aXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2aXNpdG9yKQogCiAgICAgdGhp
c09iamVjdC0+bV9jYWxlbmRhclN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2Jq
ZWN0LT5tX2R1cmF0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOworICAgIHRoaXNPYmplY3Qt
Pm1fcGxhaW5UaW1lU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1f
dGltZVpvbmVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAKICAgICB2aXNpdG9yLmFwcGVuZCh0
aGlzT2JqZWN0LT5tX251bGxHZXR0ZXJGdW5jdGlvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBkZWIzM2RiZDEwMzA4M2ExOGY0MGJh
N2FkYzU2OTUyNjAxNDk3ZDI5Li4xMjhiMzk5MTBkZDgwNTdmN2FhYmI1OTc3N2NhNjgwZTlkZjYx
ODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmgKQEAgLTMyNiw2ICszMjYsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBKU1Nl
Z21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKIAogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVj
dCwgU3RydWN0dXJlPiBtX2NhbGVuZGFyU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0ds
b2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2R1cmF0aW9uU3RydWN0dXJlOworICAgIExhenlQcm9w
ZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3BsYWluVGltZVN0cnVjdHVyZTsKICAg
ICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV90aW1lWm9uZVN0cnVj
dHVyZTsKIAogICAgIFdyaXRlQmFycmllcjxOdWxsR2V0dGVyRnVuY3Rpb24+IG1fbnVsbEdldHRl
ckZ1bmN0aW9uOwpAQCAtODc2LDYgKzg3Nyw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVi
bGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogCiAgICAgU3RydWN0dXJlKiBjYWxlbmRh
clN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fY2FsZW5kYXJTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAg
ICAgU3RydWN0dXJlKiBkdXJhdGlvblN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fZHVyYXRpb25TdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBwbGFpblRpbWVTdHJ1Y3R1cmUoKSB7
IHJldHVybiBtX3BsYWluVGltZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUq
IHRpbWVab25lU3RydWN0dXJlKCkgeyByZXR1cm4gbV90aW1lWm9uZVN0cnVjdHVyZS5nZXQodGhp
cyk7IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQgc2V0UmVtb3RlRGVidWdnaW5nRW5h
YmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwCmluZGV4IGEwZmFhM2ZmY2QwNDQ0
NzcyYzQxYTRjYjczNTZhMmQ2ODY3MGE2OWMuLjY1MzBkZDAxZWI2N2M1M2NkOGU5ZTMwODg5OTEw
NTY2ZThjYjU3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcApAQCAtNzMsNiArNzMsNyBA
QCB2b2lkIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZt
LCBUZW1wb3JhbENhbGVuZGFyUHJvdG90eQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZt
LCAwLCAiQ2FsZW5kYXIiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJl
VHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3Bl
cnR5TmFtZXMtPnByb3RvdHlwZSwgdGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZSwgUHJvcGVydHlB
dHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxD
YWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
RHVyYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJh
dGlvbi5jcHAKaW5kZXggMGRhMjRhNTI1NTdlYmNkZTU4ZjM1ZGUxOGQ3NmMyZTcyYjYyNmY4ZC4u
OGQ4ZmE0ZjgzMDk2OWY5MGE3N2I4MGY4ZDA1NDVmZDFiYTUyZWI4MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKQEAgLTUzMCw3
ICs1MzAsMTAgQEAgU3RyaW5nIFRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1YKIAogICAgIFByZWNpc2lvbkRhdGEg
ZGF0YSA9IHNlY29uZHNTdHJpbmdQcmVjaXNpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAgIEFTU0VSVChkYXRhLnVuaXQg
Pj0gVGVtcG9yYWxVbml0OjpTZWNvbmQpOworICAgIGlmIChkYXRhLnVuaXQgPCBUZW1wb3JhbFVu
aXQ6OlNlY29uZCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgInNtYWxsZXN0VW5pdCBtdXN0IG5vdCBiZSBcIm1pbnV0ZVwiIl9zKTsKKyAgICAgICAgcmV0
dXJuIHsgfTsKKyAgICB9CiAKICAgICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91
bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5k
aW5nTW9kZSwKICAgICAgICAgeyB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAi
Zmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9k
ZTo6VHJ1bmMgfSwgeyAiaGFsZkV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0g
fSwKQEAgLTUzOCw3ICs1NDEsNyBAQCBTdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVgogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAvLyBObyBuZWVkIHRvIG1ha2UgYSBu
ZXcgb2JqZWN0IGlmIHdlIHdlcmUgZ2l2ZW4gZXhwbGljaXQgZGVmYXVsdHMuCi0gICAgaWYgKCFk
YXRhLnByZWNpc2lvbiAmJiByb3VuZGluZ01vZGUgPT0gUm91bmRpbmdNb2RlOjpUcnVuYykKKyAg
ICBpZiAoc3RkOjpnZXQ8MD4oZGF0YS5wcmVjaXNpb24pID09IFByZWNpc2lvbjo6QXV0byAmJiBy
b3VuZGluZ01vZGUgPT0gUm91bmRpbmdNb2RlOjpUcnVuYykKICAgICAgICAgcmV0dXJuIHRvU3Ry
aW5nKCk7CiAKICAgICBTdWJkdXJhdGlvbnMgbmV3U3ViZHVyYXRpb25zID0gbV9zdWJkdXJhdGlv
bnM7CkBAIC01NDgsOSArNTUxLDEwIEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAKIC8vIFRl
bXBvcmFsRHVyYXRpb25Ub1N0cmluZyAoIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3Vy
cywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzLCBtaWNyb3NlY29uZHMsIG5hbm9zZWNv
bmRzLCBwcmVjaXNpb24gKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwtdGVtcG9yYWxkdXJhdGlvbnRvc3RyaW5nCi1TdHJpbmcgVGVtcG9yYWxEdXJh
dGlvbjo6dG9TdHJpbmcoY29uc3QgVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJk
dXJhdGlvbnMsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHByZWNpc2lvbikKK1N0cmluZyBUZW1w
b3JhbER1cmF0aW9uOjp0b1N0cmluZyhjb25zdCBUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlv
bnMmIHN1YmR1cmF0aW9ucywgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNp
b24pCiB7Ci0gICAgQVNTRVJUKCFwcmVjaXNpb24gfHwgcHJlY2lzaW9uLnZhbHVlKCkgPCAxMCk7
CisgICAgYXV0byBbcHJlY2lzaW9uVHlwZSwgcHJlY2lzaW9uVmFsdWVdID0gcHJlY2lzaW9uOwor
ICAgIEFTU0VSVChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6QXV0byB8fCBwcmVjaXNpb25W
YWx1ZSA8IDEwKTsKIAogICAgIGF1dG8gYmFsYW5jZWRNaWNyb3NlY29uZHMgPSBzdWJkdXJhdGlv
bnMubWljcm9zZWNvbmRzKCkgKyBzdGQ6OnRydW5jKHN1YmR1cmF0aW9ucy5uYW5vc2Vjb25kcygp
IC8gMTAwMCk7CiAgICAgYXV0byBiYWxhbmNlZE5hbm9zZWNvbmRzID0gc3RkOjpmbW9kKHN1YmR1
cmF0aW9ucy5uYW5vc2Vjb25kcygpLCAxMDAwKTsKQEAgLTU5NywxMCArNjAxLDEwIEBAIFN0cmlu
ZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhjb25zdCBUZW1wb3JhbER1cmF0aW9uOjpTdWJk
dXJhdGlvbnMmIHN1YmR1cmF0CiAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZvcm1hdEludGVnZXIo
YmFsYW5jZWRTZWNvbmRzKSk7CiAKICAgICAgICAgYXV0byBmcmFjdGlvbiA9IHN0ZDo6YWJzKGJh
bGFuY2VkTWlsbGlzZWNvbmRzKSAqIDFlNiArIHN0ZDo6YWJzKGJhbGFuY2VkTWljcm9zZWNvbmRz
KSAqIDFlMyArIHN0ZDo6YWJzKGJhbGFuY2VkTmFub3NlY29uZHMpOwotICAgICAgICBpZiAoKCFw
cmVjaXNpb24gJiYgZnJhY3Rpb24pIHx8IChwcmVjaXNpb24gJiYgcHJlY2lzaW9uLnZhbHVlKCkp
KSB7CisgICAgICAgIGlmICgocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8gJiYgZnJh
Y3Rpb24pIHx8IChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6Rml4ZWQgJiYgcHJlY2lzaW9u
VmFsdWUpKSB7CiAgICAgICAgICAgICBhdXRvIHBhZGRlZCA9IG1ha2VTdHJpbmcoJy4nLCBwYWQo
JzAnLCA5LCBmcmFjdGlvbikpOwotICAgICAgICAgICAgaWYgKHByZWNpc2lvbikKLSAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KHBhZGRlZCkubGVmdChwYWRkZWQubGVu
Z3RoKCkgLSAoOSAtIHByZWNpc2lvbi52YWx1ZSgpKSkpOworICAgICAgICAgICAgaWYgKHByZWNp
c2lvblR5cGUgPT0gUHJlY2lzaW9uOjpGaXhlZCkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFw
cGVuZChTdHJpbmdWaWV3KHBhZGRlZCkubGVmdChwYWRkZWQubGVuZ3RoKCkgLSAoOSAtIHByZWNp
c2lvblZhbHVlKSkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0byBs
ZW5ndGhXaXRob3V0VHJhaWxpbmdaZXJvZXMgPSBwYWRkZWQubGVuZ3RoKCk7CiAgICAgICAgICAg
ICAgICAgd2hpbGUgKHBhZGRlZFtsZW5ndGhXaXRob3V0VHJhaWxpbmdaZXJvZXMgLSAxXSA9PSAn
MCcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1
cmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
LmgKaW5kZXggNTkyMDRkYzk1MzdhYWY3NjAxZTBlOGQxNTcwNTZiZGExOWFmNzM1NS4uNDM4NmUy
Yjc5YWUzMDg3Yjk1ODQ4ZDQyOGYzNjFhOTdkYjk3ODhkNiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaApAQCAtNjYsNyArNjYsNyBAQCBj
bGFzcyBUZW1wb3JhbER1cmF0aW9uIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qgewog
ICAgIFN1YmR1cmF0aW9ucyByb3VuZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucykg
Y29uc3Q7CiAgICAgZG91YmxlIHRvdGFsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25z
KSBjb25zdDsKICAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9w
dGlvbnMpIGNvbnN0OwotICAgIFN0cmluZyB0b1N0cmluZyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVk
PiBwcmVjaXNpb24gPSBzdGQ6Om51bGxvcHQpIGNvbnN0IHsgcmV0dXJuIHRvU3RyaW5nKG1fc3Vi
ZHVyYXRpb25zLCBwcmVjaXNpb24pOyB9CisgICAgU3RyaW5nIHRvU3RyaW5nKHN0ZDo6dHVwbGU8
UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uID0geyBQcmVjaXNpb246OkF1dG8sIDAgfSkg
Y29uc3QgeyByZXR1cm4gdG9TdHJpbmcobV9zdWJkdXJhdGlvbnMsIHByZWNpc2lvbik7IH0KIAog
cHJpdmF0ZToKICAgICBUZW1wb3JhbER1cmF0aW9uKFZNJiwgU3RydWN0dXJlKiwgU3ViZHVyYXRp
b25zJiYpOwpAQCAtNzksNyArNzksNyBAQCBjbGFzcyBUZW1wb3JhbER1cmF0aW9uIGZpbmFsIDog
cHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIHN0YXRpYyBpbnQgc2lnbihjb25zdCBTdWJk
dXJhdGlvbnMmKTsKICAgICBzdGF0aWMgdm9pZCBiYWxhbmNlKFN1YmR1cmF0aW9ucyYsIFRlbXBv
cmFsVW5pdCBsYXJnZXN0VW5pdCk7CiAgICAgc3RhdGljIGRvdWJsZSByb3VuZChTdWJkdXJhdGlv
bnMmLCBkb3VibGUgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSk7Ci0gICAg
c3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTdWJkdXJhdGlvbnMmLCBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBwcmVjaXNpb24pOworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3Qg
U3ViZHVyYXRpb25zJiwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24p
OwogCiAgICAgVGVtcG9yYWxVbml0IGxhcmdlc3RTdWJkdXJhdGlvbigpIGNvbnN0OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKaW5kZXggYjBhN2Vl
ZTRjNGEwMTM2MGJhM2NmYTVhZDVlNWE0N2I5NGI2NzMzYS4uN2MwZmVjNTM5MTNlOGM1ZDY5ZDVk
NjNlYmFhN2ZmZDkxZGZjOGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxOb3cuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsTm93LmNwcApAQCAtNzcsNyArNzcsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxOb3dGdW5jVGltZVpvbmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAogICAgIFN0cmluZyB0aW1lWm9u
ZVN0cmluZyA9IHZtLmRhdGVDYWNoZS5kZWZhdWx0VGltZVpvbmUoKTsKLSAgICBzdGQ6Om9wdGlv
bmFsPFRpbWVab25lSUQ+IGlkZW50aWZpZXIgPSBUZW1wb3JhbFRpbWVab25lOjppZEZvclRpbWVa
b25lTmFtZSh0aW1lWm9uZVN0cmluZyk7CisgICAgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBp
ZGVudGlmaWVyID0gSVNPODYwMTo6aWRGb3JUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcpOwog
ICAgIGlmICghaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1w
b3JhbFRpbWVab25lOjpjcmVhdGVGcm9tVVRDT2Zmc2V0KHZtLCBnbG9iYWxPYmplY3QtPnRpbWVa
b25lU3RydWN0dXJlKCksIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFs
VGltZVpvbmU6OmNyZWF0ZUZyb21JRCh2bSwgZ2xvYmFsT2JqZWN0LT50aW1lWm9uZVN0cnVjdHVy
ZSgpLCBpZGVudGlmaWVyLnZhbHVlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRleCBiMjRlM2E5ZTlkYTIyMDI2YzJhM2JmZGIy
OGJhZjdjZWUzZDNlZjk3Li44ZTM3ZDdjZmYzNWY5ODllM2VlZmFiNDA5MzU1ODBhZTBiNGRkZWRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVj
dC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
Y3BwCkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVj
dG9yLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlRlbXBvcmFsTm93LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5o
IgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVt
cG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZVBy
b3RvdHlwZS5oIgogCkBAIC02MSw2ICs2MywxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVEdXJh
dGlvbkNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gVGVt
cG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsRHVyYXRpb25Db25z
dHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+
ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlKj4o
Z2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3Qo
KSkpOwogfQogCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVQbGFpblRpbWVDb25zdHJ1Y3RvcihWTSYg
dm0sIEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgVGVtcG9yYWxPYmplY3QqIHRlbXBvcmFsT2Jq
ZWN0ID0ganNDYXN0PFRlbXBvcmFsT2JqZWN0Kj4ob2JqZWN0KTsKKyAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0gdGVtcG9yYWxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAg
cmV0dXJuIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxQ
bGFpblRpbWVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGds
b2JhbE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCktPnN0b3JlZFBy
b3RvdHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVRpbWVab25lQ29u
c3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIFRlbXBvcmFsT2JqZWN0
KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CkBAIC03
OSw2ICs4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICBDYWxlbmRhciAgICAgICBjcmVhdGVDYWxl
bmRhckNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgRHVyYXRp
b24gICAgICAgY3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0
eUNhbGxiYWNrCiAgIE5vdyAgICAgICAgICAgIGNyZWF0ZU5vd09iamVjdCAgICAgICAgICAgICAg
ICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjaworICBQbGFpblRpbWUgICAgICBjcmVhdGVQbGFp
blRpbWVDb25zdHJ1Y3RvciAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgVGltZVpv
bmUgICAgICAgY3JlYXRlVGltZVpvbmVDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0
eUNhbGxiYWNrCiBAZW5kCiAqLwpAQCAtMjQyLDE5ICsyNTIsMjEgQEAgUHJlY2lzaW9uRGF0YSBz
ZWNvbmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2Jq
ZWN0KiBvcHQKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBzbWFsbGVzdFVuaXQgPSB0
ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0
OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFs
VW5pdDo6RGF5LCBUZW1wb3JhbFVuaXQ6OkhvdXIsIFRlbXBvcmFsVW5pdDo6TWludXRlIH0pOwor
ICAgIGF1dG8gc21hbGxlc3RVbml0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCB7IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVt
cG9yYWxVbml0OjpXZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSwgVGVtcG9yYWxVbml0OjpIb3VyIH0p
OwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoc21hbGxl
c3RVbml0KSB7CiAgICAgICAgIHN3aXRjaCAoc21hbGxlc3RVbml0LnZhbHVlKCkpIHsKKyAgICAg
ICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZToKKyAgICAgICAgICAgIHJldHVybiB7IHsgUHJl
Y2lzaW9uOjpNaW51dGUsIDAgfSwgVGVtcG9yYWxVbml0OjpNaW51dGUsIDEgfTsKICAgICAgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6OlNlY29uZDoKLSAgICAgICAgICAgIHJldHVybiB7IDAsIFRlbXBv
cmFsVW5pdDo6U2Vjb25kLCAxIH07CisgICAgICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6
Rml4ZWQsIDAgfSwgVGVtcG9yYWxVbml0OjpTZWNvbmQsIDEgfTsKICAgICAgICAgY2FzZSBUZW1w
b3JhbFVuaXQ6Ok1pbGxpc2Vjb25kOgotICAgICAgICAgICAgcmV0dXJuIHsgMywgVGVtcG9yYWxV
bml0OjpNaWxsaXNlY29uZCwgMSB9OworICAgICAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246
OkZpeGVkLCAzIH0sIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQsIDEgfTsKICAgICAgICAgY2Fz
ZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOgotICAgICAgICAgICAgcmV0dXJuIHsgNiwgVGVt
cG9yYWxVbml0OjpNaWNyb3NlY29uZCwgMSB9OworICAgICAgICAgICAgcmV0dXJuIHsgeyBQcmVj
aXNpb246OkZpeGVkLCA2IH0sIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQsIDEgfTsKICAgICAg
ICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6Ci0gICAgICAgICAgICByZXR1cm4geyA5
LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsg
UHJlY2lzaW9uOjpGaXhlZCwgOSB9LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfTsKICAg
ICAgICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiAgICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMjY1LDIwICsyNzcsMjcgQEAgUHJlY2lzaW9u
RGF0YSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTT2JqZWN0KiBvcHQKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAg
ICAgaWYgKCFwcmVjaXNpb24pCi0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgVGVtcG9y
YWxVbml0OjpOYW5vc2Vjb25kLCAxIH07CisgICAgICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpB
dXRvLCAwIH0sIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9OworCisgICAgYXV0byBwb3cx
MFVuc2lnbmVkID0gW10odW5zaWduZWQgbikgLT4gdW5zaWduZWQgeworICAgICAgICB1bnNpZ25l
ZCByZXN1bHQgPSAxOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgKytpKQor
ICAgICAgICAgICAgcmVzdWx0ICo9IDEwOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH07
CiAKICAgICB1bnNpZ25lZCBkaWdpdHMgPSBwcmVjaXNpb24udmFsdWUoKTsKICAgICBpZiAoIWRp
Z2l0cykKLSAgICAgICAgcmV0dXJuIHsgMCwgVGVtcG9yYWxVbml0OjpTZWNvbmQsIDEgfTsKKyAg
ICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCAwIH0sIFRlbXBvcmFsVW5pdDo6U2Vj
b25kLCAxIH07CiAKICAgICBpZiAoZGlnaXRzIDw9IDMpCi0gICAgICAgIHJldHVybiB7IGRpZ2l0
cywgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZCwgc3RkOjpwb3coMTAsIDMgLSBkaWdpdHMpIH07
CisgICAgICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgZGlnaXRzIH0sIFRlbXBvcmFs
VW5pdDo6TWlsbGlzZWNvbmQsIHBvdzEwVW5zaWduZWQoMyAtIGRpZ2l0cykgfTsKIAogICAgIGlm
IChkaWdpdHMgPD0gNikKLSAgICAgICAgcmV0dXJuIHsgZGlnaXRzLCBUZW1wb3JhbFVuaXQ6Ok1p
Y3Jvc2Vjb25kLCBzdGQ6OnBvdygxMCwgNiAtIGRpZ2l0cykgfTsKKyAgICAgICAgcmV0dXJuIHsg
eyBQcmVjaXNpb246OkZpeGVkLCBkaWdpdHMgfSwgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZCwg
cG93MTBVbnNpZ25lZCg2IC0gZGlnaXRzKSB9OwogCiAgICAgQVNTRVJUKGRpZ2l0cyA8PSA5KTsK
LSAgICByZXR1cm4geyBkaWdpdHMsIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgc3RkOjpwb3co
MTAsIDkgLSBkaWdpdHMpIH07CisgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCBkaWdp
dHMgfSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCBwb3cxMFVuc2lnbmVkKDkgLSBkaWdpdHMp
IH07CiB9CiAKIC8vIE1heGltdW1UZW1wb3JhbER1cmF0aW9uUm91bmRpbmdJbmNyZW1lbnQgKCB1
bml0ICkKQEAgLTM0Miw0ICszNjEsMTEgQEAgZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQo
ZG91YmxlIHgsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQogICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK1RlbXBvcmFsT3ZlcmZsb3cgdG9UZW1wb3Jh
bE92ZXJmbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25z
KQoreworICAgIHJldHVybiBpbnRsT3B0aW9uPFRlbXBvcmFsT3ZlcmZsb3c+KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgZ2xvYmFsT2JqZWN0LT52bSgpLnByb3BlcnR5TmFtZXMtPm92ZXJmbG93LAor
ICAgICAgICB7IHsgImNvbnN0cmFpbiJfcywgVGVtcG9yYWxPdmVyZmxvdzo6Q29uc3RyYWluIH0s
IHsgInJlamVjdCJfcywgVGVtcG9yYWxPdmVyZmxvdzo6UmVqZWN0IH0gfSwKKyAgICAgICAgIm92
ZXJmbG93IG11c3QgYmUgZWl0aGVyIFwiY29uc3RyYWluXCIgb3IgXCJyZWplY3RcIiJfcywgVGVt
cG9yYWxPdmVyZmxvdzo6Q29uc3RyYWluKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAppbmRleCA3MjQz
YzliYTU4NDMyNjJkMmQwY2JiODE5MzNmNGNkZDEzMDhmYjQ4Li44OWExNTZlOGMxNWI4MTI1YzIw
NDQxMGJlZTA0ZGI3YWVkMmJhMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsT2JqZWN0LmgKQEAgLTIxLDE0ICsyMSwxMSBAQAogI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVz
cGFjZSBKU0MgewogCi0jZGVmaW5lIEpTQ19URU1QT1JBTF9VTklUUyhtYWNybykgXAotICAgIG1h
Y3JvKHllYXIsIFllYXIpIFwKLSAgICBtYWNybyhtb250aCwgTW9udGgpIFwKLSAgICBtYWNybyh3
ZWVrLCBXZWVrKSBcCi0gICAgbWFjcm8oZGF5LCBEYXkpIFwKKyNkZWZpbmUgSlNDX1RFTVBPUkFM
X1BMQUlOX1RJTUVfVU5JVFMobWFjcm8pIFwKICAgICBtYWNybyhob3VyLCBIb3VyKSBcCiAgICAg
bWFjcm8obWludXRlLCBNaW51dGUpIFwKICAgICBtYWNybyhzZWNvbmQsIFNlY29uZCkgXApAQCAt
MzYsNiArMzMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8obWljcm9zZWNvbmQsIE1p
Y3Jvc2Vjb25kKSBcCiAgICAgbWFjcm8obmFub3NlY29uZCwgTmFub3NlY29uZCkgXAogCisKKyNk
ZWZpbmUgSlNDX1RFTVBPUkFMX1VOSVRTKG1hY3JvKSBcCisgICAgbWFjcm8oeWVhciwgWWVhcikg
XAorICAgIG1hY3JvKG1vbnRoLCBNb250aCkgXAorICAgIG1hY3JvKHdlZWssIFdlZWspIFwKKyAg
ICBtYWNybyhkYXksIERheSkgXAorICAgIEpTQ19URU1QT1JBTF9QTEFJTl9USU1FX1VOSVRTKG1h
Y3JvKSBcCisKKwogZW51bSBjbGFzcyBUZW1wb3JhbFVuaXQgOiB1aW50OF90IHsKICNkZWZpbmUg
SlNDX0RFRklORV9URU1QT1JBTF9VTklUX0VOVU0obmFtZSwgY2FwaXRhbGl6ZWROYW1lKSBjYXBp
dGFsaXplZE5hbWUsCiAgICAgSlNDX1RFTVBPUkFMX1VOSVRTKEpTQ19ERUZJTkVfVEVNUE9SQUxf
VU5JVF9FTlVNKQpAQCAtNDMsNiArNDksNyBAQCBlbnVtIGNsYXNzIFRlbXBvcmFsVW5pdCA6IHVp
bnQ4X3QgewogfTsKICNkZWZpbmUgSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRTKG5hbWUsIGNhcGl0
YWxpemVkTmFtZSkgKyAxCiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mVGVtcG9y
YWxVbml0cyA9IDAgSlNDX1RFTVBPUkFMX1VOSVRTKEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUyk7
CitzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0
cyA9IDAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVfVU5JVFMoSlNDX0NPVU5UX1RFTVBPUkFMX1VO
SVRTKTsKICN1bmRlZiBKU0NfQ09VTlRfVEVNUE9SQUxfVU5JVFMKIAogY2xhc3MgVGVtcG9yYWxP
YmplY3QgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CkBAIC03NCwxMCArODEsMTYg
QEAgZW51bSBjbGFzcyBSb3VuZGluZ01vZGUgOiB1aW50OF90IHsKICAgICBIYWxmRXhwYW5kCiB9
OwogCitlbnVtIGNsYXNzIFByZWNpc2lvbiB7CisgICAgTWludXRlLAorICAgIEZpeGVkLAorICAg
IEF1dG8sCit9OworCiBzdHJ1Y3QgUHJlY2lzaW9uRGF0YSB7Ci0gICAgc3RkOjpvcHRpb25hbDx1
bnNpZ25lZD4gcHJlY2lzaW9uOworICAgIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4g
cHJlY2lzaW9uOwogICAgIFRlbXBvcmFsVW5pdCB1bml0OwotICAgIGRvdWJsZSBpbmNyZW1lbnQ7
CisgICAgdW5zaWduZWQgaW5jcmVtZW50OwogfTsKIAogc3RkOjpvcHRpb25hbDxUZW1wb3JhbFVu
aXQ+IHRlbXBvcmFsVW5pdFR5cGUoU3RyaW5nVmlldyk7CkBAIC04OSw0ICsxMDIsMTEgQEAgc3Rk
OjpvcHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQp
OwogZG91YmxlIHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoSlNHbG9iYWxPYmplY3QqLCBKU09i
amVjdCogb3B0aW9ucywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRpdmlkZW5kLCBib29sIGluY2x1
c2l2ZSk7CiBkb3VibGUgcm91bmROdW1iZXJUb0luY3JlbWVudChkb3VibGUsIGRvdWJsZSBpbmNy
ZW1lbnQsIFJvdW5kaW5nTW9kZSk7CiAKK2VudW0gY2xhc3MgVGVtcG9yYWxPdmVyZmxvdyA6IHVp
bnQ4X3QgeworICAgIENvbnN0cmFpbiwKKyAgICBSZWplY3QsCit9OworCitUZW1wb3JhbE92ZXJm
bG93IHRvVGVtcG9yYWxPdmVyZmxvdyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CisKIH0g
Ly8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxQbGFpblRpbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmNkYTFlMjNjZjU1ZDIyN2ZkMjc1Y2Jm
NmM3OTAzYzM1NGU2MDY1NGMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKQEAgLTAsMCArMSwzNzAgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
CisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
KyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKKworI2luY2x1ZGUgIkFic3Ry
YWN0U2xvdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1
ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJMYXp5UHJvcGVydHlJbmxpbmVzLmgiCisjaW5j
bHVkZSAiVk1UcmFwc0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNz
SW5mbyBUZW1wb3JhbFBsYWluVGltZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5m
bywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWluVGlt
ZSkgfTsKKworVGVtcG9yYWxQbGFpblRpbWUqIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6UGxhaW5UaW1lJiYgcGxhaW5UaW1l
KQoreworICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBv
cmFsUGxhaW5UaW1lPih2bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWUodm0sIHN0cnVjdHVyZSwg
V1RGTW92ZShwbGFpblRpbWUpKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAg
ICByZXR1cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGlu
Zm8oKSk7Cit9CisKK1RlbXBvcmFsUGxhaW5UaW1lOjpUZW1wb3JhbFBsYWluVGltZShWTSYgdm0s
IFN0cnVjdHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpQbGFpblRpbWUmJiBwbGFpblRpbWUpCisg
ICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX3BsYWluVGltZShXVEZNb3ZlKHBsYWlu
VGltZSkpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxQbGFpblRpbWU6OmZpbmlzaENyZWF0aW9uKFZN
JiB2bSkKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVy
aXRzKHZtLCBpbmZvKCkpKTsKKyAgICBtX2NhbGVuZGFyLmluaXRMYXRlcigKKyAgICAgICAgW10g
KGNvbnN0IGF1dG8mIGluaXQpIHsKKyAgICAgICAgICAgIFZNJiB2bSA9IGluaXQudm07CisgICAg
ICAgICAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPihpbml0
Lm93bmVyKTsKKyAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHBsYWluVGltZS0+Z2xv
YmFsT2JqZWN0KHZtKTsKKyAgICAgICAgICAgIGF1dG8qIGNhbGVuZGFyID0gVGVtcG9yYWxDYWxl
bmRhcjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmNhbGVuZGFyU3RydWN0dXJlKCksIGlzbzg2
MDFDYWxlbmRhcklEKCkpOworICAgICAgICAgICAgaW5pdC5zZXQoY2FsZW5kYXIpOworICAgICAg
ICB9KTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgVGVtcG9yYWxQbGFp
blRpbWU6OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikK
K3sKKyAgICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOworCisgICAgYXV0byog
dGhpc09iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KGNlbGwpOworICAgIHRoaXNP
YmplY3QtPm1fY2FsZW5kYXIudmlzaXQodmlzaXRvcik7Cit9CisKK0RFRklORV9WSVNJVF9DSElM
RFJFTihUZW1wb3JhbFBsYWluVGltZSk7CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWlzdmFsaWR0aW1lCitzdGF0aWMgSVNPODYwMTo6UGxhaW5U
aW1lIHRvUGxhaW5UaW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElTTzg2MDE6OkR1
cmF0aW9uJiYgZHVyYXRpb24pCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBo
b3VyID0gZHVyYXRpb24uaG91cnMoKTsKKyAgICBkb3VibGUgbWludXRlID0gZHVyYXRpb24ubWlu
dXRlcygpOworICAgIGRvdWJsZSBzZWNvbmQgPSBkdXJhdGlvbi5zZWNvbmRzKCk7CisgICAgZG91
YmxlIG1pbGxpc2Vjb25kID0gZHVyYXRpb24ubWlsbGlzZWNvbmRzKCk7CisgICAgZG91YmxlIG1p
Y3Jvc2Vjb25kID0gZHVyYXRpb24ubWljcm9zZWNvbmRzKCk7CisgICAgZG91YmxlIG5hbm9zZWNv
bmQgPSBkdXJhdGlvbi5uYW5vc2Vjb25kcygpOworICAgIGlmICghKGhvdXIgPj0gMCAmJiBob3Vy
IDw9IDIzKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
ImhvdXIgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9Cisg
ICAgaWYgKCEobWludXRlID49IDAgJiYgbWludXRlIDw9IDU5KSkgeworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm1pbnV0ZSBpcyBvdXQgb2YgcmFuZ2UiX3Mp
OworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBpZiAoIShzZWNvbmQgPj0gMCAmJiBz
ZWNvbmQgPD0gNTkpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAic2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorICAgIGlmICghKG1pbGxpc2Vjb25kID49IDAgJiYgbWlsbGlzZWNvbmQgPD0gOTk5KSkg
eworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm1pbGxpc2Vj
b25kIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAg
IGlmICghKG1pY3Jvc2Vjb25kID49IDAgJiYgbWljcm9zZWNvbmQgPD0gOTk5KSkgeworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm1pY3Jvc2Vjb25kIGlzIG91
dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKG5h
bm9zZWNvbmQgPj0gMCAmJiBuYW5vc2Vjb25kIDw9IDk5OSkpIHsKKyAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJuYW5vc2Vjb25kIGlzIG91dCBvZiByYW5nZSJf
cyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIHJldHVybiBJU084NjAxOjpQbGFp
blRpbWUgeworICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaG91ciksCisgICAgICAgIHN0
YXRpY19jYXN0PHVuc2lnbmVkPihtaW51dGUpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oc2Vjb25kKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1pbGxpc2Vjb25kKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1pY3Jvc2Vjb25kKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG5hbm9zZWNvbmQpCisgICAgfTsKK30KKworLy8gQ3JlYXRlVGVt
cG9yYWxQbGFpblRpbWUgKCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0
ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcyBbICwg
bmV3VGFyZ2V0IF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwtY3JlYXRldGVtcG9yYWxwbGFpblRpbWUKK1RlbXBvcmFsUGxhaW5UaW1lKiBUZW1w
b3JhbFBsYWluVGltZTo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbikK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBwbGFpblRpbWUgPSB0b1BsYWluVGlt
ZShnbG9iYWxPYmplY3QsIFdURk1vdmUoZHVyYXRpb24pKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUo
dm0sIHN0cnVjdHVyZSwgV1RGTW92ZShwbGFpblRpbWUpKTsKK30KKworc3RhdGljIHN0ZDo6dHVw
bGU8ZG91YmxlLCBJU084NjAxOjpQbGFpblRpbWU+IGJhbGFuY2VUaW1lKGRvdWJsZSBob3VyLCBk
b3VibGUgbWludXRlLCBkb3VibGUgc2Vjb25kLCBkb3VibGUgbWlsbGlzZWNvbmQsIGRvdWJsZSBt
aWNyb3NlY29uZCwgZG91YmxlIG5hbm9zZWNvbmQpCit7CisgICAgbWljcm9zZWNvbmQgPSBtaWNy
b3NlY29uZCArIHN0ZDo6dHJ1bmMobmFub3NlY29uZCAvIDEwMDApOworICAgIG5hbm9zZWNvbmQg
PSBzdGQ6OmZtb2QobmFub3NlY29uZCwgMTAwMCk7CisgICAgbWlsbGlzZWNvbmQgPSBtaWxsaXNl
Y29uZCArIHN0ZDo6dHJ1bmMobWljcm9zZWNvbmQgLyAxMDAwKTsKKyAgICBtaWNyb3NlY29uZCA9
IHN0ZDo6Zm1vZChtaWNyb3NlY29uZCwgMTAwMCk7CisgICAgc2Vjb25kID0gc2Vjb25kICsgc3Rk
Ojp0cnVuYyhtaWxsaXNlY29uZCAvIDEwMDApOworICAgIG1pbGxpc2Vjb25kID0gc3RkOjpmbW9k
KG1pbGxpc2Vjb25kLCAxMDAwKTsKKyAgICBtaW51dGUgPSBtaW51dGUgKyBzdGQ6OnRydW5jKHNl
Y29uZCAvIDYwKTsKKyAgICBzZWNvbmQgPSBzdGQ6OmZtb2Qoc2Vjb25kLCA2MCk7CisgICAgaG91
ciA9IGhvdXIgKyBzdGQ6OnRydW5jKG1pbnV0ZSAvIDYwKTsKKyAgICBtaW51dGUgPSBzdGQ6OmZt
b2QobWludXRlLCA2MCk7CisgICAgZG91YmxlIGRheXMgPSBzdGQ6OnRydW5jKGhvdXIgLyAyNCk7
CisgICAgaG91ciA9IHN0ZDo6Zm1vZChtaW51dGUsIDI0KTsKKyAgICByZXR1cm4geyBkYXlzLCBJ
U084NjAxOjpQbGFpblRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBtaWNy
b3NlY29uZCwgbmFub3NlY29uZCkgfTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcm91bmR0aW1lCitzdGF0aWMgc3RkOjp0dXBsZTxkb3Vi
bGUsIElTTzg2MDE6OlBsYWluVGltZT4gcm91bmRUaW1lKElTTzg2MDE6OlBsYWluVGltZSBwbGFp
blRpbWUsIGRvdWJsZSBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUg
cm91bmRpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGF5TGVuZ3RoTnMpCit7CisgICAg
YXV0byBmcmFjdGlvbmFsU2Vjb25kID0gW10oSVNPODYwMTo6UGxhaW5UaW1lIHBsYWluVGltZSkg
LT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIHBsYWluVGltZS5zZWNvbmQoKSArIHBsYWluVGlt
ZS5taWxsaXNlY29uZCgpICogMWUtMyArIHBsYWluVGltZS5taWNyb3NlY29uZCgpICogMWUtNiAr
IHBsYWluVGltZS5uYW5vc2Vjb25kKCkgKiAxZS05OworICAgIH07CisKKyAgICBkb3VibGUgcXVh
bnRpdHkgPSAwOworICAgIHN3aXRjaCAodW5pdCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpE
YXk6IHsKKyAgICAgICAgZG91YmxlIGxlbmd0aCA9IGRheUxlbmd0aE5zLnZhbHVlX29yKDguNjQg
KiAxZSsxMyk7CisgICAgICAgIHF1YW50aXR5ID0gKCgoKHBsYWluVGltZS5ob3VyKCkgKiA2MC4w
ICsgcGxhaW5UaW1lLm1pbnV0ZSgpKSAqIDYwLjAgKyBwbGFpblRpbWUuc2Vjb25kKCkpICogMTAw
MC4wICsgcGxhaW5UaW1lLm1pbGxpc2Vjb25kKCkpICogMTAwMC4wICsgcGxhaW5UaW1lLm5hbm9z
ZWNvbmQoKSkgLyBsZW5ndGg7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0lu
Y3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOworICAgICAgICByZXR1
cm4geyByZXN1bHQsIHsgfSB9OworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6SG91cjog
eworICAgICAgICBxdWFudGl0eSA9IChmcmFjdGlvbmFsU2Vjb25kKHBsYWluVGltZSkgLyA2MC4w
ICsgcGxhaW5UaW1lLm1pbnV0ZSgpKSAvIDYwLjAgKyBwbGFpblRpbWUuaG91cigpOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVu
dCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHJlc3VsdCwgMCwg
MCwgMCwgMCwgMCk7CisgICAgfQorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IHsKKyAg
ICAgICAgcXVhbnRpdHkgPSBmcmFjdGlvbmFsU2Vjb25kKHBsYWluVGltZSkgLyA2MC4wICsgcGxh
aW5UaW1lLm1pbnV0ZSgpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNy
ZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJu
IGJhbGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHJlc3VsdCwgMCwgMCwgMCwgMCk7CisgICAg
fQorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBm
cmFjdGlvbmFsU2Vjb25kKHBsYWluVGltZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmRO
dW1iZXJUb0luY3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOworICAg
ICAgICByZXR1cm4gYmFsYW5jZVRpbWUocGxhaW5UaW1lLmhvdXIoKSwgcGxhaW5UaW1lLm1pbnV0
ZSgpLCByZXN1bHQsIDAsIDAsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWls
bGlzZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSAr
IHBsYWluVGltZS5taWNyb3NlY29uZCgpICogMWUtMyArIHBsYWluVGltZS5uYW5vc2Vjb25kKCkg
KiAxZS02OworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVh
bnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VU
aW1lKHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5taW51dGUoKSwgcGxhaW5UaW1lLnNlY29u
ZCgpLCByZXN1bHQsIDAsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9z
ZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBwbGFpblRpbWUubWljcm9zZWNvbmQoKSArIHBs
YWluVGltZS5uYW5vc2Vjb25kKCkgKiAxZS0zOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5k
TnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAg
ICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5taW51
dGUoKSwgcGxhaW5UaW1lLnNlY29uZCgpLCBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSwgcmVzdWx0
LCAwKTsKKyAgICB9CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6IHsKKyAgICAg
ICAgcXVhbnRpdHkgPSBwbGFpblRpbWUubmFub3NlY29uZCgpOworICAgICAgICBhdXRvIHJlc3Vs
dCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdN
b2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBsYWlu
VGltZS5taW51dGUoKSwgcGxhaW5UaW1lLnNlY29uZCgpLCBwbGFpblRpbWUubWlsbGlzZWNvbmQo
KSwgcGxhaW5UaW1lLm1pY3Jvc2Vjb25kKCksIHJlc3VsdCk7CisgICAgfQorICAgIGRlZmF1bHQ6
CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOwor
ICAgIH0KK30KKworSVNPODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjpyb3VuZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0
T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3JhbFNt
YWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBU
ZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5
IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgaWYgKCFzbWFs
bGVzdCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNh
bm5vdCByb3VuZCB3aXRob3V0IGEgc21hbGxlc3RVbml0IG9wdGlvbiJfcyk7CisgICAgICAgIHJl
dHVybiB7IH07CisgICAgfQorICAgIFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVz
dC52YWx1ZSgpOworCisgICAgYXV0byByb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5n
TW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01v
ZGUsCisgICAgICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29y
Il9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRy
dW5jIH0sIHsgImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCisg
ICAgICAgICJyb3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwg
XCJ0cnVuY1wiLCBvciBcImhhbGZFeHBhbmRcIiJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5k
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBpbmNy
ZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
bWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KHNtYWxsZXN0VW5pdCksIGZhbHNlKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBbZGF5LCBwbGFpblRpbWVd
ID0gcm91bmRUaW1lKG1fcGxhaW5UaW1lLCBpbmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91bmRp
bmdNb2RlLCBzdGQ6Om51bGxvcHQpOworICAgIHJldHVybiBwbGFpblRpbWU7Cit9CisKK1N0cmlu
ZyBUZW1wb3JhbFBsYWluVGltZTo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwor
ICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0
LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisK
KyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJldHVybiB0b1N0cmluZygpOworCisgICAgUHJl
Y2lzaW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihnbG9iYWxPYmplY3QsIG9w
dGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRv
IHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9w
dGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwKKyAgICAgICAgeyB7ICJjZWls
Il9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxv
b3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwgeyAiaGFsZkV4cGFuZCJf
cywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0gfSwKKyAgICAgICAgInJvdW5kaW5nTW9kZSBt
dXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcInRydW5jXCIsIG9yIFwiaGFsZkV4
cGFuZFwiIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgLy8gTm8gbmVlZCB0byBtYWtlIGEgbmV3IG9iamVjdCBpZiB3
ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRzLgorICAgIGlmIChzdGQ6OmdldDwwPihkYXRh
LnByZWNpc2lvbikgPT0gUHJlY2lzaW9uOjpBdXRvICYmIHJvdW5kaW5nTW9kZSA9PSBSb3VuZGlu
Z01vZGU6OlRydW5jKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcoKTsKKworICAgIGF1dG8gW2Rh
eSwgcGxhaW5UaW1lXSA9IHJvdW5kVGltZShtX3BsYWluVGltZSwgZGF0YS5pbmNyZW1lbnQsIGRh
dGEudW5pdCwgcm91bmRpbmdNb2RlLCBzdGQ6Om51bGxvcHQpOworICAgIHJldHVybiBJU084NjAx
Ojp0ZW1wb3JhbFRpbWVUb1N0cmluZyhwbGFpblRpbWUsIGRhdGEucHJlY2lzaW9uKTsKK30KKwor
CitzdGF0aWMgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZShWTSYgdm0sIHVuc2lnbmVkIGluZGV4
KQoreworICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mVGVtcG9yYWxVbml0cyk7CisgICAgc3dp
dGNoIChzdGF0aWNfY2FzdDxUZW1wb3JhbFVuaXQ+KGluZGV4KSkgeworI2RlZmluZSBKU0NfVEVN
UE9SQUxfRFVSQVRJT05fUFJPUEVSVFlfTkFNRShuYW1lLCBjYXBpdGFsaXplZE5hbWUpIGNhc2Ug
VGVtcG9yYWxVbml0OjpjYXBpdGFsaXplZE5hbWU6IHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5u
YW1lOworICAgICAgICBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX1RFTVBPUkFMX0RVUkFUSU9OX1BS
T1BFUlRZX05BTUUpCisjdW5kZWYgSlNDX1RFTVBPUkFMX0RVUkFUSU9OX1BST1BFUlRZX05BTUUK
KyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMg
SVNPODYwMTo6RHVyYXRpb24gdG9UZW1wb3JhbFRpbWVSZWNvcmQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNPYmplY3QqIHRlbXBvcmFsVGltZUxpa2UpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uIHsgfTsKKyAgICBmb3IgKHVu
c2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHM7
ICsraW5kZXgpIHsKKyAgICAgICAgdW5zaWduZWQgZHVyYXRpb25JbmRleCA9IGluZGV4ICsgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KFRlbXBvcmFsVW5pdDo6SG91cik7CisgICAgICAgIGF1dG8gbmFt
ZSA9IHByb3BlcnR5TmFtZSh2bSwgZHVyYXRpb25JbmRleCk7CisgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSB0ZW1wb3JhbFRpbWVMaWtlLT5nZXQoZ2xvYmFsT2JqZWN0LCBuYW1lKTsKKyAgICAgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgICAgICAvLyBXZSBhcmUgdGhy
b3dpbmcgYW4gZXJyb3IgaGVyZSwgYnV0IHByb2JhYmx5IHRoaXMgaXMgYSBzcGVjIGJ1Zy4KKyAg
ICAgICAgLy8gVHJhY2tlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC10ZW1w
b3JhbC9pc3N1ZXMvMTgwMy4KKyAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAg
ICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmco
JyInLCBTdHJpbmdWaWV3KG5hbWUudWlkKCkpLCAiXCIgZmllbGQgaXMgbWlzc2luZyJfcykpOwor
ICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIGRvdWJsZSBpbnRl
Z2VyID0gdmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICBpZiAoIXN0ZDo6aXNmaW5p
dGUoaW50ZWdlcikpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUiX3Mp
OworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBkdXJhdGlvbltk
dXJhdGlvbkluZGV4XSA9IGludGVnZXI7CisgICAgfQorICAgIHJldHVybiBkdXJhdGlvbjsKK30K
Kworc3RhdGljIElTTzg2MDE6OlBsYWluVGltZSBjb25zdHJhaW50VGltZShJU084NjAxOjpEdXJh
dGlvbiYmIGR1cmF0aW9uKQoreworICAgIGF1dG8gY29uc3RyYWluVG9SYW5nZSA9IFtdKGRvdWJs
ZSB2YWx1ZSwgdW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQgbWF4aW11bSkgLT4gdW5zaWduZWQg
eworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bWluPGRvdWJsZT4o
c3RkOjptYXg8ZG91YmxlPih2YWx1ZSwgbWluaW11bSksIG1heGltdW0pKTsKKyAgICB9OworICAg
IHJldHVybiBJU084NjAxOjpQbGFpblRpbWUoCisgICAgICAgIGNvbnN0cmFpblRvUmFuZ2UoZHVy
YXRpb24uaG91cnMoKSwgMCwgMjMpLAorICAgICAgICBjb25zdHJhaW5Ub1JhbmdlKGR1cmF0aW9u
Lm1pbnV0ZXMoKSwgMCwgNTkpLAorICAgICAgICBjb25zdHJhaW5Ub1JhbmdlKGR1cmF0aW9uLnNl
Y29uZHMoKSwgMCwgNTkpLAorICAgICAgICBjb25zdHJhaW5Ub1JhbmdlKGR1cmF0aW9uLm1pbGxp
c2Vjb25kcygpLCAwLCAxMDAwKSwKKyAgICAgICAgY29uc3RyYWluVG9SYW5nZShkdXJhdGlvbi5t
aWNyb3NlY29uZHMoKSwgMCwgMTAwMCksCisgICAgICAgIGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRp
b24ubmFub3NlY29uZHMoKSwgMCwgMTAwMCkpOworfQorCitzdGF0aWMgSVNPODYwMTo6UGxhaW5U
aW1lIHJlZ3VsYXRlVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJU084NjAxOjpE
dXJhdGlvbiYmIGR1cmF0aW9uLCBUZW1wb3JhbE92ZXJmbG93IG92ZXJmbG93KQoreworICAgIHN3
aXRjaCAob3ZlcmZsb3cpIHsKKyAgICBjYXNlIFRlbXBvcmFsT3ZlcmZsb3c6OkNvbnN0cmFpbjoK
KyAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRUaW1lKFdURk1vdmUoZHVyYXRpb24pKTsKKyAgICBj
YXNlIFRlbXBvcmFsT3ZlcmZsb3c6OlJlamVjdDoKKyAgICAgICAgcmV0dXJuIHRvUGxhaW5UaW1l
KGdsb2JhbE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbikpOworICAgIH0KKyAgICByZXR1cm4geyB9
OworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3Jh
bC10b3RlbXBvcmFsdGltZQorVGVtcG9yYWxQbGFpblRpbWUqIFRlbXBvcmFsUGxhaW5UaW1lOjpm
cm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlLCBzdGQ6
Om9wdGlvbmFsPFRlbXBvcmFsT3ZlcmZsb3c+IG92ZXJmbG93VmFsdWUpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIGF1dG8gb3ZlcmZsb3cgPSBvdmVyZmxvd1ZhbHVlLnZhbHVlX29yKFRl
bXBvcmFsT3ZlcmZsb3c6OkNvbnN0cmFpbik7CisKKyAgICBpZiAoaXRlbVZhbHVlLmlzT2JqZWN0
KCkpIHsKKyAgICAgICAgaWYgKGl0ZW1WYWx1ZS5pbmhlcml0czxUZW1wb3JhbFBsYWluVGltZT4o
dm0pKQorICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KGl0ZW1W
YWx1ZSk7CisgICAgICAgIGF1dG8gZHVyYXRpb24gPSB0b1RlbXBvcmFsVGltZVJlY29yZChnbG9i
YWxPYmplY3QsIGpzQ2FzdDxKU09iamVjdCo+KGl0ZW1WYWx1ZSkpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICBhdXRvIHBsYWluVGltZSA9IHJlZ3Vs
YXRlVGltZShnbG9iYWxPYmplY3QsIFdURk1vdmUoZHVyYXRpb24pLCBvdmVyZmxvdyk7CisgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIHJldHVybiBUZW1w
b3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVy
ZSgpLCBXVEZNb3ZlKHBsYWluVGltZSkpOworICAgIH0KKworICAgIGF1dG8gc3RyaW5nID0gaXRl
bVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gdGltZSA9IElTTzg2MDE6OnBhcnNlVGltZShzdHJp
bmcpOworICAgIGlmICh0aW1lKSB7CisgICAgICAgIGF1dG8gW3BsYWluVGltZSwgdGltZVpvbmVP
cHRpb25hbF0gPSB0aW1lLnZhbHVlKCk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGlt
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3Zl
KHBsYWluVGltZSkpOworICAgIH0KKworICAgIGF1dG8gZGF0ZVRpbWUgPSBJU084NjAxOjpwYXJz
ZURhdGVUaW1lKHN0cmluZyk7CisgICAgaWYgKGRhdGVUaW1lKSB7CisgICAgICAgIGF1dG8gW3Bs
YWluRGF0ZSwgcGxhaW5UaW1lT3B0aW9uYWwsIHRpbWVab25lT3B0aW9uYWxdID0gZGF0ZVRpbWUu
dmFsdWUoKTsKKyAgICAgICAgYXV0byBwbGFpblRpbWUgPSBwbGFpblRpbWVPcHRpb25hbC52YWx1
ZV9vcihJU084NjAxOjpQbGFpblRpbWUoKSk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWlu
VGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZN
b3ZlKHBsYWluVGltZSkpOworICAgIH0KKworICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiaW52YWxpZCB0aW1lIHN0cmluZyJfcyk7CisgICAgcmV0dXJuIHsgfTsKK30K
KworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxQbGFpblRpbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4wYjk0MTQ5YTZjZjUyMWI2ZjNhNmMw
ZmViMTExZWI4ZmU2ZGEyMGJkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaApAQCAtMCwwICsxLDg4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisK
KyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiTGF6eVByb3BlcnR5LmgiCisjaW5jbHVk
ZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9y
YWxQbGFpblRpbWUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6Cisg
ICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFt
ZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2Uq
IHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS50ZW1wb3JhbFBs
YWluVGltZVNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBvcmFsUGxhaW5U
aW1lKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpQbGFpblRpbWUmJik7CisgICAg
c3RhdGljIFRlbXBvcmFsUGxhaW5UaW1lKiB0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0
KiwgU3RydWN0dXJlKiwgSVNPODYwMTo6RHVyYXRpb24mJik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluVGltZSogZnJvbShKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUsIHN0ZDo6b3B0aW9uYWw8VGVtcG9yYWxPdmVyZmxvdz4pOwor
ICAgIHN0YXRpYyBKU1ZhbHVlIGNvbXBhcmUoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBKU1Zh
bHVlKTsKKworICAgIFRlbXBvcmFsQ2FsZW5kYXIqIGNhbGVuZGFyKCkgeyByZXR1cm4gbV9jYWxl
bmRhci5nZXQodGhpcyk7IH0KKworI2RlZmluZSBKU0NfREVGSU5FX1RFTVBPUkFMX1BMQUlOX1RJ
TUVfRklFTEQobmFtZSwgY2FwaXRhbGl6ZWROYW1lKSBcCisgICAgdW5zaWduZWQgbmFtZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhaW5UaW1lLm5hbWUoKTsgfQorICAgIEpTQ19URU1QT1JBTF9QTEFJ
Tl9USU1FX1VOSVRTKEpTQ19ERUZJTkVfVEVNUE9SQUxfUExBSU5fVElNRV9GSUVMRCk7CisjdW5k
ZWYgSlNDX0RFRklORV9URU1QT1JBTF9QTEFJTl9USU1FX0ZJRUxECisKKyAgICBJU084NjAxOjpQ
bGFpblRpbWUgd2l0aChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBwbGFpblRpbWVMaWtlKSBj
b25zdDsKKyAgICBJU084NjAxOjpQbGFpblRpbWUgYWRkKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1
ZSkgY29uc3Q7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHN1YnRyYWN0KEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHJvdW5kKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmlu
ZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbiA9IHsgUHJlY2lzaW9u
OjpBdXRvLCAwIH0pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSVNPODYwMTo6dGVtcG9y
YWxUaW1lVG9TdHJpbmcobV9wbGFpblRpbWUsIHByZWNpc2lvbik7CisgICAgfQorCisgICAgSVNP
ODYwMTo6UGxhaW5UaW1lIHBsYWluVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5UaW1lOyB9
CisKKyAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOworCitwcml2YXRlOgorICAgIFRlbXBvcmFs
UGxhaW5UaW1lKFZNJiwgU3RydWN0dXJlKiwgSVNPODYwMTo6UGxhaW5UaW1lJiYpOworICAgIHZv
aWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6UGxhaW5UaW1lPiBwYXJz
ZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+Jik7CisgICAgc3RhdGljIElTTzg2
MDE6OlBsYWluVGltZSBmcm9tT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKKwor
ICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0U3VicGxhaW5UaW1lKCkgY29uc3Q7CisKKyAgICBJU084
NjAxOjpQbGFpblRpbWUgbV9wbGFpblRpbWU7CisgICAgTGF6eVByb3BlcnR5PFRlbXBvcmFsUGxh
aW5UaW1lLCBUZW1wb3JhbENhbGVuZGFyPiBtX2NhbGVuZGFyOworfTsKKworfSAvLyBuYW1lc3Bh
Y2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjFkZTVhNDA0NWYz
YzVhMDFiNGQ1YTIzZTEzOGQzM2JkYWE0MDNmYmUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcApA
QCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxQbGFpblRpbWUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJV
Q1RJQkxFKFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IpOworCitzdGF0aWMgSlNDX0RFQ0xB
UkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yRnVuY0Zyb20pOwor
c3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1
Y3RvckZ1bmNDb21wYXJlKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVDb25z
dHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpz
X2luZm8sICZ0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvcikgfTsKKworLyogU291
cmNlIGZvciBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gdGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3RvclRhYmxlCisgIGZyb20gICAgICAgICAgICAgdGVtcG9yYWxQ
bGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNGcm9tICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9u
IDEKKyAgY29tcGFyZSAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yRnVuY0Nv
bXBhcmUgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorQGVuZAorKi8KKworVGVtcG9yYWxQ
bGFpblRpbWVDb25zdHJ1Y3RvciogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6Y3JlYXRl
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
KiBwbGFpblRpbWVQcm90b3R5cGUpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5v
dE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yPih2bS5oZWFw
KSkgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25z
dHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHBsYWluVGltZVByb3RvdHlwZSk7CisgICAgcmV0
dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3Ry
dWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2
bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGNhbGxUZW1wb3JhbFBsYWluVGltZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSk7CisKK1RlbXBvcmFsUGxhaW5U
aW1lQ29uc3RydWN0b3I6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbFRlbXBvcmFs
UGxhaW5UaW1lLCBjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSkKK3sKK30KKwordm9pZCBUZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlKiBwbGFpblRpbWVQcm90b3R5cGUpCit7CisgICAgQmFzZTo6Zmlu
aXNoQ3JlYXRpb24odm0sIDAsICJQbGFpblRpbWUiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpX
aXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcGxhaW5UaW1lUHJvdG90eXBlLCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0
ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcGxhaW5UaW1lUHJvdG90eXBl
LT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFs
UGxhaW5UaW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0
ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUgPSBKU0NfR0VUX0RFUklWRURfU1RSVUNUVVJFKHZtLCBwbGFpblRpbWVTdHJ1Y3R1cmUs
IG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24geyB9Owor
ICAgIGF1dG8gY291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KGNhbGxGcmFtZS0+YXJndW1lbnRDb3Vu
dCgpLCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHMpOworICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uSW5kZXgg
PSBpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRlbXBvcmFsVW5pdDo6SG91cik7CisgICAgICAg
IGR1cmF0aW9uW2R1cmF0aW9uSW5kZXhdID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChp
KS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShkdXJhdGlv
bltkdXJhdGlvbkluZGV4XSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZSBwcm9wZXJ0aWVzIG11c3Qg
YmUgZmluaXRlIl9zKTsKKyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1Zh
bHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2Jq
ZWN0LCBzdHJ1Y3R1cmUsIFdURk1vdmUoZHVyYXRpb24pKSkpOworfQorCitKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsUGxhaW5UaW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlv
blR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGxhaW5UaW1lIikpOworfQorCitKU0Nf
REVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNGcm9t
LCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRP
cHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFRlbXBvcmFsT3ZlcmZsb3cg
b3ZlcmZsb3cgPSB0b1RlbXBvcmFsT3ZlcmZsb3coZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1ZSBpdGVtVmFs
dWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworCisgICAgaWYgKGl0ZW1WYWx1ZS5pbmhlcml0
czxUZW1wb3JhbFBsYWluVGltZT4odm0pKQorICAgICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBqc0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPihp
dGVtVmFsdWUpLT5wbGFpblRpbWUoKSkpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKGdsb2JhbE9iamVjdCwg
aXRlbVZhbHVlLCBvdmVyZmxvdykpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBVTlVTRURfUEFSQU0o
Z2xvYmFsT2JqZWN0KTsKKyAgICBVTlVTRURfUEFSQU0oY2FsbEZyYW1lKTsKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIC8vIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNvbXBhcmUoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUt
PmFyZ3VtZW50KDApLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKSk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyYTkzNjVlMTUwZDUz
OTg2NWFmNWVmMzIzMTYxY2ViZGMxZjA1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmgKQEAgLTAs
MCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgorICog
UmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBv
ciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0
aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlv
bnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNl
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24u
CisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMg
Q09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFS
CisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisg
KiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJP
RklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQor
ICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1l
c3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU7CisKK2NsYXNz
IFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5j
dGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisgICAg
c3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVy
ZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBUZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBUZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShW
TSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3By
aXZhdGU6CisgICAgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSop
OworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxh
aW5UaW1lQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBK
U0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44MGRiZmFhMjA2N2ZmMTU1MzFj
YmZjYWE0MjFiOGQ5NTk4NjM5NjE0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEs
MzA0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
LmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRp
bWUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1dpdGgpOworc3RhdGljIEpTQ19ERUNM
QVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jQWRkKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
RnVuY1N1YnRyYWN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlRnVuY1JvdW5kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1Rv
SlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNWYWx1ZU9mKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVy
SG91cik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZUdldHRlck1pbnV0ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlclNlY29uZCk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbGxp
c2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJOYW5vc2Vjb25kKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
R2V0dGVyQ2FsZW5kYXIpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVtcG9yYWwuUGxhaW5UaW1lIiwgJkJh
c2U6OnNfaW5mbywgJnBsYWluVGltZVByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9y
IFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gcGxhaW5UaW1lUHJvdG90
eXBlVGFibGUKKyAgd2l0aCAgICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1
bmNXaXRoICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBhZGQgICAgICAgICAg
ICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0FkZCAgICAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgIHN1YnRyYWN0ICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGVGdW5jU3VidHJhY3QgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcm91bmQg
ICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNSb3VuZCAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQorICB0b1N0cmluZyAgICAgICAgIHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1RvU3RyaW5nICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisg
IHRvSlNPTiAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9KU09OICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2NhbGVTdHJpbmcgICB0ZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAgICAgRG9udEVudW18RnVuY3Rp
b24gMAorICB2YWx1ZU9mICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1Zh
bHVlT2YgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIGhvdXIgICAgICAgICAgICAg
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyICAgICAgICAgICAgIERvbnRFbnVt
fFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG1pbnV0ZSAgICAgICAgICAgdGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCisgIHNlY29uZCAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVHZXR0ZXJTZWNvbmQgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29y
CisgIG1pbGxpc2Vjb25kICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaWxs
aXNlY29uZCAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG1pY3Jvc2Vj
b25kICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaWNyb3NlY29uZCAgICAg
IERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG5hbm9zZWNvbmQgICAgICAgdGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJOYW5vc2Vjb25kICAgICAgIERvbnRFbnVtfFJl
YWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGNhbGVuZGFyICAgICAgICAgdGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3Rv
bUFjY2Vzc29yCitAZW5kCisqLworCitUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogVGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIHByb3RvdHlwZSA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlPih2
bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAg
cHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4g
cHJvdG90eXBlOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpj
cmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyks
IGluZm8oKSk7Cit9CisKK1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpUZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2
bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBK
U0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1dpdGgsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFp
blRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLndpdGggY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShw
bGFpblRpbWUpOworCisgICAgLy8gSlNWYWx1ZSBwbGFpblRpbWVMaWtlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKKyAgICAvLyBpZiAoIXBsYWluVGltZUxpa2UuaXNPYmplY3QoKSkKKyAgICAv
LyAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkZpcnN0
IGFyZ3VtZW50IHRvIFRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUud2l0aCBtdXN0IGJlIGFu
IG9iamVjdCJfcyk7CisKKyAgICAvLyBhdXRvIHN1YnBsYWluVGltZXMgPSBwbGFpblRpbWUtPndp
dGgoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChwbGFpblRpbWVMaWtlKSk7CisgICAgLy8gUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8vIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjp0cnlDcmVhdGVJZlZhbGlk
KGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJwbGFpblRpbWVzKSkpKTsKK30KKworSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0FkZCwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1w
b3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBs
YWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2YWx1ZSB0
aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
cGxhaW5UaW1lKTsKKworICAgIC8vIGF1dG8gc3VicGxhaW5UaW1lcyA9IHBsYWluVGltZS0+YWRk
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgLy8gUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8vIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjp0cnlDcmVhdGVJZlZhbGlkKGds
b2JhbE9iamVjdCwgV1RGTW92ZShzdWJwbGFpblRpbWVzKSkpKTsKK30KKworSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1N1YnRyYWN0LCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRl
bXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICgh
cGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5zdWJ0cmFjdCBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHBsYWluVGltZSk7CisKKyAgICAvLyBhdXRvIHN1YnBsYWluVGltZXMgPSBwbGFpblRp
bWUtPnN1YnRyYWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAg
Ly8gUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8vIFJFTEVBU0VfQU5E
X1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjp0cnlDcmVh
dGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJwbGFpblRpbWVzKSkpKTsKK30KKwor
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1Jv
dW5kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUp
KQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFt
aWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOwor
ICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5yb3VuZCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBhdXRvIG9wdGlv
bnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmIChvcHRpb25zLmlzVW5kZWZpbmVk
KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMg
YXJndW1lbnQiX3MpOworCisgICAgYXV0byByb3VuZGVkID0gcGxhaW5UaW1lLT5yb3VuZChnbG9i
YWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3Jh
bFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgp
LCBXVEZNb3ZlKHJvdW5kZWQpKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5QbGFpblRpbWUucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgwKSkpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRp
bWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5n
KHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvTG9jYWxlU3RyaW5nLCAoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBv
cmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxh
aW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyBjYWxsZWQg
b24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkpKTsKK30KKworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1ZhbHVl
T2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5vdCBi
ZSBjYWxsZWQuIFRvIGNvbXBhcmUgUGxhaW5UaW1lIHZhbHVlcywgdXNlIFRlbXBvcmFsLlBsYWlu
VGltZS5jb21wYXJlIl9zKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlR2V0dGVySG91ciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3Jh
bFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFw
bGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmhvdXIgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcihwbGFpblRpbWUtPmhvdXIoKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9H
RVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taW51
dGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm1pbnV0ZSgpKSk7Cit9CisK
K0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRl
clNlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRo
aXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0
byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1Zh
bHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFp
blRpbWUucHJvdG90eXBlLnNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWlu
VGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGlt
ZS0+c2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlR2V0dGVyTWlsbGlzZWNvbmQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
ICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWxsaXNlY29uZCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+bWlsbGlzZWNvbmQoKSkpOworfQorCitK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJN
aWNyb3NlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVl
IHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
YXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBK
U1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5Q
bGFpblRpbWUucHJvdG90eXBlLm1pY3Jvc2Vjb25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIo
cGxhaW5UaW1lLT5taWNyb3NlY29uZCgpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck5hbm9zZWNvbmQsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5uYW5v
c2Vjb25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5uYW5vc2Vjb25kKCkp
KTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlR2V0dGVyQ2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVk
SlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUq
Pih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBsYWlu
VGltZS0+Y2FsZW5kYXIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMmVhMjI5YTdiZDUxOTRiYjQ2MTZmYTQ3MmMyZmFkNjE0ZDNhZTU4
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVk
ZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgor
ICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIg
dW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRp
Y1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3Bh
Y2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisg
ICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmpl
Y3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUq
IGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0
cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBK
U0dsb2JhbE9iamVjdCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCmluZGV4IDk3ODRj
M2QxNzQ5OTY5MTUwYjNlZDZlNjg2ZDVjYTg5NjllMmIyZDIuLjc2NTliMDU4MmNjZDI5NWU4ZDFi
YTVmMzhlZWJkNDE0NzE4NjE3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCkBAIC01NywxNyArNTcsNiBAQCBUZW1wb3JhbFRp
bWVab25lOjpUZW1wb3JhbFRpbWVab25lKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRp
bWVab25lIHRpbWVabwogewogfQogCi0vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3N1cC1pc3ZhbGlkdGltZXpvbmVuYW1lCi1zdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IFRl
bXBvcmFsVGltZVpvbmU6OmlkRm9yVGltZVpvbmVOYW1lKFN0cmluZ1ZpZXcgc3RyaW5nKQotewot
ICAgIGNvbnN0IGF1dG8mIHRpbWVab25lcyA9IGludGxBdmFpbGFibGVUaW1lWm9uZXMoKTsKLSAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB0aW1lWm9uZXMuc2l6ZSgpOyArK2lu
ZGV4KSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRpbWVab25lc1tpbmRl
eF0sIHN0cmluZykpCi0gICAgICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAgfQotICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7Ci19Ci0KIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3Jh
bC8jc2VjLXRlbXBvcmFsLXBhcnNldGVtcG9yYWx0aW1lWm9uZXN0cmluZwogc3RhdGljIHN0ZDo6
b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUZW1wb3JhbFRpbWVab25lU3RyaW5nKFN0cmluZ1ZpZXcp
CiB7CkBAIC0xMTAsNyArOTksNyBAQCBKU09iamVjdCogVGVtcG9yYWxUaW1lWm9uZTo6ZnJvbShK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRpbWVab25lTAogICAgIGlmICh1
dGNPZmZzZXQpCiAgICAgICAgIHJldHVybiBUZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tVVRD
T2Zmc2V0KHZtLCBnbG9iYWxPYmplY3QtPnRpbWVab25lU3RydWN0dXJlKCksIHV0Y09mZnNldC52
YWx1ZSgpKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IGlk
Rm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRpbWVa
b25lSUQ+IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0
cmluZyk7CiAgICAgaWYgKGlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBUZW1wb3JhbFRpbWVa
b25lOjpjcmVhdGVGcm9tSUQodm0sIGdsb2JhbE9iamVjdC0+dGltZVpvbmVTdHJ1Y3R1cmUoKSwg
aWRlbnRpZmllci52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZS5oCmluZGV4IGJjMjgxNTNiN2ZkMjViYjc2NWUyNTA2ZmQ5NmZh
NzZiNWU1MTBhZGIuLmU1NzllYTNhNjNmNjIxZmRmNDMyNjExMzI5NzQ5YmYzYzQ3NDZhNmQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmgK
QEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJJU084NjAxLmgi
CiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVk
ZSA8d3RmL1ZhcmlhbnQuaD4KQEAgLTQ3LDEwICs0OCw5IEBAIGNsYXNzIFRlbXBvcmFsVGltZVpv
bmUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBERUNMQVJFX0lORk87
CiAKLSAgICB1c2luZyBUaW1lWm9uZSA9IFZhcmlhbnQ8VGltZVpvbmVJRCwgaW50NjRfdD47Ci0g
ICAgVGltZVpvbmUgdGltZVpvbmUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVab25lOyB9CisgICAg
dXNpbmcgVGltZVpvbmUgPSBJU084NjAxOjpUaW1lWm9uZTsKIAotICAgIHN0YXRpYyBzdGQ6Om9w
dGlvbmFsPFRpbWVab25lSUQ+IGlkRm9yVGltZVpvbmVOYW1lKFN0cmluZ1ZpZXcpOworICAgIFRp
bWVab25lIHRpbWVab25lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lWm9uZTsgfQogCiAgICAgc3Rh
dGljIEpTT2JqZWN0KiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25l
Q29uc3RydWN0b3IuY3BwCmluZGV4IDk5MzM2NWFiMzMyZjhmZmFkODc1ODgwMDA4MTBjZDMwZWRk
YTYxZDcuLjZkMjNlOGYwNTlkYzc5YmNmYTI5ZDljNjVhMDVlZWU4M2IzYTVjYzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1
Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1l
Wm9uZUNvbnN0cnVjdG9yLmNwcApAQCAtNzQsNiArNzQsNyBAQCB2b2lkIFRlbXBvcmFsVGltZVpv
bmVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbFRpbWVab25lUHJv
dG90eQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiVGltZVpvbmUiX3MsIFBy
b3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0
RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwg
dGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOworICAgIHRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFu
c2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxUaW1lWm9uZSwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkyLDcgKzkzLDcg
QEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsVGltZVpvbmUsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBpZiAodXRjT2Zmc2V0KQogICAgICAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENPZmZz
ZXQodm0sIHN0cnVjdHVyZSwgdXRjT2Zmc2V0LnZhbHVlKCkpKTsKIAotICAgIHN0ZDo6b3B0aW9u
YWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IFRlbXBvcmFsVGltZVpvbmU6OmlkRm9yVGltZVpv
bmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlk
ZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7CiAg
ICAgaWYgKCFpZGVudGlmaWVyKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiYXJndW1lbnQgbmVlZHMgdG8gYmUgVVRDIG9mZnNldCBzdHJpbmcgb3IgVGlt
ZVpvbmUgaWRlbnRpZmllciJfcyk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9WTS5jcHAKaW5kZXggMDJmMTg5N2IwZjM5MTg1NjBiNTA1MzE5ZDZlNDYxYmRi
NWQ3MTBkZC4uMTVkZGIyYWZhZTUyMzc3N2FlOTA2NmIzMWIwZDcxMDU0NmI3ZDg3MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTY0LDYgKzE2NCw3IEBACiAjaW5jbHVk
ZSAiU3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgogI2luY2x1
ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgog
I2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMu
aCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKQEAgLTE1ODgsNiArMTU4OSw4IEBAIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgZGVzdHJ1
Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN5bWJvbE9i
amVjdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9i
amVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwg
SlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBUZW1wb3JhbENhbGVuZGFyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9y
YWxEdXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1w
b3JhbFBsYWluVGltZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbFBsYWlu
VGltZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRp
bWVab25lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsVGltZVpvbmUpCiBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhBcnJheVNwYWNlLCBj
ZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQ4QXJyYXkpCiBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNVaW50OENsYW1wZWRBcnJheSkKQEAgLTE2MjIsNyArMTYyNSw2IEBAIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9y
bWF0U3BhY2UsIGludGxSZWxhdGl2CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1coaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENl
bGxUeXBlLmdldCgpLCBJbnRsU2VnbWVudEl0ZXJhdG9yKQogRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50ZXJTcGFjZSwgaW50bFNlZ21lbnRlckhlYXBD
ZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21lbnRlcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBl
LmdldCgpLCBJbnRsU2VnbWVudHMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1w
b3JhbER1cmF0aW9uKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIEpTVG9XYXNtSUNDYWxsZWUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1ibHlDb2Rl
QmxvY2tIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6
MHg5YWQ5OTVjZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMWU3MjVjZTM3NDg3
M2UwMDdkMWIwM2Y1NDk1NmM1MDIzMDRjNmIzNy4uN2E1OGIyNzllNjcwYTg0MDNkMWYzOTQxMjM1
N2Q1ZTc3MTEzZjU3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Vk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xOTUsNiAr
MTk1LDcgQEAgY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmly
dHVhbFJlZ2lzdGVyOwogY2xhc3MgVk1FbnRyeVNjb3BlOwogY2xhc3MgVGVtcG9yYWxDYWxlbmRh
cjsKK2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lOwogY2xhc3MgVGVtcG9yYWxUaW1lWm9uZTsKIGNs
YXNzIFRvcExldmVsR2xvYmFsT2JqZWN0U2NvcGU7CiBjbGFzcyBUeXBlUHJvZmlsZXI7CkBAIC01
OTUsNiArNTk2LDggQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+
LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHN5bWJvbE9iamVjdFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9u
U3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFBs
YWluVGltZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVt
cG9yYWxUaW1lWm9uZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodWludDhBcnJheVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkKQEAgLTYyMCw3ICs2MjMsNiBAQCBjbGFzcyBWTSA6
IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0
Tm9kZTxWTT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNl
Z21lbnRJdGVyYXRvclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIoaW50bFNlZ21lbnRlclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoaW50bFNlZ21lbnRzU3BhY2UpCi0gICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3BhY2UpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNUb1dhc21JQ0NhbGxlZVNw
YWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlD
b2RlQmxvY2tTcGFjZSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggMzIyMzY2YTg2ODM0NTZmMGE0YjFkYTc4ZjliOTI2MTdlYjAwMWUyNi4u
NDNkMjQ3YTAyZmIwYmI2N2RlOTQ1MGNkYTU4ZjQzZTFkMjU4NTM4MCAxMDA2NDQKLS0tIGEvSlNU
ZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBAQAor
MjAyMS0wOS0wNCAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAg
IFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5QbGFpblRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTg5MgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3RlbXBvcmFsLXBsYWludGltZS5q
czogQWRkZWQuCisgICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6Cisg
ICAgICAgIChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSk6CisgICAgICAgIChsZXQudGltZS5UZW1w
b3JhbC5QbGFpblRpbWUuZnJvbS5zaG91bGRCZSk6CisgICAgICAgIChsZXQudGV4dC5vZi5mYWls
dXJlcy5zaG91bGRUaHJvdyk6CisgICAgICAgICogc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpz
OgorCiAyMDIxLTA5LTAzICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0pTQ10gTWFrZSBFbnVtZXJhdG9yTmV4dFVwZGF0ZUluZGV4QW5kTW9kZSBjbG9iYmVy
aXppbmcgcnVsZSBwcmVjaXNlCmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1w
bGFpbnRpbWUuanMgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1wbGFpbnRpbWUuanMKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uYWVjZjQzYjQyZGViN2JkZDFjMTViYTIwYjMyMGVkZjBhMWM3MTBmNQotLS0gL2Rldi9u
dWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXBsYWludGltZS5qcwpAQCAtMCwwICsx
LDE4OCBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVRlbXBvcmFsPTEiKQorCitmdW5jdGlv
biBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0
ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdv
dCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBl
LCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsK
KyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAo
IShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihg
RXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAgaWYgKG1lc3NhZ2UgIT09IHVuZGVm
aW5lZCkKKyAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVycm9yKSwgbWVzc2FnZSk7Cit9CisKK3sK
KyAgICBsZXQgdGltZSA9IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMSwgMiwgMywgNCwgNSwg
NiwgNyk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBgMDA6MDE6MDIuMDAzMDA0MDA1YCk7
CisgICAgc2hvdWxkQmUodGltZS5ob3VyLCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwg
MSk7CisgICAgc2hvdWxkQmUodGltZS5zZWNvbmQsIDIpOworICAgIHNob3VsZEJlKHRpbWUubWls
bGlzZWNvbmQsIDMpOworICAgIHNob3VsZEJlKHRpbWUubWljcm9zZWNvbmQsIDQpOworICAgIHNo
b3VsZEJlKHRpbWUubmFub3NlY29uZCwgNSk7Cit9CisKK3sKKyAgICBsZXQgdGltZSA9IG5ldyBU
ZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgc2hvdWxkQmUoU3RyaW5n
KHRpbWUpLCBgMDA6MDA6MDBgKTsKKyAgICBzaG91bGRCZSh0aW1lLmhvdXIsIDApOworICAgIHNo
b3VsZEJlKHRpbWUubWludXRlLCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLnNlY29uZCwgMCk7Cisg
ICAgc2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwgMCk7CisgICAgc2hvdWxkQmUodGltZS5taWNy
b3NlY29uZCwgMCk7CisgICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCAwKTsKK30KKworewor
ICAgIGxldCB0aW1lID0gbmV3IFRlbXBvcmFsLlBsYWluVGltZSgyMywgNTksIDU5LCA5OTksIDk5
OSwgOTk5KTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAyMzo1OTo1OS45OTk5OTk5OTlg
KTsKKyAgICBzaG91bGRCZSh0aW1lLmhvdXIsIDIzKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0
ZSwgNTkpOworICAgIHNob3VsZEJlKHRpbWUuc2Vjb25kLCA1OSk7CisgICAgc2hvdWxkQmUodGlt
ZS5taWxsaXNlY29uZCwgOTk5KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pY3Jvc2Vjb25kLCA5OTkp
OworICAgIHNob3VsZEJlKHRpbWUubmFub3NlY29uZCwgOTk5KTsKK30KKworeworICAgIGxldCB0
aW1lID0gbmV3IFRlbXBvcmFsLlBsYWluVGltZSgyMywgNTksIDU5LCA5OTksIDk5OSwgOTk5KTsK
KyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAyMzo1OTo1OS45OTk5OTk5OTlgKTsKKyAgICBz
aG91bGRCZSh0aW1lLmhvdXIsIDIzKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgNTkpOwor
ICAgIHNob3VsZEJlKHRpbWUuc2Vjb25kLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5taWxsaXNl
Y29uZCwgOTk5KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pY3Jvc2Vjb25kLCA5OTkpOworICAgIHNo
b3VsZEJlKHRpbWUubmFub3NlY29uZCwgOTk5KTsKK30KKworeworICAgIC8vIFdlIGFjY2VwdCA2
MCBzZWNvbmRzLCBidXQgaW50ZXJwcmV0IGl0IGFzIDU5IHNlY29uZHMuCisgICAgLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcGFyc2Vpc29kYXRldGlt
ZSBzdGVwIDEzCisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgiMjM6NTk6
NjAuOTk5OTk5OTk5Iik7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBgMjM6NTk6NTkuOTk5
OTk5OTk5YCk7CisgICAgc2hvdWxkQmUodGltZS5ob3VyLCAyMyk7CisgICAgc2hvdWxkQmUodGlt
ZS5taW51dGUsIDU5KTsKKyAgICBzaG91bGRCZSh0aW1lLnNlY29uZCwgNTkpOworICAgIHNob3Vs
ZEJlKHRpbWUubWlsbGlzZWNvbmQsIDk5OSk7CisgICAgc2hvdWxkQmUodGltZS5taWNyb3NlY29u
ZCwgOTk5KTsKKyAgICBzaG91bGRCZSh0aW1lLm5hbm9zZWNvbmQsIDk5OSk7Cit9CisKK3sKKyAg
ICAvLyBXZSBhY2NlcHQgNjAgc2Vjb25kcywgYnV0IGludGVycHJldCBpdCBhcyA1OSBzZWNvbmRz
LgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFs
LXBhcnNlaXNvZGF0ZXRpbWUgc3RlcCAxMworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5U
aW1lLmZyb20oIjIwMjEtMDktMDRUMjM6MTQ6MjYuMTAwMjAwMzAwIik7CisgICAgc2hvdWxkQmUo
U3RyaW5nKHRpbWUpLCBgMjM6MTQ6MjYuMTAwMjAwM2ApOworICAgIHNob3VsZEJlKHRpbWUuaG91
ciwgMjMpOworICAgIHNob3VsZEJlKHRpbWUubWludXRlLCAxNCk7CisgICAgc2hvdWxkQmUodGlt
ZS5zZWNvbmQsIDI2KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCAxMDApOworICAg
IHNob3VsZEJlKHRpbWUubWljcm9zZWNvbmQsIDIwMCk7CisgICAgc2hvdWxkQmUodGltZS5uYW5v
c2Vjb25kLCAzMDApOworfQorCitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZy
b20oJzAzOjI0OjMwJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5Q
bGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCcpKSwgYDAzOjI0OjMwYCk7CitzaG91
bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzBa
JykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJv
bSgnMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtFdXJvcGUvQnJ1c3NlbHNdJykpLCBgMDM6MjQ6
MzBgKTsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgn
MTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtVTktOT1dOXScpOworfSwgUmFuZ2VFcnJvcik7Cit7
CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoy
NDozMCswMTowMFtFdXJvcGUvQnJ1c3NlbHNdJykKKyAgICBzaG91bGRCZSh0aW1lID09PSBUZW1w
b3JhbC5QbGFpblRpbWUuZnJvbSh0aW1lKSwgZmFsc2UpOworfQoreworICAgIGxldCB0aW1lID0g
VGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oeworICAgICAgaG91cjogMTksCisgICAgICBtaW51dGU6
IDM5LAorICAgICAgc2Vjb25kOiA5LAorICAgICAgbWlsbGlzZWNvbmQ6IDY4LAorICAgICAgbWlj
cm9zZWNvbmQ6IDM0NiwKKyAgICAgIG5hbm9zZWNvbmQ6IDIwNQorICAgIH0pOworICAgIHNob3Vs
ZEJlKFN0cmluZyh0aW1lKSwgYDE5OjM5OjA5LjA2ODM0NjIwNWApOworCisgICAgLy8gVGhpcyBp
cyBzcGVjIGJ1Zy4gQ3VycmVudGx5IHRoaXMgdGhyb3dzIGFuIGVycm9yLiBCdXQgcG9zc2libHkg
dGhpcyBzaG91bGQgbm90IHRocm93IGFuIGVycm9yLgorICAgIC8vIFRyYWNrZWQgaW4gaHR0cHM6
Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtdGVtcG9yYWwvaXNzdWVzLzE4MDMuCisgICAgc2hv
dWxkVGhyb3coKCkgPT4geworICAgICAgICBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh7IGhvdXI6
IDE5LCBtaW51dGU6IDM5LCBzZWNvbmQ6IDkgfSk7CisgICAgfSwgVHlwZUVycm9yKTsKK30KK3sK
KyAgICAvLyBEaWZmZXJlbnQgb3ZlcmZsb3cgbW9kZXMKKyAgICBzaG91bGRCZShTdHJpbmcoVGVt
cG9yYWwuUGxhaW5UaW1lLmZyb20oeyBob3VyOiAxNSwgbWludXRlOiA2MCwgc2Vjb25kOiAwLCBt
aWxsaXNlY29uZDogMCwgbWljcm9zZWNvbmQ6IDAsIG5hbm9zZWNvbmQ6IDAgfSwgeyBvdmVyZmxv
dzogJ2NvbnN0cmFpbicgfSkpLCBgMTU6NTk6MDBgKTsKKyAgICBzaG91bGRCZShTdHJpbmcoVGVt
cG9yYWwuUGxhaW5UaW1lLmZyb20oeyBob3VyOiAxNSwgbWludXRlOiAtMSwgc2Vjb25kOiAwLCBt
aWxsaXNlY29uZDogMCwgbWljcm9zZWNvbmQ6IDAsIG5hbm9zZWNvbmQ6IDAgfSwgeyBvdmVyZmxv
dzogJ2NvbnN0cmFpbicgfSkpLCBgMTU6MDA6MDBgKTsKK30KK3Nob3VsZFRocm93KCgpID0+IHsK
KyAgICBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh7IGhvdXI6IDE1LCBtaW51dGU6IDYwLCBzZWNv
bmQ6IDAsIG1pbGxpc2Vjb25kOiAwLCBtaWNyb3NlY29uZDogMCwgbmFub3NlY29uZDogMCB9LCB7
IG92ZXJmbG93OiAncmVqZWN0JyB9KTsKK30sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4geworICAgIFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsgaG91cjogMTUsIG1pbnV0ZTogLTEs
IHNlY29uZDogMCwgbWlsbGlzZWNvbmQ6IDAsIG1pY3Jvc2Vjb25kOiAwLCBuYW5vc2Vjb25kOiAw
IH0sIHsgb3ZlcmZsb3c6ICdyZWplY3QnIH0pOworfSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZFRo
cm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgtMSk7IH0sIFJhbmdlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDI1KTsgfSwgUmFuZ2VF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMjQpOyB9
LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGlt
ZSgzMCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwu
UGxhaW5UaW1lKEluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7
IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoLUluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CisKK3No
b3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAtMSk7IH0sIFJhbmdl
RXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDYw
KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFp
blRpbWUoMCwgNjEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRl
bXBvcmFsLlBsYWluVGltZSgwLCA3Nyk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDEwMCk7IH0sIFJhbmdlRXJyb3IpOworc2hv
dWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIEluZmluaXR5KTsgfSwg
UmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUo
MCwgLUluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3
IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAtMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhy
b3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDYwKTsgfSwgUmFuZ2VFcnJv
cik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgNjEp
OyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgwLCAwLCA3Nyk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcg
VGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDEwMCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhy
b3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIEluZmluaXR5KTsgfSwgUmFu
Z2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwg
MCwgLUluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3
IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAtMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxk
VGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDEwMDApOyB9LCBS
YW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgw
LCAwLCAwLCAxMDAxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBU
ZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgNTAwMDApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3Vs
ZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCA5OTk5OTk5OTk5
KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFp
blRpbWUoMCwgMCwgMCwgSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgp
ID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAtSW5maW5pdHkpOyB9LCBSYW5n
ZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAs
IDAsIDAsIDAsIC0xKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBU
ZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMTAwMCk7IH0sIFJhbmdlRXJyb3IpOworc2hv
dWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDEwMDEp
OyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgwLCAwLCAwLCAwLCA1MDAwMCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDk5OTk5OTk5OTkpOyB9LCBS
YW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgw
LCAwLCAwLCAwLCBJbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
eyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIC1JbmZpbml0eSk7IH0sIFJhbmdl
RXJyb3IpOworCitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwg
MCwgMCwgMCwgMCwgLTEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3
IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCAxMDAwKTsgfSwgUmFuZ2VFcnJvcik7
CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwg
MCwgMTAwMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9y
YWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDAsIDUwMDAwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgOTk5
OTk5OTk5OSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9y
YWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDAsIEluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7Citz
aG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwg
LUluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CisKK2xldCBmYWlsdXJlcyA9IFsKKyAgICAiIiwK
KyAgICAiMjM6NTk6NjEuOTk5OTk5OTk5IiwKK107CisKK2ZvciAobGV0IHRleHQgb2YgZmFpbHVy
ZXMpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIFRlbXBvcmFsLlBsYWluVGlt
ZS5mcm9tKHRleHQpOworICAgIH0sIFJhbmdlRXJyb3IpOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvdGVtcG9yYWwtdGltZXpvbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC10
aW1lem9uZS5qcwppbmRleCBkODhmOGM4ODdlODQ0YWUyZjAzMDllYWYxNTFlY2EyMjAxNDQxOTU2
Li40OTY3YjhiMWQyMjJiNzFkNTA5YWQ4NWMxN2FkYmQwYmIzODY2OGI5IDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC10aW1lem9uZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy90
ZW1wb3JhbC10aW1lem9uZS5qcwpAQCAtMjYsOSArMjYsMjIgQEAgZnVuY3Rpb24gc2hvdWxkVGhy
b3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CiAgICAgIisyNCIsCiAgICAgIisyMzoiLAog
ICAgICIyMDowMCIsCisgICAgIisyOjAwIiwKKyAgICAiKzMyOjAwIiwKKyAgICAiKzIzOjAwMSIs
CisgICAgIisyMzo5OSIsCisgICAgIisyMzo5OTAiLAorICAgICIrMjM6NTk6OTkiLAorICAgICIr
MjM6NTk6MDAxIiwKKyAgICAiKzIzOjU5Ojk5OSIsCisgICAgIisyMzo1OTo1OS4iLAorICAgICIr
MjM6NTk6NTksIiwKKyAgICAiKzIzOjU5OjU5YSIsCisgICAgIisyMzo1OTo1OS5hIiwKICAgICAi
KzIwOjAwMDAiLAogICAgICIrMjA6NjAiLAogICAgICIrMjA6NTk6IiwKKyAgICAiKzIwOjU5OjYw
IiwKICAgICAiMjA1OTowMCIsCiAgICAgIisyMDU5OjAwIiwKICAgICAiKzIwOjU5MDAiLApAQCAt
NTIsNiArNjUsMTAgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNz
YWdlKSB7CiBzaG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTAw
MDAiKS5pZCwgYC0wMTo1OTozMC4xMjM0NWApOwogc2hvdWxkQmUobmV3IFRlbXBvcmFsLlRpbWVa
b25lKCItMDE6NTk6MzAuMDAwMDAwMDAxIikuaWQsIGAtMDE6NTk6MzAuMDAwMDAwMDAxYCk7CiBz
aG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTY3ODkiKS5pZCwg
YC0wMTo1OTozMC4xMjM0NTY3ODlgKTsKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgi
LTAxOjU5OjMwLjAwMTAwMjAwMyIpLmlkLCBgLTAxOjU5OjMwLjAwMTAwMjAwM2ApOworc2hvdWxk
QmUobmV3IFRlbXBvcmFsLlRpbWVab25lKCItMDE6NTk6MzAuMDAwMDAwMDAwIikuaWQsIGAtMDE6
NTk6MzBgKTsKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjAwLjAwMDAw
MDAwMCIpLmlkLCBgLTAxOjU5YCk7CitzaG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0w
MTowMDowMC4wMDAwMDAwMDAiKS5pZCwgYC0wMTowMGApOwogCiBsZXQgdHogPSBuZXcgVGVtcG9y
YWwuVGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTY3ODkiKQogc2hvdWxkQmUodHouaWQsIFN0cmlu
Zyh0eikpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437355</attachid>
            <date>2021-09-05 04:49:12 -0700</date>
            <delta_ts>2021-09-05 04:52:44 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229892-20210905044911.patch</filename>
            <type>text/plain</type>
            <size>157433</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTM5NDE1YzNmNmI3NTVlOTY3YjE3MTMzYjU5ZTY5ZWM1NjNkOWNjLi5mODMxNDQyNWY4MTgzZmQw
MTM2MTMxNDQ5ZDA0NWE5Y2YxMmYzNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjggQEAKKzIwMjEtMDktMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuUGxhaW5UaW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4OTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JU084NjAxLmNwcDoKKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6aWRGb3JUaW1lWm9uZU5hbWUpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpwYXJzZVRpbWVTcGVjKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lWm9uZU51
bWVyaWNVVENPZmZzZXQpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZVRpbWVab25lQnJh
Y2tldGVkQW5ub3RhdGlvbik6CisgICAgICAgIChKU0M6OklTTzg2MDE6OmNhbkJlVGltZVpvbmUp
OgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZVRpbWVab25lKToKKyAgICAgICAgKEpTQzo6
SVNPODYwMTo6cGFyc2VUaW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6ZGF5c0luTW9udGgp
OgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZURhdGUpOgorICAgICAgICAoSlNDOjpJU084
NjAxOjpwYXJzZURhdGVUaW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6Zm9ybWF0VGltZVpv
bmVPZmZzZXRTdHJpbmcpOgorICAgICAgICAoSlNDOjpJU084NjAxOjp0ZW1wb3JhbFRpbWVUb1N0
cmluZyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OmlzVmFsaWREdXJhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9JU084NjAxLmg6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpE
dXJhdGlvbik6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpvcGVyYXRvcltdKToK
KyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJhdG9yW10gY29uc3QpOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6YmVnaW4gY29uc3QpOgorICAgICAgICAoSlND
OjpJU084NjAxOjpEdXJhdGlvbjo6ZW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
RHVyYXRpb246OmNsZWFyKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJh
dG9yLSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OlBsYWluVGltZTo6UGxhaW5UaW1l
KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5UaW1lOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRlOjpQbGFpbkRhdGUpOgorICAgICAgICAoSlNDOjpJ
U084NjAxOjpQbGFpbkRhdGU6OnllYXIgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpQ
bGFpbkRhdGU6Om1vbnRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRl
OjpkYXkgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OnV0Y1RpbWVab25lSURTbG93KToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6dXRjVGltZVpvbmVJRCk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpwbGFpblRpbWVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZCk6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OmZyb21Ob25EdXJhdGlvblZhbHVlKToK
KyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9EdXJhdGlvbik6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb25SZWNvcmQpOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFs
RHVyYXRpb246OnRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6aXNWYWxpZER1cmF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6ZnJvbU9iamVjdCk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmg6CisgICAgICAgICogcnVu
dGltZS9UZW1wb3JhbE5vdy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6c2Vjb25kc1N0
cmluZ1ByZWNpc2lvbik6CisgICAgICAgIChKU0M6OnRvVGVtcG9yYWxPdmVyZmxvdyk6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9y
YWxQbGFpblRpbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6VGVtcG9yYWxQbGFpblRpbWUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAg
ICAoSlNDOjp0b1BsYWluVGltZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp0
cnlDcmVhdGVJZlZhbGlkKToKKyAgICAgICAgKEpTQzo6YmFsYW5jZVRpbWUpOgorICAgICAgICAo
SlNDOjpyb3VuZFRpbWUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6cm91bmQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dG9TdHJpbmcgY29uc3Qp
OgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWUpOgorICAgICAgICAoSlNDOjp0b1RlbXBvcmFs
VGltZVJlY29yZCk6CisgICAgICAgIChKU0M6OnRvUGFydGlhbFRpbWUpOgorICAgICAgICAoSlND
Ojpjb25zdHJhaW50VGltZSk6CisgICAgICAgIChKU0M6OnJlZ3VsYXRlVGltZSk6CisgICAgICAg
IChKU0M6OnRvVGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KToKKyAgICAgICAgKEpTQzo6
Z2V0VGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxQbGFpblRpbWU6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6Y29t
cGFyZSk6CisgICAgICAgIChKU0M6OnRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24pOgorICAgICAg
ICAoSlNDOjphZGRUaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6OmFkZCBj
b25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpzdWJ0cmFjdCBjb25zdCk6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp3aXRoIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6ZGlmZmVyZW5jZVRpbWUpOgorICAgICAgICAoSlNDOjpleHRyYWN0RGlmZmVyZW5jZU9w
dGlvbnMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dW50aWwgY29uc3QpOgor
ICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6c2luY2UgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRl
bXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaC4KKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OlRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaC4KKyAgICAgICAgKiBydW50aW1lL1Rl
bXBvcmFsVGltZVpvbmUuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFRpbWVab25lOjpmcm9t
KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZTo6aWRGb3JUaW1lWm9uZU5hbWUpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA5LTAzICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gTWFrZSBFbnVtZXJhdG9yTmV4dFVw
ZGF0ZUluZGV4QW5kTW9kZSBjbG9iYmVyaXppbmcgcnVsZSBwcmVjaXNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWNhMDgzMTRiNjQ0NTljNzhjYTAzODY0MjgxNTM3Zjg1
MThkYmVlMC4uMzhjYjg0ZGEwNTZlMmI2YTZjMTNlZDlmOGQ3MDUxOGVhZjA4OTU4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEzLDYgKzExMyw4IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRp
b25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICAgICBydW50aW1l
L1RlbXBvcmFsT2JqZWN0LmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1
Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcAogICAg
IHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvVGVt
cG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBjZTVmNjI4OGFhYTI3
Y2I3ODE3YmVhZTE0NDM3NmVhMjhhZmFlNjNmLi4yODg1YjUxMDE3Y2MxYWUzZDg5MmVmM2M1ZjI3
YTRiMTIzNzUzODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTc1LDYgKzE3NSw4IEBAICQoUFJPSkVDVF9E
SVIpL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJ
UikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikv
cnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxP
YmplY3QuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3Ry
dWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0
b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUu
Y3BwCiAkKFBST0pFQ1RfRElSKS91Y2QvQ2FzZUZvbGRpbmcudHh0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXgg
MWIwNTVjOTIyYzA5NGE1OTU4NDI2MDg0MWRjZWRmY2FhNzM3NjUwMy4uMmFkMjEzMWM1ODY2OWJk
MDU3NWM3YWY0MGE2YzQyN2E1OTRmNWMzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNzIsNiArNzIsOCBA
QCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVt
cG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUubHV0LmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3Jh
bE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1Rl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1
dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
VGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1VuaWNvZGVQYXR0ZXJuVGFibGVzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggODgxOTI3ZTE3YmRhMjM4
ZDdkYWNlZjFkNmViNWMzYzNiNzQ4YjM3Ny4uZWNiY2U2N2Y3OGMwMDM0YzE2NmY1MGQ1ODkyYTZm
MDhjNWRhNDBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTE5Nyw2ICsxOTcsOCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgVGVtcG9yYWxE
dXJhdGlvblByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxOb3cubHV0LmggXAogICAgIFRl
bXBvcmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1
dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9y
YWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBUZW1wb3JhbFRpbWVab25lUHJvdG90
eXBlLmx1dC5oIFwKICAgICBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5o
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAzMjhmOTJmNWIyZmIyMDVjODM4Nzgy
MjQxOWE1MDg0ZTBmYTFmN2NhLi44NDZlOWVlNzVmZWQwNTQ3NTU2YzRiZmQ0YTI2MWQ4MGQ1OWFm
YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDE5LDYgKzEwMTksOSBAQCBy
dW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxE
dXJhdGlvblByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxOb3cuY3BwCiBydW50aW1lL1Rl
bXBvcmFsT2JqZWN0LmNwcAorcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKK3J1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCiBydW50aW1lL1Rl
bXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVBy
b3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCmluZGV4IDcxNGFhMmZlYjIyNGZhNThmMjdlZDU1NTFiNjdjOWYzMjY1Y2Jk
MjcuLjQwYzE1OWU4ZDdjNTQwNDlmZDk4YzhhNjY2OGE2NGE4ZGY0ZWEzNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTQ5
LDYgKzE0OSwxMiBAQAogICAgIG1hY3JvKGluZGljZXMpIFwKICAgICBtYWNybyhpbmZlcnJlZE5h
bWUpIFwKICAgICBtYWNybyhpbnB1dCkgXAorICAgIG1hY3JvKGlzb0hvdXIpIFwKKyAgICBtYWNy
byhpc29NaWNyb3NlY29uZCkgXAorICAgIG1hY3JvKGlzb01pbGxpc2Vjb25kKSBcCisgICAgbWFj
cm8oaXNvTWludXRlKSBcCisgICAgbWFjcm8oaXNvTmFub3NlY29uZCkgXAorICAgIG1hY3JvKGlz
b1NlY29uZCkgXAogICAgIG1hY3JvKGluc3RydWN0aW9uQ291bnQpIFwKICAgICBtYWNybyhpc0Fy
cmF5KSBcCiAgICAgbWFjcm8oaXNFbmFibGVkKSBcCkBAIC0xNjksNyArMTc1LDkgQEAKICAgICBt
YWNybyhtYXhpbXVtRnJhY3Rpb25EaWdpdHMpIFwKICAgICBtYWNybyhtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMpIFwKICAgICBtYWNybyhtZXNzYWdlKSBcCisgICAgbWFjcm8obWljcm9zZWNvbmQp
IFwKICAgICBtYWNybyhtaWNyb3NlY29uZHMpIFwKKyAgICBtYWNybyhtaWxsaXNlY29uZCkgXAog
ICAgIG1hY3JvKG1pbGxpc2Vjb25kcykgXAogICAgIG1hY3JvKG1pbmltdW1GcmFjdGlvbkRpZ2l0
cykgXAogICAgIG1hY3JvKG1pbmltdW1JbnRlZ2VyRGlnaXRzKSBcCkBAIC0xODEsNiArMTg5LDcg
QEAKICAgICBtYWNybyhtb250aHMpIFwKICAgICBtYWNybyhtdWx0aWxpbmUpIFwKICAgICBtYWNy
byhuYW1lKSBcCisgICAgbWFjcm8obmFub3NlY29uZCkgXAogICAgIG1hY3JvKG5hbm9zZWNvbmRz
KSBcCiAgICAgbWFjcm8obmV4dCkgXAogICAgIG1hY3JvKG5vdykgXApAQCAtMTk0LDYgKzIwMyw3
IEBACiAgICAgbWFjcm8ob3JpZ2luKSBcCiAgICAgbWFjcm8ob3NyRXhpdFNpdGVzKSBcCiAgICAg
bWFjcm8ob3NyRXhpdHMpIFwKKyAgICBtYWNybyhvdmVyZmxvdykgXAogICAgIG1hY3JvKHBhcnNl
KSBcCiAgICAgbWFjcm8ocGFyc2VJbnQpIFwKICAgICBtYWNybyhwYXJzZUZsb2F0KSBcCkBAIC0y
NDUsNiArMjU1LDcgQEAKICAgICBtYWNybyh1c2FnZSkgXAogICAgIG1hY3JvKHZhbHVlKSBcCiAg
ICAgbWFjcm8odmFsdWVPZikgXAorICAgIG1hY3JvKHdlZWspIFwKICAgICBtYWNybyh3ZWVrZGF5
KSBcCiAgICAgbWFjcm8od2Vla3MpIFwKICAgICBtYWNybyh3cml0YWJsZSkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcAppbmRleCA5ZTQyYWZjMTMzYzA3ZTNmYjkx
Yjg5Nzc1NmUzYTE1NTEyM2FmOTM3Li4zMzVmNDgxMTJkODJmM2JlYWZjMGFmMDFhMjJlYjVlZDk2
ZWVjYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAx
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcApAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI3LDkgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJJU084NjAxLmgiCiAKKyNpbmNsdWRlICJJbnRsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiUGFyc2VJbnQuaCIKKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtMzgsNiArNDEsMTYgQEAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IG5zUGVyU2Vjb25kID0g
MTAwMExMICogMTAwMCAqIDEwMDA7CiBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbnNQZXJNaWxs
aXNlY29uZCA9IDEwMDBMTCAqIDEwMDA7CiBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbnNQZXJN
aWNyb3NlY29uZCA9IDEwMDBMTDsKIAorc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZEZvclRp
bWVab25lTmFtZShTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBjb25zdCBhdXRvJiB0aW1lWm9u
ZXMgPSBpbnRsQXZhaWxhYmxlVGltZVpvbmVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9
IDA7IGluZGV4IDwgdGltZVpvbmVzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAoZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0aW1lWm9uZXNbaW5kZXhdLCBzdHJpbmcpKQorICAgICAgICAg
ICAgcmV0dXJuIGluZGV4OworICAgIH0KKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KIGludDMyX3QgcGFyc2VEZWNpbWFsSW50MzIoY29u
c3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKQEAgLTI0MywzMiAr
MjU2LDI2IEBAIHN0ZDo6b3B0aW9uYWw8RHVyYXRpb24+IHBhcnNlRHVyYXRpb24oU3RyaW5nVmll
dyBzdHJpbmcpCiAgICAgfSk7CiB9CiAKKworZW51bSBjbGFzcyBTZWNvbmQ2ME1vZGUgeyBBY2Nl
cHQsIFJlamVjdCB9OwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBz
dGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmlu
Z1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFBsYWluVGltZT4gcGFyc2VUaW1lU3BlYyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3Rl
clR5cGU+JiBidWZmZXIsIFNlY29uZDYwTW9kZSBzZWNvbmQ2ME1vZGUpCiB7Ci0gICAgLy8gVGlt
ZVpvbmVOdW1lcmljVVRDT2Zmc2V0IDoKLSAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWdu
IFRpbWVab25lVVRDT2Zmc2V0SG91cgotICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24g
VGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUKLSAgICAvLyAg
ICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVU
Q09mZnNldE1pbnV0ZQotICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVV
VENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUgOiBUaW1lWm9uZVVUQ09mZnNl
dFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0aW9uW29wdF0KLSAgICAvLyAgICAgVGltZVpv
bmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1p
bnV0ZSBUaW1lWm9uZVVUQ09mZnNldFNlY29uZFtvcHRdCisgICAgLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVTcGVjCisgICAgLy8gVGltZVNwZWMgOgorICAg
IC8vICAgICBUaW1lSG91cgorICAgIC8vICAgICBUaW1lSG91ciA6IFRpbWVNaW51dGUKKyAgICAv
LyAgICAgVGltZUhvdXIgVGltZU1pbnV0ZQorICAgIC8vICAgICBUaW1lSG91ciA6IFRpbWVNaW51
dGUgOiBUaW1lU2Vjb25kIFRpbWVGcmFjdGlvbltvcHRdCisgICAgLy8gICAgIFRpbWVIb3VyIFRp
bWVNaW51dGUgVGltZVNlY29uZCBUaW1lRnJhY3Rpb25bb3B0XQogICAgIC8vCi0gICAgLy8gIE1h
eGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGFyZSDCsTIzOjU5OjU5Ljk5OTk5OTk5OSA9IMKxODYz
OTk5OTk5OTk5OTlucywgd2hpY2ggY2FuIGJlIHJlcHJlc2VudGVkIGJ5IGludDY0X3QgLyBkb3Vi
bGUncyBpbnRlZ2VyIHBhcnQuCisgICAgLy8gIFRpbWVTZWNvbmQgY2FuIGJlIDYwLiBBbmQgaWYg
aXQgaXMgNjAsIHdlIGludGVycHJldCBpdCBhcyA1OS4KKyAgICAvLyAgaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcGFyc2Vpc29kYXRldGltZQogCi0gICAg
Ly8gc2lnbiBhbmQgaG91ci4KLSAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgMykK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGludDY0X3QgZmFjdG9yID0gMTsK
LSAgICBpZiAoKmJ1ZmZlciA9PSAnKycpCi0gICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7Ci0gICAg
ZWxzZSBpZiAoKmJ1ZmZlciA9PSAnLScgfHwgKmJ1ZmZlciA9PSAweDIyMTIpIHsKLSAgICAgICAg
ZmFjdG9yID0gLTE7Ci0gICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7Ci0gICAgfSBlbHNlCisgICAg
aWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBpbnQ2NF90IGhvdXIgPSAwOworICAgIHVuc2lnbmVkIGhvdXIgPSAwOwog
ICAgIEFTU0VSVChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPj0gMik7CiAgICAgYXV0byBmaXJz
dEhvdXJDaGFyYWN0ZXIgPSAqYnVmZmVyOwogICAgIGlmIChmaXJzdEhvdXJDaGFyYWN0ZXIgPj0g
JzAnICYmIGZpcnN0SG91ckNoYXJhY3RlciA8PSAnMicpIHsKQEAgLTI4NCwxNSArMjkxLDE2IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zm
c2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiAobnNQZXJIb3VyICogaG91
cikgKiBmYWN0b3I7CisgICAgICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwgMCwgMCwgMCwgMCwg
MCk7CiAKICAgICBib29sIHNwbGl0QnlDb2xvbiA9IGZhbHNlOwogICAgIGlmICgqYnVmZmVyID09
ICc6JykgewotICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwogICAgICAgICBzcGxpdEJ5Q29sb24g
PSB0cnVlOwotICAgIH0KKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICB9IGVsc2UgaWYg
KCEoKmJ1ZmZlciA+PSAnMCcgJiYgKmJ1ZmZlciA8PSAnNScpKQorICAgICAgICByZXR1cm4gUGxh
aW5UaW1lKGhvdXIsIDAsIDAsIDAsIDAsIDApOwogCi0gICAgaW50NjRfdCBtaW51dGUgPSAwOwor
ICAgIHVuc2lnbmVkIG1pbnV0ZSA9IDA7CiAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmco
KSA8IDIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBmaXJzdE1pbnV0
ZUNoYXJhY3RlciA9ICpidWZmZXI7CkBAIC0zMDgsMTYgKzMxNiwxNyBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChTdHJpbmdQYXJz
aW5nQnVmZmVyPAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGJ1ZmZl
ci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gKG5zUGVySG91ciAqIGhvdXIgKyBuc1Blck1pbnV0
ZSAqIG1pbnV0ZSkgKiBmYWN0b3I7CisgICAgICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwgbWlu
dXRlLCAwLCAwLCAwLCAwKTsKIAogICAgIGlmIChzcGxpdEJ5Q29sb24pIHsKICAgICAgICAgaWYg
KCpidWZmZXIgPT0gJzonKQogICAgICAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9CisgICAgICAgICAg
ICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgMCwgMCwgMCwgMCk7CisgICAgfSBlbHNl
IGlmICghKCpidWZmZXIgPj0gJzAnICYmIChzZWNvbmQ2ME1vZGUgPT0gU2Vjb25kNjBNb2RlOjpB
Y2NlcHQgPyAoKmJ1ZmZlciA8PSAnNicpIDogKCpidWZmZXIgPD0gJzUnKSkpKQorICAgICAgICBy
ZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgMCwgMCwgMCwgMCk7CiAKLSAgICBpbnQ2NF90
IHNlY29uZCA9IDA7CisgICAgdW5zaWduZWQgc2Vjb25kID0gMDsKICAgICBpZiAoYnVmZmVyLmxl
bmd0aFJlbWFpbmluZygpIDwgMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBh
dXRvIGZpcnN0U2Vjb25kQ2hhcmFjdGVyID0gKmJ1ZmZlcjsKQEAgLTMyNywzNCArMzM2LDg0IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zm
c2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KHNlY29u
ZFNlY29uZENoYXJhY3RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBzZWNvbmQgPSAoc2Vjb25kU2Vjb25kQ2hhcmFjdGVyIC0gJzAnKSArIDEwICogKGZpcnN0
U2Vjb25kQ2hhcmFjdGVyIC0gJzAnKTsKLSAgICAgICAgQVNTRVJUKG1pbnV0ZSA8IDYwKTsKKyAg
ICAgICAgQVNTRVJUKHNlY29uZCA8IDYwKTsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAg
ICB9IGVsc2UgaWYgKHNlY29uZDYwTW9kZSA9PSBTZWNvbmQ2ME1vZGU6OkFjY2VwdCAmJiBmaXJz
dFNlY29uZENoYXJhY3RlciA9PSAnNicpIHsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAg
ICAgICAgYXV0byBzZWNvbmRTZWNvbmRDaGFyYWN0ZXIgPSAqYnVmZmVyOworICAgICAgICBpZiAo
c2Vjb25kU2Vjb25kQ2hhcmFjdGVyICE9ICcwJykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIHNlY29uZCA9IDU5OwogICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwog
ICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGJ1ZmZl
ci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gKG5zUGVySG91ciAqIGhvdXIgKyBuc1Blck1pbnV0
ZSAqIG1pbnV0ZSArIG5zUGVyU2Vjb25kICogc2Vjb25kKSAqIGZhY3RvcjsKKyAgICAgICAgcmV0
dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgMCwgMCwgMCk7CiAKICAgICBpZiAo
KmJ1ZmZlciAhPSAnLicgJiYgKmJ1ZmZlciAhPSAnLCcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIDAs
IDAsIDApOwogICAgIGJ1ZmZlci5hZHZhbmNlKCk7CiAKICAgICB1bnNpZ25lZCBkaWdpdHMgPSAw
OwotICAgIHdoaWxlIChkaWdpdHMgPCBidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgJiYgaXNBU0NJ
SURpZ2l0KGJ1ZmZlcltkaWdpdHNdKSkKLSAgICAgICAgZGlnaXRzKys7Ci0gICAgaWYgKCFkaWdp
dHMgfHwgZGlnaXRzID4gOSkKKyAgICB1bnNpZ25lZCBtYXhDb3VudCA9IHN0ZDo6bWluPHVuc2ln
bmVkPihidWZmZXIubGVuZ3RoUmVtYWluaW5nKCksIDkpOworICAgIGZvciAoOyBkaWdpdHMgPCBt
YXhDb3VudDsgKytkaWdpdHMpIHsKKyAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoYnVmZmVyW2Rp
Z2l0c10pKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmICghZGlnaXRzKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPExDaGFyLCA5PiBwYWRkZWQo
OSwgJzAnKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGlnaXRzOyArK2kpCiAgICAg
ICAgIHBhZGRlZFtpXSA9IGJ1ZmZlcltpXTsKICAgICBidWZmZXIuYWR2YW5jZUJ5KGRpZ2l0cyk7
Ci0gICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKworICAgIHVuc2lnbmVkIG1pbGxpc2Vjb25kID0g
cGFyc2VEZWNpbWFsSW50MzIocGFkZGVkLmRhdGEoKSwgMyk7CisgICAgdW5zaWduZWQgbWljcm9z
ZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQzMihwYWRkZWQuZGF0YSgpICsgMywgMyk7CisgICAgdW5z
aWduZWQgbmFub3NlY29uZCA9IHBhcnNlRGVjaW1hbEludDMyKHBhZGRlZC5kYXRhKCkgKyA2LCAz
KTsKKworICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vj
b25kLCBtaWNyb3NlY29uZCwgbmFub3NlY29uZCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CitzdGF0aWMgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25l
TnVtZXJpY1VUQ09mZnNldChTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZm
ZXIpCit7CisgICAgLy8gVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0IDoKKyAgICAvLyAgICAgVGlt
ZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91cgorICAgIC8vICAgICBUaW1l
Wm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZz
ZXRNaW51dGUKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zm
c2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZQorICAgIC8vICAgICBUaW1lWm9uZVVUQ09m
ZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUg
OiBUaW1lWm9uZVVUQ09mZnNldFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0aW9uW29wdF0K
KyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBU
aW1lWm9uZVVUQ09mZnNldE1pbnV0ZSBUaW1lWm9uZVVUQ09mZnNldFNlY29uZCBUaW1lWm9uZVVU
Q09mZnNldEZyYWN0aW9uW29wdF0KKyAgICAvLworICAgIC8vICBUaGlzIGlzIHRoZSBzYW1lIHRv
CisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lU3BlYworICAgIC8vCisgICAg
Ly8gIE1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGFyZSDCsTIzOjU5OjU5Ljk5OTk5OTk5OSA9
IMKxODYzOTk5OTk5OTk5OTlucywgd2hpY2ggY2FuIGJlIHJlcHJlc2VudGVkIGJ5IGludDY0X3Qg
LyBkb3VibGUncyBpbnRlZ2VyIHBhcnQuCisKKyAgICAvLyBzaWduIGFuZCBob3VyLgorICAgIGlm
IChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCAzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgaW50NjRfdCBmYWN0b3IgPSAxOworICAgIGlmICgqYnVmZmVyID09ICcrJykK
KyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICBlbHNlIGlmICgqYnVmZmVyID09ICctJyB8
fCAqYnVmZmVyID09IDB4MjIxMikgeworICAgICAgICBmYWN0b3IgPSAtMTsKKyAgICAgICAgYnVm
ZmVyLmFkdmFuY2UoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIGF1dG8gcGxhaW5UaW1lID0gcGFyc2VUaW1lU3BlYyhidWZmZXIsIFNlY29uZDYwTW9k
ZTo6UmVqZWN0KTsKKyAgICBpZiAoIXBsYWluVGltZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIGludDY0X3QgbWlsbGlzZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQzMihwYWRk
ZWQuZGF0YSgpLCAzKTsKLSAgICBpbnQ2NF90IG1pY3Jvc2Vjb25kID0gcGFyc2VEZWNpbWFsSW50
MzIocGFkZGVkLmRhdGEoKSArIDMsIDMpOwotICAgIGludDY0X3QgbmFub3NlY29uZCA9IHBhcnNl
RGVjaW1hbEludDMyKHBhZGRlZC5kYXRhKCkgKyA2LCAzKTsKKyAgICBpbnQ2NF90IGhvdXIgPSBw
bGFpblRpbWUtPmhvdXIoKTsKKyAgICBpbnQ2NF90IG1pbnV0ZSA9IHBsYWluVGltZS0+bWludXRl
KCk7CisgICAgaW50NjRfdCBzZWNvbmQgPSBwbGFpblRpbWUtPnNlY29uZCgpOworICAgIGludDY0
X3QgbWlsbGlzZWNvbmQgPSBwbGFpblRpbWUtPm1pbGxpc2Vjb25kKCk7CisgICAgaW50NjRfdCBt
aWNyb3NlY29uZCA9IHBsYWluVGltZS0+bWljcm9zZWNvbmQoKTsKKyAgICBpbnQ2NF90IG5hbm9z
ZWNvbmQgPSBwbGFpblRpbWUtPm5hbm9zZWNvbmQoKTsKIAogICAgIHJldHVybiAobnNQZXJIb3Vy
ICogaG91ciArIG5zUGVyTWludXRlICogbWludXRlICsgbnNQZXJTZWNvbmQgKiBzZWNvbmQgKyBu
c1Blck1pbGxpc2Vjb25kICogbWlsbGlzZWNvbmQgKyBuc1Blck1pY3Jvc2Vjb25kICogbWljcm9z
ZWNvbmQgKyBuYW5vc2Vjb25kKSAqIGZhY3RvcjsKIH0KQEAgLTM2Miw3ICs0MjEsMzg1IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0
KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpv
bmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIHJldHVybiByZWFk
Q2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRp
b25hbDxpbnQ2NF90PiB7Ci0gICAgICAgIHJldHVybiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09m
ZnNldChidWZmZXIpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlVGltZVpvbmVOdW1lcmlj
VVRDT2Zmc2V0KGJ1ZmZlcik7CisgICAgICAgIGlmICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0p
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxU
aW1lWm9uZT4gcGFyc2VUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24oU3RyaW5nUGFyc2luZ0J1
ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1UaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICAv
LyBUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24gOgorICAgIC8vICAgICBbIFRpbWVab25lQnJh
Y2tldGVkTmFtZSBdCisgICAgLy8KKyAgICAvLyBUaW1lWm9uZUJyYWNrZXRlZE5hbWUgOgorICAg
IC8vICAgICBUaW1lWm9uZUlBTkFOYW1lCisgICAgLy8gICAgIEV0Yy9HTVQgQVNDSUlTaWduIEhv
dXIKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXROYW1lCisKKyAgICBpZiAoYnVmZmVyLmxl
bmd0aFJlbWFpbmluZygpIDwgMykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IGlmICgqYnVmZmVyICE9ICdbJykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBi
dWZmZXIuYWR2YW5jZSgpOworCisgICAgc3dpdGNoICgqYnVmZmVyKSB7CisgICAgY2FzZSAnKyc6
CisgICAgY2FzZSAnLSc6CisgICAgY2FzZSAweDIyMTI6IHsKKyAgICAgICAgLy8gVGltZVpvbmVV
VENPZmZzZXROYW1lIGlzIHRoZSBzYW1lIHRvIFRpbWVab25lTnVtZXJpY1VUQ09mZnNldC4KKyAg
ICAgICAgYXV0byBvZmZzZXQgPSBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChidWZmZXIp
OworICAgICAgICBpZiAoIW9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIGlmICgqYnVmZmVyICE9ICddJykKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIHJldHVybiBv
ZmZzZXQudmFsdWUoKTsKKyAgICB9CisgICAgY2FzZSAnRSc6IHsKKyAgICAgICAgLy8gIkV0Yy9H
TVQrMjAiIGFuZCAiXSIgPT4gbGVuZ3RoIGlzIDExLgorICAgICAgICBpZiAoYnVmZmVyLmxlbmd0
aFJlbWFpbmluZygpID49IDExKSB7CisgICAgICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdFJyAm
JiBidWZmZXJbMV0gPT0gJ3QnICYmIGJ1ZmZlclsyXSA9PSAnYycgJiYgYnVmZmVyWzNdID09ICcv
JyAmJiBidWZmZXJbNF0gPT0gJ0cnICYmIGJ1ZmZlcls1XSA9PSAnTScgJiYgYnVmZmVyWzZdID09
ICdUJykgeworICAgICAgICAgICAgICAgIGF1dG8gc2lnbkNoYXJhY3RlciA9IGJ1ZmZlcls3XTsK
KyAgICAgICAgICAgICAgICAvLyBOb3QgaW5jbHVkaW5nIDB4MjIxMiBzaW5jZSBpdCBpcyBBU0NJ
SVNpZ24uCisgICAgICAgICAgICAgICAgaWYgKHNpZ25DaGFyYWN0ZXIgPT0gJysnIHx8IHNpZ25D
aGFyYWN0ZXIgPT0gJy0nKSB7CisgICAgICAgICAgICAgICAgICAgIGludDY0X3QgZmFjdG9yID0g
c2lnbkNoYXJhY3RlciA9PSAnKycgPyAxIDogLTE7CisgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgaG91ciA9IDA7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZmlyc3RIb3VyQ2hhcmFjdGVy
ID0gYnVmZmVyWzhdOworICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RIb3VyQ2hhcmFjdGVy
ID49ICcwJyAmJiBmaXJzdEhvdXJDaGFyYWN0ZXIgPD0gJzInKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvIHNlY29uZEhvdXJDaGFyYWN0ZXIgPSBidWZmZXJbOV07CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KHNlY29uZEhvdXJDaGFyYWN0ZXIpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91ciA9IChzZWNvbmRIb3VyQ2hhcmFjdGVyIC0g
JzAnKSArIDEwICogKGZpcnN0SG91ckNoYXJhY3RlciAtICcwJyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGhvdXIgPCAyNCAmJiBidWZmZXJbMTBdID09ICddJykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYWR2YW5jZUJ5KDExKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5zUGVySG91ciAqIGhvdXIgKiBmYWN0b3I7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIH0KKyAgICBkZWZhdWx0OiB7
CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgZm9yICg7IGluZGV4IDwgYnVm
ZmVyLmxlbmd0aFJlbWFpbmluZygpOyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAoYnVmZmVy
W2luZGV4XSA9PSAnXScpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IFN0cmluZ1ZpZXcgdGltZVpvbmVTdHJpbmcgPSBidWZmZXIuc3RyaW5nVmlld09mQ2hhcmFjdGVy
c1JlbWFpbmluZygpLmxlZnQoaW5kZXgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25l
SUQ+IGlkZW50aWZpZXIgPSBpZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7CisgICAg
ICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIGJ1ZmZlci5hZHZhbmNlQnkoaW5kZXgpOworICAgICAgICBpZiAoYnVmZmVyLmF0RW5k
KCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoKmJ1ZmZl
ciAhPSAnXScpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBidWZm
ZXIuYWR2YW5jZSgpOworICAgICAgICByZXR1cm4gaWRlbnRpZmllci52YWx1ZSgpOworICAgIH0K
KyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIGNhbkJl
VGltZVpvbmUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit7CisgICAgc3dpdGNoIChjaGFyYWN0
ZXIpIHsKKyAgICAvLyBVVENEZXNpZ25hdG9yCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNwcm9kLVVUQ0Rlc2lnbmF0b3IKKyAgICBjYXNlICd6JzoKKyAgICBjYXNl
ICdaJzoKKyAgICAvLyBUaW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICAvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVVVENPZmZzZXRTaWduCisgICAgY2Fz
ZSAnKyc6CisgICAgY2FzZSAnLSc6CisgICAgY2FzZSAweDIyMTI6CisgICAgLy8gVGltZVpvbmVC
cmFja2V0ZWRBbm5vdGF0aW9uCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNwcm9kLVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbgorICAgIGNhc2UgJ1snOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25h
bDxUaW1lWm9uZT4gcGFyc2VUaW1lWm9uZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5
cGU+JiBidWZmZXIpCit7CisgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHN3aXRjaCAoKmJ1ZmZlcikgeworICAgIC8vIFVUQ0Rlc2lnbmF0
b3IKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVVRDRGVz
aWduYXRvcgorICAgIGNhc2UgJ3onOgorICAgIGNhc2UgJ1onOiB7CisgICAgICAgIGJ1ZmZlci5h
ZHZhbmNlKCk7CisgICAgICAgIGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVy
biB1dGNUaW1lWm9uZUlEKCk7CisgICAgICAgIGlmICgqYnVmZmVyID09ICdbJykgeworICAgICAg
ICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uKGJ1
ZmZlcik7CisgICAgICAgICAgICBpZiAoIXRpbWVab25lKQorICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gdGltZVpvbmUudmFsdWUoKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gdXRjVGltZVpvbmVJRCgpOworICAgIH0KKyAgICAvLyBU
aW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3Byb2QtVGltZVpvbmVVVENPZmZzZXRTaWduCisgICAgY2FzZSAnKyc6CisgICAgY2Fz
ZSAnLSc6CisgICAgY2FzZSAweDIyMTI6IHsKKyAgICAgICAgYXV0byBvZmZzZXQgPSBwYXJzZVRp
bWVab25lTnVtZXJpY1VUQ09mZnNldChidWZmZXIpOworICAgICAgICBpZiAoIW9mZnNldCkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmIChidWZmZXIuYXRFbmQo
KSkKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQudmFsdWUoKTsKKyAgICAgICAgaWYgKCpidWZm
ZXIgPT0gJ1snKSB7CisgICAgICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VUaW1lWm9uZUJy
YWNrZXRlZEFubm90YXRpb24oYnVmZmVyKTsKKyAgICAgICAgICAgIGlmICghdGltZVpvbmUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiB0
aW1lWm9uZS52YWx1ZSgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBvZmZzZXQudmFsdWUo
KTsKKyAgICB9CisgICAgLy8gVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uCisgICAgLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25lQnJhY2tldGVkQW5u
b3RhdGlvbgorICAgIGNhc2UgJ1snOiB7CisgICAgICAgIGF1dG8gdGltZVpvbmUgPSBwYXJzZVRp
bWVab25lQnJhY2tldGVkQW5ub3RhdGlvbihidWZmZXIpOworICAgICAgICBpZiAoIXRpbWVab25l
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHRpbWVa
b25lLnZhbHVlKCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3Rk
OjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZT4+
PiBwYXJzZVRpbWUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQor
eworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1UaW1lCisg
ICAgLy8gVGltZSA6CisgICAgLy8gICAgIFRpbWVTcGVjIFRpbWVab25lW29wdF0KKyAgICBhdXRv
IHBsYWluVGltZSA9IHBhcnNlVGltZVNwZWMoYnVmZmVyLCBTZWNvbmQ2ME1vZGU6OkFjY2VwdCk7
CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
aWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjp0dXBsZSB7IHBsYWluVGlt
ZS52YWx1ZSgpLCBzdGQ6Om51bGxvcHQgfTsKKyAgICBpZiAoY2FuQmVUaW1lWm9uZSgqYnVmZmVy
KSkgeworICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VUaW1lWm9uZShidWZmZXIpOworICAg
ICAgICBpZiAoIXRpbWVab25lKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpblRpbWUudmFsdWUoKSwgdGltZVpvbmUgfTsK
KyAgICB9CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpblRpbWUudmFsdWUoKSwgc3RkOjpu
dWxsb3B0IH07Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2Vj
LXRlbXBvcmFsLWlzb2RheXNpbm1vbnRoCitpbmxpbmUgdW5zaWduZWQgZGF5c0luTW9udGgoaW50
MzJfdCB5ZWFyLCB1bnNpZ25lZCBtb250aCkKK3sKKyAgICBzd2l0Y2ggKG1vbnRoKSB7CisgICAg
Y2FzZSAxOgorICAgIGNhc2UgMzoKKyAgICBjYXNlIDU6CisgICAgY2FzZSA3OgorICAgIGNhc2Ug
ODoKKyAgICBjYXNlIDEwOgorICAgIGNhc2UgMTI6CisgICAgICAgIHJldHVybiAzMTsKKyAgICBj
YXNlIDQ6CisgICAgY2FzZSA2OgorICAgIGNhc2UgOToKKyAgICBjYXNlIDExOgorICAgICAgICBy
ZXR1cm4gMzA7CisgICAgY2FzZSAyOgorICAgICAgICBpZiAoaXNMZWFwWWVhcih5ZWFyKSkKKyAg
ICAgICAgICAgIHJldHVybiAyOTsKKyAgICAgICAgcmV0dXJuIDI4OworICAgIH0KKyAgICByZXR1
cm4gMDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0aW9u
YWw8UGxhaW5EYXRlPiBwYXJzZURhdGUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBl
PiYgYnVmZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
cHJvZC1EYXRlCisgICAgLy8gRGF0ZSA6CisgICAgLy8gICAgIERhdGVZZWFyIC0gRGF0ZU1vbnRo
IC0gRGF0ZURheQorICAgIC8vICAgICBEYXRlWWVhciBEYXRlTW9udGggRGF0ZURheQorICAgIC8v
CisgICAgLy8gRGF0ZVllYXIgOgorICAgIC8vICAgICBEYXRlRm91ckRpZ2l0WWVhcgorICAgIC8v
ICAgICBEYXRlRXh0ZW5kZWRZZWFyCisgICAgLy8KKyAgICAvLyBEYXRlRm91ckRpZ2l0WWVhciA6
CisgICAgLy8gICAgIERpZ2l0IERpZ2l0IERpZ2l0IERpZ2l0CisgICAgLy8KKyAgICAvLyBEYXRl
RXh0ZW5kZWRZZWFyIDoKKyAgICAvLyAgICAgU2lnbiBEaWdpdCBEaWdpdCBEaWdpdCBEaWdpdCBE
aWdpdCBEaWdpdAorICAgIC8vCisgICAgLy8gRGF0ZU1vbnRoIDoKKyAgICAvLyAgICAgMCBOb256
ZXJvRGlnaXQKKyAgICAvLyAgICAgMTAKKyAgICAvLyAgICAgMTEKKyAgICAvLyAgICAgMTIKKyAg
ICAvLworICAgIC8vIERhdGVEYXkgOgorICAgIC8vICAgICAwIE5vbnplcm9EaWdpdAorICAgIC8v
ICAgICAxIERpZ2l0CisgICAgLy8gICAgIDIgRGlnaXQKKyAgICAvLyAgICAgMzAKKyAgICAvLyAg
ICAgMzEKKworICAgIGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIGJvb2wgc2l4RGlnaXRzWWVhciA9IGZhbHNlOworICAgIGludCB5ZWFyRmFj
dG9yID0gMTsKKyAgICBpZiAoKmJ1ZmZlciA9PSAnKycpIHsKKyAgICAgICAgYnVmZmVyLmFkdmFu
Y2UoKTsKKyAgICAgICAgc2l4RGlnaXRzWWVhciA9IHRydWU7CisgICAgfSBlbHNlIGlmICgqYnVm
ZmVyID09ICctJyB8fCAqYnVmZmVyID09IDB4MjIxMikgeworICAgICAgICB5ZWFyRmFjdG9yID0g
LTE7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIHNpeERpZ2l0c1llYXIgPSB0
cnVlOworICAgIH0gZWxzZSBpZiAoIWlzQVNDSUlEaWdpdCgqYnVmZmVyKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGludDMyX3QgeWVhciA9IDA7CisgICAgaWYgKHNpeERp
Z2l0c1llYXIpIHsKKyAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDYpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
ZGV4ID0gMDsgaW5kZXggPCA2OyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlE
aWdpdChidWZmZXJbaW5kZXhdKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICB9CisgICAgICAgIHllYXIgPSBwYXJzZURlY2ltYWxJbnQzMihidWZmZXIucG9z
aXRpb24oKSwgNikgKiB5ZWFyRmFjdG9yOworICAgICAgICBidWZmZXIuYWR2YW5jZUJ5KDYpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCA0KQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
bmRleCA9IDA7IGluZGV4IDwgNDsgKytpbmRleCkgeworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJ
RGlnaXQoYnVmZmVyW2luZGV4XSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgfQorICAgICAgICB5ZWFyID0gcGFyc2VEZWNpbWFsSW50MzIoYnVmZmVyLnBv
c2l0aW9uKCksIDQpOworICAgICAgICBidWZmZXIuYWR2YW5jZUJ5KDQpOworICAgIH0KKworICAg
IGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IGJvb2wgc3BsaXRCeUh5cGhlbiA9IGZhbHNlOworICAgIGlmICgqYnVmZmVyID09ICctJykgewor
ICAgICAgICBzcGxpdEJ5SHlwaGVuID0gdHJ1ZTsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsK
KyAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDUpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChidWZmZXIubGVu
Z3RoUmVtYWluaW5nKCkgPCA0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICB9CisgICAgLy8gV2UgZW5zdXJlZCB0aGF0IGJ1ZmZlciBoYXMgZW5vdWdoIGxlbmd0aCBmb3Ig
bW9udGggYW5kIGRheS4gV2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgbGVuZ3RoLgorCisgICAgdW5z
aWduZWQgbW9udGggPSAwOworICAgIGF1dG8gZmlyc3RNb250aENoYXJhY3RlciA9ICpidWZmZXI7
CisgICAgaWYgKGZpcnN0TW9udGhDaGFyYWN0ZXIgPT0gJzAnIHx8IGZpcnN0TW9udGhDaGFyYWN0
ZXIgPT0gJzEnKSB7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIGF1dG8gc2Vj
b25kTW9udGhDaGFyYWN0ZXIgPSAqYnVmZmVyOworICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChz
ZWNvbmRNb250aENoYXJhY3RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICBtb250aCA9IChzZWNvbmRNb250aENoYXJhY3RlciAtICcwJykgKyAxMCAqIChmaXJz
dE1vbnRoQ2hhcmFjdGVyIC0gJzAnKTsKKyAgICAgICAgaWYgKCFtb250aCB8fCBtb250aCA+IDEy
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYnVmZmVyLmFkdmFu
Y2UoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlm
IChzcGxpdEJ5SHlwaGVuKSB7CisgICAgICAgIGlmICgqYnVmZmVyID09ICctJykKKyAgICAgICAg
ICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgdW5zaWduZWQgZGF5ID0gMDsKKyAgICBhdXRvIGZp
cnN0RGF5Q2hhcmFjdGVyID0gKmJ1ZmZlcjsKKyAgICBpZiAoZmlyc3REYXlDaGFyYWN0ZXIgPj0g
JzAnICYmIGZpcnN0RGF5Q2hhcmFjdGVyIDw9ICczJykgeworICAgICAgICBidWZmZXIuYWR2YW5j
ZSgpOworICAgICAgICBhdXRvIHNlY29uZERheUNoYXJhY3RlciA9ICpidWZmZXI7CisgICAgICAg
IGlmICghaXNBU0NJSURpZ2l0KHNlY29uZERheUNoYXJhY3RlcikpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgICAgICBkYXkgPSAoc2Vjb25kRGF5Q2hhcmFjdGVyIC0gJzAn
KSArIDEwICogKGZpcnN0RGF5Q2hhcmFjdGVyIC0gJzAnKTsKKyAgICAgICAgaWYgKCFkYXkgfHwg
ZGF5ID4gZGF5c0luTW9udGgoeWVhciwgbW9udGgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBQbGFpbkRhdGUoeWVhciwgbW9udGgs
IGRheSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlv
bmFsPHN0ZDo6dHVwbGU8UGxhaW5EYXRlLCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4sIHN0ZDo6
b3B0aW9uYWw8VGltZVpvbmU+Pj4gcGFyc2VEYXRlVGltZShTdHJpbmdQYXJzaW5nQnVmZmVyPENo
YXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNwcm9kLURhdGVUaW1lCisgICAgLy8gRGF0ZVRpbWUgOgorICAgIC8vICAgICBE
YXRlIFRpbWVTcGVjU2VwYXJhdG9yW29wdF0gVGltZVpvbmVbb3B0XQorICAgIC8vCisgICAgLy8g
VGltZVNwZWNTZXBhcmF0b3IgOgorICAgIC8vICAgICBEYXRlVGltZVNlcGFyYXRvciBUaW1lU3Bl
YworICAgIGF1dG8gcGxhaW5EYXRlID0gcGFyc2VEYXRlKGJ1ZmZlcik7CisgICAgaWYgKCFwbGFp
bkRhdGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKGJ1ZmZlci5hdEVu
ZCgpKQorICAgICAgICByZXR1cm4gc3RkOjp0dXBsZSB7IHBsYWluRGF0ZS52YWx1ZSgpLCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OworCisgICAgaWYgKCpidWZmZXIgPT0gJyAnIHx8ICpi
dWZmZXIgPT0gJ1QnIHx8ICpidWZmZXIgPT0gJ3QnKSB7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNl
KCk7CisgICAgICAgIGF1dG8gcGxhaW5UaW1lQW5kVGltZVpvbmUgPSBwYXJzZVRpbWUoYnVmZmVy
KTsKKyAgICAgICAgaWYgKCFwbGFpblRpbWVBbmRUaW1lWm9uZSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGF1dG8gW3BsYWluVGltZSwgdGltZVpvbmVdID0gcGxh
aW5UaW1lQW5kVGltZVpvbmUudmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBw
bGFpbkRhdGUudmFsdWUoKSwgcGxhaW5UaW1lLCB0aW1lWm9uZSB9OworICAgIH0KKworICAgIGlm
IChjYW5CZVRpbWVab25lKCpidWZmZXIpKSB7CisgICAgICAgIGF1dG8gdGltZVpvbmUgPSBwYXJz
ZVRpbWVab25lKGJ1ZmZlcik7CisgICAgICAgIGlmICghdGltZVpvbmUpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjp0dXBsZSB7IHBsYWluRGF0
ZS52YWx1ZSgpLCBzdGQ6Om51bGxvcHQsIHRpbWVab25lIH07CisgICAgfQorCisgICAgcmV0dXJu
IHN0ZDo6dHVwbGUgeyBwbGFpbkRhdGUudmFsdWUoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQgfTsKK30KKworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRp
b25hbDxUaW1lWm9uZT4+PiBwYXJzZVRpbWUoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgcmV0
dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBz
dGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25l
Pj4+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBwYXJzZVRpbWUoYnVmZmVyKTsKKyAgICAgICAg
aWYgKCFidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8c3RkOjp0
dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9uYWw8UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxU
aW1lWm9uZT4+PiBwYXJzZURhdGVUaW1lKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHJldHVy
biByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gc3Rk
OjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRpbWU+
LCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lPj4+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBwYXJz
ZURhdGVUaW1lKGJ1ZmZlcik7CisgICAgICAgIGlmICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0p
OwogfQogCkBAIC0zODIsMTMgKzgxOSwxOSBAQCBTdHJpbmcgZm9ybWF0VGltZVpvbmVPZmZzZXRT
dHJpbmcoaW50NjRfdCBvZmZzZXQpCiAgICAgaWYgKG5hbm9zZWNvbmRzKSB7CiAgICAgICAgIC8v
IFNpbmNlIG5zUGVyU2Vjb25kIGlzIDEwMDAwMDAwMDAsIHN0cmluZ2lmaWVkIG5hbm9zZWNvbmRz
IHRha2VzIGF0IG1vc3QgOSBjaGFyYWN0ZXJzICg5OTk5OTk5OTkpLgogICAgICAgICBhdXRvIGZy
YWN0aW9uID0gV1RGOjpudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwgOT4+KG5h
bm9zZWNvbmRzKTsKLSAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgICAgICB1bnNpZ25l
ZCBwYWRkaW5nTGVuZ3RoID0gOSAtIGZyYWN0aW9uLnNpemUoKTsKLSAgICAgICAgZm9yICg7IGlu
ZGV4IDwgZnJhY3Rpb24uc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgICAgICBpZiAoZnJhY3Rp
b25baW5kZXhdID09ICcwJykKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBmcmFjdGlvbi5zaXpl
KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZhbGlkTGVuZ3RoOworICAgICAg
ICB3aGlsZSAoaW5kZXgtLSkgeworICAgICAgICAgICAgaWYgKGZyYWN0aW9uW2luZGV4XSAhPSAn
MCcpIHsKKyAgICAgICAgICAgICAgICB2YWxpZExlbmd0aCA9IGluZGV4ICsgMTsKICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmcmFjdGlv
bi5yZXNpemUoaW5kZXgpOworICAgICAgICBpZiAodmFsaWRMZW5ndGgpCisgICAgICAgICAgICBm
cmFjdGlvbi5yZXNpemUodmFsaWRMZW5ndGgudmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGZyYWN0aW9uLmNsZWFyKCk7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG5lZ2F0
aXZlID8gJy0nIDogJysnLCBwYWQoJzAnLCAyLCBob3VycyksICc6JywgcGFkKCcwJywgMiwgbWlu
dXRlcyksICc6JywgcGFkKCcwJywgMiwgc2Vjb25kcyksICcuJywgcGFkKCcwJywgcGFkZGluZ0xl
bmd0aCwgZW1wdHlTdHJpbmcoKSksIGZyYWN0aW9uKTsKICAgICB9CiAgICAgaWYgKHNlY29uZHMp
CkBAIC0zOTYsNSArODM5LDU4IEBAIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNldFN0cmluZyhp
bnQ2NF90IG9mZnNldCkKICAgICByZXR1cm4gbWFrZVN0cmluZyhuZWdhdGl2ZSA/ICctJyA6ICcr
JywgcGFkKCcwJywgMiwgaG91cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpKTsKIH0KIAor
U3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGltZSBwbGFpblRpbWUsIHN0ZDo6dHVw
bGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uKQoreworICAgIGF1dG8gW3ByZWNpc2lv
blR5cGUsIHByZWNpc2lvblZhbHVlXSA9IHByZWNpc2lvbjsKKyAgICBBU1NFUlQocHJlY2lzaW9u
VHlwZSA9PSBQcmVjaXNpb246OkF1dG8gfHwgcHJlY2lzaW9uVmFsdWUgPCAxMCk7CisgICAgaWYg
KHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpNaW51dGUpCisgICAgICAgIHJldHVybiBtYWtl
U3RyaW5nKHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBs
YWluVGltZS5taW51dGUoKSkpOworCisgICAgaW50NjRfdCBmcmFjdGlvbk5hbm9zZWNvbmRzID0g
c3RhdGljX2Nhc3Q8aW50NjRfdD4ocGxhaW5UaW1lLm1pbGxpc2Vjb25kKCkpICogbnNQZXJNaWxs
aXNlY29uZCArIHN0YXRpY19jYXN0PGludDY0X3Q+KHBsYWluVGltZS5taWNyb3NlY29uZCgpKSAq
IG5zUGVyTWljcm9zZWNvbmQgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihwbGFpblRpbWUubmFub3Nl
Y29uZCgpKTsKKyAgICBpZiAocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8pIHsKKyAg
ICAgICAgaWYgKCFmcmFjdGlvbk5hbm9zZWNvbmRzKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcocGFkKCcwJywgMiwgcGxhaW5UaW1lLmhvdXIoKSksICc6JywgcGFkKCcwJywgMiwgcGxh
aW5UaW1lLm1pbnV0ZSgpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUuc2Vjb25kKCkpKTsK
KyAgICAgICAgYXV0byBmcmFjdGlvbiA9IFdURjo6bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0
b3I8TENoYXIsIDk+PihmcmFjdGlvbk5hbm9zZWNvbmRzKTsKKyAgICAgICAgdW5zaWduZWQgcGFk
ZGluZ0xlbmd0aCA9IDkgLSBmcmFjdGlvbi5zaXplKCk7CisgICAgICAgIHVuc2lnbmVkIGluZGV4
ID0gZnJhY3Rpb24uc2l6ZSgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2YWxp
ZExlbmd0aDsKKyAgICAgICAgd2hpbGUgKGluZGV4LS0pIHsKKyAgICAgICAgICAgIGlmIChmcmFj
dGlvbltpbmRleF0gIT0gJzAnKSB7CisgICAgICAgICAgICAgICAgdmFsaWRMZW5ndGggPSBpbmRl
eCArIDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHZhbGlkTGVuZ3RoKQorICAgICAgICAgICAgZnJhY3Rpb24ucmVzaXplKHZh
bGlkTGVuZ3RoLnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmcmFjdGlvbi5j
bGVhcigpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBwbGFpblRpbWUu
aG91cigpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUubWludXRlKCkpLCAnOicsIHBhZCgn
MCcsIDIsIHBsYWluVGltZS5zZWNvbmQoKSksICcuJywgcGFkKCcwJywgcGFkZGluZ0xlbmd0aCwg
ZW1wdHlTdHJpbmcoKSksIGZyYWN0aW9uKTsKKyAgICB9CisgICAgaWYgKCFwcmVjaXNpb25WYWx1
ZSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgMiwgcGxhaW5UaW1lLmhvdXIo
KSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLm1pbnV0ZSgpKSwgJzonLCBwYWQoJzAnLCAy
LCBwbGFpblRpbWUuc2Vjb25kKCkpKTsKKyAgICBhdXRvIGZyYWN0aW9uID0gV1RGOjpudW1iZXJU
b1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwgOT4+KGZyYWN0aW9uTmFub3NlY29uZHMpOwor
ICAgIHVuc2lnbmVkIHBhZGRpbmdMZW5ndGggPSA5IC0gZnJhY3Rpb24uc2l6ZSgpOworICAgIHBh
ZGRpbmdMZW5ndGggPSBzdGQ6Om1pbihwYWRkaW5nTGVuZ3RoLCBwcmVjaXNpb25WYWx1ZSk7Cisg
ICAgcHJlY2lzaW9uVmFsdWUgLT0gcGFkZGluZ0xlbmd0aDsKKyAgICBmcmFjdGlvbi5yZXNpemUo
cHJlY2lzaW9uVmFsdWUpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBsYWlu
VGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSksICc6Jywg
cGFkKCcwJywgMiwgcGxhaW5UaW1lLnNlY29uZCgpKSwgJy4nLCBwYWQoJzAnLCBwYWRkaW5nTGVu
Z3RoLCBlbXB0eVN0cmluZygpKSwgZnJhY3Rpb24pOworfQorCisvLyBJc1ZhbGlkRHVyYXRpb24g
KCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1p
bGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcyApCisvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZHVyYXRpb24KK2Jvb2wg
aXNWYWxpZER1cmF0aW9uKGNvbnN0IER1cmF0aW9uJiBkdXJhdGlvbikKK3sKKyAgICBpbnQgc2ln
biA9IDA7CisgICAgZm9yIChhdXRvIHZhbHVlIDogZHVyYXRpb24pIHsKKyAgICAgICAgaWYgKCFz
dGQ6OmlzZmluaXRlKHZhbHVlKSB8fCAodmFsdWUgPCAwICYmIHNpZ24gPiAwKSB8fCAodmFsdWUg
PiAwICYmIHNpZ24gPCAwKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBp
ZiAoIXNpZ24gJiYgdmFsdWUpCisgICAgICAgICAgICBzaWduID0gdmFsdWUgPiAwID8gMSA6IC0x
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBJU084NjAx
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lTTzg2MDEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEu
aAppbmRleCA2NzY4OWQxYzI0NWFmZWUyYWMyNjk1OWMyOTcwZGQ0OTYzYWUzMDAyLi42YTQ3MjNl
MWUxZGFmNjNiMzFkY2Y2OWQyMjI2MmM0YTg5MTc0M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSVNPODYwMS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUs
MzIgKzI2LDEyOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkludGxPYmplY3QuaCIK
ICNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFj
ZSBJU084NjAxIHsKIAotc3RydWN0IER1cmF0aW9uIHsKK2NsYXNzIER1cmF0aW9uIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRChEdXJhdGlvbik7CitwdWJsaWM6CiAgICAgdXNpbmcgY29u
c3RfaXRlcmF0b3IgPSBzdGQ6OmFycmF5PGRvdWJsZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPjo6
Y29uc3RfaXRlcmF0b3I7CiAKKyAgICBEdXJhdGlvbigpID0gZGVmYXVsdDsKKyAgICBEdXJhdGlv
bihkb3VibGUgeWVhcnMsIGRvdWJsZSBtb250aHMsIGRvdWJsZSB3ZWVrcywgZG91YmxlIGRheXMs
IGRvdWJsZSBob3VycywgZG91YmxlIG1pbnV0ZXMsIGRvdWJsZSBzZWNvbmRzLCBkb3VibGUgbWls
bGlzZWNvbmRzLCBkb3VibGUgbWljcm9zZWNvbmRzLCBkb3VibGUgbmFub3NlY29uZHMpCisgICAg
ICAgIDogbV9kYXRhIHsKKyAgICAgICAgICAgIHllYXJzLAorICAgICAgICAgICAgbW9udGhzLAor
ICAgICAgICAgICAgd2Vla3MsCisgICAgICAgICAgICBkYXlzLAorICAgICAgICAgICAgaG91cnMs
CisgICAgICAgICAgICBtaW51dGVzLAorICAgICAgICAgICAgc2Vjb25kcywKKyAgICAgICAgICAg
IG1pbGxpc2Vjb25kcywKKyAgICAgICAgICAgIG1pY3Jvc2Vjb25kcywKKyAgICAgICAgICAgIG5h
bm9zZWNvbmRzLAorICAgICAgICB9CisgICAgeyB9CisKICNkZWZpbmUgSlNDX0RFRklORV9JU084
NjAxX0RVUkFUSU9OX0ZJRUxEKG5hbWUsIGNhcGl0YWxpemVkTmFtZSkgXAotICAgIGRvdWJsZSBu
YW1lIyNzKCkgY29uc3QgeyByZXR1cm4gZGF0YVtzdGF0aWNfY2FzdDx1aW50OF90PihUZW1wb3Jh
bFVuaXQ6OmNhcGl0YWxpemVkTmFtZSldOyB9IFwKLSAgICB2b2lkIHNldCMjY2FwaXRhbGl6ZWRO
YW1lIyNzKGRvdWJsZSB2YWx1ZSkgeyBkYXRhW3N0YXRpY19jYXN0PHVpbnQ4X3Q+KFRlbXBvcmFs
VW5pdDo6Y2FwaXRhbGl6ZWROYW1lKV0gPSB2YWx1ZTsgfQorICAgIGRvdWJsZSBuYW1lIyNzKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhW3N0YXRpY19jYXN0PHVpbnQ4X3Q+KFRlbXBvcmFsVW5pdDo6
Y2FwaXRhbGl6ZWROYW1lKV07IH0gXAorICAgIHZvaWQgc2V0IyNjYXBpdGFsaXplZE5hbWUjI3Mo
ZG91YmxlIHZhbHVlKSB7IG1fZGF0YVtzdGF0aWNfY2FzdDx1aW50OF90PihUZW1wb3JhbFVuaXQ6
OmNhcGl0YWxpemVkTmFtZSldID0gdmFsdWU7IH0KICAgICBKU0NfVEVNUE9SQUxfVU5JVFMoSlND
X0RFRklORV9JU084NjAxX0RVUkFUSU9OX0ZJRUxEKTsKICN1bmRlZiBKU0NfREVGSU5FX0lTTzg2
MDFfRFVSQVRJT05fRklFTEQKIAotICAgIGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBy
ZXR1cm4gZGF0YVtpXTsgfQotICAgIGNvbnN0IGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkg
Y29uc3QgeyByZXR1cm4gZGF0YVtpXTsgfQotICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29u
c3QgeyByZXR1cm4gZGF0YS5iZWdpbigpOyB9Ci0gICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gZGF0YS5lbmQoKTsgfQotICAgIHZvaWQgY2xlYXIoKSB7IGRhdGEuZmlsbCgw
KTsgfQorICAgIGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gbV9kYXRhW2ld
OyB9CisgICAgY29uc3QgZG91YmxlJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVy
biBtX2RhdGFbaV07IH0KKyAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5iZWdpbigpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLmVuZCgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmZpbGwoMCk7IH0K
KworICAgIER1cmF0aW9uIG9wZXJhdG9yLSgpIGNvbnN0CisgICAgeworICAgICAgICBEdXJhdGlv
biByZXN1bHQoKnRoaXMpOworICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogcmVzdWx0Lm1fZGF0
YSkKKyAgICAgICAgICAgIHZhbHVlID0gLXZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmFycmF5PGRvdWJsZSwgbnVtYmVyT2ZUZW1wb3Jh
bFVuaXRzPiBtX2RhdGEgeyB9OworfTsKKworY2xhc3MgUGxhaW5UaW1lIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRChQbGFpblRpbWUpOworcHVibGljOgorICAgIFBsYWluVGltZSgpID0g
ZGVmYXVsdDsKKyAgICBQbGFpblRpbWUodW5zaWduZWQgaG91ciwgdW5zaWduZWQgbWludXRlLCB1
bnNpZ25lZCBzZWNvbmQsIHVuc2lnbmVkIG1pbGxpc2Vjb25kLCB1bnNpZ25lZCBtaWNyb3NlY29u
ZCwgdW5zaWduZWQgbmFub3NlY29uZCkKKyAgICAgICAgOiBtX2hvdXIoaG91cikKKyAgICAgICAg
LCBtX21pbnV0ZShtaW51dGUpCisgICAgICAgICwgbV9zZWNvbmQoc2Vjb25kKQorICAgICAgICAs
IG1fbWlsbGlzZWNvbmQobWlsbGlzZWNvbmQpCisgICAgICAgICwgbV9taWNyb3NlY29uZChtaWNy
b3NlY29uZCkKKyAgICAgICAgLCBtX25hbm9zZWNvbmQobmFub3NlY29uZCkKKyAgICB7IH0KKwor
I2RlZmluZSBKU0NfREVGSU5FX0lTTzg2MDFfUExBSU5fVElNRV9GSUVMRChuYW1lLCBjYXBpdGFs
aXplZE5hbWUpIFwKKyAgICB1bnNpZ25lZCBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7
IH0KKyAgICBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhKU0NfREVGSU5FX0lTTzg2MDFf
UExBSU5fVElNRV9GSUVMRCk7CisjdW5kZWYgSlNDX0RFRklORV9JU084NjAxX0RVUkFUSU9OX0ZJ
RUxECisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KFBsYWluVGltZSBsaHMsIFBsYWluVGlt
ZSByaHMpCisgICAgeworICAgICAgICByZXR1cm4gbGhzLm1faG91ciA9PSByaHMubV9ob3VyCisg
ICAgICAgICAgICAmJiBsaHMubV9taW51dGUgPT0gcmhzLm1fbWludXRlCisgICAgICAgICAgICAm
JiBsaHMubV9zZWNvbmQgPT0gcmhzLm1fc2Vjb25kCisgICAgICAgICAgICAmJiBsaHMubV9taWxs
aXNlY29uZCA9PSByaHMubV9taWxsaXNlY29uZAorICAgICAgICAgICAgJiYgbGhzLm1fbWljcm9z
ZWNvbmQgPT0gcmhzLm1fbWljcm9zZWNvbmQKKyAgICAgICAgICAgICYmIGxocy5tX25hbm9zZWNv
bmQgPT0gcmhzLm1fbmFub3NlY29uZDsKKyAgICB9CiAKLSAgICBzdGQ6OmFycmF5PGRvdWJsZSwg
bnVtYmVyT2ZUZW1wb3JhbFVuaXRzPiBkYXRhIHsgfTsKK3ByaXZhdGU6CisgICAgdWludDhfdCBt
X2hvdXIgeyAwIH07CisgICAgdWludDhfdCBtX21pbnV0ZSB7IDAgfTsKKyAgICB1aW50OF90IG1f
c2Vjb25kIHsgMCB9OworICAgIHVpbnQxNl90IG1fbWlsbGlzZWNvbmQgeyAwIH07CisgICAgdWlu
dDE2X3QgbV9taWNyb3NlY29uZCB7IDAgfTsKKyAgICB1aW50MTZfdCBtX25hbm9zZWNvbmQgeyAw
IH07CiB9OwogCisvLyBOb3RlIHRoYXQgUGxhaW5EYXRlIGRvZXMgbm90IGluY2x1ZGUgd2VlayB1
bml0LgorLy8geWVhciBjYW4gYmUgbmVnYXRpdmUuIEFuZCBtb250aCBhbmQgZGF5IHN0YXJ0cyB3
aXRoIDEuCitjbGFzcyBQbGFpbkRhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFBs
YWluRGF0ZSk7CitwdWJsaWM6CisgICAgUGxhaW5EYXRlKCkgPSBkZWZhdWx0OworICAgIFBsYWlu
RGF0ZShpbnQzMl90IHllYXIsIHVuc2lnbmVkIG1vbnRoLCB1bnNpZ25lZCBkYXkpCisgICAgICAg
IDogbV95ZWFyKHllYXIpCisgICAgICAgICwgbV9tb250aChtb250aCkKKyAgICAgICAgLCBtX2Rh
eShkYXkpCisgICAgeworICAgIH0KKworICAgIGludDMyX3QgeWVhcigpIGNvbnN0IHsgcmV0dXJu
IG1feWVhcjsgfQorICAgIHVpbnQ4X3QgbW9udGgoKSBjb25zdCB7IHJldHVybiBtX21vbnRoOyB9
CisgICAgdWludDhfdCBkYXkoKSBjb25zdCB7IHJldHVybiBtX2RheTsgfQorCitwcml2YXRlOgor
ICAgIGludDMyX3QgbV95ZWFyIHsgMCB9OworICAgIHVpbnQ4X3QgbV9tb250aCB7IDEgfTsKKyAg
ICB1aW50OF90IG1fZGF5IHsgMSB9OworfTsKKwordXNpbmcgVGltZVpvbmUgPSBWYXJpYW50PFRp
bWVab25lSUQsIGludDY0X3Q+OworCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3N1cC1pc3ZhbGlkdGltZXpvbmVuYW1lCitzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlk
Rm9yVGltZVpvbmVOYW1lKFN0cmluZ1ZpZXcpOwogc3RkOjpvcHRpb25hbDxEdXJhdGlvbj4gcGFy
c2VEdXJhdGlvbihTdHJpbmdWaWV3KTsKIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1l
Wm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nVmlldyk7CitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVw
bGU8UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lPj4+IHBhcnNlVGltZShTdHJpbmdW
aWV3KTsKK3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9uYWw8
UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZT4+PiBwYXJzZURhdGVUaW1lKFN0cmlu
Z1ZpZXcpOwogU3RyaW5nIGZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKGludDY0X3QpOworU3Ry
aW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGltZSwgc3RkOjp0dXBsZTxQcmVjaXNpb24s
IHVuc2lnbmVkPiBwcmVjaXNpb24pOworCitib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJh
dGlvbiYpOwogCiB9IC8vIG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggOGQ4ZTk2
ZTc3NTVkNThhYjg0MmUzNjBjZmFmYjE5ZDAwZmUyNjI3MC4uNzk3NTliYzVmYTQ0ZmUyOTc3MjYw
NWY1NmE1Y2E5YjA4OTU2MzFjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5jcHAKQEAgLTE4MzksNiArMTgzOSwyMyBAQCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaW50bEF2YWlsYWJsZVRpbWVab25lcygpCiAgICAgcmV0dXJuIGF2YWlsYWJsZVRpbWVab25l
czsKIH0KIAorVGltZVpvbmVJRCB1dGNUaW1lWm9uZUlEU3RvcmFnZSB7IHN0ZDo6bnVtZXJpY19s
aW1pdHM8VGltZVpvbmVJRD46Om1heCgpIH07CitUaW1lWm9uZUlEIHV0Y1RpbWVab25lSURTbG93
KCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CisgICAgc3Rk
OjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7CisgICAgICAgIGNvbnN0IGF1dG8mIHRp
bWVab25lcyA9IGludGxBdmFpbGFibGVUaW1lWm9uZXMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgdGltZVpvbmVzLnNpemUoKTsgKytpbmRleCkgeworICAgICAg
ICAgICAgaWYgKHRpbWVab25lc1tpbmRleF0gPT0gIlVUQyJfcykgeworICAgICAgICAgICAgICAg
IHV0Y1RpbWVab25lSURTdG9yYWdlID0gaW5kZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfSk7CisgICAgcmV0dXJuIHV0Y1RpbWVab25lSURTdG9yYWdlOworfQorCiAv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1lbnVtZXJhdGlvbi8jc2VjLWF2YWlsYWJs
ZXRpbWV6b25lcwogc3RhdGljIEpTQXJyYXkqIGF2YWlsYWJsZVRpbWVab25lcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5oCmluZGV4IDk2ZDIxODU1YzljYTZmM2UzMTk2Yjc0ZWEwMmQwZWQ1M2QzOWMxMzAu
LmIzZTE1ZDMwYmE5M2I1YjIwNWI1NzNlMDg5ZWJiYmYzOWNlMjExM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTExNyw2ICsxMTcsMTYgQEAgaW5s
aW5lIENhbGVuZGFySUQgaXNvODYwMUNhbGVuZGFySUQoKQogdXNpbmcgVGltZVpvbmVJRCA9IHVu
c2lnbmVkOwogY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGxBdmFpbGFibGVUaW1lWm9uZXMoKTsK
IAorZXh0ZXJuIFRpbWVab25lSUQgdXRjVGltZVpvbmVJRFN0b3JhZ2U7CitUaW1lWm9uZUlEIHV0
Y1RpbWVab25lSURTbG93KCk7CitpbmxpbmUgQ2FsZW5kYXJJRCB1dGNUaW1lWm9uZUlEKCkKK3sK
KyAgICB1bnNpZ25lZCB2YWx1ZSA9IHV0Y1RpbWVab25lSURTdG9yYWdlOworICAgIGlmICh2YWx1
ZSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRpbWVab25lSUQ+OjptYXgoKSkKKyAgICAgICAgcmV0
dXJuIHV0Y1RpbWVab25lSURTbG93KCk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiBUcmlTdGF0
ZSBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zLCBQ
cm9wZXJ0eU5hbWUpOwogU3RyaW5nIGludGxTdHJpbmdPcHRpb24oSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29u
c3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91bmQsIGNvbnN0IGNoYXIqIGZhbGxi
YWNrKTsKIHVuc2lnbmVkIGludGxOdW1iZXJPcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCogb3B0aW9ucywgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhp
bXVtLCB1bnNpZ25lZCBmYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYjJmZGY0NjQzNmU4Nzc2MDQ5MDY0OGFmZDAx
NDFjODIyMzYxNDk1MS4uNmRhNDU4ODM0MWEwMTZlOTFhYjkxMzY5MDM2ZjBjOTZkYTQxNGZiNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cApAQCAtMjA2LDYgKzIwNiw4IEBACiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9i
amVjdC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAj
aW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlZNVHJhcHNJ
bmxpbmVzLmgiCkBAIC0xMjMyLDYgKzEyMzQsMTMgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
ICAgICAgICAgICAgICAgICBpbml0LnNldChUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBkdXJhdGlvblByb3RvdHlwZSkpOwogICAgICAgICAg
ICAgfSk7CiAKKyAgICAgICAgbV9wbGFpblRpbWVTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAg
ICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKKyAgICAgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAgICAgVGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGUqIHBsYWluVGltZVByb3RvdHlwZSA9IFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpj
cmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmpl
Y3RQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBvcmFsUGxhaW5U
aW1lOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBwbGFpblRpbWVQcm90
b3R5cGUpKTsKKyAgICAgICAgICAgIH0pOworCiAgICAgICAgIG1fdGltZVpvbmVTdHJ1Y3R1cmUu
aW5pdExhdGVyKAogICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4m
IGluaXQpIHsKICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0yMTE5LDYgKzIxMjgsNyBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZp
c2l0b3ImIHZpc2l0b3IpCiAKICAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyU3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZHVyYXRpb25TdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9wbGFpblRpbWVTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CiAgICAgdGhpc09iamVjdC0+bV90aW1lWm9uZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9y
KTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbEdldHRlckZ1bmN0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IGRlYjMzZGJkMTAzMDgzYTE4ZjQwYmE3YWRjNTY5NTI2MDE0OTdkMjkuLjEyOGIzOTkxMGRk
ODA1N2Y3YWFiYjU5Nzc3Y2E2ODBlOWRmNjE4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzI2LDYgKzMyNiw3IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogCiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2FsZW5kYXJTdHJ1Y3R1
cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZHVyYXRp
b25TdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+
IG1fcGxhaW5UaW1lU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
U3RydWN0dXJlPiBtX3RpbWVab25lU3RydWN0dXJlOwogCiAgICAgV3JpdGVCYXJyaWVyPE51bGxH
ZXR0ZXJGdW5jdGlvbj4gbV9udWxsR2V0dGVyRnVuY3Rpb247CkBAIC04NzYsNiArODc3LDcgQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAKICAgICBTdHJ1Y3R1cmUqIGNhbGVuZGFyU3RydWN0dXJlKCkgeyByZXR1cm4gbV9jYWxlbmRh
clN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGR1cmF0aW9uU3RydWN0dXJl
KCkgeyByZXR1cm4gbV9kdXJhdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1
cmUqIHBsYWluVGltZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGxhaW5UaW1lU3RydWN0dXJlLmdl
dCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogdGltZVpvbmVTdHJ1Y3R1cmUoKSB7IHJldHVybiBt
X3RpbWVab25lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggYTBmYWEzZmZjZDA0NDQ3NzJjNDFhNGNiNzM1NmEyZDY4NjcwYTY5Yy4uNjUz
MGRkMDFlYjY3YzUzY2Q4ZTllMzA4ODk5MTA1NjZlOGNiNTdmNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWN0b3IuY3BwCkBAIC03Myw2ICs3Myw3IEBAIHZvaWQgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5CiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJDYWxlbmRhciJfcywgUHJvcGVydHlBZGRp
dGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCB0ZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAg
dGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbENhbGVuZGFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAppbmRleCAwZGEyNGE1MjU1N2ViY2Rl
NThmMzVkZTE4ZDc2YzJlNzJiNjI2ZjhkLi4xYzEwMDU4NzIyMWUzMmM3NjNkNDNiZTc2ODIxZjBi
ZmVlYjNlYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uLmNwcApAQCAtNzIsMjIgKzcyLDYgQEAgdm9pZCBUZW1wb3JhbER1cmF0aW9u
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKIH0KIAotLy8gSXNWYWxpZER1cmF0aW9uICggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMs
IGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcywgbmFu
b3NlY29uZHMgKQotLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtaXN2YWxpZGR1cmF0aW9uCi1zdGF0aWMgYm9vbCBpc1ZhbGlkRHVyYXRpb24oY29uc3Qg
VGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMpCi17Ci0gICAgaW50
IHNpZ24gPSAwOwotICAgIGZvciAoYXV0byB2YWx1ZSA6IHN1YmR1cmF0aW9ucykgewotICAgICAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpIHx8ICh2YWx1ZSA8IDAgJiYgc2lnbiA+IDApIHx8
ICh2YWx1ZSA+IDAgJiYgc2lnbiA8IDApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgIGlmICghc2lnbiAmJiB2YWx1ZSkKLSAgICAgICAgICAgIHNpZ24gPSB2YWx1ZSA+IDAg
PyAxIDogLTE7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIC8vIENyZWF0ZVRlbXBv
cmFsRHVyYXRpb24gKCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMs
IHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcyBbICwgbmV3
VGFyZ2V0IF0gKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtY3JlYXRldGVtcG9yYWxkdXJhdGlvbgogVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxE
dXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dWJkdXJhdGlvbnMmJiBzdWJkdXJhdGlvbnMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtOTUs
NyArNzksNyBAQCBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJ
ZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBpZiAoIWlzVmFsaWREdXJhdGlvbihzdWJkdXJhdGlvbnMpKSB7CisgICAgaWYgKCFJU084
NjAxOjppc1ZhbGlkRHVyYXRpb24oc3ViZHVyYXRpb25zKSkgewogICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMg
bXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQpAQCAtMTA1LDE3ICs4OSwxNyBAQCBUZW1wb3JhbER1cmF0aW9uKiBUZW1w
b3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
YwogCiAvLyBUb1RlbXBvcmFsRHVyYXRpb25SZWNvcmQgKCB0ZW1wb3JhbER1cmF0aW9uTGlrZSAp
CiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b3Rl
bXBvcmFsZHVyYXRpb25yZWNvcmQKLVRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1w
b3JhbER1cmF0aW9uOjpmcm9tT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
T2JqZWN0KiBkdXJhdGlvbkxpa2UpCitUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMgVGVt
cG9yYWxEdXJhdGlvbjo6ZnJvbU5vbkR1cmF0aW9uVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBkdXJhdGlvbkxpa2UpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEFTU0VSVCghZHVyYXRpb25MaWtlLT5pbmhlcml0czxUZW1wb3JhbER1cmF0aW9uPih2bSkp
OworICAgIEFTU0VSVCghZHVyYXRpb25MaWtlLmluaGVyaXRzPFRlbXBvcmFsRHVyYXRpb24+KHZt
KSk7CiAKICAgICBTdWJkdXJhdGlvbnMgcmVzdWx0OwogICAgIGF1dG8gaGFzUmVsZXZhbnRQcm9w
ZXJ0eSA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZUZW1wb3Jh
bFVuaXRzOyBpKyspIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0aW9uTGlrZS0+Z2V0
KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKHZtLCBpKSk7CisgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBkdXJhdGlvbkxpa2UuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKHZtLCBpKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAgICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE1Miw3ICsxMzYsNyBAQCBUZW1wb3JhbER1cmF0
aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0b0R1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVgogICAgICAgICByZXR1cm4ganNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPihpdGVt
VmFsdWUpOwogCiAgICAgaWYgKGl0ZW1WYWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIGF1dG8g
c3ViZHVyYXRpb25zID0gZnJvbU9iamVjdChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGl0ZW1WYWx1
ZSkpOworICAgICAgICBhdXRvIHN1YmR1cmF0aW9ucyA9IGZyb21Ob25EdXJhdGlvblZhbHVlKGds
b2JhbE9iamVjdCwgaXRlbVZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CiAKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBUZW1wb3Jh
bER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJkdXJh
dGlvbnMpKSk7CkBAIC0xNzAsNiArMTU0LDE2IEBAIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFs
RHVyYXRpb246OnRvRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJ
ZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShwYXJzZWRTdWJkdXJhdGlvbnMudmFsdWUoKSkp
KTsKIH0KIAorVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zIFRlbXBvcmFsRHVyYXRpb246
OnRvRHVyYXRpb25SZWNvcmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0
ZW1wb3JhbER1cmF0aW9uTGlrZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisKKyAgICBpZiAodGVtcG9yYWxEdXJhdGlvbkxpa2UuaW5oZXJpdHM8VGVtcG9yYWxEdXJhdGlv
bj4odm0pKQorICAgICAgICByZXR1cm4ganNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih0ZW1wb3Jh
bER1cmF0aW9uTGlrZSktPnN1YmR1cmF0aW9ucygpOworCisgICAgcmV0dXJuIGZyb21Ob25EdXJh
dGlvblZhbHVlKGdsb2JhbE9iamVjdCwgdGVtcG9yYWxEdXJhdGlvbkxpa2UpOworfQorCiBUZW1w
b3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKQEAgLTUzMCw3ICs1MjQsMTAgQEAgU3RyaW5nIFRlbXBvcmFsRHVyYXRpb246OnRv
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1YKIAog
ICAgIFByZWNpc2lvbkRhdGEgZGF0YSA9IHNlY29uZHNTdHJpbmdQcmVjaXNpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAg
IEFTU0VSVChkYXRhLnVuaXQgPj0gVGVtcG9yYWxVbml0OjpTZWNvbmQpOworICAgIGlmIChkYXRh
LnVuaXQgPCBUZW1wb3JhbFVuaXQ6OlNlY29uZCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBtdXN0IG5vdCBiZSBcIm1pbnV0ZVwi
Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CiAKICAgICBhdXRvIHJvdW5kaW5nTW9k
ZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnBy
b3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwKICAgICAgICAgeyB7ICJjZWlsIl9zLCBSb3VuZGlu
Z01vZGU6OkNlaWwgfSwgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwgeyAidHJ1
bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwgeyAiaGFsZkV4cGFuZCJfcywgUm91bmRpbmdN
b2RlOjpIYWxmRXhwYW5kIH0gfSwKQEAgLTUzOCw3ICs1MzUsNyBAQCBTdHJpbmcgVGVtcG9yYWxE
dXJhdGlvbjo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBv
cHRpb25zVgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAvLyBO
byBuZWVkIHRvIG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUgZ2l2ZW4gZXhwbGljaXQgZGVm
YXVsdHMuCi0gICAgaWYgKCFkYXRhLnByZWNpc2lvbiAmJiByb3VuZGluZ01vZGUgPT0gUm91bmRp
bmdNb2RlOjpUcnVuYykKKyAgICBpZiAoc3RkOjpnZXQ8MD4oZGF0YS5wcmVjaXNpb24pID09IFBy
ZWNpc2lvbjo6QXV0byAmJiByb3VuZGluZ01vZGUgPT0gUm91bmRpbmdNb2RlOjpUcnVuYykKICAg
ICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CiAKICAgICBTdWJkdXJhdGlvbnMgbmV3U3ViZHVyYXRp
b25zID0gbV9zdWJkdXJhdGlvbnM7CkBAIC01NDgsOSArNTQ1LDEwIEBAIFN0cmluZyBUZW1wb3Jh
bER1cmF0aW9uOjp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IG9wdGlvbnNWCiAKIC8vIFRlbXBvcmFsRHVyYXRpb25Ub1N0cmluZyAoIHllYXJzLCBtb250aHMs
IHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzLCBtaWNy
b3NlY29uZHMsIG5hbm9zZWNvbmRzLCBwcmVjaXNpb24gKQogLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdGVtcG9yYWxkdXJhdGlvbnRvc3RyaW5nCi1T
dHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoY29uc3QgVGVtcG9yYWxEdXJhdGlvbjo6
U3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHByZWNp
c2lvbikKK1N0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhjb25zdCBUZW1wb3JhbER1
cmF0aW9uOjpTdWJkdXJhdGlvbnMmIHN1YmR1cmF0aW9ucywgc3RkOjp0dXBsZTxQcmVjaXNpb24s
IHVuc2lnbmVkPiBwcmVjaXNpb24pCiB7Ci0gICAgQVNTRVJUKCFwcmVjaXNpb24gfHwgcHJlY2lz
aW9uLnZhbHVlKCkgPCAxMCk7CisgICAgYXV0byBbcHJlY2lzaW9uVHlwZSwgcHJlY2lzaW9uVmFs
dWVdID0gcHJlY2lzaW9uOworICAgIEFTU0VSVChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6
QXV0byB8fCBwcmVjaXNpb25WYWx1ZSA8IDEwKTsKIAogICAgIGF1dG8gYmFsYW5jZWRNaWNyb3Nl
Y29uZHMgPSBzdWJkdXJhdGlvbnMubWljcm9zZWNvbmRzKCkgKyBzdGQ6OnRydW5jKHN1YmR1cmF0
aW9ucy5uYW5vc2Vjb25kcygpIC8gMTAwMCk7CiAgICAgYXV0byBiYWxhbmNlZE5hbm9zZWNvbmRz
ID0gc3RkOjpmbW9kKHN1YmR1cmF0aW9ucy5uYW5vc2Vjb25kcygpLCAxMDAwKTsKQEAgLTU5Nywx
MCArNTk1LDEwIEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhjb25zdCBUZW1w
b3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMmIHN1YmR1cmF0CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGZvcm1hdEludGVnZXIoYmFsYW5jZWRTZWNvbmRzKSk7CiAKICAgICAgICAgYXV0byBmcmFj
dGlvbiA9IHN0ZDo6YWJzKGJhbGFuY2VkTWlsbGlzZWNvbmRzKSAqIDFlNiArIHN0ZDo6YWJzKGJh
bGFuY2VkTWljcm9zZWNvbmRzKSAqIDFlMyArIHN0ZDo6YWJzKGJhbGFuY2VkTmFub3NlY29uZHMp
OwotICAgICAgICBpZiAoKCFwcmVjaXNpb24gJiYgZnJhY3Rpb24pIHx8IChwcmVjaXNpb24gJiYg
cHJlY2lzaW9uLnZhbHVlKCkpKSB7CisgICAgICAgIGlmICgocHJlY2lzaW9uVHlwZSA9PSBQcmVj
aXNpb246OkF1dG8gJiYgZnJhY3Rpb24pIHx8IChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6
Rml4ZWQgJiYgcHJlY2lzaW9uVmFsdWUpKSB7CiAgICAgICAgICAgICBhdXRvIHBhZGRlZCA9IG1h
a2VTdHJpbmcoJy4nLCBwYWQoJzAnLCA5LCBmcmFjdGlvbikpOwotICAgICAgICAgICAgaWYgKHBy
ZWNpc2lvbikKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KHBhZGRl
ZCkubGVmdChwYWRkZWQubGVuZ3RoKCkgLSAoOSAtIHByZWNpc2lvbi52YWx1ZSgpKSkpOworICAg
ICAgICAgICAgaWYgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpGaXhlZCkKKyAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KHBhZGRlZCkubGVmdChwYWRkZWQubGVu
Z3RoKCkgLSAoOSAtIHByZWNpc2lvblZhbHVlKSkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgYXV0byBsZW5ndGhXaXRob3V0VHJhaWxpbmdaZXJvZXMgPSBwYWRkZWQubGVu
Z3RoKCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKHBhZGRlZFtsZW5ndGhXaXRob3V0VHJhaWxp
bmdaZXJvZXMgLSAxXSA9PSAnMCcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbER1cmF0aW9uLmgKaW5kZXggNTkyMDRkYzk1MzdhYWY3NjAxZTBlOGQxNTcwNTZi
ZGExOWFmNzM1NS4uYmM0MzgzMzNjNTQwNTFkMmYxZGI1NTRlM2IzNDlkZTVhNGE5YTQ2YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaApA
QCAtNjYsNyArNjYsMTUgQEAgY2xhc3MgVGVtcG9yYWxEdXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKICAgICBTdWJkdXJhdGlvbnMgcm91bmQoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OwogICAgIGRvdWJsZSB0b3RhbChKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKLSAgICBTdHJpbmcgdG9TdHJpbmcoc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uID0gc3RkOjpudWxsb3B0KSBjb25zdCB7IHJl
dHVybiB0b1N0cmluZyhtX3N1YmR1cmF0aW9ucywgcHJlY2lzaW9uKTsgfQorICAgIFN0cmluZyB0
b1N0cmluZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbiA9IHsgUHJl
Y2lzaW9uOjpBdXRvLCAwIH0pIGNvbnN0IHsgcmV0dXJuIHRvU3RyaW5nKG1fc3ViZHVyYXRpb25z
LCBwcmVjaXNpb24pOyB9CisKKyAgICBjb25zdCBTdWJkdXJhdGlvbnMmIHN1YmR1cmF0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fc3ViZHVyYXRpb25zOyB9CisKKyAgICBzdGF0aWMgU3ViZHVyYXRp
b25zIHRvRHVyYXRpb25SZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIHN0
YXRpYyBpbnQgc2lnbihjb25zdCBTdWJkdXJhdGlvbnMmKTsKKyAgICBzdGF0aWMgZG91YmxlIHJv
dW5kKFN1YmR1cmF0aW9ucyYsIGRvdWJsZSBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwgUm91bmRp
bmdNb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBiYWxhbmNlKFN1YmR1cmF0aW9ucyYsIFRlbXBvcmFs
VW5pdCBsYXJnZXN0VW5pdCk7CiAKIHByaXZhdGU6CiAgICAgVGVtcG9yYWxEdXJhdGlvbihWTSYs
IFN0cnVjdHVyZSosIFN1YmR1cmF0aW9ucyYmKTsKQEAgLTc0LDEyICs4Miw5IEBAIGNsYXNzIFRl
bXBvcmFsRHVyYXRpb24gZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFN1YmR1cmF0aW9ucz4gcGFyc2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYp
OwotICAgIHN0YXRpYyBTdWJkdXJhdGlvbnMgZnJvbU9iamVjdChKU0dsb2JhbE9iamVjdCosIEpT
T2JqZWN0Kik7CisgICAgc3RhdGljIFN1YmR1cmF0aW9ucyBmcm9tTm9uRHVyYXRpb25WYWx1ZShK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCi0gICAgc3RhdGljIGludCBzaWduKGNvbnN0IFN1
YmR1cmF0aW9ucyYpOwotICAgIHN0YXRpYyB2b2lkIGJhbGFuY2UoU3ViZHVyYXRpb25zJiwgVGVt
cG9yYWxVbml0IGxhcmdlc3RVbml0KTsKLSAgICBzdGF0aWMgZG91YmxlIHJvdW5kKFN1YmR1cmF0
aW9ucyYsIGRvdWJsZSBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlKTsKLSAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFN1YmR1cmF0aW9ucyYsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHByZWNpc2lvbik7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25z
dCBTdWJkdXJhdGlvbnMmLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lv
bik7CiAKICAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFN1YmR1cmF0aW9uKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcAppbmRleCBiMGE3
ZWVlNGM0YTAxMzYwYmEzY2ZhNWFkNWU1YTQ3Yjk0YjY3MzNhLi43YzBmZWM1MzkxM2U4YzVkNjlk
NWQ2M2ViYWE3ZmZkOTFkZmM4YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbE5vdy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxOb3cuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbE5vd0Z1bmNUaW1lWm9uZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCiAgICAgU3RyaW5nIHRpbWVa
b25lU3RyaW5nID0gdm0uZGF0ZUNhY2hlLmRlZmF1bHRUaW1lWm9uZSgpOwotICAgIHN0ZDo6b3B0
aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IFRlbXBvcmFsVGltZVpvbmU6OmlkRm9yVGlt
ZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+
IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7
CiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRl
bXBvcmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENPZmZzZXQodm0sIGdsb2JhbE9iamVjdC0+dGlt
ZVpvbmVTdHJ1Y3R1cmUoKSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9y
YWxUaW1lWm9uZTo6Y3JlYXRlRnJvbUlEKHZtLCBnbG9iYWxPYmplY3QtPnRpbWVab25lU3RydWN0
dXJlKCksIGlkZW50aWZpZXIudmFsdWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IGIyNGUzYTllOWRhMjIwMjZjMmEzYmZk
YjI4YmFmN2NlZTNkM2VmOTcuLjhlMzdkN2NmZjM1Zjk4OWUzZWVmYWI0MDkzNTU4MGFlMGI0ZGRl
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVj
dC5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiVGVtcG9yYWxOb3cuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9y
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJU
ZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25l
UHJvdG90eXBlLmgiCiAKQEAgLTYxLDYgKzYzLDEzIEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZUR1
cmF0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBU
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxEdXJhdGlvbkNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUq
PihnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVj
dCgpKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yKFZN
JiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWxP
YmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOworICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSB0ZW1wb3JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAg
ICByZXR1cm4gVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PFRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKS0+c3RvcmVk
UHJvdG90eXBlT2JqZWN0KCkpKTsKK30KKwogc3RhdGljIEpTVmFsdWUgY3JlYXRlVGltZVpvbmVD
b25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgVGVtcG9yYWxPYmpl
Y3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0PFRlbXBvcmFsT2JqZWN0Kj4ob2JqZWN0KTsKQEAg
LTc5LDYgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgIENhbGVuZGFyICAgICAgIGNyZWF0ZUNh
bGVuZGFyQ29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBEdXJh
dGlvbiAgICAgICBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3Bl
cnR5Q2FsbGJhY2sKICAgTm93ICAgICAgICAgICAgY3JlYXRlTm93T2JqZWN0ICAgICAgICAgICAg
ICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCisgIFBsYWluVGltZSAgICAgIGNyZWF0ZVBs
YWluVGltZUNvbnN0cnVjdG9yICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBUaW1l
Wm9uZSAgICAgICBjcmVhdGVUaW1lWm9uZUNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3Bl
cnR5Q2FsbGJhY2sKIEBlbmQKICovCkBAIC0yNDIsMTkgKzI1MiwyMSBAQCBQcmVjaXNpb25EYXRh
IHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIG9wdAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIHNtYWxsZXN0VW5pdCA9
IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVu
aXQ6OlllYXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9y
YWxVbml0OjpEYXksIFRlbXBvcmFsVW5pdDo6SG91ciwgVGVtcG9yYWxVbml0OjpNaW51dGUgfSk7
CisgICAgYXV0byBzbWFsbGVzdFVuaXQgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBU
ZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5LCBUZW1wb3JhbFVuaXQ6OkhvdXIg
fSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChzbWFs
bGVzdFVuaXQpIHsKICAgICAgICAgc3dpdGNoIChzbWFsbGVzdFVuaXQudmFsdWUoKSkgeworICAg
ICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWludXRlOgorICAgICAgICAgICAgcmV0dXJuIHsgeyBQ
cmVjaXNpb246Ok1pbnV0ZSwgMCB9LCBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZSwgMSB9OwogICAgICAg
ICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOgotICAgICAgICAgICAgcmV0dXJuIHsgMCwgVGVt
cG9yYWxVbml0OjpTZWNvbmQsIDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsgUHJlY2lzaW9u
OjpGaXhlZCwgMCB9LCBUZW1wb3JhbFVuaXQ6OlNlY29uZCwgMSB9OwogICAgICAgICBjYXNlIFRl
bXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6Ci0gICAgICAgICAgICByZXR1cm4geyAzLCBUZW1wb3Jh
bFVuaXQ6Ok1pbGxpc2Vjb25kLCAxIH07CisgICAgICAgICAgICByZXR1cm4geyB7IFByZWNpc2lv
bjo6Rml4ZWQsIDMgfSwgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZCwgMSB9OwogICAgICAgICBj
YXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6Ci0gICAgICAgICAgICByZXR1cm4geyA2LCBU
ZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kLCAxIH07CisgICAgICAgICAgICByZXR1cm4geyB7IFBy
ZWNpc2lvbjo6Rml4ZWQsIDYgfSwgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZCwgMSB9OwogICAg
ICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZDoKLSAgICAgICAgICAgIHJldHVybiB7
IDksIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9OworICAgICAgICAgICAgcmV0dXJuIHsg
eyBQcmVjaXNpb246OkZpeGVkLCA5IH0sIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9Owog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0yNjUsMjAgKzI3NywyNyBAQCBQcmVjaXNp
b25EYXRhIHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIG9wdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAK
ICAgICBpZiAoIXByZWNpc2lvbikKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBUZW1w
b3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfTsKKyAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246
OkF1dG8sIDAgfSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAxIH07CisKKyAgICBhdXRvIHBv
dzEwVW5zaWduZWQgPSBbXSh1bnNpZ25lZCBuKSAtPiB1bnNpZ25lZCB7CisgICAgICAgIHVuc2ln
bmVkIHJlc3VsdCA9IDE7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyArK2kp
CisgICAgICAgICAgICByZXN1bHQgKj0gMTA7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fTsKIAogICAgIHVuc2lnbmVkIGRpZ2l0cyA9IHByZWNpc2lvbi52YWx1ZSgpOwogICAgIGlmICgh
ZGlnaXRzKQotICAgICAgICByZXR1cm4geyAwLCBUZW1wb3JhbFVuaXQ6OlNlY29uZCwgMSB9Owor
ICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIDAgfSwgVGVtcG9yYWxVbml0OjpT
ZWNvbmQsIDEgfTsKIAogICAgIGlmIChkaWdpdHMgPD0gMykKLSAgICAgICAgcmV0dXJuIHsgZGln
aXRzLCBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLCBzdGQ6OnBvdygxMCwgMyAtIGRpZ2l0cykg
fTsKKyAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCBkaWdpdHMgfSwgVGVtcG9y
YWxVbml0OjpNaWxsaXNlY29uZCwgcG93MTBVbnNpZ25lZCgzIC0gZGlnaXRzKSB9OwogCiAgICAg
aWYgKGRpZ2l0cyA8PSA2KQotICAgICAgICByZXR1cm4geyBkaWdpdHMsIFRlbXBvcmFsVW5pdDo6
TWljcm9zZWNvbmQsIHN0ZDo6cG93KDEwLCA2IC0gZGlnaXRzKSB9OworICAgICAgICByZXR1cm4g
eyB7IFByZWNpc2lvbjo6Rml4ZWQsIGRpZ2l0cyB9LCBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25k
LCBwb3cxMFVuc2lnbmVkKDYgLSBkaWdpdHMpIH07CiAKICAgICBBU1NFUlQoZGlnaXRzIDw9IDkp
OwotICAgIHJldHVybiB7IGRpZ2l0cywgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCBzdGQ6OnBv
dygxMCwgOSAtIGRpZ2l0cykgfTsKKyAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIGRp
Z2l0cyB9LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIHBvdzEwVW5zaWduZWQoOSAtIGRpZ2l0
cykgfTsKIH0KIAogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0luY3JlbWVudCAo
IHVuaXQgKQpAQCAtMzQyLDQgKzM2MSwxMSBAQCBkb3VibGUgcm91bmROdW1iZXJUb0luY3JlbWVu
dChkb3VibGUgeCwgZG91YmxlIGluY3JlbWVudCwgUm91bmRpbmdNb2RlIG1vZGUpCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorVGVtcG9yYWxPdmVyZmxvdyB0b1RlbXBv
cmFsT3ZlcmZsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9wdGlv
bnMpCit7CisgICAgcmV0dXJuIGludGxPcHRpb248VGVtcG9yYWxPdmVyZmxvdz4oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBnbG9iYWxPYmplY3QtPnZtKCkucHJvcGVydHlOYW1lcy0+b3ZlcmZsb3cs
CisgICAgICAgIHsgeyAiY29uc3RyYWluIl9zLCBUZW1wb3JhbE92ZXJmbG93OjpDb25zdHJhaW4g
fSwgeyAicmVqZWN0Il9zLCBUZW1wb3JhbE92ZXJmbG93OjpSZWplY3QgfSB9LAorICAgICAgICAi
b3ZlcmZsb3cgbXVzdCBiZSBlaXRoZXIgXCJjb25zdHJhaW5cIiBvciBcInJlamVjdFwiIl9zLCBU
ZW1wb3JhbE92ZXJmbG93OjpDb25zdHJhaW4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCmluZGV4IDcy
NDNjOWJhNTg0MzI2MmQyZDBjYmI4MTkzM2Y0Y2RkMTMwOGZiNDguLjg5YTE1NmU4YzE1YjgxMjVj
MjA0NDEwYmVlMDRkYjdhZWQyYmEzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuaApAQCAtMjEsMTQgKzIxLDExIEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLSNkZWZpbmUgSlNDX1RFTVBPUkFMX1VOSVRTKG1hY3JvKSBcCi0gICAg
bWFjcm8oeWVhciwgWWVhcikgXAotICAgIG1hY3JvKG1vbnRoLCBNb250aCkgXAotICAgIG1hY3Jv
KHdlZWssIFdlZWspIFwKLSAgICBtYWNybyhkYXksIERheSkgXAorI2RlZmluZSBKU0NfVEVNUE9S
QUxfUExBSU5fVElNRV9VTklUUyhtYWNybykgXAogICAgIG1hY3JvKGhvdXIsIEhvdXIpIFwKICAg
ICBtYWNybyhtaW51dGUsIE1pbnV0ZSkgXAogICAgIG1hY3JvKHNlY29uZCwgU2Vjb25kKSBcCkBA
IC0zNiw2ICszMywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhtaWNyb3NlY29uZCwg
TWljcm9zZWNvbmQpIFwKICAgICBtYWNybyhuYW5vc2Vjb25kLCBOYW5vc2Vjb25kKSBcCiAKKwor
I2RlZmluZSBKU0NfVEVNUE9SQUxfVU5JVFMobWFjcm8pIFwKKyAgICBtYWNybyh5ZWFyLCBZZWFy
KSBcCisgICAgbWFjcm8obW9udGgsIE1vbnRoKSBcCisgICAgbWFjcm8od2VlaywgV2VlaykgXAor
ICAgIG1hY3JvKGRheSwgRGF5KSBcCisgICAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVfVU5JVFMo
bWFjcm8pIFwKKworCiBlbnVtIGNsYXNzIFRlbXBvcmFsVW5pdCA6IHVpbnQ4X3QgewogI2RlZmlu
ZSBKU0NfREVGSU5FX1RFTVBPUkFMX1VOSVRfRU5VTShuYW1lLCBjYXBpdGFsaXplZE5hbWUpIGNh
cGl0YWxpemVkTmFtZSwKICAgICBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX0RFRklORV9URU1QT1JB
TF9VTklUX0VOVU0pCkBAIC00Myw2ICs0OSw3IEBAIGVudW0gY2xhc3MgVGVtcG9yYWxVbml0IDog
dWludDhfdCB7CiB9OwogI2RlZmluZSBKU0NfQ09VTlRfVEVNUE9SQUxfVU5JVFMobmFtZSwgY2Fw
aXRhbGl6ZWROYW1lKSArIDEKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZUZW1w
b3JhbFVuaXRzID0gMCBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRT
KTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZUZW1wb3JhbFBsYWluVGltZVVu
aXRzID0gMCBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhKU0NfQ09VTlRfVEVNUE9SQUxf
VU5JVFMpOwogI3VuZGVmIEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUwogCiBjbGFzcyBUZW1wb3Jh
bE9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTc0LDEwICs4MSwx
NiBAQCBlbnVtIGNsYXNzIFJvdW5kaW5nTW9kZSA6IHVpbnQ4X3QgewogICAgIEhhbGZFeHBhbmQK
IH07CiAKK2VudW0gY2xhc3MgUHJlY2lzaW9uIHsKKyAgICBNaW51dGUsCisgICAgRml4ZWQsCisg
ICAgQXV0bywKK307CisKIHN0cnVjdCBQcmVjaXNpb25EYXRhIHsKLSAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBwcmVjaXNpb247CisgICAgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVk
PiBwcmVjaXNpb247CiAgICAgVGVtcG9yYWxVbml0IHVuaXQ7Ci0gICAgZG91YmxlIGluY3JlbWVu
dDsKKyAgICB1bnNpZ25lZCBpbmNyZW1lbnQ7CiB9OwogCiBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFs
VW5pdD4gdGVtcG9yYWxVbml0VHlwZShTdHJpbmdWaWV3KTsKQEAgLTg5LDQgKzEwMiwxMSBAQCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KFRlbXBvcmFsVW5p
dCk7CiBkb3VibGUgdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChKU0dsb2JhbE9iamVjdCosIEpT
T2JqZWN0KiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGl2aWRlbmQsIGJvb2wgaW5j
bHVzaXZlKTsKIGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRvdWJsZSwgZG91YmxlIGlu
Y3JlbWVudCwgUm91bmRpbmdNb2RlKTsKIAorZW51bSBjbGFzcyBUZW1wb3JhbE92ZXJmbG93IDog
dWludDhfdCB7CisgICAgQ29uc3RyYWluLAorICAgIFJlamVjdCwKK307CisKK1RlbXBvcmFsT3Zl
cmZsb3cgdG9UZW1wb3JhbE92ZXJmbG93KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKKwog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjcyMGNlNTI5NzZmZjBkMWE0ODU4
ZTBjYTFlNmFjZGIyOGY0ZDM4ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcApAQCAtMCwwICsxLDY3MiBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgorCisjaW5jbHVkZSAiQWJz
dHJhY3RTbG90VmlzaXRvci5oIgorI2luY2x1ZGUgIkludGxPYmplY3RJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkxhenlQcm9wZXJ0eUlubGluZXMuaCIKKyNp
bmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVk1UcmFwc0lubGluZXMuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbFBsYWluVGltZTo6
c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWluVGltZSkgfTsKKworVGVtcG9yYWxQbGFpblRp
bWUqIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSVNPODYwMTo6UGxhaW5UaW1lJiYgcGxhaW5UaW1lKQoreworICAgIGF1dG8qIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1lPih2bS5oZWFwKSkg
VGVtcG9yYWxQbGFpblRpbWUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShwbGFpblRpbWUpKTsKKyAg
ICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitT
dHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsUGxh
aW5UaW1lOjpUZW1wb3JhbFBsYWluVGltZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJ
U084NjAxOjpQbGFpblRpbWUmJiBwbGFpblRpbWUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUp
CisgICAgLCBtX3BsYWluVGltZShXVEZNb3ZlKHBsYWluVGltZSkpCit7Cit9CisKK3ZvaWQgVGVt
cG9yYWxQbGFpblRpbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBt
X2NhbGVuZGFyLmluaXRMYXRlcigKKyAgICAgICAgW10gKGNvbnN0IGF1dG8mIGluaXQpIHsKKyAg
ICAgICAgICAgIFZNJiB2bSA9IGluaXQudm07CisgICAgICAgICAgICBhdXRvKiBwbGFpblRpbWUg
PSBqc0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIGF1
dG8qIGdsb2JhbE9iamVjdCA9IHBsYWluVGltZS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAg
ICAgIGF1dG8qIGNhbGVuZGFyID0gVGVtcG9yYWxDYWxlbmRhcjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPmNhbGVuZGFyU3RydWN0dXJlKCksIGlzbzg2MDFDYWxlbmRhcklEKCkpOworICAgICAg
ICAgICAgaW5pdC5zZXQoY2FsZW5kYXIpOworICAgICAgICB9KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVmlzaXRvcj4KK3ZvaWQgVGVtcG9yYWxQbGFpblRpbWU6OnZpc2l0Q2hpbGRyZW5JbXBs
KEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKGNlbGwsIHZpc2l0b3IpOworCisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxUZW1w
b3JhbFBsYWluVGltZSo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPm1fY2FsZW5kYXIudmlzaXQo
dmlzaXRvcik7Cit9CisKK0RFRklORV9WSVNJVF9DSElMRFJFTihUZW1wb3JhbFBsYWluVGltZSk7
CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWlz
dmFsaWR0aW1lCitzdGF0aWMgSVNPODYwMTo6UGxhaW5UaW1lIHRvUGxhaW5UaW1lKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIElTTzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRpb24pCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBob3VyID0gZHVyYXRpb24uaG91cnMoKTsK
KyAgICBkb3VibGUgbWludXRlID0gZHVyYXRpb24ubWludXRlcygpOworICAgIGRvdWJsZSBzZWNv
bmQgPSBkdXJhdGlvbi5zZWNvbmRzKCk7CisgICAgZG91YmxlIG1pbGxpc2Vjb25kID0gZHVyYXRp
b24ubWlsbGlzZWNvbmRzKCk7CisgICAgZG91YmxlIG1pY3Jvc2Vjb25kID0gZHVyYXRpb24ubWlj
cm9zZWNvbmRzKCk7CisgICAgZG91YmxlIG5hbm9zZWNvbmQgPSBkdXJhdGlvbi5uYW5vc2Vjb25k
cygpOworICAgIGlmICghKGhvdXIgPj0gMCAmJiBob3VyIDw9IDIzKSkgeworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImhvdXIgaXMgb3V0IG9mIHJhbmdlIl9z
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgaWYgKCEobWludXRlID49IDAgJiYg
bWludXRlIDw9IDU5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIm1pbnV0ZSBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9Owor
ICAgIH0KKyAgICBpZiAoIShzZWNvbmQgPj0gMCAmJiBzZWNvbmQgPD0gNTkpKSB7CisgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic2Vjb25kIGlzIG91dCBvZiBy
YW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKG1pbGxpc2Vj
b25kID49IDAgJiYgbWlsbGlzZWNvbmQgPD0gOTk5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm1pbGxpc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKG1pY3Jvc2Vjb25kID49IDAg
JiYgbWljcm9zZWNvbmQgPD0gOTk5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIm1pY3Jvc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAg
IHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKG5hbm9zZWNvbmQgPj0gMCAmJiBuYW5vc2Vj
b25kIDw9IDk5OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJuYW5vc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorICAgIHJldHVybiBJU084NjAxOjpQbGFpblRpbWUgeworICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaG91ciksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtaW51
dGUpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2Vjb25kKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1pbGxpc2Vjb25kKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1pY3Jvc2Vjb25kKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5hbm9z
ZWNvbmQpCisgICAgfTsKK30KKworLy8gQ3JlYXRlVGVtcG9yYWxQbGFpblRpbWUgKCB5ZWFycywg
bW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25k
cywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcyBbICwgbmV3VGFyZ2V0IF0gKQorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtY3JlYXRldGVtcG9yYWxw
bGFpblRpbWUKK1RlbXBvcmFsUGxhaW5UaW1lKiBUZW1wb3JhbFBsYWluVGltZTo6dHJ5Q3JlYXRl
SWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSVNPODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgYXV0byBwbGFpblRpbWUgPSB0b1BsYWluVGltZShnbG9iYWxPYmplY3QsIFdURk1vdmUo
ZHVyYXRpb24pKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
cmV0dXJuIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShw
bGFpblRpbWUpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwtYmFsYW5jZXRpbWUKK3N0YXRpYyBJU084NjAxOjpEdXJhdGlvbiBiYWxhbmNl
VGltZShkb3VibGUgaG91ciwgZG91YmxlIG1pbnV0ZSwgZG91YmxlIHNlY29uZCwgZG91YmxlIG1p
bGxpc2Vjb25kLCBkb3VibGUgbWljcm9zZWNvbmQsIGRvdWJsZSBuYW5vc2Vjb25kKQoreworICAg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXRlbXBvcmFsL2lzc3Vlcy8xODA0
CisgICAgbWludXRlID0gNjAgKiBob3VyICsgbWludXRlOworICAgIHNlY29uZCA9IDYwICogbWlu
dXRlICsgc2Vjb25kOworICAgIG1pbGxpc2Vjb25kID0gMTAwMCAqIHNlY29uZCArIG1pbGxpc2Vj
b25kOworICAgIG1pY3Jvc2Vjb25kID0gMTAwMCAqIG1pbGxpc2Vjb25kICsgbWljcm9zZWNvbmQ7
CisgICAgbmFub3NlY29uZCA9IDEwMDAgKiBtaWNyb3NlY29uZCArIG5hbm9zZWNvbmQ7CisKKyAg
ICBtaWNyb3NlY29uZCA9IHN0ZDo6dHJ1bmMobmFub3NlY29uZCAvIDEwMDApOworICAgIG5hbm9z
ZWNvbmQgPSBzdGQ6OmZtb2QobmFub3NlY29uZCwgMTAwMCk7CisgICAgbWlsbGlzZWNvbmQgPSBz
dGQ6OnRydW5jKG1pY3Jvc2Vjb25kIC8gMTAwMCk7CisgICAgbWljcm9zZWNvbmQgPSBzdGQ6OmZt
b2QobWljcm9zZWNvbmQsIDEwMDApOworICAgIHNlY29uZCA9IHN0ZDo6dHJ1bmMobWlsbGlzZWNv
bmQgLyAxMDAwKTsKKyAgICBtaWxsaXNlY29uZCA9IHN0ZDo6Zm1vZChtaWxsaXNlY29uZCwgMTAw
MCk7CisgICAgbWludXRlID0gc3RkOjp0cnVuYyhzZWNvbmQgLyA2MCk7CisgICAgc2Vjb25kID0g
c3RkOjpmbW9kKHNlY29uZCwgNjApOworICAgIGhvdXIgPSBzdGQ6OnRydW5jKG1pbnV0ZSAvIDYw
KTsKKyAgICBtaW51dGUgPSBzdGQ6OmZtb2QobWludXRlLCA2MCk7CisgICAgZG91YmxlIGRheXMg
PSBzdGQ6OnRydW5jKGhvdXIgLyAyNCk7CisgICAgaG91ciA9IHN0ZDo6Zm1vZChob3VyLCAyNCk7
CisgICAgcmV0dXJuIElTTzg2MDE6OkR1cmF0aW9uKDAsIDAsIDAsIGRheXMsIGhvdXIsIG1pbnV0
ZSwgc2Vjb25kLCBtaWxsaXNlY29uZCwgbWljcm9zZWNvbmQsIG5hbm9zZWNvbmQpOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1yb3VuZHRp
bWUKK3N0YXRpYyBJU084NjAxOjpEdXJhdGlvbiByb3VuZFRpbWUoSVNPODYwMTo6UGxhaW5UaW1l
IHBsYWluVGltZSwgZG91YmxlIGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVuaXQsIFJvdW5kaW5n
TW9kZSByb3VuZGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkYXlMZW5ndGhOcykKK3sK
KyAgICBhdXRvIGZyYWN0aW9uYWxTZWNvbmQgPSBbXShJU084NjAxOjpQbGFpblRpbWUgcGxhaW5U
aW1lKSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gcGxhaW5UaW1lLnNlY29uZCgpICsgcGxh
aW5UaW1lLm1pbGxpc2Vjb25kKCkgKiAxZS0zICsgcGxhaW5UaW1lLm1pY3Jvc2Vjb25kKCkgKiAx
ZS02ICsgcGxhaW5UaW1lLm5hbm9zZWNvbmQoKSAqIDFlLTk7CisgICAgfTsKKworICAgIGRvdWJs
ZSBxdWFudGl0eSA9IDA7CisgICAgc3dpdGNoICh1bml0KSB7CisgICAgY2FzZSBUZW1wb3JhbFVu
aXQ6OkRheTogeworICAgICAgICBkb3VibGUgbGVuZ3RoID0gZGF5TGVuZ3RoTnMudmFsdWVfb3Io
OC42NCAqIDFlKzEzKTsKKyAgICAgICAgcXVhbnRpdHkgPSAoKCgocGxhaW5UaW1lLmhvdXIoKSAq
IDYwLjAgKyBwbGFpblRpbWUubWludXRlKCkpICogNjAuMCArIHBsYWluVGltZS5zZWNvbmQoKSkg
KiAxMDAwLjAgKyBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSkgKiAxMDAwLjAgKyBwbGFpblRpbWUu
bmFub3NlY29uZCgpKSAvIGxlbmd0aDsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJl
clRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAg
IHJldHVybiBJU084NjAxOjpEdXJhdGlvbigwLCAwLCAwLCByZXN1bHQsIDAsIDAsIDAsIDAsIDAs
IDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6SG91cjogeworICAgICAgICBxdWFu
dGl0eSA9IChmcmFjdGlvbmFsU2Vjb25kKHBsYWluVGltZSkgLyA2MC4wICsgcGxhaW5UaW1lLm1p
bnV0ZSgpKSAvIDYwLjAgKyBwbGFpblRpbWUuaG91cigpOworICAgICAgICBhdXRvIHJlc3VsdCA9
IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2Rl
KTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHJlc3VsdCwgMCwgMCwgMCwgMCwgMCk7Cisg
ICAgfQorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IHsKKyAgICAgICAgcXVhbnRpdHkg
PSBmcmFjdGlvbmFsU2Vjb25kKHBsYWluVGltZSkgLyA2MC4wICsgcGxhaW5UaW1lLm1pbnV0ZSgp
OworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHks
IGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBs
YWluVGltZS5ob3VyKCksIHJlc3VsdCwgMCwgMCwgMCwgMCk7CisgICAgfQorICAgIGNhc2UgVGVt
cG9yYWxVbml0OjpTZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBmcmFjdGlvbmFsU2Vjb25k
KHBsYWluVGltZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0luY3JlbWVu
dChxdWFudGl0eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOworICAgICAgICByZXR1cm4gYmFs
YW5jZVRpbWUocGxhaW5UaW1lLmhvdXIoKSwgcGxhaW5UaW1lLm1pbnV0ZSgpLCByZXN1bHQsIDAs
IDAsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IHsKKyAg
ICAgICAgcXVhbnRpdHkgPSBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSArIHBsYWluVGltZS5taWNy
b3NlY29uZCgpICogMWUtMyArIHBsYWluVGltZS5uYW5vc2Vjb25kKCkgKiAxZS02OworICAgICAg
ICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVu
dCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5o
b3VyKCksIHBsYWluVGltZS5taW51dGUoKSwgcGxhaW5UaW1lLnNlY29uZCgpLCByZXN1bHQsIDAs
IDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6IHsKKyAgICAg
ICAgcXVhbnRpdHkgPSBwbGFpblRpbWUubWljcm9zZWNvbmQoKSArIHBsYWluVGltZS5uYW5vc2Vj
b25kKCkgKiAxZS0zOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1l
bnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJh
bGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5taW51dGUoKSwgcGxhaW5UaW1l
LnNlY29uZCgpLCBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSwgcmVzdWx0LCAwKTsKKyAgICB9Cisg
ICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBw
bGFpblRpbWUubmFub3NlY29uZCgpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVy
VG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAg
cmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5taW51dGUoKSwg
cGxhaW5UaW1lLnNlY29uZCgpLCBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSwgcGxhaW5UaW1lLm1p
Y3Jvc2Vjb25kKCksIHJlc3VsdCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworSVNP
ODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjpyb3VuZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChn
bG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1v
bnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5IH0pOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgaWYgKCFzbWFsbGVzdCkgeworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRo
b3V0IGEgc21hbGxlc3RVbml0IG9wdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAg
fQorICAgIFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1ZSgpOworCisg
ICAgYXV0byByb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsCisgICAgICAgIHsg
eyAiY2VpbCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01v
ZGU6OkZsb29yIH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZF
eHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCisgICAgICAgICJyb3VuZGlu
Z01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wiLCBvciBc
ImhhbGZFeHBhbmRcIiJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBpbmNyZW1lbnQgPSB0ZW1wb3Jh
bFJvdW5kaW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bVJvdW5kaW5n
SW5jcmVtZW50KHNtYWxsZXN0VW5pdCksIGZhbHNlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgYXV0byBkdXJhdGlvbiA9IHJvdW5kVGltZShtX3BsYWluVGlt
ZSwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSwgc3RkOjpudWxsb3B0KTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvUGxhaW5UaW1lKGdsb2JhbE9iamVjdCwg
V1RGTW92ZShkdXJhdGlvbikpKTsKK30KKworU3RyaW5nIFRlbXBvcmFsUGxhaW5UaW1lOjp0b1N0
cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkg
Y29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBp
bnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghb3B0aW9ucykKKyAgICAg
ICAgcmV0dXJuIHRvU3RyaW5nKCk7CisKKyAgICBQcmVjaXNpb25EYXRhIGRhdGEgPSBzZWNvbmRz
U3RyaW5nUHJlY2lzaW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gcm91bmRpbmdNb2RlID0gaW50bE9wdGlv
bjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+
cm91bmRpbmdNb2RlLAorICAgICAgICB7IHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2VpbCB9
LCB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7ICJ0cnVuYyJfcywgUm91bmRp
bmdNb2RlOjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBh
bmQgfSB9LAorICAgICAgICAicm91bmRpbmdNb2RlIG11c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBc
ImZsb29yXCIsIFwidHJ1bmNcIiwgb3IgXCJoYWxmRXhwYW5kXCIiX3MsIFJvdW5kaW5nTW9kZTo6
VHJ1bmMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAvLyBO
byBuZWVkIHRvIG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUgZ2l2ZW4gZXhwbGljaXQgZGVm
YXVsdHMuCisgICAgaWYgKHN0ZDo6Z2V0PDA+KGRhdGEucHJlY2lzaW9uKSA9PSBQcmVjaXNpb246
OkF1dG8gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9kZTo6VHJ1bmMpCisgICAgICAgIHJl
dHVybiB0b1N0cmluZygpOworCisgICAgYXV0byBkdXJhdGlvbiA9IHJvdW5kVGltZShtX3BsYWlu
VGltZSwgZGF0YS5pbmNyZW1lbnQsIGRhdGEudW5pdCwgcm91bmRpbmdNb2RlLCBzdGQ6Om51bGxv
cHQpOworICAgIGF1dG8gcGxhaW5UaW1lID0gdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGR1cmF0aW9uKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIHJldHVybiBJU084NjAxOjp0ZW1wb3JhbFRpbWVUb1N0cmluZyhwbGFpblRpbWUsIGRhdGEu
cHJlY2lzaW9uKTsKK30KKworCitzdGF0aWMgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZShWTSYg
dm0sIHVuc2lnbmVkIGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mVGVtcG9y
YWxVbml0cyk7CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxUZW1wb3JhbFVuaXQ+KGluZGV4KSkg
eworI2RlZmluZSBKU0NfVEVNUE9SQUxfRFVSQVRJT05fUFJPUEVSVFlfTkFNRShuYW1lLCBjYXBp
dGFsaXplZE5hbWUpIGNhc2UgVGVtcG9yYWxVbml0OjpjYXBpdGFsaXplZE5hbWU6IHJldHVybiB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lOworICAgICAgICBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX1RF
TVBPUkFMX0RVUkFUSU9OX1BST1BFUlRZX05BTUUpCisjdW5kZWYgSlNDX1RFTVBPUkFMX0RVUkFU
SU9OX1BST1BFUlRZX05BTUUKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCitzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gdG9UZW1wb3JhbFRpbWVSZWNvcmQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRlbXBvcmFsVGltZUxpa2Up
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9u
IHsgfTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZlRlbXBv
cmFsUGxhaW5UaW1lVW5pdHM7ICsraW5kZXgpIHsKKyAgICAgICAgdW5zaWduZWQgZHVyYXRpb25J
bmRleCA9IGluZGV4ICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRlbXBvcmFsVW5pdDo6SG91cik7
CisgICAgICAgIGF1dG8gbmFtZSA9IHByb3BlcnR5TmFtZSh2bSwgZHVyYXRpb25JbmRleCk7Cisg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSB0ZW1wb3JhbFRpbWVMaWtlLT5nZXQoZ2xvYmFsT2JqZWN0
LCBuYW1lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
ICAgICAvLyBXZSBhcmUgdGhyb3dpbmcgYW4gZXJyb3IgaGVyZSwgYnV0IHByb2JhYmx5IHRoaXMg
aXMgYSBzcGVjIGJ1Zy4KKyAgICAgICAgLy8gVHJhY2tlZCBpbiBodHRwczovL2dpdGh1Yi5jb20v
dGMzOS9wcm9wb3NhbC10ZW1wb3JhbC9pc3N1ZXMvMTgwMy4KKyAgICAgICAgaWYgKHZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIG1ha2VTdHJpbmcoJyInLCBTdHJpbmdWaWV3KG5hbWUudWlkKCkpLCAiXCIgZmllbGQg
aXMgbWlzc2luZyJfcykpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorCisg
ICAgICAgIGRvdWJsZSBpbnRlZ2VyID0gdmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxP
YmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUoaW50ZWdlcikpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lIHByb3BlcnRpZXMg
bXVzdCBiZSBmaW5pdGUiX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQor
ICAgICAgICBkdXJhdGlvbltkdXJhdGlvbkluZGV4XSA9IGludGVnZXI7CisgICAgfQorICAgIHJl
dHVybiBkdXJhdGlvbjsKK30KKworc3RhdGljIHN0ZDo6YXJyYXk8c3RkOjpvcHRpb25hbDxkb3Vi
bGU+LCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHM+IHRvUGFydGlhbFRpbWUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRlbXBvcmFsVGltZUxpa2UpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGJvb2wgaGFzQW55RmllbGRzID0gZmFsc2U7CisgICAg
c3RkOjphcnJheTxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIG51bWJlck9mVGVtcG9yYWxQbGFpblRp
bWVVbml0cz4gcGFydGlhbFRpbWUgeyB9OworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0czsgKytpbmRleCkgeworICAgICAg
ICB1bnNpZ25lZCBkdXJhdGlvbkluZGV4ID0gaW5kZXggKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
VGVtcG9yYWxVbml0OjpIb3VyKTsKKyAgICAgICAgYXV0byBuYW1lID0gcHJvcGVydHlOYW1lKHZt
LCBkdXJhdGlvbkluZGV4KTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRlbXBvcmFsVGltZUxp
a2UtPmdldChnbG9iYWxPYmplY3QsIG5hbWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICAgICAgaGFzQW55RmllbGRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGRvdWJsZSBkb3VibGVW
YWx1ZSA9IHZhbHVlLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUoZG91YmxlVmFsdWUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0b1BhcnRpYWxUaW1lIHByb3BlcnRpZXMgbXVzdCBi
ZSBmaW5pdGUiX3MpOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBwYXJ0aWFsVGltZVtpbmRleF0gPSBkb3VibGVWYWx1ZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBpZiAoIWhhc0FueUZpZWxkcykgeworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAidG9QYXJ0aWFsVGltZSByZXF1aXJlcyBhdCBsZWFzdCBv
bmUgcHJvcGVydHkiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICByZXR1cm4g
cGFydGlhbFRpbWU7Cit9CisKK3N0YXRpYyBJU084NjAxOjpQbGFpblRpbWUgY29uc3RyYWludFRp
bWUoSVNPODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbikKK3sKKyAgICBhdXRvIGNvbnN0cmFpblRv
UmFuZ2UgPSBbXShkb3VibGUgdmFsdWUsIHVuc2lnbmVkIG1pbmltdW0sIHVuc2lnbmVkIG1heGlt
dW0pIC0+IHVuc2lnbmVkIHsKKyAgICAgICAgcmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihz
dGQ6Om1pbjxkb3VibGU+KHN0ZDo6bWF4PGRvdWJsZT4odmFsdWUsIG1pbmltdW0pLCBtYXhpbXVt
KSk7CisgICAgfTsKKyAgICByZXR1cm4gSVNPODYwMTo6UGxhaW5UaW1lKAorICAgICAgICBjb25z
dHJhaW5Ub1JhbmdlKGR1cmF0aW9uLmhvdXJzKCksIDAsIDIzKSwKKyAgICAgICAgY29uc3RyYWlu
VG9SYW5nZShkdXJhdGlvbi5taW51dGVzKCksIDAsIDU5KSwKKyAgICAgICAgY29uc3RyYWluVG9S
YW5nZShkdXJhdGlvbi5zZWNvbmRzKCksIDAsIDU5KSwKKyAgICAgICAgY29uc3RyYWluVG9SYW5n
ZShkdXJhdGlvbi5taWxsaXNlY29uZHMoKSwgMCwgMTAwMCksCisgICAgICAgIGNvbnN0cmFpblRv
UmFuZ2UoZHVyYXRpb24ubWljcm9zZWNvbmRzKCksIDAsIDEwMDApLAorICAgICAgICBjb25zdHJh
aW5Ub1JhbmdlKGR1cmF0aW9uLm5hbm9zZWNvbmRzKCksIDAsIDEwMDApKTsKK30KKworc3RhdGlj
IElTTzg2MDE6OlBsYWluVGltZSByZWd1bGF0ZVRpbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSVNPODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbiwgVGVtcG9yYWxPdmVyZmxvdyBvdmVy
ZmxvdykKK3sKKyAgICBzd2l0Y2ggKG92ZXJmbG93KSB7CisgICAgY2FzZSBUZW1wb3JhbE92ZXJm
bG93OjpDb25zdHJhaW46CisgICAgICAgIHJldHVybiBjb25zdHJhaW50VGltZShXVEZNb3ZlKGR1
cmF0aW9uKSk7CisgICAgY2FzZSBUZW1wb3JhbE92ZXJmbG93OjpSZWplY3Q6CisgICAgICAgIHJl
dHVybiB0b1BsYWluVGltZShnbG9iYWxPYmplY3QsIFdURk1vdmUoZHVyYXRpb24pKTsKKyAgICB9
CisgICAgcmV0dXJuIHsgfTsKK30KKworc3RhdGljIEpTT2JqZWN0KiB0b1RlbXBvcmFsQ2FsZW5k
YXJXaXRoSVNPRGVmYXVsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRl
bXBvcmFsQ2FsZW5kYXJMaWtlKQoreworICAgIGlmICh0ZW1wb3JhbENhbGVuZGFyTGlrZS5pc1Vu
ZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gVGVtcG9yYWxDYWxlbmRhcjo6Y3JlYXRlKGdsb2Jh
bE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0LT5jYWxlbmRhclN0cnVjdHVyZSgpLCBpc284NjAx
Q2FsZW5kYXJJRCgpKTsKKyAgICByZXR1cm4gVGVtcG9yYWxDYWxlbmRhcjo6ZnJvbShnbG9iYWxP
YmplY3QsIHRlbXBvcmFsQ2FsZW5kYXJMaWtlKTsKK30KKworc3RhdGljIEpTT2JqZWN0KiBnZXRU
ZW1wb3JhbENhbGVuZGFyV2l0aElTT0RlZmF1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBpdGVtVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChp
dGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxQbGFpblRpbWU+KHZtKSkKKyAgICAgICAgcmV0dXJu
IGpzQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KGl0ZW1WYWx1ZSktPmNhbGVuZGFyKCk7CisKKyAg
ICBKU1ZhbHVlIGNhbGVuZGFyID0gaXRlbVZhbHVlLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3Bl
cnR5TmFtZXMtPmNhbGVuZGFyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9UZW1wb3JhbENhbGVuZGFyV2l0aElT
T0RlZmF1bHQoZ2xvYmFsT2JqZWN0LCBjYWxlbmRhcikpOworfQorCisvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b3RlbXBvcmFsdGltZQorVGVtcG9y
YWxQbGFpblRpbWUqIFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlLCBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFsT3ZlcmZs
b3c+IG92ZXJmbG93VmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3Zl
cmZsb3cgPSBvdmVyZmxvd1ZhbHVlLnZhbHVlX29yKFRlbXBvcmFsT3ZlcmZsb3c6OkNvbnN0cmFp
bik7CisKKyAgICBpZiAoaXRlbVZhbHVlLmlzT2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGl0ZW1W
YWx1ZS5pbmhlcml0czxUZW1wb3JhbFBsYWluVGltZT4odm0pKQorICAgICAgICAgICAgcmV0dXJu
IGpzQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KGl0ZW1WYWx1ZSk7CisgICAgICAgIEpTT2JqZWN0
KiBjYWxlbmRhciA9IGdldFRlbXBvcmFsQ2FsZW5kYXJXaXRoSVNPRGVmYXVsdChnbG9iYWxPYmpl
Y3QsIGl0ZW1WYWx1ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisgICAgICAgIEpTU3RyaW5nKiBjYWxlbmRhclN0cmluZyA9IGNhbGVuZGFyLT50b1N0cmluZyhn
bG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICBTdHJpbmcgY2FsZW5kYXJXVEZTdHJpbmcgPSBjYWxlbmRhclN0cmluZy0+dmFsdWUo
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KyAgICAgICAgaWYgKGNhbGVuZGFyV1RGU3RyaW5nICE9ICJpc284NjAxIl9zKSB7CisgICAgICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImNhbGVuZGFyIGlzIG5v
dCBpc284NjAxIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAg
ICAgYXV0byBkdXJhdGlvbiA9IHRvVGVtcG9yYWxUaW1lUmVjb3JkKGdsb2JhbE9iamVjdCwganND
YXN0PEpTT2JqZWN0Kj4oaXRlbVZhbHVlKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgICAgIGF1dG8gcGxhaW5UaW1lID0gcmVndWxhdGVUaW1lKGdsb2Jh
bE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbiksIG92ZXJmbG93KTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFsUGxhaW5UaW1l
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCksIFdURk1vdmUo
cGxhaW5UaW1lKSk7CisgICAgfQorCisgICAgYXV0byBzdHJpbmcgPSBpdGVtVmFsdWUudG9XVEZT
dHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgYXV0byB0aW1lID0gSVNPODYwMTo6cGFyc2VUaW1lKHN0cmluZyk7CisgICAgaWYg
KHRpbWUpIHsKKyAgICAgICAgYXV0byBbcGxhaW5UaW1lLCB0aW1lWm9uZU9wdGlvbmFsXSA9IHRp
bWUudmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0s
IGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCksIFdURk1vdmUocGxhaW5UaW1lKSk7
CisgICAgfQorCisgICAgYXV0byBkYXRlVGltZSA9IElTTzg2MDE6OnBhcnNlRGF0ZVRpbWUoc3Ry
aW5nKTsKKyAgICBpZiAoZGF0ZVRpbWUpIHsKKyAgICAgICAgYXV0byBbcGxhaW5EYXRlLCBwbGFp
blRpbWVPcHRpb25hbCwgdGltZVpvbmVPcHRpb25hbF0gPSBkYXRlVGltZS52YWx1ZSgpOworICAg
ICAgICBhdXRvIHBsYWluVGltZSA9IHBsYWluVGltZU9wdGlvbmFsLnZhbHVlX29yKElTTzg2MDE6
OlBsYWluVGltZSgpKTsKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUo
dm0sIGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCksIFdURk1vdmUocGxhaW5UaW1l
KSk7CisgICAgfQorCisgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJp
bnZhbGlkIHRpbWUgc3RyaW5nIl9zKTsKKyAgICByZXR1cm4geyB9OworfQorCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1jb21wYXJldGVtcG9yYWx0
aW1lCitpbnQzMl90IFRlbXBvcmFsUGxhaW5UaW1lOjpjb21wYXJlKFRlbXBvcmFsUGxhaW5UaW1l
KiBwbGFpblRpbWUxLCBUZW1wb3JhbFBsYWluVGltZSogcGxhaW5UaW1lMikKK3sKKyAgICBJU084
NjAxOjpQbGFpblRpbWUgdDEgPSBwbGFpblRpbWUxLT5wbGFpblRpbWUoKTsKKyAgICBJU084NjAx
OjpQbGFpblRpbWUgdDIgPSBwbGFpblRpbWUyLT5wbGFpblRpbWUoKTsKKyAgICBpZiAodDEuaG91
cigpID4gdDIuaG91cigpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAodDEuaG91cigpIDwg
dDIuaG91cigpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHQxLm1pbnV0ZSgpID4gdDIu
bWludXRlKCkpCisgICAgICAgIHJldHVybiAxOworICAgIGlmICh0MS5taW51dGUoKSA8IHQyLm1p
bnV0ZSgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHQxLnNlY29uZCgpID4gdDIuc2Vj
b25kKCkpCisgICAgICAgIHJldHVybiAxOworICAgIGlmICh0MS5zZWNvbmQoKSA8IHQyLnNlY29u
ZCgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHQxLm1pbGxpc2Vjb25kKCkgPiB0Mi5t
aWxsaXNlY29uZCgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAodDEubWlsbGlzZWNvbmQo
KSA8IHQyLm1pbGxpc2Vjb25kKCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodDEubWlj
cm9zZWNvbmQoKSA+IHQyLm1pY3Jvc2Vjb25kKCkpCisgICAgICAgIHJldHVybiAxOworICAgIGlm
ICh0MS5taWNyb3NlY29uZCgpIDwgdDIubWljcm9zZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIC0x
OworICAgIGlmICh0MS5uYW5vc2Vjb25kKCkgPiB0Mi5uYW5vc2Vjb25kKCkpCisgICAgICAgIHJl
dHVybiAxOworICAgIGlmICh0MS5uYW5vc2Vjb25kKCkgPCB0Mi5uYW5vc2Vjb25kKCkpCisgICAg
ICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gMDsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG9saW1pdGVkdGVtcG9yYWxkdXJhdGlvbgor
c3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIHRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24oSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0ZW1wb3JhbER1cmF0aW9uTGlrZSwgc3Rk
Ojppbml0aWFsaXplcl9saXN0PFRlbXBvcmFsVW5pdD4gZGlzYWxsb3dlZEZpZWxkcykKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb247CisgICAg
aWYgKCF0ZW1wb3JhbER1cmF0aW9uTGlrZS5pc09iamVjdCgpKSB7CisgICAgICAgIFN0cmluZyBz
dHJpbmcgPSB0ZW1wb3JhbER1cmF0aW9uTGlrZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICBhdXRvIGR1
cmF0aW9uT3B0aW9uYWwgPSBJU084NjAxOjpwYXJzZUR1cmF0aW9uKHN0cmluZyk7CisgICAgICAg
IGlmICghZHVyYXRpb25PcHRpb25hbCkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJDb3VsZCBub3QgcGFyc2UgRHVyYXRpb24gc3RyaW5nIl9zKTsK
KyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgZHVyYXRpb24gPSBk
dXJhdGlvbk9wdGlvbmFsLnZhbHVlKCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZHVyYXRpb24g
PSBUZW1wb3JhbER1cmF0aW9uOjp0b0R1cmF0aW9uUmVjb3JkKGdsb2JhbE9iamVjdCwgdGVtcG9y
YWxEdXJhdGlvbkxpa2UpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworICAgIH0KKworICAgIGlmICghSVNPODYwMTo6aXNWYWxpZER1cmF0aW9uKGR1cmF0aW9uKSkg
eworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFs
LkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2ln
biJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaW5k
ZXggPSAwOyBpbmRleCA8IG51bWJlck9mVGVtcG9yYWxVbml0czsgaW5kZXgrKykgeworICAgICAg
ICBpZiAoZHVyYXRpb25baW5kZXhdKSB7CisgICAgICAgICAgICBpZiAoZGlzYWxsb3dlZEZpZWxk
cy5zaXplKCkgJiYgc3RkOjpmaW5kKGRpc2FsbG93ZWRGaWVsZHMuYmVnaW4oKSwgZGlzYWxsb3dl
ZEZpZWxkcy5lbmQoKSwgc3RhdGljX2Nhc3Q8VGVtcG9yYWxVbml0PihpbmRleCkpICE9IGRpc2Fs
bG93ZWRGaWVsZHMuZW5kKCkpIHsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIkR1cmF0aW9uIHByb3BlcnRpZXMgaW5jbHVkZSBkaXNhbGxvd2Vk
IGZpZWxkIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgfQorCisgICAgcmV0dXJuIGR1cmF0aW9uOworfQorCitzdGF0aWMgSVNP
ODYwMTo6RHVyYXRpb24gYWRkVGltZShjb25zdCBJU084NjAxOjpQbGFpblRpbWUmIHBsYWluVGlt
ZSwgY29uc3QgSVNPODYwMTo6RHVyYXRpb24mIGR1cmF0aW9uKQoreworICAgIHJldHVybiBiYWxh
bmNlVGltZSgKKyAgICAgICAgcGxhaW5UaW1lLmhvdXIoKSArIGR1cmF0aW9uLmhvdXJzKCksCisg
ICAgICAgIHBsYWluVGltZS5taW51dGUoKSArIGR1cmF0aW9uLm1pbnV0ZXMoKSwKKyAgICAgICAg
cGxhaW5UaW1lLnNlY29uZCgpICsgZHVyYXRpb24uc2Vjb25kcygpLAorICAgICAgICBwbGFpblRp
bWUubWlsbGlzZWNvbmQoKSArIGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpLAorICAgICAgICBwbGFp
blRpbWUubWljcm9zZWNvbmQoKSArIGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpLAorICAgICAgICBw
bGFpblRpbWUubmFub3NlY29uZCgpICsgZHVyYXRpb24ubmFub3NlY29uZHMoKSk7Cit9CisKK0lT
Tzg2MDE6OlBsYWluVGltZSBUZW1wb3JhbFBsYWluVGltZTo6YWRkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTVmFsdWUgdGVtcG9yYWxEdXJhdGlvbkxpa2UpIGNvbnN0Cit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gZHVyYXRpb24gPSB0b0xpbWl0ZWRUZW1wb3JhbER1
cmF0aW9uKGdsb2JhbE9iamVjdCwgdGVtcG9yYWxEdXJhdGlvbkxpa2UsIHsgfSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBhZGRUaW1lKG1fcGxhaW5UaW1lLCBkdXJh
dGlvbikpKTsKK30KKworSVNPODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjpzdWJ0
cmFjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRlbXBvcmFsRHVyYXRp
b25MaWtlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGR1cmF0aW9u
ID0gdG9MaW1pdGVkVGVtcG9yYWxEdXJhdGlvbihnbG9iYWxPYmplY3QsIHRlbXBvcmFsRHVyYXRp
b25MaWtlLCB7IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvUGxhaW5UaW1lKGdsb2JhbE9iamVjdCwgYWRk
VGltZShtX3BsYWluVGltZSwgLWR1cmF0aW9uKSkpOworfQorCitJU084NjAxOjpQbGFpblRpbWUg
VGVtcG9yYWxQbGFpblRpbWU6OndpdGgoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIHRlbXBvcmFsVGltZUxpa2UsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAodGVtcG9yYWxUaW1lTGlrZS0+aW5oZXJpdHM8
VGVtcG9yYWxQbGFpblRpbWU+KHZtKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiYXJndW1lbnQgb2JqZWN0IG11c3Qgbm90IGNhcnJ5IGNhbGVuZGFyIl9z
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBKU1ZhbHVlIGNhbGVuZGFyUHJv
cGVydHkgPSB0ZW1wb3JhbFRpbWVMaWtlLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5h
bWVzLT5jYWxlbmRhcik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAg
ICBpZiAoIWNhbGVuZGFyUHJvcGVydHkuaXNVbmRlZmluZWQoKSkgeworICAgICAgICB0aHJvd1R5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgb2JqZWN0IG11c3Qgbm90IGNh
cnJ5IGNhbGVuZGFyIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBKU1Zh
bHVlIHRpbWVab25lUHJvcGVydHkgPSB0ZW1wb3JhbFRpbWVMaWtlLT5nZXQoZ2xvYmFsT2JqZWN0
LCB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lWm9uZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKyAgICBpZiAoIXRpbWVab25lUHJvcGVydHkuaXNVbmRlZmluZWQoKSkgewor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgb2Jq
ZWN0IG11c3Qgbm90IGNhcnJ5IHRpbWUgem9uZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorCisgICAgYXV0byBbaG91ck9wdGlvbmFsLCBtaW51dGVPcHRpb25hbCwgc2Vjb25kT3B0
aW9uYWwsIG1pbGxpc2Vjb25kT3B0aW9uYWwsIG1pY3Jvc2Vjb25kT3B0aW9uYWwsIG5hbm9zZWNv
bmRPcHRpb25hbF0gPSB0b1BhcnRpYWxUaW1lKGdsb2JhbE9iamVjdCwgdGVtcG9yYWxUaW1lTGlr
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpTT2JqZWN0
KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFs
dWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBUZW1wb3Jh
bE92ZXJmbG93IG92ZXJmbG93ID0gdG9UZW1wb3JhbE92ZXJmbG93KGdsb2JhbE9iamVjdCwgb3B0
aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIElTTzg2
MDE6OkR1cmF0aW9uIGR1cmF0aW9uIHsgfTsKKyAgICBkdXJhdGlvbi5zZXRIb3Vycyhob3VyT3B0
aW9uYWwudmFsdWVfb3IoaG91cigpKSk7CisgICAgZHVyYXRpb24uc2V0TWludXRlcyhtaW51dGVP
cHRpb25hbC52YWx1ZV9vcihtaW51dGUoKSkpOworICAgIGR1cmF0aW9uLnNldFNlY29uZHMoc2Vj
b25kT3B0aW9uYWwudmFsdWVfb3Ioc2Vjb25kKCkpKTsKKyAgICBkdXJhdGlvbi5zZXRNaWxsaXNl
Y29uZHMobWlsbGlzZWNvbmRPcHRpb25hbC52YWx1ZV9vcihtaWxsaXNlY29uZCgpKSk7CisgICAg
ZHVyYXRpb24uc2V0TWljcm9zZWNvbmRzKG1pY3Jvc2Vjb25kT3B0aW9uYWwudmFsdWVfb3IobWlj
cm9zZWNvbmQoKSkpOworICAgIGR1cmF0aW9uLnNldE5hbm9zZWNvbmRzKG5hbm9zZWNvbmRPcHRp
b25hbC52YWx1ZV9vcihuYW5vc2Vjb25kKCkpKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgcmVndWxhdGVUaW1lKGdsb2JhbE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbiksIG92ZXJm
bG93KSk7Cit9CisKK3N0YXRpYyBJU084NjAxOjpEdXJhdGlvbiBkaWZmZXJlbmNlVGltZShJU084
NjAxOjpQbGFpblRpbWUgdGltZTEsIElTTzg2MDE6OlBsYWluVGltZSB0aW1lMikKK3sKKyAgICBk
b3VibGUgaG91cnMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUyLmhvdXIoKSkgLSBzdGF0aWNf
Y2FzdDxkb3VibGU+KHRpbWUxLmhvdXIoKSk7CisgICAgZG91YmxlIG1pbnV0ZXMgPSBzdGF0aWNf
Y2FzdDxkb3VibGU+KHRpbWUyLm1pbnV0ZSgpKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTEu
bWludXRlKCkpOworICAgIGRvdWJsZSBzZWNvbmRzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1l
Mi5zZWNvbmQoKSkgLSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUxLnNlY29uZCgpKTsKKyAgICBk
b3VibGUgbWlsbGlzZWNvbmRzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMi5taWxsaXNlY29u
ZCgpKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTEubWlsbGlzZWNvbmQoKSk7CisgICAgZG91
YmxlIG1pY3Jvc2Vjb25kcyA9IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTIubWljcm9zZWNvbmQo
KSkgLSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUxLm1pY3Jvc2Vjb25kKCkpOworICAgIGRvdWJs
ZSBuYW5vc2Vjb25kcyA9IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTIubmFub3NlY29uZCgpKSAt
IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTEubmFub3NlY29uZCgpKTsKKyAgICByZXR1cm4gYmFs
YW5jZVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNv
bmRzLCBuYW5vc2Vjb25kcyk7Cit9CisKK3N0YXRpYyBzdGQ6OnR1cGxlPFRlbXBvcmFsVW5pdCwg
VGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUsIGRvdWJsZT4gZXh0cmFjdERpZmZlcmVuY2VPcHRp
b25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRP
cHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBzbWFsbGVzdCA9IHRlbXBvcmFsU21h
bGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVuaXQ6OlllYXIsIFRl
bXBvcmFsVW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9yYWxVbml0OjpEYXkg
fSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVu
aXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFsdWVfb3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vj
b25kKTsKKworICAgIGF1dG8gbGFyZ2VzdCA9IHRlbXBvcmFsTGFyZ2VzdFVuaXQoZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCB7IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwg
VGVtcG9yYWxVbml0OjpXZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSB9LCBUZW1wb3JhbFVuaXQ6Okhv
dXIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgVGVtcG9yYWxV
bml0IGxhcmdlc3RVbml0ID0gbGFyZ2VzdC52YWx1ZV9vcihUZW1wb3JhbFVuaXQ6OkhvdXIpOwor
CisgICAgaWYgKHNtYWxsZXN0VW5pdCA8IGxhcmdlc3RVbml0KSB7CisgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3QgYmUgc21hbGxl
ciB0aGFuIGxhcmdlc3RVbml0Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAg
ICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwKKyAgICAgICAgeyB7
ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9k
ZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwgeyAiaGFsZkV4
cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0gfSwKKyAgICAgICAgInJvdW5kaW5n
TW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcInRydW5jXCIsIG9yIFwi
aGFsZkV4cGFuZFwiIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5k
aW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bVJvdW5kaW5nSW5jcmVt
ZW50KHNtYWxsZXN0VW5pdCksIGZhbHNlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgcmV0dXJuIHsgc21hbGxlc3RVbml0LCBsYXJnZXN0VW5pdCwgcm91bmRp
bmdNb2RlLCBpbmNyZW1lbnQgfTsKK30KKworSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxQbGFp
blRpbWU6OnVudGlsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlbXBvcmFsUGxhaW5U
aW1lKiBvdGhlciwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGF1dG8gW3NtYWxsZXN0VW5pdCwgbGFyZ2VzdFVuaXQsIHJvdW5kaW5nTW9k
ZSwgaW5jcmVtZW50XSA9IGV4dHJhY3REaWZmZXJlbmNlT3B0aW9ucyhnbG9iYWxPYmplY3QsIG9w
dGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IGF1dG8gcmVzdWx0ID0gZGlmZmVyZW5jZVRpbWUocGxhaW5UaW1lKCksIG90aGVyLT5wbGFpblRp
bWUoKSk7CisgICAgcmVzdWx0LnNldFllYXJzKDApOworICAgIHJlc3VsdC5zZXRNb250aHMoMCk7
CisgICAgcmVzdWx0LnNldFdlZWtzKDApOworICAgIHJlc3VsdC5zZXREYXlzKDApOworICAgIFRl
bXBvcmFsRHVyYXRpb246OnJvdW5kKHJlc3VsdCwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJv
dW5kaW5nTW9kZSk7CisgICAgVGVtcG9yYWxEdXJhdGlvbjo6YmFsYW5jZShyZXN1bHQsIGxhcmdl
c3RVbml0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitJU084NjAxOjpEdXJhdGlvbiBUZW1w
b3JhbFBsYWluVGltZTo6c2luY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVtcG9y
YWxQbGFpblRpbWUqIG90aGVyLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgYXV0byBbc21hbGxlc3RVbml0LCBsYXJnZXN0VW5pdCwgcm91
bmRpbmdNb2RlLCBpbmNyZW1lbnRdID0gZXh0cmFjdERpZmZlcmVuY2VPcHRpb25zKGdsb2JhbE9i
amVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgYXV0byByZXN1bHQgPSBkaWZmZXJlbmNlVGltZShvdGhlci0+cGxhaW5UaW1lKCks
IHBsYWluVGltZSgpKTsKKyAgICByZXN1bHQgPSAtcmVzdWx0OworICAgIHJlc3VsdC5zZXRZZWFy
cygwKTsKKyAgICByZXN1bHQuc2V0TW9udGhzKDApOworICAgIHJlc3VsdC5zZXRXZWVrcygwKTsK
KyAgICByZXN1bHQuc2V0RGF5cygwKTsKKyAgICBUZW1wb3JhbER1cmF0aW9uOjpyb3VuZChyZXN1
bHQsIGluY3JlbWVudCwgc21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUpOworICAgIHJlc3VsdCA9
IC1yZXN1bHQ7CisgICAgcmVzdWx0LnNldERheXMoMCk7CisgICAgVGVtcG9yYWxEdXJhdGlvbjo6
YmFsYW5jZShyZXN1bHQsIGxhcmdlc3RVbml0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5OTcwMDBkOGUwOGQyODQ2ZWYyZGMwMzY1
YTk5MTM0MWY3ZGMzYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNsdWRlICJMYXp5UHJvcGVydHkuaCIKKyNpbmNsdWRlICJU
ZW1wb3JhbENhbGVuZGFyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbFBs
YWluVGltZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1
c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLnRlbXBvcmFsUGxhaW5U
aW1lU3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRpbWUq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIElTTzg2MDE6OlBsYWluVGltZSYmKTsKKyAgICBzdGF0
aWMgVGVtcG9yYWxQbGFpblRpbWUqIHRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBJU084NjAxOjpEdXJhdGlvbiYmKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCisgICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1lKiBmcm9tKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSwgc3RkOjpvcHRpb25hbDxUZW1wb3JhbE92ZXJmbG93Pik7CisgICAg
c3RhdGljIGludDMyX3QgY29tcGFyZShUZW1wb3JhbFBsYWluVGltZSosIFRlbXBvcmFsUGxhaW5U
aW1lKik7CisKKyAgICBUZW1wb3JhbENhbGVuZGFyKiBjYWxlbmRhcigpIHsgcmV0dXJuIG1fY2Fs
ZW5kYXIuZ2V0KHRoaXMpOyB9CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHBsYWluVGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhaW5UaW1lOyB9CisKKyNkZWZpbmUgSlNDX0RFRklORV9URU1QT1JB
TF9QTEFJTl9USU1FX0ZJRUxEKG5hbWUsIGNhcGl0YWxpemVkTmFtZSkgXAorICAgIHVuc2lnbmVk
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3BsYWluVGltZS5uYW1lKCk7IH0KKyAgICBKU0NfVEVN
UE9SQUxfUExBSU5fVElNRV9VTklUUyhKU0NfREVGSU5FX1RFTVBPUkFMX1BMQUlOX1RJTUVfRklF
TEQpOworI3VuZGVmIEpTQ19ERUZJTkVfVEVNUE9SQUxfUExBSU5fVElNRV9GSUVMRAorCisgICAg
SVNPODYwMTo6UGxhaW5UaW1lIHdpdGgoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGVtcG9y
YWxUaW1lTGlrZSwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBJU084NjAxOjpQbGFpblRp
bWUgYWRkKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSVNPODYwMTo6UGxh
aW5UaW1lIHN1YnRyYWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSVNP
ODYwMTo6UGxhaW5UaW1lIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBj
b25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlv
bnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5z
aWduZWQ+IHByZWNpc2lvbiA9IHsgUHJlY2lzaW9uOjpBdXRvLCAwIH0pIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gSVNPODYwMTo6dGVtcG9yYWxUaW1lVG9TdHJpbmcobV9wbGFpblRpbWUs
IHByZWNpc2lvbik7CisgICAgfQorCisgICAgSVNPODYwMTo6RHVyYXRpb24gdW50aWwoSlNHbG9i
YWxPYmplY3QqLCBUZW1wb3JhbFBsYWluVGltZSosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7Cisg
ICAgSVNPODYwMTo6RHVyYXRpb24gc2luY2UoSlNHbG9iYWxPYmplY3QqLCBUZW1wb3JhbFBsYWlu
VGltZSosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisKKyAgICBERUNMQVJFX1ZJU0lUX0NISUxE
UkVOOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsUGxhaW5UaW1lKFZNJiwgU3RydWN0dXJlKiwg
SVNPODYwMTo6UGxhaW5UaW1lJiYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8SVNPODYwMTo6UGxhaW5UaW1lPiBwYXJzZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJh
Y3RlclR5cGU+Jik7CisgICAgc3RhdGljIElTTzg2MDE6OlBsYWluVGltZSBmcm9tT2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKKworICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0U3Vi
cGxhaW5UaW1lKCkgY29uc3Q7CisKKyAgICBJU084NjAxOjpQbGFpblRpbWUgbV9wbGFpblRpbWU7
CisgICAgTGF6eVByb3BlcnR5PFRlbXBvcmFsUGxhaW5UaW1lLCBUZW1wb3JhbENhbGVuZGFyPiBt
X2NhbGVuZGFyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFmNDY5MDk4Njk1MjJmZDE4MThkY2NiNWVkZDhhYzRkMGQzZTFm
ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKKyNpbmNsdWRl
ICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RB
VElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFRlbXBvcmFsUGxhaW5UaW1lQ29u
c3RydWN0b3IpOworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yRnVuY0Zyb20pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNDb21wYXJlKTsKKworfQorCisj
aW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZ0ZW1wb3JhbFBsYWluVGltZUNv
bnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBUZW1wb3JhbFBsYWluVGltZUNv
bnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gdGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvclRhYmxl
CisgIGZyb20gICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNGcm9t
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgY29tcGFyZSAgICAgICAgICB0ZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yRnVuY0NvbXBhcmUgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMgorQGVuZAorKi8KKworVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvciogVGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKiBwbGFpblRpbWVQcm90b3R5cGUpCit7Cisg
ICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IHBsYWluVGltZVByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1
Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorewor
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
Cit9CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbFBsYWlu
VGltZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3Jh
bFBsYWluVGltZSk7CisKK1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OlRlbXBvcmFsUGxh
aW5UaW1lQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSwgY2FsbFRlbXBvcmFsUGxhaW5UaW1lLCBjb25zdHJ1Y3RUZW1wb3Jh
bFBsYWluVGltZSkKK3sKK30KKwordm9pZCBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKiBwbGFpblRp
bWVQcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJQbGFpblRp
bWUiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgcGxhaW5UaW1lUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CisgICAgcGxhaW5UaW1lUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKK30KKworSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsUGxhaW5UaW1lLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5uZXdU
YXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0NfR0VUX0RFUklWRURfU1RS
VUNUVVJFKHZtLCBwbGFpblRpbWVTdHJ1Y3R1cmUsIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSVNP
ODYwMTo6RHVyYXRpb24gZHVyYXRpb24geyB9OworICAgIGF1dG8gY291bnQgPSBzdGQ6Om1pbjxz
aXplX3Q+KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpLCBudW1iZXJPZlRlbXBvcmFsUGxhaW5U
aW1lVW5pdHMpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cisg
ICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uSW5kZXggPSBpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFRlbXBvcmFsVW5pdDo6SG91cik7CisgICAgICAgIGR1cmF0aW9uW2R1cmF0aW9uSW5kZXhdID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b0ludGVnZXJPckluZmluaXR5KGdsb2Jh
bE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
ICAgIGlmICghc3RkOjppc2Zpbml0ZShkdXJhdGlvbltkdXJhdGlvbkluZGV4XSkpCisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLlBsYWluVGltZSBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICB9CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRp
bWU6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIFdURk1vdmUoZHVy
YXRpb24pKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsUGxh
aW5UaW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25z
dHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiUGxhaW5UaW1lIikpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUuZnJvbQorSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jRnJvbSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBUZW1wb3JhbE92ZXJmbG93IG92ZXJmbG93ID0gdG9UZW1w
b3JhbE92ZXJmbG93KGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgaXRlbVZhbHVlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxQbGFpblRp
bWU+KHZtKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVT
dHJ1Y3R1cmUoKSwganNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4oaXRlbVZhbHVlKS0+cGxhaW5U
aW1lKCkpKSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSwgb3ZlcmZs
b3cpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRl
bXBvcmFsLnBsYWludGltZS5jb21wYXJlCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBhdXRvKiBvbmUgPSBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCksIHN0ZDo6bnVsbG9wdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8qIHR3byA9IFRlbXBvcmFsUGxhaW5UaW1lOjpm
cm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgc3RkOjpudWxsb3B0KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihUZW1wb3JhbFBsYWluVGltZTo6Y29tcGFyZShvbmUsIHR3bykp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTJhOTM2NWUxNTBkNTM5ODY1YWY1ZWYzMjMxNjFjZWJkYzFmMDVmNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5h
bEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZTsKKworY2xhc3MgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvciBmaW5hbCA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50
ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisg
ICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVj
dG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhjNjBmNzQ1ZjJhNzAyZDc4MDUzY2IyM2MyYzA2ZjRlNjY4ODgxN2YKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZS5jcHAKQEAgLTAsMCArMSwzODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jQWRk
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlRnVuY1N1YnRyYWN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1dpdGgpOworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVW50aWwpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5j
U2luY2UpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGVGdW5jUm91bmQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jRXF1YWxzKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0dldElTT0ZpZWxk
cyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZUZ1bmNUb1N0cmluZyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0pTT04pOworc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJp
bmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGVGdW5jVmFsdWVPZik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlckhvdXIpOworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVHZXR0ZXJTZWNvbmQpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaWxsaXNlY29uZCk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pY3Jvc2Vj
b25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlR2V0dGVyTmFub3NlY29uZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlckNhbGVuZGFyKTsKKworfQorCisj
aW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlbXBvcmFsLlBsYWluVGltZSIsICZCYXNlOjpzX2luZm8sICZwbGFpblRpbWVQcm90
b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZS5sdXQuaAorQGJlZ2luIHBsYWluVGltZVByb3RvdHlwZVRhYmxlCisgIGFkZCAgICAgICAgICAg
ICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jQWRkICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgc3VidHJhY3QgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZUZ1bmNTdWJ0cmFjdCAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB3aXRoICAg
ICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1dpdGggICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCisgIHVudGlsICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGVGdW5jVW50aWwgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
c2luY2UgICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNTaW5jZSAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByb3VuZCAgICAgICAgICAgIHRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlRnVuY1JvdW5kICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCisgIGVxdWFscyAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jRXF1
YWxzICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZ2V0SVNPRmllbGRzICAgICB0
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNHZXRJU09GaWVsZHMgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMAorICB0b1N0cmluZyAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
RnVuY1RvU3RyaW5nICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHRvSlNPTiAgICAg
ICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9KU09OICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2NhbGVTdHJpbmcgICB0ZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB2YWx1
ZU9mICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1ZhbHVlT2YgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIGhvdXIgICAgICAgICAgICAgdGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyICAgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCisgIG1pbnV0ZSAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVHZXR0ZXJNaW51dGUgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29y
CisgIHNlY29uZCAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJTZWNv
bmQgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG1pbGxpc2Vj
b25kICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaWxsaXNlY29uZCAgICAg
IERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG1pY3Jvc2Vjb25kICAgICAgdGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaWNyb3NlY29uZCAgICAgIERvbnRFbnVtfFJl
YWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG5hbm9zZWNvbmQgICAgICAgdGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGVHZXR0ZXJOYW5vc2Vjb25kICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3Rv
bUFjY2Vzc29yCisgIGNhbGVuZGFyICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVH
ZXR0ZXJDYWxlbmRhciAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCitA
ZW5kCisqLworCitUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlPih2bS5oZWFwKSkgVGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgcHJvdG90eXBlLT5m
aW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gcHJvdG90eXBlOwor
fQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9
CisKK1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQoreworfQorCit2b2lkIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS5hZGQKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNBZGQsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8
VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYg
KCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmFkZCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHBsYWlu
VGltZS0+YWRkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVT
dHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUuc3VidHJh
Y3QKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1
bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0g
anNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuc3Vi
dHJhY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAg
YXV0byByZXN1bHQgPSBwbGFpblRpbWUtPnN1YnRyYWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9
CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBs
YWludGltZS5wcm90b3R5cGUud2l0aAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlRnVuY1dpdGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1
dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRp
bWUucHJvdG90eXBlLndpdGggY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUi
X3MpOworCisgICAgSlNWYWx1ZSB0ZW1wb3JhbFRpbWVMaWtlICA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CisgICAgaWYgKCF0ZW1wb3JhbFRpbWVMaWtlLmlzT2JqZWN0KCkpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaXJzdCBhcmd1bWVu
dCB0byBUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLndpdGggbXVzdCBiZSBhbiBvYmplY3Qi
X3MpOworCisgICAgYXV0byByZXN1bHQgPSBwbGFpblRpbWUtPndpdGgoZ2xvYmFsT2JqZWN0LCBh
c09iamVjdCh0ZW1wb3JhbFRpbWVMaWtlKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRp
bWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUudW50
aWwKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1
bmNVbnRpbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudW50aWwg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgYXV0byog
b3RoZXIgPSBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCksIHN0ZDo6bnVsbG9wdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT51bnRpbChnbG9iYWxPYmpl
Y3QsIG90aGVyLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1
cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShyZXN1bHQpLCBn
bG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS5z
aW5jZQorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
RnVuY1NpbmNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5zaW5j
ZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBhdXRv
KiBvdGhlciA9IFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSwgc3RkOjpudWxsb3B0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgYXV0byByZXN1bHQgPSBwbGFpblRpbWUtPnNpbmNlKGdsb2JhbE9i
amVjdCwgb3RoZXIsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFs
RHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJlc3VsdCks
IGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKSkpOworfQorCisvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBl
LnJvdW5kCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVGdW5jUm91bmQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9
IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnJv
dW5kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIGF1
dG8gb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKG9wdGlvbnMuaXNV
bmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUucm91bmQgcmVxdWlyZXMgYW4g
b3B0aW9ucyBhcmd1bWVudCJfcyk7CisKKyAgICBhdXRvIHJvdW5kZWQgPSBwbGFpblRpbWUtPnJv
dW5kKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShy
b3VuZGVkKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Nl
Yy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLmVxdWFscworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0VxdWFscywgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBs
YWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGlt
ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuZXF1YWxzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIGF1dG8qIG90aGVyID0gVGVtcG9yYWxQbGFp
blRpbWU6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51
bGxvcHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihwbGFpblRpbWUtPnBsYWluVGltZSgpID09IG90
aGVyLT5wbGFpblRpbWUoKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLmdldGlzb2ZpZWxkcworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0dldElT
T0ZpZWxkcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuZXF1YWxz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIEpTT2Jq
ZWN0KiBmaWVsZHMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIGZp
ZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhciwgcGxhaW5UaW1l
LT5jYWxlbmRhcigpKTsKKyAgICBmaWVsZHMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+aXNvSG91ciwganNOdW1iZXIocGxhaW5UaW1lLT5ob3VyKCkpKTsKKyAgICBmaWVsZHMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNvTWljcm9zZWNvbmQsIGpzTnVtYmVyKHBs
YWluVGltZS0+bWljcm9zZWNvbmQoKSkpOworICAgIGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5pc29NaWxsaXNlY29uZCwganNOdW1iZXIocGxhaW5UaW1lLT5taWxsaXNl
Y29uZCgpKSk7CisgICAgZmllbGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlz
b01pbnV0ZSwganNOdW1iZXIocGxhaW5UaW1lLT5taW51dGUoKSkpOworICAgIGZpZWxkcy0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc29OYW5vc2Vjb25kLCBqc051bWJlcihwbGFp
blRpbWUtPm5hbm9zZWNvbmQoKSkpOworICAgIGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5pc29TZWNvbmQsIGpzTnVtYmVyKHBsYWluVGltZS0+c2Vjb25kKCkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZpZWxkcyk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUudG9z
dHJpbmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZUZ1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1l
ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUu
dG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0s
IHBsYWluVGltZS0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS50b2pzb24KK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRp
bWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5n
KHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS50b2xvY2Fs
ZXN0cmluZworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlRnVuY1RvTG9jYWxlU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBw
bGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS50b0xvY2FsZVN0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWlu
VGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFp
blRpbWUtPnRvU3RyaW5nKCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRl
bXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS52YWx1ZW9mCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVmFsdWVPZiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNh
bGxlZC4gVG8gY29tcGFyZSBQbGFpblRpbWUgdmFsdWVzLCB1c2UgVGVtcG9yYWwuUGxhaW5UaW1l
LmNvbXBhcmUiX3MpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxh
aW5UaW1lKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWlu
VGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuaG91ciBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHBsYWluVGltZS0+aG91cigpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbnV0ZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWlj
Q2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1pbnV0ZSBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+bWludXRlKCkpKTsKK30KKworSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyU2Vj
b25kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBw
bGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGlt
ZS5wcm90b3R5cGUuc2Vjb25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1l
Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5z
ZWNvbmQoKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGVHZXR0ZXJNaWxsaXNlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3Jh
bFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFw
bGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1pbGxpc2Vjb25kIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5taWxsaXNlY29uZCgpKSk7Cit9CisKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pY3Jv
c2Vjb25kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRv
KiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWlu
VGltZS5wcm90b3R5cGUubWljcm9zZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBw
bGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFp
blRpbWUtPm1pY3Jvc2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTmFub3NlY29uZCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWlj
Q2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm5hbm9zZWNv
bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm5hbm9zZWNvbmQoKSkpOwor
fQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVH
ZXR0ZXJDYWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5QbGFpblRpbWUucHJvdG90eXBlLmNhbGVuZGFyIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocGxhaW5UaW1l
LT5jYWxlbmRhcigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZWEyMjlhN2JkNTE5NGJiNDYxNmZhNDcyYzJmYWQ2MTRkM2FlNThlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAg
dXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJv
cGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7
CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgIH0KKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisg
ICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKaW5kZXggOTc4NGMzZDE3
NDk5NjkxNTBiM2VkNmU2ODZkNWNhODk2OWUyYjJkMi4uNzY1OWIwNTgyY2NkMjk1ZThkMWJhNWYz
OGVlYmQ0MTQ3MTg2MTcyZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKQEAgLTU3LDE3ICs1Nyw2IEBAIFRlbXBvcmFsVGltZVpv
bmU6OlRlbXBvcmFsVGltZVpvbmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGltZVpv
bmUgdGltZVpvCiB7CiB9CiAKLS8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
c3VwLWlzdmFsaWR0aW1lem9uZW5hbWUKLXN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gVGVtcG9y
YWxUaW1lWm9uZTo6aWRGb3JUaW1lWm9uZU5hbWUoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAg
Y29uc3QgYXV0byYgdGltZVpvbmVzID0gaW50bEF2YWlsYWJsZVRpbWVab25lcygpOwotICAgIGZv
ciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHRpbWVab25lcy5zaXplKCk7ICsraW5kZXgp
IHsKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodGltZVpvbmVzW2luZGV4XSwg
c3RyaW5nKSkKLSAgICAgICAgICAgIHJldHVybiBpbmRleDsKLSAgICB9Ci0gICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLX0KLQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwtcGFyc2V0ZW1wb3JhbHRpbWVab25lc3RyaW5nCiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxpbnQ2NF90PiBwYXJzZVRlbXBvcmFsVGltZVpvbmVTdHJpbmcoU3RyaW5nVmlldykKIHsK
QEAgLTExMCw3ICs5OSw3IEBAIEpTT2JqZWN0KiBUZW1wb3JhbFRpbWVab25lOjpmcm9tKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGltZVpvbmVMCiAgICAgaWYgKHV0Y09m
ZnNldCkKICAgICAgICAgcmV0dXJuIFRlbXBvcmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENPZmZz
ZXQodm0sIGdsb2JhbE9iamVjdC0+dGltZVpvbmVTdHJ1Y3R1cmUoKSwgdXRjT2Zmc2V0LnZhbHVl
KCkpOwogCi0gICAgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZGVudGlmaWVyID0gaWRGb3JU
aW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcpOworICAgIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJ
RD4gaWRlbnRpZmllciA9IElTTzg2MDE6OmlkRm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5n
KTsKICAgICBpZiAoaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIFRlbXBvcmFsVGltZVpvbmU6
OmNyZWF0ZUZyb21JRCh2bSwgZ2xvYmFsT2JqZWN0LT50aW1lWm9uZVN0cnVjdHVyZSgpLCBpZGVu
dGlmaWVyLnZhbHVlKCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFRpbWVab25lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFRpbWVab25lLmgKaW5kZXggYmMyODE1M2I3ZmQyNWJiNzY1ZTI1MDZmZDk2ZmE3NmI1
ZTUxMGFkYi4uZTU3OWVhM2E2M2Y2MjFmZGY0MzI2MTEzMjk3NDliZjNjNDc0NmE2ZCAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaApAQCAt
MjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIklTTzg2MDEuaCIKICNp
bmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx3
dGYvVmFyaWFudC5oPgpAQCAtNDcsMTAgKzQ4LDkgQEAgY2xhc3MgVGVtcG9yYWxUaW1lWm9uZSBm
aW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAot
ICAgIHVzaW5nIFRpbWVab25lID0gVmFyaWFudDxUaW1lWm9uZUlELCBpbnQ2NF90PjsKLSAgICBU
aW1lWm9uZSB0aW1lWm9uZSgpIGNvbnN0IHsgcmV0dXJuIG1fdGltZVpvbmU7IH0KKyAgICB1c2lu
ZyBUaW1lWm9uZSA9IElTTzg2MDE6OlRpbWVab25lOwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8VGltZVpvbmVJRD4gaWRGb3JUaW1lWm9uZU5hbWUoU3RyaW5nVmlldyk7CisgICAgVGltZVpv
bmUgdGltZVpvbmUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVab25lOyB9CiAKICAgICBzdGF0aWMg
SlNPYmplY3QqIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25z
dHJ1Y3Rvci5jcHAKaW5kZXggOTkzMzY1YWIzMzJmOGZmYWQ4NzU4ODAwMDgxMGNkMzBlZGRhNjFk
Ny4uNmQyM2U4ZjA1OWRjNzliY2ZhMjlkOWM2NWEwNWVlZTgzYjNhNWNjMiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9y
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25l
Q29uc3RydWN0b3IuY3BwCkBAIC03NCw2ICs3NCw3IEBAIHZvaWQgVGVtcG9yYWxUaW1lWm9uZUNv
bnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5
CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJUaW1lWm9uZSJfcywgUHJvcGVy
dHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJl
Y3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCB0ZW1w
b3JhbFRpbWVab25lUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7
CisgICAgdGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRp
b24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1
bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFRpbWVab25lLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpAQCAtOTIsNyArOTMsNyBAQCBK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxUaW1lWm9uZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIGlmICh1dGNPZmZzZXQpCiAgICAgICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbVVUQ09mZnNldCh2
bSwgc3RydWN0dXJlLCB1dGNPZmZzZXQudmFsdWUoKSkpOwogCi0gICAgc3RkOjpvcHRpb25hbDxU
aW1lWm9uZUlEPiBpZGVudGlmaWVyID0gVGVtcG9yYWxUaW1lWm9uZTo6aWRGb3JUaW1lWm9uZU5h
bWUodGltZVpvbmVTdHJpbmcpOworICAgIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRp
ZmllciA9IElTTzg2MDE6OmlkRm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKICAgICBp
ZiAoIWlkZW50aWZpZXIpIHsKICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJhcmd1bWVudCBuZWVkcyB0byBiZSBVVEMgb2Zmc2V0IHN0cmluZyBvciBUaW1lWm9u
ZSBpZGVudGlmaWVyIl9zKTsKICAgICAgICAgcmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1ZNLmNwcAppbmRleCAwMmYxODk3YjBmMzkxODU2MGI1MDUzMTlkNmU0NjFiZGI1ZDcx
MGRkLi4xNWRkYjJhZmFlNTIzNzc3YWU5MDY2YjMxYjBkNzEwNTQ2YjdkODcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBAIC0xNjQsNiArMTY0LDcgQEAKICNpbmNsdWRlICJT
eW1ib2xPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCiAjaW5jbHVkZSAi
VGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5j
bHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgogI2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgog
I2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5oIgpAQCAtMTU4OCw2ICsxNTg5LDggQEAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbFNwYWNlLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXAKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhzeW1ib2xPYmplY3RTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgU3ltYm9sT2JqZWN0
KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvclNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1Rl
bXBsYXRlT2JqZWN0RGVzY3JpcHRvcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFyU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRl
bXBvcmFsQ2FsZW5kYXIpCitEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
dGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbER1
cmF0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFs
UGxhaW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsUGxhaW5UaW1l
KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsVGltZVpv
bmVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxUaW1lWm9uZSkKIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OEFycmF5U3BhY2UsIGNlbGxI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhBcnJheSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyh1aW50OENsYW1wZWRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBKU1VpbnQ4Q2xhbXBlZEFycmF5KQpAQCAtMTYyMiw3ICsxNjI1LDYgQEAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRT
cGFjZSwgaW50bFJlbGF0aXYKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
VyhpbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2UsIGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5
cGUuZ2V0KCksIEludGxTZWdtZW50SXRlcmF0b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRlclNwYWNlLCBpbnRsU2VnbWVudGVySGVhcENlbGxU
eXBlLmdldCgpLCBJbnRsU2VnbWVudGVyKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUl9TTE9XKGludGxTZWdtZW50c1NwYWNlLCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUuZ2V0
KCksIEludGxTZWdtZW50cykKLURZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh0ZW1wb3JhbER1cmF0aW9uU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFs
RHVyYXRpb24pCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUl9TTE9XKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNUb1dhc21JQ0NhbGxlZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlLCB3ZWJBc3NlbWJseUNvZGVCbG9j
a0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJBc3NlbWJseUNvZGVCbG9jaykgLy8gSGFzaDoweDlh
ZDk5NWNkCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAppbmRleCAxZTcyNWNlMzc0ODczZTAw
N2QxYjAzZjU0OTU2YzUwMjMwNGM2YjM3Li43YTU4YjI3OWU2NzBhODQwM2QxZjM5NDEyMzU3ZDVl
NzcxMTNmNTc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKQEAgLTE5NSw2ICsxOTUs
NyBAQCBjbGFzcyBVbmxpbmtlZE1vZHVsZVByb2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWaXJ0dWFs
UmVnaXN0ZXI7CiBjbGFzcyBWTUVudHJ5U2NvcGU7CiBjbGFzcyBUZW1wb3JhbENhbGVuZGFyOwor
Y2xhc3MgVGVtcG9yYWxQbGFpblRpbWU7CiBjbGFzcyBUZW1wb3JhbFRpbWVab25lOwogY2xhc3Mg
VG9wTGV2ZWxHbG9iYWxPYmplY3RTY29wZTsKIGNsYXNzIFR5cGVQcm9maWxlcjsKQEAgLTU5NSw2
ICs1OTYsOCBAQCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1
YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoc3ltYm9sT2JqZWN0U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUih0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSkKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSkKKyAg
ICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsRHVyYXRpb25TcGFj
ZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxhaW5U
aW1lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3Jh
bFRpbWVab25lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1
aW50OEFycmF5U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1
aW50OENsYW1wZWRBcnJheVNwYWNlKQpAQCAtNjIwLDcgKzYyMyw2IEBAIGNsYXNzIFZNIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2Rl
PFZNPiB7CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsU2VnbWVu
dEl0ZXJhdG9yU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihp
bnRsU2VnbWVudGVyU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
UihpbnRsU2VnbWVudHNTcGFjZSkKLSAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHRlbXBvcmFsRHVyYXRpb25TcGFjZSkKICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihqc1RvV2FzbUlDQ2FsbGVlU3BhY2Up
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUNvZGVC
bG9ja1NwYWNlKQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5n
ZUxvZwppbmRleCAzMjIzNjZhODY4MzQ1NmYwYTRiMWRhNzhmOWI5MjYxN2ViMDAxZTI2Li4zOTQ4
ZTI3ZjdjZjBiYTRkMDQwMTkxYzFlYzM4OTg2OTgwODkzMmYxIDEwMDY0NAotLS0gYS9KU1Rlc3Rz
L0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisyMDIx
LTA5LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pT
Q10gSW1wbGVtZW50IFRlbXBvcmFsLlBsYWluVGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtY2FsZW5kYXIuanM6Cisg
ICAgICAgICogc3RyZXNzL3RlbXBvcmFsLWR1cmF0aW9uLmpzOgorICAgICAgICAqIHN0cmVzcy90
ZW1wb3JhbC1wbGFpbnRpbWUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAg
ICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20pOgorICAg
ICAgICAobGV0LnRpbWUuVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20uc2hvdWxkQmUpOgorICAgICAg
ICAobGV0LnRleHQub2YuZmFpbHVyZXMuc2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkQmUu
VGVtcG9yYWwuUGxhaW5UaW1lLmZyb20pOgorICAgICAgICAobmV3LlRlbXBvcmFsLlBsYWluVGlt
ZS52YWx1ZU9mKToKKyAgICAgICAgKHNob3VsZEJlLlN0cmluZy50aW1lLnVudGlsLlRlbXBvcmFs
LlBsYWluVGltZS5mcm9tKToKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtdGltZXpvbmUuanM6
CisgICAgICAgIChsZXQudGV4dC5vZi5mYWlsdXJlcy5zaG91bGRUaHJvdyk6IERlbGV0ZWQuCisg
ICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKwogMjAyMS0wOS0wMyAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIE1ha2UgRW51bWVyYXRvck5l
eHRVcGRhdGVJbmRleEFuZE1vZGUgY2xvYmJlcml6aW5nIHJ1bGUgcHJlY2lzZQpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtY2FsZW5kYXIuanMgYi9KU1Rlc3RzL3N0cmVzcy90
ZW1wb3JhbC1jYWxlbmRhci5qcwppbmRleCBlZjBhYzExMWE1YjhiNzNjM2EwMTc1ZGFhNzc5MzZj
MDg5YWZjZjQ0Li4zNTA5NzFjZTNjYTBjZDEzOTUxOTY5ODg0YmQ0NWIxNmIxOWNiMzlkIDEwMDY0
NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1jYWxlbmRhci5qcworKysgYi9KU1Rlc3Rz
L3N0cmVzcy90ZW1wb3JhbC1jYWxlbmRhci5qcwpAQCAtMTgsNiArMTgsMTMgQEAgZnVuY3Rpb24g
c2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CiAgICAgICAgIHNob3VsZEJl
KFN0cmluZyhlcnJvciksIG1lc3NhZ2UpOwogfQogCitzaG91bGRCZShUZW1wb3JhbC5DYWxlbmRh
ciBpbnN0YW5jZW9mIEZ1bmN0aW9uLCB0cnVlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLkNhbGVuZGFy
Lmxlbmd0aCwgMCk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFRl
bXBvcmFsLkNhbGVuZGFyLCAncHJvdG90eXBlJykud3JpdGFibGUsIGZhbHNlKTsKK3Nob3VsZEJl
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuQ2FsZW5kYXIsICdwcm90
b3R5cGUnKS5lbnVtZXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKFRlbXBvcmFsLkNhbGVuZGFyLCAncHJvdG90eXBlJykuY29uZmlndXJhYmxl
LCBmYWxzZSk7CitzaG91bGRCZShUZW1wb3JhbC5DYWxlbmRhci5wcm90b3R5cGUuY29uc3RydWN0
b3IsIFRlbXBvcmFsLkNhbGVuZGFyKTsKKwogewogICAgIGxldCBjYWxlbmRhciA9IG5ldyBUZW1w
b3JhbC5DYWxlbmRhcigiaXNvODYwMSIpOwogICAgIHNob3VsZEJlKGNhbGVuZGFyLmlkLCBgaXNv
ODYwMWApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtZHVyYXRpb24uanMg
Yi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1kdXJhdGlvbi5qcwppbmRleCBmNjUyMjcwYTA4Mjhl
ZjRmOTlmOTRiNGMzNjViYjdjOGVjODEzODk3Li5mMjc5NzgxZmFjNjVjNzlkOTBhNzdkZTI0MmFj
MWMwZmNiMDA5NjJiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1kdXJhdGlv
bi5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1kdXJhdGlvbi5qcwpAQCAtMjcsNiAr
MjcsNyBAQCBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUpIHsKIHNob3VsZEJl
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuRHVyYXRpb24sICdwcm90
b3R5cGUnKS5lbnVtZXJhYmxlLCBmYWxzZSk7CiBzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKFRlbXBvcmFsLkR1cmF0aW9uLCAncHJvdG90eXBlJykuY29uZmlndXJhYmxl
LCBmYWxzZSk7CiBzaG91bGRUaHJvdygoKSA9PiBUZW1wb3JhbC5EdXJhdGlvbigpLCBUeXBlRXJy
b3IpOworc2hvdWxkQmUoVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBU
ZW1wb3JhbC5EdXJhdGlvbik7CiAKIHNob3VsZEJlKG5ldyBUZW1wb3JhbC5EdXJhdGlvbigpIGlu
c3RhbmNlb2YgVGVtcG9yYWwuRHVyYXRpb24sIHRydWUpOwogewpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvdGVtcG9yYWwtcGxhaW50aW1lLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwt
cGxhaW50aW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YWQ2YTcwMTFjMmVhYTQ1OGIwZjZkY2M5NmJmYzE1
Yzc2NjYzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1wbGFp
bnRpbWUuanMKQEAgLTAsMCArMSwyODggQEAKKy8vQCByZXF1aXJlT3B0aW9ucygiLS11c2VUZW1w
b3JhbD0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3RlZCkgeworICAgIGlm
IChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYGV4cGVjdGVk
ICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKK2Z1bmN0aW9uIHNob3VsZFRo
cm93KGZ1bmMsIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBlcnJvcjsKKyAgICB0cnkg
eworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAgICBlcnJvciA9IGU7
CisgICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5cGUpKQorICAgICAg
ICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9IWApOworICAgIGlm
IChtZXNzYWdlICE9PSB1bmRlZmluZWQpCisgICAgICAgIHNob3VsZEJlKFN0cmluZyhlcnJvciks
IG1lc3NhZ2UpOworfQorCitzaG91bGRCZShUZW1wb3JhbC5QbGFpblRpbWUgaW5zdGFuY2VvZiBG
dW5jdGlvbiwgdHJ1ZSk7CitzaG91bGRCZShUZW1wb3JhbC5QbGFpblRpbWUubGVuZ3RoLCAwKTsK
K3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuUGxhaW5U
aW1lLCAncHJvdG90eXBlJykud3JpdGFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuUGxhaW5UaW1lLCAncHJvdG90eXBlJykuZW51
bWVyYWJsZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRv
cihUZW1wb3JhbC5QbGFpblRpbWUsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUsIGZhbHNlKTsK
K3Nob3VsZEJlKFRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuY29uc3RydWN0b3IsIFRlbXBv
cmFsLlBsYWluVGltZSk7CisKK3sKKyAgICBsZXQgdGltZSA9IG5ldyBUZW1wb3JhbC5QbGFpblRp
bWUoMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBg
MDA6MDE6MDIuMDAzMDA0MDA1YCk7CisgICAgc2hvdWxkQmUodGltZS5ob3VyLCAwKTsKKyAgICBz
aG91bGRCZSh0aW1lLm1pbnV0ZSwgMSk7CisgICAgc2hvdWxkQmUodGltZS5zZWNvbmQsIDIpOwor
ICAgIHNob3VsZEJlKHRpbWUubWlsbGlzZWNvbmQsIDMpOworICAgIHNob3VsZEJlKHRpbWUubWlj
cm9zZWNvbmQsIDQpOworICAgIHNob3VsZEJlKHRpbWUubmFub3NlY29uZCwgNSk7Cit9CisKK3sK
KyAgICBsZXQgdGltZSA9IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgMCk7
CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBgMDA6MDA6MDBgKTsKKyAgICBzaG91bGRCZSh0
aW1lLmhvdXIsIDApOworICAgIHNob3VsZEJlKHRpbWUubWludXRlLCAwKTsKKyAgICBzaG91bGRC
ZSh0aW1lLnNlY29uZCwgMCk7CisgICAgc2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwgMCk7Cisg
ICAgc2hvdWxkQmUodGltZS5taWNyb3NlY29uZCwgMCk7CisgICAgc2hvdWxkQmUodGltZS5uYW5v
c2Vjb25kLCAwKTsKK30KKworeworICAgIGxldCB0aW1lID0gbmV3IFRlbXBvcmFsLlBsYWluVGlt
ZSgyMywgNTksIDU5LCA5OTksIDk5OSwgOTk5KTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZSks
IGAyMzo1OTo1OS45OTk5OTk5OTlgKTsKKyAgICBzaG91bGRCZSh0aW1lLmhvdXIsIDIzKTsKKyAg
ICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgNTkpOworICAgIHNob3VsZEJlKHRpbWUuc2Vjb25kLCA1
OSk7CisgICAgc2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwgOTk5KTsKKyAgICBzaG91bGRCZSh0
aW1lLm1pY3Jvc2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJlKHRpbWUubmFub3NlY29uZCwgOTk5
KTsKK30KKworeworICAgIGxldCB0aW1lID0gbmV3IFRlbXBvcmFsLlBsYWluVGltZSgyMywgNTks
IDU5LCA5OTksIDk5OSwgOTk5KTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAyMzo1OTo1
OS45OTk5OTk5OTlgKTsKKyAgICBzaG91bGRCZSh0aW1lLmhvdXIsIDIzKTsKKyAgICBzaG91bGRC
ZSh0aW1lLm1pbnV0ZSwgNTkpOworICAgIHNob3VsZEJlKHRpbWUuc2Vjb25kLCA1OSk7CisgICAg
c2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwgOTk5KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pY3Jv
c2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJlKHRpbWUubmFub3NlY29uZCwgOTk5KTsKK30KKwor
eworICAgIC8vIFdlIGFjY2VwdCA2MCBzZWNvbmRzLCBidXQgaW50ZXJwcmV0IGl0IGFzIDU5IHNl
Y29uZHMuCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtcGFyc2Vpc29kYXRldGltZSBzdGVwIDEzCisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5Q
bGFpblRpbWUuZnJvbSgiMjM6NTk6NjAuOTk5OTk5OTk5Iik7CisgICAgc2hvdWxkQmUoU3RyaW5n
KHRpbWUpLCBgMjM6NTk6NTkuOTk5OTk5OTk5YCk7CisgICAgc2hvdWxkQmUodGltZS5ob3VyLCAy
Myk7CisgICAgc2hvdWxkQmUodGltZS5taW51dGUsIDU5KTsKKyAgICBzaG91bGRCZSh0aW1lLnNl
Y29uZCwgNTkpOworICAgIHNob3VsZEJlKHRpbWUubWlsbGlzZWNvbmQsIDk5OSk7CisgICAgc2hv
dWxkQmUodGltZS5taWNyb3NlY29uZCwgOTk5KTsKKyAgICBzaG91bGRCZSh0aW1lLm5hbm9zZWNv
bmQsIDk5OSk7Cit9CisKK3sKKyAgICAvLyBXZSBhY2NlcHQgNjAgc2Vjb25kcywgYnV0IGludGVy
cHJldCBpdCBhcyA1OSBzZWNvbmRzLgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBhcnNlaXNvZGF0ZXRpbWUgc3RlcCAxMworICAgIGxldCB0
aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oIjIwMjEtMDktMDRUMjM6MTQ6MjYuMTAwMjAw
MzAwIik7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBgMjM6MTQ6MjYuMTAwMjAwM2ApOwor
ICAgIHNob3VsZEJlKHRpbWUuaG91ciwgMjMpOworICAgIHNob3VsZEJlKHRpbWUubWludXRlLCAx
NCk7CisgICAgc2hvdWxkQmUodGltZS5zZWNvbmQsIDI2KTsKKyAgICBzaG91bGRCZSh0aW1lLm1p
bGxpc2Vjb25kLCAxMDApOworICAgIHNob3VsZEJlKHRpbWUubWljcm9zZWNvbmQsIDIwMCk7Cisg
ICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCAzMDApOworfQorCitzaG91bGRCZShTdHJpbmco
VGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAzOjI0OjMwJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3Vs
ZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCcp
KSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20o
JzE5OTUtMTItMDdUMDM6MjQ6MzBaJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhU
ZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtFdXJvcGUv
QnJ1c3NlbHNdJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBUZW1w
b3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtVTktOT1dOXScp
OworfSwgUmFuZ2VFcnJvcik7Cit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUu
ZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtFdXJvcGUvQnJ1c3NlbHNdJykKKyAgICBz
aG91bGRCZSh0aW1lID09PSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh0aW1lKSwgZmFsc2UpOwor
fQoreworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oeworICAgICAgaG91
cjogMTksCisgICAgICBtaW51dGU6IDM5LAorICAgICAgc2Vjb25kOiA5LAorICAgICAgbWlsbGlz
ZWNvbmQ6IDY4LAorICAgICAgbWljcm9zZWNvbmQ6IDM0NiwKKyAgICAgIG5hbm9zZWNvbmQ6IDIw
NQorICAgIH0pOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lKSwgYDE5OjM5OjA5LjA2ODM0NjIw
NWApOworCisgICAgLy8gVGhpcyBpcyBzcGVjIGJ1Zy4gQ3VycmVudGx5IHRoaXMgdGhyb3dzIGFu
IGVycm9yLiBCdXQgcG9zc2libHkgdGhpcyBzaG91bGQgbm90IHRocm93IGFuIGVycm9yLgorICAg
IC8vIFRyYWNrZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtdGVtcG9yYWwv
aXNzdWVzLzE4MDMuCisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAgICBUZW1wb3JhbC5Q
bGFpblRpbWUuZnJvbSh7IGhvdXI6IDE5LCBtaW51dGU6IDM5LCBzZWNvbmQ6IDkgfSk7CisgICAg
fSwgVHlwZUVycm9yKTsKK30KK3sKKyAgICAvLyBEaWZmZXJlbnQgb3ZlcmZsb3cgbW9kZXMKKyAg
ICBzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oeyBob3VyOiAxNSwgbWlu
dXRlOiA2MCwgc2Vjb25kOiAwLCBtaWxsaXNlY29uZDogMCwgbWljcm9zZWNvbmQ6IDAsIG5hbm9z
ZWNvbmQ6IDAgfSwgeyBvdmVyZmxvdzogJ2NvbnN0cmFpbicgfSkpLCBgMTU6NTk6MDBgKTsKKyAg
ICBzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oeyBob3VyOiAxNSwgbWlu
dXRlOiAtMSwgc2Vjb25kOiAwLCBtaWxsaXNlY29uZDogMCwgbWljcm9zZWNvbmQ6IDAsIG5hbm9z
ZWNvbmQ6IDAgfSwgeyBvdmVyZmxvdzogJ2NvbnN0cmFpbicgfSkpLCBgMTU6MDA6MDBgKTsKK30K
K3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh7IGhvdXI6
IDE1LCBtaW51dGU6IDYwLCBzZWNvbmQ6IDAsIG1pbGxpc2Vjb25kOiAwLCBtaWNyb3NlY29uZDog
MCwgbmFub3NlY29uZDogMCB9LCB7IG92ZXJmbG93OiAncmVqZWN0JyB9KTsKK30sIFJhbmdlRXJy
b3IpOworc2hvdWxkVGhyb3coKCkgPT4geworICAgIFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsg
aG91cjogMTUsIG1pbnV0ZTogLTEsIHNlY29uZDogMCwgbWlsbGlzZWNvbmQ6IDAsIG1pY3Jvc2Vj
b25kOiAwLCBuYW5vc2Vjb25kOiAwIH0sIHsgb3ZlcmZsb3c6ICdyZWplY3QnIH0pOworfSwgUmFu
Z2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgt
MSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxh
aW5UaW1lKDI1KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1w
b3JhbC5QbGFpblRpbWUoMjQpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsg
bmV3IFRlbXBvcmFsLlBsYWluVGltZSgzMCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3co
KCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKEluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7
CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoLUluZmluaXR5KTsg
fSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgwLCAtMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVt
cG9yYWwuUGxhaW5UaW1lKDAsIDYwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgNjEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3Vs
ZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCA3Nyk7IH0sIFJhbmdlRXJy
b3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDEwMCk7
IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5U
aW1lKDAsIEluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5l
dyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgLUluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CisKK3No
b3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAtMSk7IH0sIFJh
bmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAs
IDAsIDYwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3Jh
bC5QbGFpblRpbWUoMCwgMCwgNjEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+
IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCA3Nyk7IH0sIFJhbmdlRXJyb3IpOworc2hv
dWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDEwMCk7IH0sIFJh
bmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAs
IDAsIEluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBU
ZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgLUluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CisKK3No
b3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAtMSk7IH0s
IFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1l
KDAsIDAsIDAsIDEwMDApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3
IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAxMDAxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgNTAwMDApOyB9
LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGlt
ZSgwLCAwLCAwLCA5OTk5OTk5OTk5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgSW5maW5pdHkpOyB9LCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAw
LCAtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcg
VGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIC0xKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMTAwMCk7
IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5U
aW1lKDAsIDAsIDAsIDAsIDEwMDEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+
IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCA1MDAwMCk7IH0sIFJhbmdlRXJy
b3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAs
IDAsIDk5OTk5OTk5OTkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3
IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCBJbmZpbml0eSk7IH0sIFJhbmdlRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAs
IC1JbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworCitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBU
ZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgLTEpOyB9LCBSYW5nZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCAx
MDAwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5Q
bGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgMTAwMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhy
b3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDAsIDUwMDAwKTsg
fSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRp
bWUoMCwgMCwgMCwgMCwgMCwgOTk5OTk5OTk5OSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhy
b3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDAsIEluZmluaXR5
KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFp
blRpbWUoMCwgMCwgMCwgMCwgMCwgLUluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CisKK2xldCBm
YWlsdXJlcyA9IFsKKyAgICAiIiwKKyAgICAiMjM6NTk6NjEuOTk5OTk5OTk5IiwKK107CisKK2Zv
ciAobGV0IHRleHQgb2YgZmFpbHVyZXMpIHsKKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAg
ICAgIFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHRleHQpOworICAgIH0sIFJhbmdlRXJyb3IpOwor
fQorCit7CisgICAgbGV0IG9uZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMzoyNCcpOwor
ICAgIGxldCB0d28gPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDE6MjQnKTsKKyAgICBsZXQg
dGhyZWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDE6MjQ6MDUnKTsKKyAgICBsZXQgc29y
dGVkID0gW29uZSwgdHdvLCB0aHJlZV0uc29ydChUZW1wb3JhbC5QbGFpblRpbWUuY29tcGFyZSk7
CisgICAgc2hvdWxkQmUoc29ydGVkLmpvaW4oJyAnKSwgYDAxOjI0OjAwIDAxOjI0OjA1IDAzOjI0
OjAwYCk7Cit9CisKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgiMjA6
MzQiKS5jYWxlbmRhciksIGBpc284NjAxYCk7CitzaG91bGRCZShUZW1wb3JhbC5QbGFpblRpbWUu
ZnJvbSgiMjA6MzQiKS5jYWxlbmRhciBpbnN0YW5jZW9mIFRlbXBvcmFsLkNhbGVuZGFyLCB0cnVl
KTsKK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCIyMDozNCIpOwor
ICAgIHNob3VsZEJlKHRpbWUuY2FsZW5kYXIsIHRpbWUuY2FsZW5kYXIpOworfQorCit7CisgICAg
bGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7
CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUucm91bmQoeyBzbWFsbGVzdFVuaXQ6ICdob3VyJyB9
KSksIGAyMDowMDowMGApOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnJvdW5kKHsgcm91bmRp
bmdJbmNyZW1lbnQ6IDMwLCBzbWFsbGVzdFVuaXQ6ICdtaW51dGUnIH0pKSwgYDE5OjMwOjAwYCk7
CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUucm91bmQoeyByb3VuZGluZ0luY3JlbWVudDogMzAs
IHNtYWxsZXN0VW5pdDogJ21pbnV0ZScsIHJvdW5kaW5nTW9kZTogJ2NlaWwnIH0pKSwgYDIwOjAw
OjAwYCk7Cit9Cit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6
Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgbGV0IG90aGVyID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZy
b20oJzIwOjEzOjIwLjk3MTM5ODA5OScpOworICAgIHNob3VsZEJlKHRpbWUuZXF1YWxzKG90aGVy
KSwgZmFsc2UpOworICAgIHNob3VsZEJlKHRpbWUuZXF1YWxzKHRpbWUpLCB0cnVlKTsKK30KK3sK
KyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYy
MDUnKTsKKyAgICBzaG91bGRCZSh0aW1lLnRvU3RyaW5nKCksIGAxOTozOTowOS4wNjgzNDYyMDVg
KTsKKworICAgIHNob3VsZEJlKHRpbWUudG9TdHJpbmcoeyBzbWFsbGVzdFVuaXQ6ICdtaW51dGUn
IH0pLCBgMTk6MzlgKTsKKyAgICBzaG91bGRCZSh0aW1lLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNl
Y29uZERpZ2l0czogMCB9KSwgYDE5OjM5OjA5YCk7CisgICAgc2hvdWxkQmUodGltZS50b1N0cmlu
Zyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDQgfSksIGAxOTozOTowOS4wNjgzYCk7CisgICAg
c2hvdWxkQmUodGltZS50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDUsIHJvdW5k
aW5nTW9kZTogJ2hhbGZFeHBhbmQnIH0pLCBgMTk6Mzk6MDkuMDY4MzVgKTsKKyAgICBzaG91bGRC
ZShUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDAwMDAwMjA1JykudG9TdHJpbmco
eyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA0IH0pLCBgMTk6Mzk6MDkuMDAwMGApOworfQorewor
ICAgIGNvbnN0IHdvcmtCcmVhayA9IHsKKyAgICAgIHR5cGU6ICdtYW5kYXRvcnknLAorICAgICAg
bmFtZTogJ0x1bmNoJywKKyAgICAgIHN0YXJ0VGltZTogbmV3IFRlbXBvcmFsLlBsYWluVGltZSgx
MiksCisgICAgICBlbmRUaW1lOiBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDEzKQorICAgIH07Cisg
ICAgY29uc3Qgc3RyID0gSlNPTi5zdHJpbmdpZnkod29ya0JyZWFrKTsKKyAgICBzaG91bGRCZShz
dHIsIGB7InR5cGUiOiJtYW5kYXRvcnkiLCJuYW1lIjoiTHVuY2giLCJzdGFydFRpbWUiOiIxMjow
MDowMCIsImVuZFRpbWUiOiIxMzowMDowMCJ9YCk7CisgICAgZnVuY3Rpb24gcmV2aXZlcihrZXks
IHZhbHVlKSB7CisgICAgICBpZiAoa2V5LmVuZHNXaXRoKCdUaW1lJykpIHJldHVybiBUZW1wb3Jh
bC5QbGFpblRpbWUuZnJvbSh2YWx1ZSk7CisgICAgICByZXR1cm4gdmFsdWU7CisgICAgfQorICAg
IGxldCBvYmplY3QgPSBKU09OLnBhcnNlKHN0ciwgcmV2aXZlcik7CisgICAgc2hvdWxkQmUob2Jq
ZWN0LnN0YXJ0VGltZSBpbnN0YW5jZW9mIFRlbXBvcmFsLlBsYWluVGltZSwgdHJ1ZSk7CisgICAg
c2hvdWxkQmUoU3RyaW5nKG9iamVjdC5zdGFydFRpbWUpLCBgMTI6MDA6MDBgKTsKKyAgICBzaG91
bGRCZShvYmplY3QuZW5kVGltZSBpbnN0YW5jZW9mIFRlbXBvcmFsLlBsYWluVGltZSwgdHJ1ZSk7
CisgICAgc2hvdWxkQmUoU3RyaW5nKG9iamVjdC5lbmRUaW1lKSwgYDEzOjAwOjAwYCk7Cit9Citz
aG91bGRUaHJvdygoKSA9PiB7CisgICAgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgxMikudmFsdWVP
ZigpOworfSwgVHlwZUVycm9yKTsKK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGlt
ZS5mcm9tKCcxOTozOTowOS4wNjgzNDYyMDUnKTsKKyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lm
eSh0aW1lLmdldElTT0ZpZWxkcygpKSwgYHsiY2FsZW5kYXIiOiJpc284NjAxIiwiaXNvSG91ciI6
MTksImlzb01pY3Jvc2Vjb25kIjozNDYsImlzb01pbGxpc2Vjb25kIjo2OCwiaXNvTWludXRlIjoz
OSwiaXNvTmFub3NlY29uZCI6MjA1LCJpc29TZWNvbmQiOjl9YCk7Cit9Cit7CisgICAgbGV0IHRp
bWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAg
c2hvdWxkQmUoU3RyaW5nKHRpbWUuYWRkKHsgbWludXRlczogNSwgbmFub3NlY29uZHM6IDgwMCB9
KSksIGAxOTo0NDowOS4wNjgzNDcwMDVgKTsKK30KK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFs
LlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYyMDUnKTsKKyAgICBzaG91bGRCZShTdHJp
bmcodGltZS5zdWJ0cmFjdCh7IG1pbnV0ZXM6IDUsIG5hbm9zZWNvbmRzOiA4MDAgfSkpLCBgMTk6
MzQ6MDkuMDY4MzQ1NDA1YCk7Cit9Cit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRp
bWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUu
YWRkKHsgaG91cnM6IDEgfSkud2l0aCh7CisgICAgICBtaW51dGU6IDAsCisgICAgICBzZWNvbmQ6
IDAsCisgICAgICBtaWxsaXNlY29uZDogMCwKKyAgICAgIG1pY3Jvc2Vjb25kOiAwLAorICAgICAg
bmFub3NlY29uZDogMAorICAgIH0pKSwgYDIwOjAwOjAwYCk7Cit9Cit7CisgICAgbGV0IHRpbWUg
PSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMjA6MTM6MjAuOTcxMzk4MDk5Jyk7CisgICAgc2hv
dWxkQmUoU3RyaW5nKHRpbWUudW50aWwoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzIyOjM5OjA5
LjA2ODM0NjIwNScpKSksIGBQVDJIMjVNNDguMDk2OTQ4MTA2U2ApOworICAgIHNob3VsZEJlKFN0
cmluZyh0aW1lLnVudGlsKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYy
MDUnKSkpLCBgLVBUMzRNMTEuOTAzMDUxODk0U2ApOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1l
LnVudGlsKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcyMjozOTowOS4wNjgzNDYyMDUnKSwgeyBz
bWFsbGVzdFVuaXQ6ICdzZWNvbmQnIH0pKSwgYFBUMkgyNU00OFNgKTsKK30KK3sKKyAgICBsZXQg
dGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcyMDoxMzoyMC45NzEzOTgwOTknKTsKKyAg
ICBzaG91bGRCZShTdHJpbmcodGltZS5zaW5jZShUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6
Mzk6MDkuMDY4MzQ2MjA1JykpKSwgYFBUMzRNMTEuOTAzMDUxODk0U2ApOworICAgIHNob3VsZEJl
KFN0cmluZyh0aW1lLnNpbmNlKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcyMjozOTowOS4wNjgz
NDYyMDUnKSkpLCBgLVBUMkgyNU00OC4wOTY5NDgxMDZTYCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rl
c3RzL3N0cmVzcy90ZW1wb3JhbC10aW1lem9uZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFs
LXRpbWV6b25lLmpzCmluZGV4IGQ4OGY4Yzg4N2U4NDRhZTJmMDMwOWVhZjE1MWVjYTIyMDE0NDE5
NTYuLmY0ODE1OTY2MmZiNzlmOWE2MWM5MTdiOTJkYjAyZjEwODcyMTNhY2UgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNz
L3RlbXBvcmFsLXRpbWV6b25lLmpzCkBAIC0xOCw2ICsxOCwxMyBAQCBmdW5jdGlvbiBzaG91bGRU
aHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKICAgICAgICAgc2hvdWxkQmUoU3RyaW5n
KGVycm9yKSwgbWVzc2FnZSk7CiB9CiAKK3Nob3VsZEJlKFRlbXBvcmFsLlRpbWVab25lIGluc3Rh
bmNlb2YgRnVuY3Rpb24sIHRydWUpOworc2hvdWxkQmUoVGVtcG9yYWwuVGltZVpvbmUubGVuZ3Ro
LCAwKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwu
VGltZVpvbmUsICdwcm90b3R5cGUnKS53cml0YWJsZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0
LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5UaW1lWm9uZSwgJ3Byb3RvdHlwZScp
LmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoVGVtcG9yYWwuVGltZVpvbmUsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUsIGZhbHNl
KTsKK3Nob3VsZEJlKFRlbXBvcmFsLlRpbWVab25lLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgVGVt
cG9yYWwuVGltZVpvbmUpOworCiBsZXQgZmFpbHVyZXMgPSBbCiAgICAgIiIsCiAgICAgIisiLApA
QCAtMjYsOSArMzMsMjIgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBt
ZXNzYWdlKSB7CiAgICAgIisyNCIsCiAgICAgIisyMzoiLAogICAgICIyMDowMCIsCisgICAgIisy
OjAwIiwKKyAgICAiKzMyOjAwIiwKKyAgICAiKzIzOjAwMSIsCisgICAgIisyMzo5OSIsCisgICAg
IisyMzo5OTAiLAorICAgICIrMjM6NTk6OTkiLAorICAgICIrMjM6NTk6MDAxIiwKKyAgICAiKzIz
OjU5Ojk5OSIsCisgICAgIisyMzo1OTo1OS4iLAorICAgICIrMjM6NTk6NTksIiwKKyAgICAiKzIz
OjU5OjU5YSIsCisgICAgIisyMzo1OTo1OS5hIiwKICAgICAiKzIwOjAwMDAiLAogICAgICIrMjA6
NjAiLAogICAgICIrMjA6NTk6IiwKKyAgICAiKzIwOjU5OjYwIiwKICAgICAiMjA1OTowMCIsCiAg
ICAgIisyMDU5OjAwIiwKICAgICAiKzIwOjU5MDAiLApAQCAtNTIsNiArNzIsMTAgQEAgZnVuY3Rp
b24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CiBzaG91bGRCZShuZXcg
VGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTAwMDAiKS5pZCwgYC0wMTo1OTozMC4x
MjM0NWApOwogc2hvdWxkQmUobmV3IFRlbXBvcmFsLlRpbWVab25lKCItMDE6NTk6MzAuMDAwMDAw
MDAxIikuaWQsIGAtMDE6NTk6MzAuMDAwMDAwMDAxYCk7CiBzaG91bGRCZShuZXcgVGVtcG9yYWwu
VGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTY3ODkiKS5pZCwgYC0wMTo1OTozMC4xMjM0NTY3ODlg
KTsKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjMwLjAwMTAwMjAwMyIp
LmlkLCBgLTAxOjU5OjMwLjAwMTAwMjAwM2ApOworc2hvdWxkQmUobmV3IFRlbXBvcmFsLlRpbWVa
b25lKCItMDE6NTk6MzAuMDAwMDAwMDAwIikuaWQsIGAtMDE6NTk6MzBgKTsKK3Nob3VsZEJlKG5l
dyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjAwLjAwMDAwMDAwMCIpLmlkLCBgLTAxOjU5YCk7
CitzaG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTowMDowMC4wMDAwMDAwMDAiKS5p
ZCwgYC0wMTowMGApOwogCiBsZXQgdHogPSBuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OToz
MC4xMjM0NTY3ODkiKQogc2hvdWxkQmUodHouaWQsIFN0cmluZyh0eikpOwpkaWZmIC0tZ2l0IGEv
SlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1s
CmluZGV4IDEwNWZkZjQyNTM5NjUzNzI4NWE3MTc4MDI1MDlmOGRlMjkwZmFiNmMuLmE2YzhhMTFk
ZWJlM2RiNTdmMTFlMDUxZDljN2Q2NjgyZGYwNTJlMTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVz
dDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTI3
LDcgKzI3LDggQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluRGF0
ZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5EYXRlVGltZQogICAgIC0gdGVz
dC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5Nb250aERheQotICAgIC0gdGVzdC9idWlsdC1pbnMv
VGVtcG9yYWwvUGxhaW5UaW1lCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRp
bWUvcHJvdG90eXBlL3RvUGxhaW5EYXRlVGltZQorICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9y
YWwvUGxhaW5UaW1lL3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWUKICAgICAtIHRlc3QvYnVpbHQt
aW5zL1RlbXBvcmFsL1BsYWluWWVhck1vbnRoCiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3Jh
bC9UaW1lWm9uZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvWm9uZWREYXRlVGltZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437356</attachid>
            <date>2021-09-05 04:52:46 -0700</date>
            <delta_ts>2021-09-05 05:20:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229892-20210905045245.patch</filename>
            <type>text/plain</type>
            <size>157488</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTM5NDE1YzNmNmI3NTVlOTY3YjE3MTMzYjU5ZTY5ZWM1NjNkOWNjLi5mODMxNDQyNWY4MTgzZmQw
MTM2MTMxNDQ5ZDA0NWE5Y2YxMmYzNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjggQEAKKzIwMjEtMDktMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuUGxhaW5UaW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4OTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JU084NjAxLmNwcDoKKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6aWRGb3JUaW1lWm9uZU5hbWUpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpwYXJzZVRpbWVTcGVjKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lWm9uZU51
bWVyaWNVVENPZmZzZXQpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZVRpbWVab25lQnJh
Y2tldGVkQW5ub3RhdGlvbik6CisgICAgICAgIChKU0M6OklTTzg2MDE6OmNhbkJlVGltZVpvbmUp
OgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZVRpbWVab25lKToKKyAgICAgICAgKEpTQzo6
SVNPODYwMTo6cGFyc2VUaW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6ZGF5c0luTW9udGgp
OgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZURhdGUpOgorICAgICAgICAoSlNDOjpJU084
NjAxOjpwYXJzZURhdGVUaW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6Zm9ybWF0VGltZVpv
bmVPZmZzZXRTdHJpbmcpOgorICAgICAgICAoSlNDOjpJU084NjAxOjp0ZW1wb3JhbFRpbWVUb1N0
cmluZyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OmlzVmFsaWREdXJhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9JU084NjAxLmg6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpE
dXJhdGlvbik6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpvcGVyYXRvcltdKToK
KyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJhdG9yW10gY29uc3QpOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6YmVnaW4gY29uc3QpOgorICAgICAgICAoSlND
OjpJU084NjAxOjpEdXJhdGlvbjo6ZW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
RHVyYXRpb246OmNsZWFyKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJh
dG9yLSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OlBsYWluVGltZTo6UGxhaW5UaW1l
KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5UaW1lOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRlOjpQbGFpbkRhdGUpOgorICAgICAgICAoSlNDOjpJ
U084NjAxOjpQbGFpbkRhdGU6OnllYXIgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpQ
bGFpbkRhdGU6Om1vbnRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRl
OjpkYXkgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OnV0Y1RpbWVab25lSURTbG93KToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6dXRjVGltZVpvbmVJRCk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpwbGFpblRpbWVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZCk6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OmZyb21Ob25EdXJhdGlvblZhbHVlKToK
KyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9EdXJhdGlvbik6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb25SZWNvcmQpOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFs
RHVyYXRpb246OnRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6aXNWYWxpZER1cmF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6ZnJvbU9iamVjdCk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmg6CisgICAgICAgICogcnVu
dGltZS9UZW1wb3JhbE5vdy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6c2Vjb25kc1N0
cmluZ1ByZWNpc2lvbik6CisgICAgICAgIChKU0M6OnRvVGVtcG9yYWxPdmVyZmxvdyk6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9y
YWxQbGFpblRpbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6VGVtcG9yYWxQbGFpblRpbWUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAg
ICAoSlNDOjp0b1BsYWluVGltZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp0
cnlDcmVhdGVJZlZhbGlkKToKKyAgICAgICAgKEpTQzo6YmFsYW5jZVRpbWUpOgorICAgICAgICAo
SlNDOjpyb3VuZFRpbWUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6cm91bmQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dG9TdHJpbmcgY29uc3Qp
OgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWUpOgorICAgICAgICAoSlNDOjp0b1RlbXBvcmFs
VGltZVJlY29yZCk6CisgICAgICAgIChKU0M6OnRvUGFydGlhbFRpbWUpOgorICAgICAgICAoSlND
Ojpjb25zdHJhaW50VGltZSk6CisgICAgICAgIChKU0M6OnJlZ3VsYXRlVGltZSk6CisgICAgICAg
IChKU0M6OnRvVGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KToKKyAgICAgICAgKEpTQzo6
Z2V0VGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxQbGFpblRpbWU6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6Y29t
cGFyZSk6CisgICAgICAgIChKU0M6OnRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24pOgorICAgICAg
ICAoSlNDOjphZGRUaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6OmFkZCBj
b25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpzdWJ0cmFjdCBjb25zdCk6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp3aXRoIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6ZGlmZmVyZW5jZVRpbWUpOgorICAgICAgICAoSlNDOjpleHRyYWN0RGlmZmVyZW5jZU9w
dGlvbnMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dW50aWwgY29uc3QpOgor
ICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6c2luY2UgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRl
bXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaC4KKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OlRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaC4KKyAgICAgICAgKiBydW50aW1lL1Rl
bXBvcmFsVGltZVpvbmUuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFRpbWVab25lOjpmcm9t
KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZTo6aWRGb3JUaW1lWm9uZU5hbWUpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA5LTAzICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gTWFrZSBFbnVtZXJhdG9yTmV4dFVw
ZGF0ZUluZGV4QW5kTW9kZSBjbG9iYmVyaXppbmcgcnVsZSBwcmVjaXNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWNhMDgzMTRiNjQ0NTljNzhjYTAzODY0MjgxNTM3Zjg1
MThkYmVlMC4uMzhjYjg0ZGEwNTZlMmI2YTZjMTNlZDlmOGQ3MDUxOGVhZjA4OTU4ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTEzLDYgKzExMyw4IEBAIHNldChKYXZh
U2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMKICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRp
b25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICAgICBydW50aW1l
L1RlbXBvcmFsT2JqZWN0LmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1
Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcAogICAg
IHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvVGVt
cG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAppbmRleCBjZTVmNjI4OGFhYTI3
Y2I3ODE3YmVhZTE0NDM3NmVhMjhhZmFlNjNmLi4yODg1YjUxMDE3Y2MxYWUzZDg5MmVmM2M1ZjI3
YTRiMTIzNzUzODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZl
ZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAtMTc1LDYgKzE3NSw4IEBAICQoUFJPSkVDVF9E
SVIpL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJ
UikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikv
cnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxP
YmplY3QuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3Ry
dWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0
b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUu
Y3BwCiAkKFBST0pFQ1RfRElSKS91Y2QvQ2FzZUZvbGRpbmcudHh0CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXgg
MWIwNTVjOTIyYzA5NGE1OTU4NDI2MDg0MWRjZWRmY2FhNzM3NjUwMy4uMmFkMjEzMWM1ODY2OWJk
MDU3NWM3YWY0MGE2YzQyN2E1OTRmNWMzZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdApAQCAtNzIsNiArNzIsOCBA
QCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVt
cG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLgogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRT
b3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUubHV0LmgKICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3Jh
bE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3Jp
cHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCiskKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQu
aAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1Rl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1
dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUv
VGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rl
cml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1VuaWNvZGVQYXR0ZXJuVGFibGVzLmgKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggODgxOTI3ZTE3YmRhMjM4
ZDdkYWNlZjFkNmViNWMzYzNiNzQ4YjM3Ny4uZWNiY2U2N2Y3OGMwMDM0YzE2NmY1MGQ1ODkyYTZm
MDhjNWRhNDBkNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3Vy
Y2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UK
QEAgLTE5Nyw2ICsxOTcsOCBAQCBPQkpFQ1RfTFVUX0hFQURFUlMgPSBcCiAgICAgVGVtcG9yYWxE
dXJhdGlvblByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxOb3cubHV0LmggXAogICAgIFRl
bXBvcmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1
dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9y
YWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oIFwKICAgICBUZW1wb3JhbFRpbWVab25lUHJvdG90
eXBlLmx1dC5oIFwKICAgICBXZWJBc3NlbWJseUNvbXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5o
IFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAppbmRleCAzMjhmOTJmNWIyZmIyMDVjODM4Nzgy
MjQxOWE1MDg0ZTBmYTFmN2NhLi44NDZlOWVlNzVmZWQwNTQ3NTU2YzRiZmQ0YTI2MWQ4MGQ1OWFm
YmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CkBAIC0xMDE5LDYgKzEwMTksOSBAQCBy
dW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxE
dXJhdGlvblByb3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxOb3cuY3BwCiBydW50aW1lL1Rl
bXBvcmFsT2JqZWN0LmNwcAorcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKK3J1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCiBydW50aW1lL1Rl
bXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVBy
b3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0Nv
bW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25J
ZGVudGlmaWVycy5oCmluZGV4IDcxNGFhMmZlYjIyNGZhNThmMjdlZDU1NTFiNjdjOWYzMjY1Y2Jk
MjcuLjQwYzE1OWU4ZDdjNTQwNDlmZDk4YzhhNjY2OGE2NGE4ZGY0ZWEzNjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTQ5
LDYgKzE0OSwxMiBAQAogICAgIG1hY3JvKGluZGljZXMpIFwKICAgICBtYWNybyhpbmZlcnJlZE5h
bWUpIFwKICAgICBtYWNybyhpbnB1dCkgXAorICAgIG1hY3JvKGlzb0hvdXIpIFwKKyAgICBtYWNy
byhpc29NaWNyb3NlY29uZCkgXAorICAgIG1hY3JvKGlzb01pbGxpc2Vjb25kKSBcCisgICAgbWFj
cm8oaXNvTWludXRlKSBcCisgICAgbWFjcm8oaXNvTmFub3NlY29uZCkgXAorICAgIG1hY3JvKGlz
b1NlY29uZCkgXAogICAgIG1hY3JvKGluc3RydWN0aW9uQ291bnQpIFwKICAgICBtYWNybyhpc0Fy
cmF5KSBcCiAgICAgbWFjcm8oaXNFbmFibGVkKSBcCkBAIC0xNjksNyArMTc1LDkgQEAKICAgICBt
YWNybyhtYXhpbXVtRnJhY3Rpb25EaWdpdHMpIFwKICAgICBtYWNybyhtYXhpbXVtU2lnbmlmaWNh
bnREaWdpdHMpIFwKICAgICBtYWNybyhtZXNzYWdlKSBcCisgICAgbWFjcm8obWljcm9zZWNvbmQp
IFwKICAgICBtYWNybyhtaWNyb3NlY29uZHMpIFwKKyAgICBtYWNybyhtaWxsaXNlY29uZCkgXAog
ICAgIG1hY3JvKG1pbGxpc2Vjb25kcykgXAogICAgIG1hY3JvKG1pbmltdW1GcmFjdGlvbkRpZ2l0
cykgXAogICAgIG1hY3JvKG1pbmltdW1JbnRlZ2VyRGlnaXRzKSBcCkBAIC0xODEsNiArMTg5LDcg
QEAKICAgICBtYWNybyhtb250aHMpIFwKICAgICBtYWNybyhtdWx0aWxpbmUpIFwKICAgICBtYWNy
byhuYW1lKSBcCisgICAgbWFjcm8obmFub3NlY29uZCkgXAogICAgIG1hY3JvKG5hbm9zZWNvbmRz
KSBcCiAgICAgbWFjcm8obmV4dCkgXAogICAgIG1hY3JvKG5vdykgXApAQCAtMTk0LDYgKzIwMyw3
IEBACiAgICAgbWFjcm8ob3JpZ2luKSBcCiAgICAgbWFjcm8ob3NyRXhpdFNpdGVzKSBcCiAgICAg
bWFjcm8ob3NyRXhpdHMpIFwKKyAgICBtYWNybyhvdmVyZmxvdykgXAogICAgIG1hY3JvKHBhcnNl
KSBcCiAgICAgbWFjcm8ocGFyc2VJbnQpIFwKICAgICBtYWNybyhwYXJzZUZsb2F0KSBcCkBAIC0y
NDUsNiArMjU1LDcgQEAKICAgICBtYWNybyh1c2FnZSkgXAogICAgIG1hY3JvKHZhbHVlKSBcCiAg
ICAgbWFjcm8odmFsdWVPZikgXAorICAgIG1hY3JvKHdlZWspIFwKICAgICBtYWNybyh3ZWVrZGF5
KSBcCiAgICAgbWFjcm8od2Vla3MpIFwKICAgICBtYWNybyh3cml0YWJsZSkgXApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcAppbmRleCA5ZTQyYWZjMTMzYzA3ZTNmYjkx
Yjg5Nzc1NmUzYTE1NTEyM2FmOTM3Li4zMzVmNDgxMTJkODJmM2JlYWZjMGFmMDFhMjJlYjVlZDk2
ZWVjYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAx
LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcApAQCAt
MSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBF
bnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCiAgKgog
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTI2LDcgKzI3LDkgQEAKICNpbmNsdWRlICJj
b25maWcuaCIKICNpbmNsdWRlICJJU084NjAxLmgiCiAKKyNpbmNsdWRlICJJbnRsT2JqZWN0Lmgi
CiAjaW5jbHVkZSAiUGFyc2VJbnQuaCIKKyNpbmNsdWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpA
QCAtMzgsNiArNDEsMTYgQEAgc3RhdGljIGNvbnN0ZXhwciBpbnQ2NF90IG5zUGVyU2Vjb25kID0g
MTAwMExMICogMTAwMCAqIDEwMDA7CiBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbnNQZXJNaWxs
aXNlY29uZCA9IDEwMDBMTCAqIDEwMDA7CiBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbnNQZXJN
aWNyb3NlY29uZCA9IDEwMDBMTDsKIAorc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZEZvclRp
bWVab25lTmFtZShTdHJpbmdWaWV3IHN0cmluZykKK3sKKyAgICBjb25zdCBhdXRvJiB0aW1lWm9u
ZXMgPSBpbnRsQXZhaWxhYmxlVGltZVpvbmVzKCk7CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9
IDA7IGluZGV4IDwgdGltZVpvbmVzLnNpemUoKTsgKytpbmRleCkgeworICAgICAgICBpZiAoZXF1
YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0aW1lWm9uZXNbaW5kZXhdLCBzdHJpbmcpKQorICAgICAgICAg
ICAgcmV0dXJuIGluZGV4OworICAgIH0KKyAgICByZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KIGludDMyX3QgcGFyc2VEZWNpbWFsSW50MzIoY29u
c3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbmd0aCkKIHsKQEAgLTI0MywzMiAr
MjU2LDI2IEBAIHN0ZDo6b3B0aW9uYWw8RHVyYXRpb24+IHBhcnNlRHVyYXRpb24oU3RyaW5nVmll
dyBzdHJpbmcpCiAgICAgfSk7CiB9CiAKKworZW51bSBjbGFzcyBTZWNvbmQ2ME1vZGUgeyBBY2Nl
cHQsIFJlamVjdCB9OwogdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBz
dGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmlu
Z1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlv
bmFsPFBsYWluVGltZT4gcGFyc2VUaW1lU3BlYyhTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3Rl
clR5cGU+JiBidWZmZXIsIFNlY29uZDYwTW9kZSBzZWNvbmQ2ME1vZGUpCiB7Ci0gICAgLy8gVGlt
ZVpvbmVOdW1lcmljVVRDT2Zmc2V0IDoKLSAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWdu
IFRpbWVab25lVVRDT2Zmc2V0SG91cgotICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24g
VGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUKLSAgICAvLyAg
ICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVU
Q09mZnNldE1pbnV0ZQotICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVV
VENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUgOiBUaW1lWm9uZVVUQ09mZnNl
dFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0aW9uW29wdF0KLSAgICAvLyAgICAgVGltZVpv
bmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1p
bnV0ZSBUaW1lWm9uZVVUQ09mZnNldFNlY29uZFtvcHRdCisgICAgLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVTcGVjCisgICAgLy8gVGltZVNwZWMgOgorICAg
IC8vICAgICBUaW1lSG91cgorICAgIC8vICAgICBUaW1lSG91ciA6IFRpbWVNaW51dGUKKyAgICAv
LyAgICAgVGltZUhvdXIgVGltZU1pbnV0ZQorICAgIC8vICAgICBUaW1lSG91ciA6IFRpbWVNaW51
dGUgOiBUaW1lU2Vjb25kIFRpbWVGcmFjdGlvbltvcHRdCisgICAgLy8gICAgIFRpbWVIb3VyIFRp
bWVNaW51dGUgVGltZVNlY29uZCBUaW1lRnJhY3Rpb25bb3B0XQogICAgIC8vCi0gICAgLy8gIE1h
eGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGFyZSDCsTIzOjU5OjU5Ljk5OTk5OTk5OSA9IMKxODYz
OTk5OTk5OTk5OTlucywgd2hpY2ggY2FuIGJlIHJlcHJlc2VudGVkIGJ5IGludDY0X3QgLyBkb3Vi
bGUncyBpbnRlZ2VyIHBhcnQuCisgICAgLy8gIFRpbWVTZWNvbmQgY2FuIGJlIDYwLiBBbmQgaWYg
aXQgaXMgNjAsIHdlIGludGVycHJldCBpdCBhcyA1OS4KKyAgICAvLyAgaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcGFyc2Vpc29kYXRldGltZQogCi0gICAg
Ly8gc2lnbiBhbmQgaG91ci4KLSAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgMykK
LSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLQotICAgIGludDY0X3QgZmFjdG9yID0gMTsK
LSAgICBpZiAoKmJ1ZmZlciA9PSAnKycpCi0gICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7Ci0gICAg
ZWxzZSBpZiAoKmJ1ZmZlciA9PSAnLScgfHwgKmJ1ZmZlciA9PSAweDIyMTIpIHsKLSAgICAgICAg
ZmFjdG9yID0gLTE7Ci0gICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7Ci0gICAgfSBlbHNlCisgICAg
aWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAKLSAgICBpbnQ2NF90IGhvdXIgPSAwOworICAgIHVuc2lnbmVkIGhvdXIgPSAwOwog
ICAgIEFTU0VSVChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPj0gMik7CiAgICAgYXV0byBmaXJz
dEhvdXJDaGFyYWN0ZXIgPSAqYnVmZmVyOwogICAgIGlmIChmaXJzdEhvdXJDaGFyYWN0ZXIgPj0g
JzAnICYmIGZpcnN0SG91ckNoYXJhY3RlciA8PSAnMicpIHsKQEAgLTI4NCwxNSArMjkxLDE2IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zm
c2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
ICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAgICAgIHJldHVybiAobnNQZXJIb3VyICogaG91
cikgKiBmYWN0b3I7CisgICAgICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwgMCwgMCwgMCwgMCwg
MCk7CiAKICAgICBib29sIHNwbGl0QnlDb2xvbiA9IGZhbHNlOwogICAgIGlmICgqYnVmZmVyID09
ICc6JykgewotICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwogICAgICAgICBzcGxpdEJ5Q29sb24g
PSB0cnVlOwotICAgIH0KKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICB9IGVsc2UgaWYg
KCEoKmJ1ZmZlciA+PSAnMCcgJiYgKmJ1ZmZlciA8PSAnNScpKQorICAgICAgICByZXR1cm4gUGxh
aW5UaW1lKGhvdXIsIDAsIDAsIDAsIDAsIDApOwogCi0gICAgaW50NjRfdCBtaW51dGUgPSAwOwor
ICAgIHVuc2lnbmVkIG1pbnV0ZSA9IDA7CiAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmco
KSA8IDIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgYXV0byBmaXJzdE1pbnV0
ZUNoYXJhY3RlciA9ICpidWZmZXI7CkBAIC0zMDgsMTYgKzMxNiwxNyBAQCBzdGF0aWMgc3RkOjpv
cHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChTdHJpbmdQYXJz
aW5nQnVmZmVyPAogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGJ1ZmZl
ci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gKG5zUGVySG91ciAqIGhvdXIgKyBuc1Blck1pbnV0
ZSAqIG1pbnV0ZSkgKiBmYWN0b3I7CisgICAgICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwgbWlu
dXRlLCAwLCAwLCAwLCAwKTsKIAogICAgIGlmIChzcGxpdEJ5Q29sb24pIHsKICAgICAgICAgaWYg
KCpidWZmZXIgPT0gJzonKQogICAgICAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKICAgICAgICAg
ZWxzZQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgICB9CisgICAgICAgICAg
ICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgMCwgMCwgMCwgMCk7CisgICAgfSBlbHNl
IGlmICghKCpidWZmZXIgPj0gJzAnICYmIChzZWNvbmQ2ME1vZGUgPT0gU2Vjb25kNjBNb2RlOjpB
Y2NlcHQgPyAoKmJ1ZmZlciA8PSAnNicpIDogKCpidWZmZXIgPD0gJzUnKSkpKQorICAgICAgICBy
ZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgMCwgMCwgMCwgMCk7CiAKLSAgICBpbnQ2NF90
IHNlY29uZCA9IDA7CisgICAgdW5zaWduZWQgc2Vjb25kID0gMDsKICAgICBpZiAoYnVmZmVyLmxl
bmd0aFJlbWFpbmluZygpIDwgMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBh
dXRvIGZpcnN0U2Vjb25kQ2hhcmFjdGVyID0gKmJ1ZmZlcjsKQEAgLTMyNywzNCArMzM2LDg0IEBA
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zm
c2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KHNlY29u
ZFNlY29uZENoYXJhY3RlcikpCiAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAg
ICAgICBzZWNvbmQgPSAoc2Vjb25kU2Vjb25kQ2hhcmFjdGVyIC0gJzAnKSArIDEwICogKGZpcnN0
U2Vjb25kQ2hhcmFjdGVyIC0gJzAnKTsKLSAgICAgICAgQVNTRVJUKG1pbnV0ZSA8IDYwKTsKKyAg
ICAgICAgQVNTRVJUKHNlY29uZCA8IDYwKTsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAg
ICB9IGVsc2UgaWYgKHNlY29uZDYwTW9kZSA9PSBTZWNvbmQ2ME1vZGU6OkFjY2VwdCAmJiBmaXJz
dFNlY29uZENoYXJhY3RlciA9PSAnNicpIHsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAg
ICAgICAgYXV0byBzZWNvbmRTZWNvbmRDaGFyYWN0ZXIgPSAqYnVmZmVyOworICAgICAgICBpZiAo
c2Vjb25kU2Vjb25kQ2hhcmFjdGVyICE9ICcwJykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIHNlY29uZCA9IDU5OwogICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwog
ICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgaWYgKGJ1ZmZl
ci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gKG5zUGVySG91ciAqIGhvdXIgKyBuc1Blck1pbnV0
ZSAqIG1pbnV0ZSArIG5zUGVyU2Vjb25kICogc2Vjb25kKSAqIGZhY3RvcjsKKyAgICAgICAgcmV0
dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgMCwgMCwgMCk7CiAKICAgICBpZiAo
KmJ1ZmZlciAhPSAnLicgJiYgKmJ1ZmZlciAhPSAnLCcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIDAs
IDAsIDApOwogICAgIGJ1ZmZlci5hZHZhbmNlKCk7CiAKICAgICB1bnNpZ25lZCBkaWdpdHMgPSAw
OwotICAgIHdoaWxlIChkaWdpdHMgPCBidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgJiYgaXNBU0NJ
SURpZ2l0KGJ1ZmZlcltkaWdpdHNdKSkKLSAgICAgICAgZGlnaXRzKys7Ci0gICAgaWYgKCFkaWdp
dHMgfHwgZGlnaXRzID4gOSkKKyAgICB1bnNpZ25lZCBtYXhDb3VudCA9IHN0ZDo6bWluPHVuc2ln
bmVkPihidWZmZXIubGVuZ3RoUmVtYWluaW5nKCksIDkpOworICAgIGZvciAoOyBkaWdpdHMgPCBt
YXhDb3VudDsgKytkaWdpdHMpIHsKKyAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoYnVmZmVyW2Rp
Z2l0c10pKQorICAgICAgICAgICAgYnJlYWs7CisgICAgfQorICAgIGlmICghZGlnaXRzKQogICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAgICAgVmVjdG9yPExDaGFyLCA5PiBwYWRkZWQo
OSwgJzAnKTsKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgZGlnaXRzOyArK2kpCiAgICAg
ICAgIHBhZGRlZFtpXSA9IGJ1ZmZlcltpXTsKICAgICBidWZmZXIuYWR2YW5jZUJ5KGRpZ2l0cyk7
Ci0gICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKworICAgIHVuc2lnbmVkIG1pbGxpc2Vjb25kID0g
cGFyc2VEZWNpbWFsSW50MzIocGFkZGVkLmRhdGEoKSwgMyk7CisgICAgdW5zaWduZWQgbWljcm9z
ZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQzMihwYWRkZWQuZGF0YSgpICsgMywgMyk7CisgICAgdW5z
aWduZWQgbmFub3NlY29uZCA9IHBhcnNlRGVjaW1hbEludDMyKHBhZGRlZC5kYXRhKCkgKyA2LCAz
KTsKKworICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vj
b25kLCBtaWNyb3NlY29uZCwgbmFub3NlY29uZCk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+CitzdGF0aWMgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25l
TnVtZXJpY1VUQ09mZnNldChTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZm
ZXIpCit7CisgICAgLy8gVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0IDoKKyAgICAvLyAgICAgVGlt
ZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91cgorICAgIC8vICAgICBUaW1l
Wm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZz
ZXRNaW51dGUKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zm
c2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZQorICAgIC8vICAgICBUaW1lWm9uZVVUQ09m
ZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUg
OiBUaW1lWm9uZVVUQ09mZnNldFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0aW9uW29wdF0K
KyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBU
aW1lWm9uZVVUQ09mZnNldE1pbnV0ZSBUaW1lWm9uZVVUQ09mZnNldFNlY29uZCBUaW1lWm9uZVVU
Q09mZnNldEZyYWN0aW9uW29wdF0KKyAgICAvLworICAgIC8vICBUaGlzIGlzIHRoZSBzYW1lIHRv
CisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lU3BlYworICAgIC8vCisgICAg
Ly8gIE1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGFyZSDCsTIzOjU5OjU5Ljk5OTk5OTk5OSA9
IMKxODYzOTk5OTk5OTk5OTlucywgd2hpY2ggY2FuIGJlIHJlcHJlc2VudGVkIGJ5IGludDY0X3Qg
LyBkb3VibGUncyBpbnRlZ2VyIHBhcnQuCisKKyAgICAvLyBzaWduIGFuZCBob3VyLgorICAgIGlm
IChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCAzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworCisgICAgaW50NjRfdCBmYWN0b3IgPSAxOworICAgIGlmICgqYnVmZmVyID09ICcrJykK
KyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICBlbHNlIGlmICgqYnVmZmVyID09ICctJyB8
fCAqYnVmZmVyID09IDB4MjIxMikgeworICAgICAgICBmYWN0b3IgPSAtMTsKKyAgICAgICAgYnVm
ZmVyLmFkdmFuY2UoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KworICAgIGF1dG8gcGxhaW5UaW1lID0gcGFyc2VUaW1lU3BlYyhidWZmZXIsIFNlY29uZDYwTW9k
ZTo6UmVqZWN0KTsKKyAgICBpZiAoIXBsYWluVGltZSkKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKIAotICAgIGludDY0X3QgbWlsbGlzZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQzMihwYWRk
ZWQuZGF0YSgpLCAzKTsKLSAgICBpbnQ2NF90IG1pY3Jvc2Vjb25kID0gcGFyc2VEZWNpbWFsSW50
MzIocGFkZGVkLmRhdGEoKSArIDMsIDMpOwotICAgIGludDY0X3QgbmFub3NlY29uZCA9IHBhcnNl
RGVjaW1hbEludDMyKHBhZGRlZC5kYXRhKCkgKyA2LCAzKTsKKyAgICBpbnQ2NF90IGhvdXIgPSBw
bGFpblRpbWUtPmhvdXIoKTsKKyAgICBpbnQ2NF90IG1pbnV0ZSA9IHBsYWluVGltZS0+bWludXRl
KCk7CisgICAgaW50NjRfdCBzZWNvbmQgPSBwbGFpblRpbWUtPnNlY29uZCgpOworICAgIGludDY0
X3QgbWlsbGlzZWNvbmQgPSBwbGFpblRpbWUtPm1pbGxpc2Vjb25kKCk7CisgICAgaW50NjRfdCBt
aWNyb3NlY29uZCA9IHBsYWluVGltZS0+bWljcm9zZWNvbmQoKTsKKyAgICBpbnQ2NF90IG5hbm9z
ZWNvbmQgPSBwbGFpblRpbWUtPm5hbm9zZWNvbmQoKTsKIAogICAgIHJldHVybiAobnNQZXJIb3Vy
ICogaG91ciArIG5zUGVyTWludXRlICogbWludXRlICsgbnNQZXJTZWNvbmQgKiBzZWNvbmQgKyBu
c1Blck1pbGxpc2Vjb25kICogbWlsbGlzZWNvbmQgKyBuc1Blck1pY3Jvc2Vjb25kICogbWljcm9z
ZWNvbmQgKyBuYW5vc2Vjb25kKSAqIGZhY3RvcjsKIH0KQEAgLTM2Miw3ICs0MjEsMzg1IEBAIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0
KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpv
bmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1ZpZXcgc3RyaW5nKQogewogICAgIHJldHVybiByZWFk
Q2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRp
b25hbDxpbnQ2NF90PiB7Ci0gICAgICAgIHJldHVybiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09m
ZnNldChidWZmZXIpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHBhcnNlVGltZVpvbmVOdW1lcmlj
VVRDT2Zmc2V0KGJ1ZmZlcik7CisgICAgICAgIGlmICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0p
OworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxU
aW1lWm9uZT4gcGFyc2VUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24oU3RyaW5nUGFyc2luZ0J1
ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1UaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICAv
LyBUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24gOgorICAgIC8vICAgICBbIFRpbWVab25lQnJh
Y2tldGVkTmFtZSBdCisgICAgLy8KKyAgICAvLyBUaW1lWm9uZUJyYWNrZXRlZE5hbWUgOgorICAg
IC8vICAgICBUaW1lWm9uZUlBTkFOYW1lCisgICAgLy8gICAgIEV0Yy9HTVQgQVNDSUlTaWduIEhv
dXIKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXROYW1lCisKKyAgICBpZiAoYnVmZmVyLmxl
bmd0aFJlbWFpbmluZygpIDwgMykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IGlmICgqYnVmZmVyICE9ICdbJykKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBi
dWZmZXIuYWR2YW5jZSgpOworCisgICAgc3dpdGNoICgqYnVmZmVyKSB7CisgICAgY2FzZSAnKyc6
CisgICAgY2FzZSAnLSc6CisgICAgY2FzZSAweDIyMTI6IHsKKyAgICAgICAgLy8gVGltZVpvbmVV
VENPZmZzZXROYW1lIGlzIHRoZSBzYW1lIHRvIFRpbWVab25lTnVtZXJpY1VUQ09mZnNldC4KKyAg
ICAgICAgYXV0byBvZmZzZXQgPSBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChidWZmZXIp
OworICAgICAgICBpZiAoIW9mZnNldCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIGlmICgqYnVmZmVyICE9ICddJykKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIHJldHVybiBv
ZmZzZXQudmFsdWUoKTsKKyAgICB9CisgICAgY2FzZSAnRSc6IHsKKyAgICAgICAgLy8gIkV0Yy9H
TVQrMjAiIGFuZCAiXSIgPT4gbGVuZ3RoIGlzIDExLgorICAgICAgICBpZiAoYnVmZmVyLmxlbmd0
aFJlbWFpbmluZygpID49IDExKSB7CisgICAgICAgICAgICBpZiAoYnVmZmVyWzBdID09ICdFJyAm
JiBidWZmZXJbMV0gPT0gJ3QnICYmIGJ1ZmZlclsyXSA9PSAnYycgJiYgYnVmZmVyWzNdID09ICcv
JyAmJiBidWZmZXJbNF0gPT0gJ0cnICYmIGJ1ZmZlcls1XSA9PSAnTScgJiYgYnVmZmVyWzZdID09
ICdUJykgeworICAgICAgICAgICAgICAgIGF1dG8gc2lnbkNoYXJhY3RlciA9IGJ1ZmZlcls3XTsK
KyAgICAgICAgICAgICAgICAvLyBOb3QgaW5jbHVkaW5nIDB4MjIxMiBzaW5jZSBpdCBpcyBBU0NJ
SVNpZ24uCisgICAgICAgICAgICAgICAgaWYgKHNpZ25DaGFyYWN0ZXIgPT0gJysnIHx8IHNpZ25D
aGFyYWN0ZXIgPT0gJy0nKSB7CisgICAgICAgICAgICAgICAgICAgIGludDY0X3QgZmFjdG9yID0g
c2lnbkNoYXJhY3RlciA9PSAnKycgPyAxIDogLTE7CisgICAgICAgICAgICAgICAgICAgIGludDY0
X3QgaG91ciA9IDA7CisgICAgICAgICAgICAgICAgICAgIGF1dG8gZmlyc3RIb3VyQ2hhcmFjdGVy
ID0gYnVmZmVyWzhdOworICAgICAgICAgICAgICAgICAgICBpZiAoZmlyc3RIb3VyQ2hhcmFjdGVy
ID49ICcwJyAmJiBmaXJzdEhvdXJDaGFyYWN0ZXIgPD0gJzInKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBhdXRvIHNlY29uZEhvdXJDaGFyYWN0ZXIgPSBidWZmZXJbOV07CisgICAgICAgICAg
ICAgICAgICAgICAgICBpZiAoaXNBU0NJSURpZ2l0KHNlY29uZEhvdXJDaGFyYWN0ZXIpKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgaG91ciA9IChzZWNvbmRIb3VyQ2hhcmFjdGVyIC0g
JzAnKSArIDEwICogKGZpcnN0SG91ckNoYXJhY3RlciAtICcwJyk7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgaWYgKGhvdXIgPCAyNCAmJiBidWZmZXJbMTBdID09ICddJykgeworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXIuYWR2YW5jZUJ5KDExKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5zUGVySG91ciAqIGhvdXIgKiBmYWN0b3I7
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIEZBTExUSFJPVUdIOworICAgIH0KKyAgICBkZWZhdWx0OiB7
CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsKKyAgICAgICAgZm9yICg7IGluZGV4IDwgYnVm
ZmVyLmxlbmd0aFJlbWFpbmluZygpOyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAoYnVmZmVy
W2luZGV4XSA9PSAnXScpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAg
ICAgaWYgKCFpbmRleCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAg
IFN0cmluZ1ZpZXcgdGltZVpvbmVTdHJpbmcgPSBidWZmZXIuc3RyaW5nVmlld09mQ2hhcmFjdGVy
c1JlbWFpbmluZygpLmxlZnQoaW5kZXgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25l
SUQ+IGlkZW50aWZpZXIgPSBpZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7CisgICAg
ICAgIGlmICghaWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIGJ1ZmZlci5hZHZhbmNlQnkoaW5kZXgpOworICAgICAgICBpZiAoYnVmZmVyLmF0RW5k
KCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoKmJ1ZmZl
ciAhPSAnXScpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBidWZm
ZXIuYWR2YW5jZSgpOworICAgICAgICByZXR1cm4gaWRlbnRpZmllci52YWx1ZSgpOworICAgIH0K
KyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIGNhbkJl
VGltZVpvbmUoQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit7CisgICAgc3dpdGNoIChjaGFyYWN0
ZXIpIHsKKyAgICAvLyBVVENEZXNpZ25hdG9yCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNwcm9kLVVUQ0Rlc2lnbmF0b3IKKyAgICBjYXNlICd6JzoKKyAgICBjYXNl
ICdaJzoKKyAgICAvLyBUaW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICAvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVVVENPZmZzZXRTaWduCisgICAgY2Fz
ZSAnKyc6CisgICAgY2FzZSAnLSc6CisgICAgY2FzZSAweDIyMTI6CisgICAgLy8gVGltZVpvbmVC
cmFja2V0ZWRBbm5vdGF0aW9uCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNwcm9kLVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbgorICAgIGNhc2UgJ1snOgorICAg
ICAgICByZXR1cm4gdHJ1ZTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7Cisg
ICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25h
bDxUaW1lWm9uZT4gcGFyc2VUaW1lWm9uZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5
cGU+JiBidWZmZXIpCit7CisgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgIHN3aXRjaCAoKmJ1ZmZlcikgeworICAgIC8vIFVUQ0Rlc2lnbmF0
b3IKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVVRDRGVz
aWduYXRvcgorICAgIGNhc2UgJ3onOgorICAgIGNhc2UgJ1onOiB7CisgICAgICAgIGJ1ZmZlci5h
ZHZhbmNlKCk7CisgICAgICAgIGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVy
biB1dGNUaW1lWm9uZUlEKCk7CisgICAgICAgIGlmICgqYnVmZmVyID09ICdbJykgeworICAgICAg
ICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uKGJ1
ZmZlcik7CisgICAgICAgICAgICBpZiAoIXRpbWVab25lKQorICAgICAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1cm4gdGltZVpvbmUudmFsdWUoKTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gdXRjVGltZVpvbmVJRCgpOworICAgIH0KKyAgICAvLyBU
aW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3Byb2QtVGltZVpvbmVVVENPZmZzZXRTaWduCisgICAgY2FzZSAnKyc6CisgICAgY2Fz
ZSAnLSc6CisgICAgY2FzZSAweDIyMTI6IHsKKyAgICAgICAgYXV0byBvZmZzZXQgPSBwYXJzZVRp
bWVab25lTnVtZXJpY1VUQ09mZnNldChidWZmZXIpOworICAgICAgICBpZiAoIW9mZnNldCkKKyAg
ICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmIChidWZmZXIuYXRFbmQo
KSkKKyAgICAgICAgICAgIHJldHVybiBvZmZzZXQudmFsdWUoKTsKKyAgICAgICAgaWYgKCpidWZm
ZXIgPT0gJ1snKSB7CisgICAgICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VUaW1lWm9uZUJy
YWNrZXRlZEFubm90YXRpb24oYnVmZmVyKTsKKyAgICAgICAgICAgIGlmICghdGltZVpvbmUpCisg
ICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiB0
aW1lWm9uZS52YWx1ZSgpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBvZmZzZXQudmFsdWUo
KTsKKyAgICB9CisgICAgLy8gVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uCisgICAgLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25lQnJhY2tldGVkQW5u
b3RhdGlvbgorICAgIGNhc2UgJ1snOiB7CisgICAgICAgIGF1dG8gdGltZVpvbmUgPSBwYXJzZVRp
bWVab25lQnJhY2tldGVkQW5ub3RhdGlvbihidWZmZXIpOworICAgICAgICBpZiAoIXRpbWVab25l
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHRpbWVa
b25lLnZhbHVlKCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3Rk
OjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZT4+
PiBwYXJzZVRpbWUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQor
eworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1UaW1lCisg
ICAgLy8gVGltZSA6CisgICAgLy8gICAgIFRpbWVTcGVjIFRpbWVab25lW29wdF0KKyAgICBhdXRv
IHBsYWluVGltZSA9IHBhcnNlVGltZVNwZWMoYnVmZmVyLCBTZWNvbmQ2ME1vZGU6OkFjY2VwdCk7
CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
aWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjp0dXBsZSB7IHBsYWluVGlt
ZS52YWx1ZSgpLCBzdGQ6Om51bGxvcHQgfTsKKyAgICBpZiAoY2FuQmVUaW1lWm9uZSgqYnVmZmVy
KSkgeworICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VUaW1lWm9uZShidWZmZXIpOworICAg
ICAgICBpZiAoIXRpbWVab25lKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpblRpbWUudmFsdWUoKSwgdGltZVpvbmUgfTsK
KyAgICB9CisgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpblRpbWUudmFsdWUoKSwgc3RkOjpu
dWxsb3B0IH07Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2Vj
LXRlbXBvcmFsLWlzb2RheXNpbm1vbnRoCitpbmxpbmUgdW5zaWduZWQgZGF5c0luTW9udGgoaW50
MzJfdCB5ZWFyLCB1bnNpZ25lZCBtb250aCkKK3sKKyAgICBzd2l0Y2ggKG1vbnRoKSB7CisgICAg
Y2FzZSAxOgorICAgIGNhc2UgMzoKKyAgICBjYXNlIDU6CisgICAgY2FzZSA3OgorICAgIGNhc2Ug
ODoKKyAgICBjYXNlIDEwOgorICAgIGNhc2UgMTI6CisgICAgICAgIHJldHVybiAzMTsKKyAgICBj
YXNlIDQ6CisgICAgY2FzZSA2OgorICAgIGNhc2UgOToKKyAgICBjYXNlIDExOgorICAgICAgICBy
ZXR1cm4gMzA7CisgICAgY2FzZSAyOgorICAgICAgICBpZiAoaXNMZWFwWWVhcih5ZWFyKSkKKyAg
ICAgICAgICAgIHJldHVybiAyOTsKKyAgICAgICAgcmV0dXJuIDI4OworICAgIH0KKyAgICByZXR1
cm4gMDsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0aW9u
YWw8UGxhaW5EYXRlPiBwYXJzZURhdGUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBl
PiYgYnVmZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
cHJvZC1EYXRlCisgICAgLy8gRGF0ZSA6CisgICAgLy8gICAgIERhdGVZZWFyIC0gRGF0ZU1vbnRo
IC0gRGF0ZURheQorICAgIC8vICAgICBEYXRlWWVhciBEYXRlTW9udGggRGF0ZURheQorICAgIC8v
CisgICAgLy8gRGF0ZVllYXIgOgorICAgIC8vICAgICBEYXRlRm91ckRpZ2l0WWVhcgorICAgIC8v
ICAgICBEYXRlRXh0ZW5kZWRZZWFyCisgICAgLy8KKyAgICAvLyBEYXRlRm91ckRpZ2l0WWVhciA6
CisgICAgLy8gICAgIERpZ2l0IERpZ2l0IERpZ2l0IERpZ2l0CisgICAgLy8KKyAgICAvLyBEYXRl
RXh0ZW5kZWRZZWFyIDoKKyAgICAvLyAgICAgU2lnbiBEaWdpdCBEaWdpdCBEaWdpdCBEaWdpdCBE
aWdpdCBEaWdpdAorICAgIC8vCisgICAgLy8gRGF0ZU1vbnRoIDoKKyAgICAvLyAgICAgMCBOb256
ZXJvRGlnaXQKKyAgICAvLyAgICAgMTAKKyAgICAvLyAgICAgMTEKKyAgICAvLyAgICAgMTIKKyAg
ICAvLworICAgIC8vIERhdGVEYXkgOgorICAgIC8vICAgICAwIE5vbnplcm9EaWdpdAorICAgIC8v
ICAgICAxIERpZ2l0CisgICAgLy8gICAgIDIgRGlnaXQKKyAgICAvLyAgICAgMzAKKyAgICAvLyAg
ICAgMzEKKworICAgIGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKworICAgIGJvb2wgc2l4RGlnaXRzWWVhciA9IGZhbHNlOworICAgIGludCB5ZWFyRmFj
dG9yID0gMTsKKyAgICBpZiAoKmJ1ZmZlciA9PSAnKycpIHsKKyAgICAgICAgYnVmZmVyLmFkdmFu
Y2UoKTsKKyAgICAgICAgc2l4RGlnaXRzWWVhciA9IHRydWU7CisgICAgfSBlbHNlIGlmICgqYnVm
ZmVyID09ICctJyB8fCAqYnVmZmVyID09IDB4MjIxMikgeworICAgICAgICB5ZWFyRmFjdG9yID0g
LTE7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIHNpeERpZ2l0c1llYXIgPSB0
cnVlOworICAgIH0gZWxzZSBpZiAoIWlzQVNDSUlEaWdpdCgqYnVmZmVyKSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGludDMyX3QgeWVhciA9IDA7CisgICAgaWYgKHNpeERp
Z2l0c1llYXIpIHsKKyAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDYpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBmb3IgKHVuc2lnbmVkIGlu
ZGV4ID0gMDsgaW5kZXggPCA2OyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlE
aWdpdChidWZmZXJbaW5kZXhdKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICB9CisgICAgICAgIHllYXIgPSBwYXJzZURlY2ltYWxJbnQzMihidWZmZXIucG9z
aXRpb24oKSwgNikgKiB5ZWFyRmFjdG9yOworICAgICAgICBidWZmZXIuYWR2YW5jZUJ5KDYpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCA0KQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBp
bmRleCA9IDA7IGluZGV4IDwgNDsgKytpbmRleCkgeworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJ
RGlnaXQoYnVmZmVyW2luZGV4XSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgfQorICAgICAgICB5ZWFyID0gcGFyc2VEZWNpbWFsSW50MzIoYnVmZmVyLnBv
c2l0aW9uKCksIDQpOworICAgICAgICBidWZmZXIuYWR2YW5jZUJ5KDQpOworICAgIH0KKworICAg
IGlmIChidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAg
IGJvb2wgc3BsaXRCeUh5cGhlbiA9IGZhbHNlOworICAgIGlmICgqYnVmZmVyID09ICctJykgewor
ICAgICAgICBzcGxpdEJ5SHlwaGVuID0gdHJ1ZTsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsK
KyAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDUpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0gZWxzZSB7CisgICAgICAgIGlmIChidWZmZXIubGVu
Z3RoUmVtYWluaW5nKCkgPCA0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICB9CisgICAgLy8gV2UgZW5zdXJlZCB0aGF0IGJ1ZmZlciBoYXMgZW5vdWdoIGxlbmd0aCBmb3Ig
bW9udGggYW5kIGRheS4gV2UgZG8gbm90IG5lZWQgdG8gY2hlY2sgbGVuZ3RoLgorCisgICAgdW5z
aWduZWQgbW9udGggPSAwOworICAgIGF1dG8gZmlyc3RNb250aENoYXJhY3RlciA9ICpidWZmZXI7
CisgICAgaWYgKGZpcnN0TW9udGhDaGFyYWN0ZXIgPT0gJzAnIHx8IGZpcnN0TW9udGhDaGFyYWN0
ZXIgPT0gJzEnKSB7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIGF1dG8gc2Vj
b25kTW9udGhDaGFyYWN0ZXIgPSAqYnVmZmVyOworICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChz
ZWNvbmRNb250aENoYXJhY3RlcikpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICBtb250aCA9IChzZWNvbmRNb250aENoYXJhY3RlciAtICcwJykgKyAxMCAqIChmaXJz
dE1vbnRoQ2hhcmFjdGVyIC0gJzAnKTsKKyAgICAgICAgaWYgKCFtb250aCB8fCBtb250aCA+IDEy
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgYnVmZmVyLmFkdmFu
Y2UoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGlm
IChzcGxpdEJ5SHlwaGVuKSB7CisgICAgICAgIGlmICgqYnVmZmVyID09ICctJykKKyAgICAgICAg
ICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgfQorCisgICAgdW5zaWduZWQgZGF5ID0gMDsKKyAgICBhdXRvIGZp
cnN0RGF5Q2hhcmFjdGVyID0gKmJ1ZmZlcjsKKyAgICBpZiAoZmlyc3REYXlDaGFyYWN0ZXIgPj0g
JzAnICYmIGZpcnN0RGF5Q2hhcmFjdGVyIDw9ICczJykgeworICAgICAgICBidWZmZXIuYWR2YW5j
ZSgpOworICAgICAgICBhdXRvIHNlY29uZERheUNoYXJhY3RlciA9ICpidWZmZXI7CisgICAgICAg
IGlmICghaXNBU0NJSURpZ2l0KHNlY29uZERheUNoYXJhY3RlcikpCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgICAgICBkYXkgPSAoc2Vjb25kRGF5Q2hhcmFjdGVyIC0gJzAn
KSArIDEwICogKGZpcnN0RGF5Q2hhcmFjdGVyIC0gJzAnKTsKKyAgICAgICAgaWYgKCFkYXkgfHwg
ZGF5ID4gZGF5c0luTW9udGgoeWVhciwgbW9udGgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICB9IGVsc2UKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIHJldHVybiBQbGFpbkRhdGUoeWVhciwgbW9udGgs
IGRheSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlv
bmFsPHN0ZDo6dHVwbGU8UGxhaW5EYXRlLCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4sIHN0ZDo6
b3B0aW9uYWw8VGltZVpvbmU+Pj4gcGFyc2VEYXRlVGltZShTdHJpbmdQYXJzaW5nQnVmZmVyPENo
YXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNwcm9kLURhdGVUaW1lCisgICAgLy8gRGF0ZVRpbWUgOgorICAgIC8vICAgICBE
YXRlIFRpbWVTcGVjU2VwYXJhdG9yW29wdF0gVGltZVpvbmVbb3B0XQorICAgIC8vCisgICAgLy8g
VGltZVNwZWNTZXBhcmF0b3IgOgorICAgIC8vICAgICBEYXRlVGltZVNlcGFyYXRvciBUaW1lU3Bl
YworICAgIGF1dG8gcGxhaW5EYXRlID0gcGFyc2VEYXRlKGJ1ZmZlcik7CisgICAgaWYgKCFwbGFp
bkRhdGUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKGJ1ZmZlci5hdEVu
ZCgpKQorICAgICAgICByZXR1cm4gc3RkOjp0dXBsZSB7IHBsYWluRGF0ZS52YWx1ZSgpLCBzdGQ6
Om51bGxvcHQsIHN0ZDo6bnVsbG9wdCB9OworCisgICAgaWYgKCpidWZmZXIgPT0gJyAnIHx8ICpi
dWZmZXIgPT0gJ1QnIHx8ICpidWZmZXIgPT0gJ3QnKSB7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNl
KCk7CisgICAgICAgIGF1dG8gcGxhaW5UaW1lQW5kVGltZVpvbmUgPSBwYXJzZVRpbWUoYnVmZmVy
KTsKKyAgICAgICAgaWYgKCFwbGFpblRpbWVBbmRUaW1lWm9uZSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGF1dG8gW3BsYWluVGltZSwgdGltZVpvbmVdID0gcGxh
aW5UaW1lQW5kVGltZVpvbmUudmFsdWUoKTsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBw
bGFpbkRhdGUudmFsdWUoKSwgcGxhaW5UaW1lLCB0aW1lWm9uZSB9OworICAgIH0KKworICAgIGlm
IChjYW5CZVRpbWVab25lKCpidWZmZXIpKSB7CisgICAgICAgIGF1dG8gdGltZVpvbmUgPSBwYXJz
ZVRpbWVab25lKGJ1ZmZlcik7CisgICAgICAgIGlmICghdGltZVpvbmUpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjp0dXBsZSB7IHBsYWluRGF0
ZS52YWx1ZSgpLCBzdGQ6Om51bGxvcHQsIHRpbWVab25lIH07CisgICAgfQorCisgICAgcmV0dXJu
IHN0ZDo6dHVwbGUgeyBwbGFpbkRhdGUudmFsdWUoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxv
cHQgfTsKK30KKworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRp
b25hbDxUaW1lWm9uZT4+PiBwYXJzZVRpbWUoU3RyaW5nVmlldyBzdHJpbmcpCit7CisgICAgcmV0
dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBz
dGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25l
Pj4+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBwYXJzZVRpbWUoYnVmZmVyKTsKKyAgICAgICAg
aWYgKCFidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8c3RkOjp0
dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9uYWw8UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxU
aW1lWm9uZT4+PiBwYXJzZURhdGVUaW1lKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHJldHVy
biByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gc3Rk
OjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRpbWU+
LCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lPj4+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBwYXJz
ZURhdGVUaW1lKGJ1ZmZlcik7CisgICAgICAgIGlmICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0p
OwogfQogCkBAIC0zODIsMTMgKzgxOSwxOSBAQCBTdHJpbmcgZm9ybWF0VGltZVpvbmVPZmZzZXRT
dHJpbmcoaW50NjRfdCBvZmZzZXQpCiAgICAgaWYgKG5hbm9zZWNvbmRzKSB7CiAgICAgICAgIC8v
IFNpbmNlIG5zUGVyU2Vjb25kIGlzIDEwMDAwMDAwMDAsIHN0cmluZ2lmaWVkIG5hbm9zZWNvbmRz
IHRha2VzIGF0IG1vc3QgOSBjaGFyYWN0ZXJzICg5OTk5OTk5OTkpLgogICAgICAgICBhdXRvIGZy
YWN0aW9uID0gV1RGOjpudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwgOT4+KG5h
bm9zZWNvbmRzKTsKLSAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgICAgICB1bnNpZ25l
ZCBwYWRkaW5nTGVuZ3RoID0gOSAtIGZyYWN0aW9uLnNpemUoKTsKLSAgICAgICAgZm9yICg7IGlu
ZGV4IDwgZnJhY3Rpb24uc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgICAgICBpZiAoZnJhY3Rp
b25baW5kZXhdID09ICcwJykKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBmcmFjdGlvbi5zaXpl
KCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZhbGlkTGVuZ3RoOworICAgICAg
ICB3aGlsZSAoaW5kZXgtLSkgeworICAgICAgICAgICAgaWYgKGZyYWN0aW9uW2luZGV4XSAhPSAn
MCcpIHsKKyAgICAgICAgICAgICAgICB2YWxpZExlbmd0aCA9IGluZGV4ICsgMTsKICAgICAgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmcmFjdGlv
bi5yZXNpemUoaW5kZXgpOworICAgICAgICBpZiAodmFsaWRMZW5ndGgpCisgICAgICAgICAgICBm
cmFjdGlvbi5yZXNpemUodmFsaWRMZW5ndGgudmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIGZyYWN0aW9uLmNsZWFyKCk7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG5lZ2F0
aXZlID8gJy0nIDogJysnLCBwYWQoJzAnLCAyLCBob3VycyksICc6JywgcGFkKCcwJywgMiwgbWlu
dXRlcyksICc6JywgcGFkKCcwJywgMiwgc2Vjb25kcyksICcuJywgcGFkKCcwJywgcGFkZGluZ0xl
bmd0aCwgZW1wdHlTdHJpbmcoKSksIGZyYWN0aW9uKTsKICAgICB9CiAgICAgaWYgKHNlY29uZHMp
CkBAIC0zOTYsNSArODM5LDU4IEBAIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNldFN0cmluZyhp
bnQ2NF90IG9mZnNldCkKICAgICByZXR1cm4gbWFrZVN0cmluZyhuZWdhdGl2ZSA/ICctJyA6ICcr
JywgcGFkKCcwJywgMiwgaG91cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpKTsKIH0KIAor
U3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGltZSBwbGFpblRpbWUsIHN0ZDo6dHVw
bGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uKQoreworICAgIGF1dG8gW3ByZWNpc2lv
blR5cGUsIHByZWNpc2lvblZhbHVlXSA9IHByZWNpc2lvbjsKKyAgICBBU1NFUlQocHJlY2lzaW9u
VHlwZSA9PSBQcmVjaXNpb246OkF1dG8gfHwgcHJlY2lzaW9uVmFsdWUgPCAxMCk7CisgICAgaWYg
KHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpNaW51dGUpCisgICAgICAgIHJldHVybiBtYWtl
U3RyaW5nKHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBs
YWluVGltZS5taW51dGUoKSkpOworCisgICAgaW50NjRfdCBmcmFjdGlvbk5hbm9zZWNvbmRzID0g
c3RhdGljX2Nhc3Q8aW50NjRfdD4ocGxhaW5UaW1lLm1pbGxpc2Vjb25kKCkpICogbnNQZXJNaWxs
aXNlY29uZCArIHN0YXRpY19jYXN0PGludDY0X3Q+KHBsYWluVGltZS5taWNyb3NlY29uZCgpKSAq
IG5zUGVyTWljcm9zZWNvbmQgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihwbGFpblRpbWUubmFub3Nl
Y29uZCgpKTsKKyAgICBpZiAocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8pIHsKKyAg
ICAgICAgaWYgKCFmcmFjdGlvbk5hbm9zZWNvbmRzKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VT
dHJpbmcocGFkKCcwJywgMiwgcGxhaW5UaW1lLmhvdXIoKSksICc6JywgcGFkKCcwJywgMiwgcGxh
aW5UaW1lLm1pbnV0ZSgpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUuc2Vjb25kKCkpKTsK
KyAgICAgICAgYXV0byBmcmFjdGlvbiA9IFdURjo6bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0
b3I8TENoYXIsIDk+PihmcmFjdGlvbk5hbm9zZWNvbmRzKTsKKyAgICAgICAgdW5zaWduZWQgcGFk
ZGluZ0xlbmd0aCA9IDkgLSBmcmFjdGlvbi5zaXplKCk7CisgICAgICAgIHVuc2lnbmVkIGluZGV4
ID0gZnJhY3Rpb24uc2l6ZSgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2YWxp
ZExlbmd0aDsKKyAgICAgICAgd2hpbGUgKGluZGV4LS0pIHsKKyAgICAgICAgICAgIGlmIChmcmFj
dGlvbltpbmRleF0gIT0gJzAnKSB7CisgICAgICAgICAgICAgICAgdmFsaWRMZW5ndGggPSBpbmRl
eCArIDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgaWYgKHZhbGlkTGVuZ3RoKQorICAgICAgICAgICAgZnJhY3Rpb24ucmVzaXplKHZh
bGlkTGVuZ3RoLnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmcmFjdGlvbi5j
bGVhcigpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBwbGFpblRpbWUu
aG91cigpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUubWludXRlKCkpLCAnOicsIHBhZCgn
MCcsIDIsIHBsYWluVGltZS5zZWNvbmQoKSksICcuJywgcGFkKCcwJywgcGFkZGluZ0xlbmd0aCwg
ZW1wdHlTdHJpbmcoKSksIGZyYWN0aW9uKTsKKyAgICB9CisgICAgaWYgKCFwcmVjaXNpb25WYWx1
ZSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgMiwgcGxhaW5UaW1lLmhvdXIo
KSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLm1pbnV0ZSgpKSwgJzonLCBwYWQoJzAnLCAy
LCBwbGFpblRpbWUuc2Vjb25kKCkpKTsKKyAgICBhdXRvIGZyYWN0aW9uID0gV1RGOjpudW1iZXJU
b1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwgOT4+KGZyYWN0aW9uTmFub3NlY29uZHMpOwor
ICAgIHVuc2lnbmVkIHBhZGRpbmdMZW5ndGggPSA5IC0gZnJhY3Rpb24uc2l6ZSgpOworICAgIHBh
ZGRpbmdMZW5ndGggPSBzdGQ6Om1pbihwYWRkaW5nTGVuZ3RoLCBwcmVjaXNpb25WYWx1ZSk7Cisg
ICAgcHJlY2lzaW9uVmFsdWUgLT0gcGFkZGluZ0xlbmd0aDsKKyAgICBmcmFjdGlvbi5yZXNpemUo
cHJlY2lzaW9uVmFsdWUpOworICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBsYWlu
VGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSksICc6Jywg
cGFkKCcwJywgMiwgcGxhaW5UaW1lLnNlY29uZCgpKSwgJy4nLCBwYWQoJzAnLCBwYWRkaW5nTGVu
Z3RoLCBlbXB0eVN0cmluZygpKSwgZnJhY3Rpb24pOworfQorCisvLyBJc1ZhbGlkRHVyYXRpb24g
KCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1p
bGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcyApCisvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZHVyYXRpb24KK2Jvb2wg
aXNWYWxpZER1cmF0aW9uKGNvbnN0IER1cmF0aW9uJiBkdXJhdGlvbikKK3sKKyAgICBpbnQgc2ln
biA9IDA7CisgICAgZm9yIChhdXRvIHZhbHVlIDogZHVyYXRpb24pIHsKKyAgICAgICAgaWYgKCFz
dGQ6OmlzZmluaXRlKHZhbHVlKSB8fCAodmFsdWUgPCAwICYmIHNpZ24gPiAwKSB8fCAodmFsdWUg
PiAwICYmIHNpZ24gPCAwKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBp
ZiAoIXNpZ24gJiYgdmFsdWUpCisgICAgICAgICAgICBzaWduID0gdmFsdWUgPiAwID8gMSA6IC0x
OworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBJU084NjAx
CiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0lTTzg2MDEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEu
aAppbmRleCA2NzY4OWQxYzI0NWFmZWUyYWMyNjk1OWMyOTcwZGQ0OTYzYWUzMDAyLi42YTQ3MjNl
MWUxZGFmNjNiMzFkY2Y2OWQyMjI2MmM0YTg5MTc0M2QzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSVNPODYwMS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykg
MjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUs
MzIgKzI2LDEyOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkludGxPYmplY3QuaCIK
ICNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFj
ZSBJU084NjAxIHsKIAotc3RydWN0IER1cmF0aW9uIHsKK2NsYXNzIER1cmF0aW9uIHsKKyAgICBX
VEZfTUFLRV9GQVNUX0FMTE9DQVRFRChEdXJhdGlvbik7CitwdWJsaWM6CiAgICAgdXNpbmcgY29u
c3RfaXRlcmF0b3IgPSBzdGQ6OmFycmF5PGRvdWJsZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPjo6
Y29uc3RfaXRlcmF0b3I7CiAKKyAgICBEdXJhdGlvbigpID0gZGVmYXVsdDsKKyAgICBEdXJhdGlv
bihkb3VibGUgeWVhcnMsIGRvdWJsZSBtb250aHMsIGRvdWJsZSB3ZWVrcywgZG91YmxlIGRheXMs
IGRvdWJsZSBob3VycywgZG91YmxlIG1pbnV0ZXMsIGRvdWJsZSBzZWNvbmRzLCBkb3VibGUgbWls
bGlzZWNvbmRzLCBkb3VibGUgbWljcm9zZWNvbmRzLCBkb3VibGUgbmFub3NlY29uZHMpCisgICAg
ICAgIDogbV9kYXRhIHsKKyAgICAgICAgICAgIHllYXJzLAorICAgICAgICAgICAgbW9udGhzLAor
ICAgICAgICAgICAgd2Vla3MsCisgICAgICAgICAgICBkYXlzLAorICAgICAgICAgICAgaG91cnMs
CisgICAgICAgICAgICBtaW51dGVzLAorICAgICAgICAgICAgc2Vjb25kcywKKyAgICAgICAgICAg
IG1pbGxpc2Vjb25kcywKKyAgICAgICAgICAgIG1pY3Jvc2Vjb25kcywKKyAgICAgICAgICAgIG5h
bm9zZWNvbmRzLAorICAgICAgICB9CisgICAgeyB9CisKICNkZWZpbmUgSlNDX0RFRklORV9JU084
NjAxX0RVUkFUSU9OX0ZJRUxEKG5hbWUsIGNhcGl0YWxpemVkTmFtZSkgXAotICAgIGRvdWJsZSBu
YW1lIyNzKCkgY29uc3QgeyByZXR1cm4gZGF0YVtzdGF0aWNfY2FzdDx1aW50OF90PihUZW1wb3Jh
bFVuaXQ6OmNhcGl0YWxpemVkTmFtZSldOyB9IFwKLSAgICB2b2lkIHNldCMjY2FwaXRhbGl6ZWRO
YW1lIyNzKGRvdWJsZSB2YWx1ZSkgeyBkYXRhW3N0YXRpY19jYXN0PHVpbnQ4X3Q+KFRlbXBvcmFs
VW5pdDo6Y2FwaXRhbGl6ZWROYW1lKV0gPSB2YWx1ZTsgfQorICAgIGRvdWJsZSBuYW1lIyNzKCkg
Y29uc3QgeyByZXR1cm4gbV9kYXRhW3N0YXRpY19jYXN0PHVpbnQ4X3Q+KFRlbXBvcmFsVW5pdDo6
Y2FwaXRhbGl6ZWROYW1lKV07IH0gXAorICAgIHZvaWQgc2V0IyNjYXBpdGFsaXplZE5hbWUjI3Mo
ZG91YmxlIHZhbHVlKSB7IG1fZGF0YVtzdGF0aWNfY2FzdDx1aW50OF90PihUZW1wb3JhbFVuaXQ6
OmNhcGl0YWxpemVkTmFtZSldID0gdmFsdWU7IH0KICAgICBKU0NfVEVNUE9SQUxfVU5JVFMoSlND
X0RFRklORV9JU084NjAxX0RVUkFUSU9OX0ZJRUxEKTsKICN1bmRlZiBKU0NfREVGSU5FX0lTTzg2
MDFfRFVSQVRJT05fRklFTEQKIAotICAgIGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyBy
ZXR1cm4gZGF0YVtpXTsgfQotICAgIGNvbnN0IGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkg
Y29uc3QgeyByZXR1cm4gZGF0YVtpXTsgfQotICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29u
c3QgeyByZXR1cm4gZGF0YS5iZWdpbigpOyB9Ci0gICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29u
c3QgeyByZXR1cm4gZGF0YS5lbmQoKTsgfQotICAgIHZvaWQgY2xlYXIoKSB7IGRhdGEuZmlsbCgw
KTsgfQorICAgIGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gbV9kYXRhW2ld
OyB9CisgICAgY29uc3QgZG91YmxlJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVy
biBtX2RhdGFbaV07IH0KKyAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJu
IG1fZGF0YS5iZWdpbigpOyB9CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1
cm4gbV9kYXRhLmVuZCgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmZpbGwoMCk7IH0K
KworICAgIER1cmF0aW9uIG9wZXJhdG9yLSgpIGNvbnN0CisgICAgeworICAgICAgICBEdXJhdGlv
biByZXN1bHQoKnRoaXMpOworICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogcmVzdWx0Lm1fZGF0
YSkKKyAgICAgICAgICAgIHZhbHVlID0gLXZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0Owor
ICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmFycmF5PGRvdWJsZSwgbnVtYmVyT2ZUZW1wb3Jh
bFVuaXRzPiBtX2RhdGEgeyB9OworfTsKKworY2xhc3MgUGxhaW5UaW1lIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRChQbGFpblRpbWUpOworcHVibGljOgorICAgIFBsYWluVGltZSgpID0g
ZGVmYXVsdDsKKyAgICBQbGFpblRpbWUodW5zaWduZWQgaG91ciwgdW5zaWduZWQgbWludXRlLCB1
bnNpZ25lZCBzZWNvbmQsIHVuc2lnbmVkIG1pbGxpc2Vjb25kLCB1bnNpZ25lZCBtaWNyb3NlY29u
ZCwgdW5zaWduZWQgbmFub3NlY29uZCkKKyAgICAgICAgOiBtX2hvdXIoaG91cikKKyAgICAgICAg
LCBtX21pbnV0ZShtaW51dGUpCisgICAgICAgICwgbV9zZWNvbmQoc2Vjb25kKQorICAgICAgICAs
IG1fbWlsbGlzZWNvbmQobWlsbGlzZWNvbmQpCisgICAgICAgICwgbV9taWNyb3NlY29uZChtaWNy
b3NlY29uZCkKKyAgICAgICAgLCBtX25hbm9zZWNvbmQobmFub3NlY29uZCkKKyAgICB7IH0KKwor
I2RlZmluZSBKU0NfREVGSU5FX0lTTzg2MDFfUExBSU5fVElNRV9GSUVMRChuYW1lLCBjYXBpdGFs
aXplZE5hbWUpIFwKKyAgICB1bnNpZ25lZCBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7
IH0KKyAgICBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhKU0NfREVGSU5FX0lTTzg2MDFf
UExBSU5fVElNRV9GSUVMRCk7CisjdW5kZWYgSlNDX0RFRklORV9JU084NjAxX0RVUkFUSU9OX0ZJ
RUxECisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KFBsYWluVGltZSBsaHMsIFBsYWluVGlt
ZSByaHMpCisgICAgeworICAgICAgICByZXR1cm4gbGhzLm1faG91ciA9PSByaHMubV9ob3VyCisg
ICAgICAgICAgICAmJiBsaHMubV9taW51dGUgPT0gcmhzLm1fbWludXRlCisgICAgICAgICAgICAm
JiBsaHMubV9zZWNvbmQgPT0gcmhzLm1fc2Vjb25kCisgICAgICAgICAgICAmJiBsaHMubV9taWxs
aXNlY29uZCA9PSByaHMubV9taWxsaXNlY29uZAorICAgICAgICAgICAgJiYgbGhzLm1fbWljcm9z
ZWNvbmQgPT0gcmhzLm1fbWljcm9zZWNvbmQKKyAgICAgICAgICAgICYmIGxocy5tX25hbm9zZWNv
bmQgPT0gcmhzLm1fbmFub3NlY29uZDsKKyAgICB9CiAKLSAgICBzdGQ6OmFycmF5PGRvdWJsZSwg
bnVtYmVyT2ZUZW1wb3JhbFVuaXRzPiBkYXRhIHsgfTsKK3ByaXZhdGU6CisgICAgdWludDhfdCBt
X2hvdXIgeyAwIH07CisgICAgdWludDhfdCBtX21pbnV0ZSB7IDAgfTsKKyAgICB1aW50OF90IG1f
c2Vjb25kIHsgMCB9OworICAgIHVpbnQxNl90IG1fbWlsbGlzZWNvbmQgeyAwIH07CisgICAgdWlu
dDE2X3QgbV9taWNyb3NlY29uZCB7IDAgfTsKKyAgICB1aW50MTZfdCBtX25hbm9zZWNvbmQgeyAw
IH07CiB9OwogCisvLyBOb3RlIHRoYXQgUGxhaW5EYXRlIGRvZXMgbm90IGluY2x1ZGUgd2VlayB1
bml0LgorLy8geWVhciBjYW4gYmUgbmVnYXRpdmUuIEFuZCBtb250aCBhbmQgZGF5IHN0YXJ0cyB3
aXRoIDEuCitjbGFzcyBQbGFpbkRhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFBs
YWluRGF0ZSk7CitwdWJsaWM6CisgICAgUGxhaW5EYXRlKCkgPSBkZWZhdWx0OworICAgIFBsYWlu
RGF0ZShpbnQzMl90IHllYXIsIHVuc2lnbmVkIG1vbnRoLCB1bnNpZ25lZCBkYXkpCisgICAgICAg
IDogbV95ZWFyKHllYXIpCisgICAgICAgICwgbV9tb250aChtb250aCkKKyAgICAgICAgLCBtX2Rh
eShkYXkpCisgICAgeworICAgIH0KKworICAgIGludDMyX3QgeWVhcigpIGNvbnN0IHsgcmV0dXJu
IG1feWVhcjsgfQorICAgIHVpbnQ4X3QgbW9udGgoKSBjb25zdCB7IHJldHVybiBtX21vbnRoOyB9
CisgICAgdWludDhfdCBkYXkoKSBjb25zdCB7IHJldHVybiBtX2RheTsgfQorCitwcml2YXRlOgor
ICAgIGludDMyX3QgbV95ZWFyIHsgMCB9OworICAgIHVpbnQ4X3QgbV9tb250aCB7IDEgfTsKKyAg
ICB1aW50OF90IG1fZGF5IHsgMSB9OworfTsKKwordXNpbmcgVGltZVpvbmUgPSBWYXJpYW50PFRp
bWVab25lSUQsIGludDY0X3Q+OworCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3N1cC1pc3ZhbGlkdGltZXpvbmVuYW1lCitzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlk
Rm9yVGltZVpvbmVOYW1lKFN0cmluZ1ZpZXcpOwogc3RkOjpvcHRpb25hbDxEdXJhdGlvbj4gcGFy
c2VEdXJhdGlvbihTdHJpbmdWaWV3KTsKIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1l
Wm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nVmlldyk7CitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVw
bGU8UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lPj4+IHBhcnNlVGltZShTdHJpbmdW
aWV3KTsKK3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9uYWw8
UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZT4+PiBwYXJzZURhdGVUaW1lKFN0cmlu
Z1ZpZXcpOwogU3RyaW5nIGZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKGludDY0X3QpOworU3Ry
aW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGltZSwgc3RkOjp0dXBsZTxQcmVjaXNpb24s
IHVuc2lnbmVkPiBwcmVjaXNpb24pOworCitib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJh
dGlvbiYpOwogCiB9IC8vIG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggOGQ4ZTk2
ZTc3NTVkNThhYjg0MmUzNjBjZmFmYjE5ZDAwZmUyNjI3MC4uNzk3NTliYzVmYTQ0ZmUyOTc3MjYw
NWY1NmE1Y2E5YjA4OTU2MzFjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SW50bE9iamVjdC5jcHAKQEAgLTE4MzksNiArMTgzOSwyMyBAQCBjb25zdCBWZWN0b3I8U3RyaW5n
PiYgaW50bEF2YWlsYWJsZVRpbWVab25lcygpCiAgICAgcmV0dXJuIGF2YWlsYWJsZVRpbWVab25l
czsKIH0KIAorVGltZVpvbmVJRCB1dGNUaW1lWm9uZUlEU3RvcmFnZSB7IHN0ZDo6bnVtZXJpY19s
aW1pdHM8VGltZVpvbmVJRD46Om1heCgpIH07CitUaW1lWm9uZUlEIHV0Y1RpbWVab25lSURTbG93
KCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7CisgICAgc3Rk
OjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7CisgICAgICAgIGNvbnN0IGF1dG8mIHRp
bWVab25lcyA9IGludGxBdmFpbGFibGVUaW1lWm9uZXMoKTsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgdGltZVpvbmVzLnNpemUoKTsgKytpbmRleCkgeworICAgICAg
ICAgICAgaWYgKHRpbWVab25lc1tpbmRleF0gPT0gIlVUQyJfcykgeworICAgICAgICAgICAgICAg
IHV0Y1RpbWVab25lSURTdG9yYWdlID0gaW5kZXg7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFD
SEVEKCk7CisgICAgfSk7CisgICAgcmV0dXJuIHV0Y1RpbWVab25lSURTdG9yYWdlOworfQorCiAv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1lbnVtZXJhdGlvbi8jc2VjLWF2YWlsYWJs
ZXRpbWV6b25lcwogc3RhdGljIEpTQXJyYXkqIGF2YWlsYWJsZVRpbWVab25lcyhKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5oCmluZGV4IDk2ZDIxODU1YzljYTZmM2UzMTk2Yjc0ZWEwMmQwZWQ1M2QzOWMxMzAu
LmIzZTE1ZDMwYmE5M2I1YjIwNWI1NzNlMDg5ZWJiYmYzOWNlMjExM2IgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTExNyw2ICsxMTcsMTYgQEAgaW5s
aW5lIENhbGVuZGFySUQgaXNvODYwMUNhbGVuZGFySUQoKQogdXNpbmcgVGltZVpvbmVJRCA9IHVu
c2lnbmVkOwogY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGxBdmFpbGFibGVUaW1lWm9uZXMoKTsK
IAorZXh0ZXJuIFRpbWVab25lSUQgdXRjVGltZVpvbmVJRFN0b3JhZ2U7CitUaW1lWm9uZUlEIHV0
Y1RpbWVab25lSURTbG93KCk7CitpbmxpbmUgQ2FsZW5kYXJJRCB1dGNUaW1lWm9uZUlEKCkKK3sK
KyAgICB1bnNpZ25lZCB2YWx1ZSA9IHV0Y1RpbWVab25lSURTdG9yYWdlOworICAgIGlmICh2YWx1
ZSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRpbWVab25lSUQ+OjptYXgoKSkKKyAgICAgICAgcmV0
dXJuIHV0Y1RpbWVab25lSURTbG93KCk7CisgICAgcmV0dXJuIHZhbHVlOworfQorCiBUcmlTdGF0
ZSBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zLCBQ
cm9wZXJ0eU5hbWUpOwogU3RyaW5nIGludGxTdHJpbmdPcHRpb24oSlNHbG9iYWxPYmplY3QqLCBK
U09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1lLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8Y29u
c3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91bmQsIGNvbnN0IGNoYXIqIGZhbGxi
YWNrKTsKIHVuc2lnbmVkIGludGxOdW1iZXJPcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCogb3B0aW9ucywgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhp
bXVtLCB1bnNpZ25lZCBmYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYjJmZGY0NjQzNmU4Nzc2MDQ5MDY0OGFmZDAx
NDFjODIyMzYxNDk1MS4uNmRhNDU4ODM0MWEwMTZlOTFhYjkxMzY5MDM2ZjBjOTZkYTQxNGZiNSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cApAQCAtMjA2LDYgKzIwNiw4IEBACiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgogI2lu
Y2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9i
amVjdC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAj
aW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlZNVHJhcHNJ
bmxpbmVzLmgiCkBAIC0xMjMyLDYgKzEyMzQsMTMgQEAgY2FwaXRhbE5hbWUgIyMgQ29uc3RydWN0
b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2FwaXRhbE5hbWUK
ICAgICAgICAgICAgICAgICBpbml0LnNldChUZW1wb3JhbER1cmF0aW9uOjpjcmVhdGVTdHJ1Y3R1
cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBkdXJhdGlvblByb3RvdHlwZSkpOwogICAgICAgICAg
ICAgfSk7CiAKKyAgICAgICAgbV9wbGFpblRpbWVTdHJ1Y3R1cmUuaW5pdExhdGVyKAorICAgICAg
ICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKKyAgICAgICAg
ICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2Jq
ZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAgICAgVGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGUqIHBsYWluVGltZVByb3RvdHlwZSA9IFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpj
cmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5vYmpl
Y3RQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBvcmFsUGxhaW5U
aW1lOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBwbGFpblRpbWVQcm90
b3R5cGUpKTsKKyAgICAgICAgICAgIH0pOworCiAgICAgICAgIG1fdGltZVpvbmVTdHJ1Y3R1cmUu
aW5pdExhdGVyKAogICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4m
IGluaXQpIHsKICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0yMTE5LDYgKzIxMjgsNyBA
QCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZp
c2l0b3ImIHZpc2l0b3IpCiAKICAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyU3RydWN0dXJlLnZp
c2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZHVyYXRpb25TdHJ1Y3R1cmUudmlzaXQo
dmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9wbGFpblRpbWVTdHJ1Y3R1cmUudmlzaXQodmlz
aXRvcik7CiAgICAgdGhpc09iamVjdC0+bV90aW1lWm9uZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9y
KTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbEdldHRlckZ1bmN0aW9u
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2Jq
ZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCmlu
ZGV4IGRlYjMzZGJkMTAzMDgzYTE4ZjQwYmE3YWRjNTY5NTI2MDE0OTdkMjkuLjEyOGIzOTkxMGRk
ODA1N2Y3YWFiYjU5Nzc3Y2E2ODBlOWRmNjE4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzI2LDYgKzMyNiw3IEBAIGNsYXNzIEpT
R2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogCiAgICAg
TGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2FsZW5kYXJTdHJ1Y3R1
cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fZHVyYXRp
b25TdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+
IG1fcGxhaW5UaW1lU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwg
U3RydWN0dXJlPiBtX3RpbWVab25lU3RydWN0dXJlOwogCiAgICAgV3JpdGVCYXJyaWVyPE51bGxH
ZXR0ZXJGdW5jdGlvbj4gbV9udWxsR2V0dGVyRnVuY3Rpb247CkBAIC04NzYsNiArODc3LDcgQEAg
Y2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7
CiAKICAgICBTdHJ1Y3R1cmUqIGNhbGVuZGFyU3RydWN0dXJlKCkgeyByZXR1cm4gbV9jYWxlbmRh
clN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGR1cmF0aW9uU3RydWN0dXJl
KCkgeyByZXR1cm4gbV9kdXJhdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAgICBTdHJ1Y3R1
cmUqIHBsYWluVGltZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGxhaW5UaW1lU3RydWN0dXJlLmdl
dCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogdGltZVpvbmVTdHJ1Y3R1cmUoKSB7IHJldHVybiBt
X3RpbWVab25lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogCiAgICAgSlNfRVhQT1JUX1BSSVZBVEUg
dm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rv
ci5jcHAKaW5kZXggYTBmYWEzZmZjZDA0NDQ3NzJjNDFhNGNiNzM1NmEyZDY4NjcwYTY5Yy4uNjUz
MGRkMDFlYjY3YzUzY2Q4ZTllMzA4ODk5MTA1NjZlOGNiNTdmNCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3Ry
dWN0b3IuY3BwCkBAIC03Myw2ICs3Myw3IEBAIHZvaWQgVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5CiB7CiAg
ICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJDYWxlbmRhciJfcywgUHJvcGVydHlBZGRp
dGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRo
b3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCB0ZW1wb3JhbENh
bGVuZGFyUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0
dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAg
dGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0s
IHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25l
ZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbENhbGVuZGFyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAppbmRleCAwZGEyNGE1MjU1N2ViY2Rl
NThmMzVkZTE4ZDc2YzJlNzJiNjI2ZjhkLi4xYzEwMDU4NzIyMWUzMmM3NjNkNDNiZTc2ODIxZjBi
ZmVlYjNlYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uLmNwcApAQCAtNzIsMjIgKzcyLDYgQEAgdm9pZCBUZW1wb3JhbER1cmF0aW9u
OjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkp
KTsKIH0KIAotLy8gSXNWYWxpZER1cmF0aW9uICggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMs
IGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcywgbmFu
b3NlY29uZHMgKQotLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtaXN2YWxpZGR1cmF0aW9uCi1zdGF0aWMgYm9vbCBpc1ZhbGlkRHVyYXRpb24oY29uc3Qg
VGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMpCi17Ci0gICAgaW50
IHNpZ24gPSAwOwotICAgIGZvciAoYXV0byB2YWx1ZSA6IHN1YmR1cmF0aW9ucykgewotICAgICAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpIHx8ICh2YWx1ZSA8IDAgJiYgc2lnbiA+IDApIHx8
ICh2YWx1ZSA+IDAgJiYgc2lnbiA8IDApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0g
ICAgICAgIGlmICghc2lnbiAmJiB2YWx1ZSkKLSAgICAgICAgICAgIHNpZ24gPSB2YWx1ZSA+IDAg
PyAxIDogLTE7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIC8vIENyZWF0ZVRlbXBv
cmFsRHVyYXRpb24gKCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMs
IHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcyBbICwgbmV3
VGFyZ2V0IF0gKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtY3JlYXRldGVtcG9yYWxkdXJhdGlvbgogVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxE
dXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dWJkdXJhdGlvbnMmJiBzdWJkdXJhdGlvbnMsIFN0cnVjdHVyZSogc3RydWN0dXJlKQpAQCAtOTUs
NyArNzksNyBAQCBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJ
ZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAK
LSAgICBpZiAoIWlzVmFsaWREdXJhdGlvbihzdWJkdXJhdGlvbnMpKSB7CisgICAgaWYgKCFJU084
NjAxOjppc1ZhbGlkRHVyYXRpb24oc3ViZHVyYXRpb25zKSkgewogICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMg
bXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7CiAgICAgICAgIHJldHVy
biB7IH07CiAgICAgfQpAQCAtMTA1LDE3ICs4OSwxNyBAQCBUZW1wb3JhbER1cmF0aW9uKiBUZW1w
b3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
YwogCiAvLyBUb1RlbXBvcmFsRHVyYXRpb25SZWNvcmQgKCB0ZW1wb3JhbER1cmF0aW9uTGlrZSAp
CiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10b3Rl
bXBvcmFsZHVyYXRpb25yZWNvcmQKLVRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1w
b3JhbER1cmF0aW9uOjpmcm9tT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
T2JqZWN0KiBkdXJhdGlvbkxpa2UpCitUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMgVGVt
cG9yYWxEdXJhdGlvbjo6ZnJvbU5vbkR1cmF0aW9uVmFsdWUoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBkdXJhdGlvbkxpa2UpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2Jq
ZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAot
ICAgIEFTU0VSVCghZHVyYXRpb25MaWtlLT5pbmhlcml0czxUZW1wb3JhbER1cmF0aW9uPih2bSkp
OworICAgIEFTU0VSVCghZHVyYXRpb25MaWtlLmluaGVyaXRzPFRlbXBvcmFsRHVyYXRpb24+KHZt
KSk7CiAKICAgICBTdWJkdXJhdGlvbnMgcmVzdWx0OwogICAgIGF1dG8gaGFzUmVsZXZhbnRQcm9w
ZXJ0eSA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVyT2ZUZW1wb3Jh
bFVuaXRzOyBpKyspIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0aW9uTGlrZS0+Z2V0
KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKHZtLCBpKSk7CisgICAgICAgIEpTVmFsdWUgdmFs
dWUgPSBkdXJhdGlvbkxpa2UuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKHZtLCBpKSk7
CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAgICAgaWYg
KHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE1Miw3ICsxMzYsNyBAQCBUZW1wb3JhbER1cmF0
aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0b0R1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVgogICAgICAgICByZXR1cm4ganNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPihpdGVt
VmFsdWUpOwogCiAgICAgaWYgKGl0ZW1WYWx1ZS5pc09iamVjdCgpKSB7Ci0gICAgICAgIGF1dG8g
c3ViZHVyYXRpb25zID0gZnJvbU9iamVjdChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KGl0ZW1WYWx1
ZSkpOworICAgICAgICBhdXRvIHN1YmR1cmF0aW9ucyA9IGZyb21Ob25EdXJhdGlvblZhbHVlKGds
b2JhbE9iamVjdCwgaXRlbVZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgbnVsbHB0cik7CiAKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBUZW1wb3Jh
bER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShzdWJkdXJh
dGlvbnMpKSk7CkBAIC0xNzAsNiArMTU0LDE2IEBAIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFs
RHVyYXRpb246OnRvRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWCiAg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJ
ZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShwYXJzZWRTdWJkdXJhdGlvbnMudmFsdWUoKSkp
KTsKIH0KIAorVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zIFRlbXBvcmFsRHVyYXRpb246
OnRvRHVyYXRpb25SZWNvcmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0
ZW1wb3JhbER1cmF0aW9uTGlrZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisKKyAgICBpZiAodGVtcG9yYWxEdXJhdGlvbkxpa2UuaW5oZXJpdHM8VGVtcG9yYWxEdXJhdGlv
bj4odm0pKQorICAgICAgICByZXR1cm4ganNDYXN0PFRlbXBvcmFsRHVyYXRpb24qPih0ZW1wb3Jh
bER1cmF0aW9uTGlrZSktPnN1YmR1cmF0aW9ucygpOworCisgICAgcmV0dXJuIGZyb21Ob25EdXJh
dGlvblZhbHVlKGdsb2JhbE9iamVjdCwgdGVtcG9yYWxEdXJhdGlvbkxpa2UpOworfQorCiBUZW1w
b3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKQEAgLTUzMCw3ICs1MjQsMTAgQEAgU3RyaW5nIFRlbXBvcmFsRHVyYXRpb246OnRv
U3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1YKIAog
ICAgIFByZWNpc2lvbkRhdGEgZGF0YSA9IHNlY29uZHNTdHJpbmdQcmVjaXNpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwotICAg
IEFTU0VSVChkYXRhLnVuaXQgPj0gVGVtcG9yYWxVbml0OjpTZWNvbmQpOworICAgIGlmIChkYXRh
LnVuaXQgPCBUZW1wb3JhbFVuaXQ6OlNlY29uZCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBtdXN0IG5vdCBiZSBcIm1pbnV0ZVwi
Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CiAKICAgICBhdXRvIHJvdW5kaW5nTW9k
ZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnBy
b3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwKICAgICAgICAgeyB7ICJjZWlsIl9zLCBSb3VuZGlu
Z01vZGU6OkNlaWwgfSwgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwgeyAidHJ1
bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwgeyAiaGFsZkV4cGFuZCJfcywgUm91bmRpbmdN
b2RlOjpIYWxmRXhwYW5kIH0gfSwKQEAgLTUzOCw3ICs1MzUsNyBAQCBTdHJpbmcgVGVtcG9yYWxE
dXJhdGlvbjo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBv
cHRpb25zVgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICAvLyBO
byBuZWVkIHRvIG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUgZ2l2ZW4gZXhwbGljaXQgZGVm
YXVsdHMuCi0gICAgaWYgKCFkYXRhLnByZWNpc2lvbiAmJiByb3VuZGluZ01vZGUgPT0gUm91bmRp
bmdNb2RlOjpUcnVuYykKKyAgICBpZiAoc3RkOjpnZXQ8MD4oZGF0YS5wcmVjaXNpb24pID09IFBy
ZWNpc2lvbjo6QXV0byAmJiByb3VuZGluZ01vZGUgPT0gUm91bmRpbmdNb2RlOjpUcnVuYykKICAg
ICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CiAKICAgICBTdWJkdXJhdGlvbnMgbmV3U3ViZHVyYXRp
b25zID0gbV9zdWJkdXJhdGlvbnM7CkBAIC01NDgsOSArNTQ1LDEwIEBAIFN0cmluZyBUZW1wb3Jh
bER1cmF0aW9uOjp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IG9wdGlvbnNWCiAKIC8vIFRlbXBvcmFsRHVyYXRpb25Ub1N0cmluZyAoIHllYXJzLCBtb250aHMs
IHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzLCBtaWNy
b3NlY29uZHMsIG5hbm9zZWNvbmRzLCBwcmVjaXNpb24gKQogLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdGVtcG9yYWxkdXJhdGlvbnRvc3RyaW5nCi1T
dHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoY29uc3QgVGVtcG9yYWxEdXJhdGlvbjo6
U3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHByZWNp
c2lvbikKK1N0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhjb25zdCBUZW1wb3JhbER1
cmF0aW9uOjpTdWJkdXJhdGlvbnMmIHN1YmR1cmF0aW9ucywgc3RkOjp0dXBsZTxQcmVjaXNpb24s
IHVuc2lnbmVkPiBwcmVjaXNpb24pCiB7Ci0gICAgQVNTRVJUKCFwcmVjaXNpb24gfHwgcHJlY2lz
aW9uLnZhbHVlKCkgPCAxMCk7CisgICAgYXV0byBbcHJlY2lzaW9uVHlwZSwgcHJlY2lzaW9uVmFs
dWVdID0gcHJlY2lzaW9uOworICAgIEFTU0VSVChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6
QXV0byB8fCBwcmVjaXNpb25WYWx1ZSA8IDEwKTsKIAogICAgIGF1dG8gYmFsYW5jZWRNaWNyb3Nl
Y29uZHMgPSBzdWJkdXJhdGlvbnMubWljcm9zZWNvbmRzKCkgKyBzdGQ6OnRydW5jKHN1YmR1cmF0
aW9ucy5uYW5vc2Vjb25kcygpIC8gMTAwMCk7CiAgICAgYXV0byBiYWxhbmNlZE5hbm9zZWNvbmRz
ID0gc3RkOjpmbW9kKHN1YmR1cmF0aW9ucy5uYW5vc2Vjb25kcygpLCAxMDAwKTsKQEAgLTU5Nywx
MCArNTk1LDEwIEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhjb25zdCBUZW1w
b3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMmIHN1YmR1cmF0CiAgICAgICAgIGJ1aWxkZXIuYXBw
ZW5kKGZvcm1hdEludGVnZXIoYmFsYW5jZWRTZWNvbmRzKSk7CiAKICAgICAgICAgYXV0byBmcmFj
dGlvbiA9IHN0ZDo6YWJzKGJhbGFuY2VkTWlsbGlzZWNvbmRzKSAqIDFlNiArIHN0ZDo6YWJzKGJh
bGFuY2VkTWljcm9zZWNvbmRzKSAqIDFlMyArIHN0ZDo6YWJzKGJhbGFuY2VkTmFub3NlY29uZHMp
OwotICAgICAgICBpZiAoKCFwcmVjaXNpb24gJiYgZnJhY3Rpb24pIHx8IChwcmVjaXNpb24gJiYg
cHJlY2lzaW9uLnZhbHVlKCkpKSB7CisgICAgICAgIGlmICgocHJlY2lzaW9uVHlwZSA9PSBQcmVj
aXNpb246OkF1dG8gJiYgZnJhY3Rpb24pIHx8IChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6
Rml4ZWQgJiYgcHJlY2lzaW9uVmFsdWUpKSB7CiAgICAgICAgICAgICBhdXRvIHBhZGRlZCA9IG1h
a2VTdHJpbmcoJy4nLCBwYWQoJzAnLCA5LCBmcmFjdGlvbikpOwotICAgICAgICAgICAgaWYgKHBy
ZWNpc2lvbikKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KHBhZGRl
ZCkubGVmdChwYWRkZWQubGVuZ3RoKCkgLSAoOSAtIHByZWNpc2lvbi52YWx1ZSgpKSkpOworICAg
ICAgICAgICAgaWYgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpGaXhlZCkKKyAgICAgICAg
ICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KHBhZGRlZCkubGVmdChwYWRkZWQubGVu
Z3RoKCkgLSAoOSAtIHByZWNpc2lvblZhbHVlKSkpOwogICAgICAgICAgICAgZWxzZSB7CiAgICAg
ICAgICAgICAgICAgYXV0byBsZW5ndGhXaXRob3V0VHJhaWxpbmdaZXJvZXMgPSBwYWRkZWQubGVu
Z3RoKCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKHBhZGRlZFtsZW5ndGhXaXRob3V0VHJhaWxp
bmdaZXJvZXMgLSAxXSA9PSAnMCcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbER1cmF0aW9uLmgKaW5kZXggNTkyMDRkYzk1MzdhYWY3NjAxZTBlOGQxNTcwNTZi
ZGExOWFmNzM1NS4uYmM0MzgzMzNjNTQwNTFkMmYxZGI1NTRlM2IzNDlkZTVhNGE5YTQ2YSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaApA
QCAtNjYsNyArNjYsMTUgQEAgY2xhc3MgVGVtcG9yYWxEdXJhdGlvbiBmaW5hbCA6IHB1YmxpYyBK
U05vbkZpbmFsT2JqZWN0IHsKICAgICBTdWJkdXJhdGlvbnMgcm91bmQoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OwogICAgIGRvdWJsZSB0b3RhbChKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CiAgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKLSAgICBTdHJpbmcgdG9TdHJpbmcoc3Rk
OjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uID0gc3RkOjpudWxsb3B0KSBjb25zdCB7IHJl
dHVybiB0b1N0cmluZyhtX3N1YmR1cmF0aW9ucywgcHJlY2lzaW9uKTsgfQorICAgIFN0cmluZyB0
b1N0cmluZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbiA9IHsgUHJl
Y2lzaW9uOjpBdXRvLCAwIH0pIGNvbnN0IHsgcmV0dXJuIHRvU3RyaW5nKG1fc3ViZHVyYXRpb25z
LCBwcmVjaXNpb24pOyB9CisKKyAgICBjb25zdCBTdWJkdXJhdGlvbnMmIHN1YmR1cmF0aW9ucygp
IGNvbnN0IHsgcmV0dXJuIG1fc3ViZHVyYXRpb25zOyB9CisKKyAgICBzdGF0aWMgU3ViZHVyYXRp
b25zIHRvRHVyYXRpb25SZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIHN0
YXRpYyBpbnQgc2lnbihjb25zdCBTdWJkdXJhdGlvbnMmKTsKKyAgICBzdGF0aWMgZG91YmxlIHJv
dW5kKFN1YmR1cmF0aW9ucyYsIGRvdWJsZSBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwgUm91bmRp
bmdNb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBiYWxhbmNlKFN1YmR1cmF0aW9ucyYsIFRlbXBvcmFs
VW5pdCBsYXJnZXN0VW5pdCk7CiAKIHByaXZhdGU6CiAgICAgVGVtcG9yYWxEdXJhdGlvbihWTSYs
IFN0cnVjdHVyZSosIFN1YmR1cmF0aW9ucyYmKTsKQEAgLTc0LDEyICs4Miw5IEBAIGNsYXNzIFRl
bXBvcmFsRHVyYXRpb24gZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFN1YmR1cmF0aW9ucz4gcGFyc2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYp
OwotICAgIHN0YXRpYyBTdWJkdXJhdGlvbnMgZnJvbU9iamVjdChKU0dsb2JhbE9iamVjdCosIEpT
T2JqZWN0Kik7CisgICAgc3RhdGljIFN1YmR1cmF0aW9ucyBmcm9tTm9uRHVyYXRpb25WYWx1ZShK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCi0gICAgc3RhdGljIGludCBzaWduKGNvbnN0IFN1
YmR1cmF0aW9ucyYpOwotICAgIHN0YXRpYyB2b2lkIGJhbGFuY2UoU3ViZHVyYXRpb25zJiwgVGVt
cG9yYWxVbml0IGxhcmdlc3RVbml0KTsKLSAgICBzdGF0aWMgZG91YmxlIHJvdW5kKFN1YmR1cmF0
aW9ucyYsIGRvdWJsZSBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlKTsKLSAg
ICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFN1YmR1cmF0aW9ucyYsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHByZWNpc2lvbik7CisgICAgc3RhdGljIFN0cmluZyB0b1N0cmluZyhjb25z
dCBTdWJkdXJhdGlvbnMmLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lv
bik7CiAKICAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFN1YmR1cmF0aW9uKCkgY29uc3Q7CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcAppbmRleCBiMGE3
ZWVlNGM0YTAxMzYwYmEzY2ZhNWFkNWU1YTQ3Yjk0YjY3MzNhLi43YzBmZWM1MzkxM2U4YzVkNjlk
NWQ2M2ViYWE3ZmZkOTFkZmM4YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbE5vdy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxOb3cuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbE5vd0Z1bmNUaW1lWm9uZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCiAgICAgU3RyaW5nIHRpbWVa
b25lU3RyaW5nID0gdm0uZGF0ZUNhY2hlLmRlZmF1bHRUaW1lWm9uZSgpOwotICAgIHN0ZDo6b3B0
aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IFRlbXBvcmFsVGltZVpvbmU6OmlkRm9yVGlt
ZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+
IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7
CiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRl
bXBvcmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENPZmZzZXQodm0sIGdsb2JhbE9iamVjdC0+dGlt
ZVpvbmVTdHJ1Y3R1cmUoKSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9y
YWxUaW1lWm9uZTo6Y3JlYXRlRnJvbUlEKHZtLCBnbG9iYWxPYmplY3QtPnRpbWVab25lU3RydWN0
dXJlKCksIGlkZW50aWZpZXIudmFsdWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IGIyNGUzYTllOWRhMjIwMjZjMmEzYmZk
YjI4YmFmN2NlZTNkM2VmOTcuLjhlMzdkN2NmZjM1Zjk4OWUzZWVmYWI0MDkzNTU4MGFlMGI0ZGRl
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVj
dC5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uQ29uc3Ry
dWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVk
ZSAiVGVtcG9yYWxOb3cuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9y
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJU
ZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25l
UHJvdG90eXBlLmgiCiAKQEAgLTYxLDYgKzYzLDEzIEBAIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZUR1
cmF0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAgIHJldHVybiBU
ZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxEdXJhdGlvbkNv
bnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0
LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PFRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUq
PihnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCktPnN0b3JlZFByb3RvdHlwZU9iamVj
dCgpKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yKFZN
JiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWxP
YmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOworICAgIEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QgPSB0ZW1wb3JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAg
ICByZXR1cm4gVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZtLCBUZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PFRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKS0+c3RvcmVk
UHJvdG90eXBlT2JqZWN0KCkpKTsKK30KKwogc3RhdGljIEpTVmFsdWUgY3JlYXRlVGltZVpvbmVD
b25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgVGVtcG9yYWxPYmpl
Y3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0PFRlbXBvcmFsT2JqZWN0Kj4ob2JqZWN0KTsKQEAg
LTc5LDYgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgIENhbGVuZGFyICAgICAgIGNyZWF0ZUNh
bGVuZGFyQ29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBEdXJh
dGlvbiAgICAgICBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3Bl
cnR5Q2FsbGJhY2sKICAgTm93ICAgICAgICAgICAgY3JlYXRlTm93T2JqZWN0ICAgICAgICAgICAg
ICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCisgIFBsYWluVGltZSAgICAgIGNyZWF0ZVBs
YWluVGltZUNvbnN0cnVjdG9yICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBUaW1l
Wm9uZSAgICAgICBjcmVhdGVUaW1lWm9uZUNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3Bl
cnR5Q2FsbGJhY2sKIEBlbmQKICovCkBAIC0yNDIsMTkgKzI1MiwyMSBAQCBQcmVjaXNpb25EYXRh
IHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNP
YmplY3QqIG9wdAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIHNtYWxsZXN0VW5pdCA9
IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVu
aXQ6OlllYXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9y
YWxVbml0OjpEYXksIFRlbXBvcmFsVW5pdDo6SG91ciwgVGVtcG9yYWxVbml0OjpNaW51dGUgfSk7
CisgICAgYXV0byBzbWFsbGVzdFVuaXQgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBU
ZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5LCBUZW1wb3JhbFVuaXQ6OkhvdXIg
fSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmIChzbWFs
bGVzdFVuaXQpIHsKICAgICAgICAgc3dpdGNoIChzbWFsbGVzdFVuaXQudmFsdWUoKSkgeworICAg
ICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWludXRlOgorICAgICAgICAgICAgcmV0dXJuIHsgeyBQ
cmVjaXNpb246Ok1pbnV0ZSwgMCB9LCBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZSwgMSB9OwogICAgICAg
ICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOgotICAgICAgICAgICAgcmV0dXJuIHsgMCwgVGVt
cG9yYWxVbml0OjpTZWNvbmQsIDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsgUHJlY2lzaW9u
OjpGaXhlZCwgMCB9LCBUZW1wb3JhbFVuaXQ6OlNlY29uZCwgMSB9OwogICAgICAgICBjYXNlIFRl
bXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6Ci0gICAgICAgICAgICByZXR1cm4geyAzLCBUZW1wb3Jh
bFVuaXQ6Ok1pbGxpc2Vjb25kLCAxIH07CisgICAgICAgICAgICByZXR1cm4geyB7IFByZWNpc2lv
bjo6Rml4ZWQsIDMgfSwgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZCwgMSB9OwogICAgICAgICBj
YXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6Ci0gICAgICAgICAgICByZXR1cm4geyA2LCBU
ZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kLCAxIH07CisgICAgICAgICAgICByZXR1cm4geyB7IFBy
ZWNpc2lvbjo6Rml4ZWQsIDYgfSwgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZCwgMSB9OwogICAg
ICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZDoKLSAgICAgICAgICAgIHJldHVybiB7
IDksIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9OworICAgICAgICAgICAgcmV0dXJuIHsg
eyBQcmVjaXNpb246OkZpeGVkLCA5IH0sIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9Owog
ICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQo
KTsKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0yNjUsMjAgKzI3NywyNyBAQCBQcmVjaXNp
b25EYXRhIHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIG9wdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAK
ICAgICBpZiAoIXByZWNpc2lvbikKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxsb3B0LCBUZW1w
b3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfTsKKyAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246
OkF1dG8sIDAgfSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAxIH07CisKKyAgICBhdXRvIHBv
dzEwVW5zaWduZWQgPSBbXSh1bnNpZ25lZCBuKSAtPiB1bnNpZ25lZCB7CisgICAgICAgIHVuc2ln
bmVkIHJlc3VsdCA9IDE7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBuOyArK2kp
CisgICAgICAgICAgICByZXN1bHQgKj0gMTA7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fTsKIAogICAgIHVuc2lnbmVkIGRpZ2l0cyA9IHByZWNpc2lvbi52YWx1ZSgpOwogICAgIGlmICgh
ZGlnaXRzKQotICAgICAgICByZXR1cm4geyAwLCBUZW1wb3JhbFVuaXQ6OlNlY29uZCwgMSB9Owor
ICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIDAgfSwgVGVtcG9yYWxVbml0OjpT
ZWNvbmQsIDEgfTsKIAogICAgIGlmIChkaWdpdHMgPD0gMykKLSAgICAgICAgcmV0dXJuIHsgZGln
aXRzLCBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLCBzdGQ6OnBvdygxMCwgMyAtIGRpZ2l0cykg
fTsKKyAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCBkaWdpdHMgfSwgVGVtcG9y
YWxVbml0OjpNaWxsaXNlY29uZCwgcG93MTBVbnNpZ25lZCgzIC0gZGlnaXRzKSB9OwogCiAgICAg
aWYgKGRpZ2l0cyA8PSA2KQotICAgICAgICByZXR1cm4geyBkaWdpdHMsIFRlbXBvcmFsVW5pdDo6
TWljcm9zZWNvbmQsIHN0ZDo6cG93KDEwLCA2IC0gZGlnaXRzKSB9OworICAgICAgICByZXR1cm4g
eyB7IFByZWNpc2lvbjo6Rml4ZWQsIGRpZ2l0cyB9LCBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25k
LCBwb3cxMFVuc2lnbmVkKDYgLSBkaWdpdHMpIH07CiAKICAgICBBU1NFUlQoZGlnaXRzIDw9IDkp
OwotICAgIHJldHVybiB7IGRpZ2l0cywgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCBzdGQ6OnBv
dygxMCwgOSAtIGRpZ2l0cykgfTsKKyAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIGRp
Z2l0cyB9LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIHBvdzEwVW5zaWduZWQoOSAtIGRpZ2l0
cykgfTsKIH0KIAogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0luY3JlbWVudCAo
IHVuaXQgKQpAQCAtMzQyLDQgKzM2MSwxMSBAQCBkb3VibGUgcm91bmROdW1iZXJUb0luY3JlbWVu
dChkb3VibGUgeCwgZG91YmxlIGluY3JlbWVudCwgUm91bmRpbmdNb2RlIG1vZGUpCiAgICAgUkVM
RUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorVGVtcG9yYWxPdmVyZmxvdyB0b1RlbXBv
cmFsT3ZlcmZsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9wdGlv
bnMpCit7CisgICAgcmV0dXJuIGludGxPcHRpb248VGVtcG9yYWxPdmVyZmxvdz4oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCBnbG9iYWxPYmplY3QtPnZtKCkucHJvcGVydHlOYW1lcy0+b3ZlcmZsb3cs
CisgICAgICAgIHsgeyAiY29uc3RyYWluIl9zLCBUZW1wb3JhbE92ZXJmbG93OjpDb25zdHJhaW4g
fSwgeyAicmVqZWN0Il9zLCBUZW1wb3JhbE92ZXJmbG93OjpSZWplY3QgfSB9LAorICAgICAgICAi
b3ZlcmZsb3cgbXVzdCBiZSBlaXRoZXIgXCJjb25zdHJhaW5cIiBvciBcInJlamVjdFwiIl9zLCBU
ZW1wb3JhbE92ZXJmbG93OjpDb25zdHJhaW4pOworfQorCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0Lmgg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCmluZGV4IDcy
NDNjOWJhNTg0MzI2MmQyZDBjYmI4MTkzM2Y0Y2RkMTMwOGZiNDguLjg5YTE1NmU4YzE1YjgxMjVj
MjA0NDEwYmVlMDRkYjdhZWQyYmEzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxPYmplY3QuaApAQCAtMjEsMTQgKzIxLDExIEBACiAjcHJhZ21hIG9uY2UK
IAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KIAogbmFt
ZXNwYWNlIEpTQyB7CiAKLSNkZWZpbmUgSlNDX1RFTVBPUkFMX1VOSVRTKG1hY3JvKSBcCi0gICAg
bWFjcm8oeWVhciwgWWVhcikgXAotICAgIG1hY3JvKG1vbnRoLCBNb250aCkgXAotICAgIG1hY3Jv
KHdlZWssIFdlZWspIFwKLSAgICBtYWNybyhkYXksIERheSkgXAorI2RlZmluZSBKU0NfVEVNUE9S
QUxfUExBSU5fVElNRV9VTklUUyhtYWNybykgXAogICAgIG1hY3JvKGhvdXIsIEhvdXIpIFwKICAg
ICBtYWNybyhtaW51dGUsIE1pbnV0ZSkgXAogICAgIG1hY3JvKHNlY29uZCwgU2Vjb25kKSBcCkBA
IC0zNiw2ICszMywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhtaWNyb3NlY29uZCwg
TWljcm9zZWNvbmQpIFwKICAgICBtYWNybyhuYW5vc2Vjb25kLCBOYW5vc2Vjb25kKSBcCiAKKwor
I2RlZmluZSBKU0NfVEVNUE9SQUxfVU5JVFMobWFjcm8pIFwKKyAgICBtYWNybyh5ZWFyLCBZZWFy
KSBcCisgICAgbWFjcm8obW9udGgsIE1vbnRoKSBcCisgICAgbWFjcm8od2VlaywgV2VlaykgXAor
ICAgIG1hY3JvKGRheSwgRGF5KSBcCisgICAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVfVU5JVFMo
bWFjcm8pIFwKKworCiBlbnVtIGNsYXNzIFRlbXBvcmFsVW5pdCA6IHVpbnQ4X3QgewogI2RlZmlu
ZSBKU0NfREVGSU5FX1RFTVBPUkFMX1VOSVRfRU5VTShuYW1lLCBjYXBpdGFsaXplZE5hbWUpIGNh
cGl0YWxpemVkTmFtZSwKICAgICBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX0RFRklORV9URU1QT1JB
TF9VTklUX0VOVU0pCkBAIC00Myw2ICs0OSw3IEBAIGVudW0gY2xhc3MgVGVtcG9yYWxVbml0IDog
dWludDhfdCB7CiB9OwogI2RlZmluZSBKU0NfQ09VTlRfVEVNUE9SQUxfVU5JVFMobmFtZSwgY2Fw
aXRhbGl6ZWROYW1lKSArIDEKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZUZW1w
b3JhbFVuaXRzID0gMCBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRT
KTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZUZW1wb3JhbFBsYWluVGltZVVu
aXRzID0gMCBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhKU0NfQ09VTlRfVEVNUE9SQUxf
VU5JVFMpOwogI3VuZGVmIEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUwogCiBjbGFzcyBUZW1wb3Jh
bE9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTc0LDEwICs4MSwx
NiBAQCBlbnVtIGNsYXNzIFJvdW5kaW5nTW9kZSA6IHVpbnQ4X3QgewogICAgIEhhbGZFeHBhbmQK
IH07CiAKK2VudW0gY2xhc3MgUHJlY2lzaW9uIHsKKyAgICBNaW51dGUsCisgICAgRml4ZWQsCisg
ICAgQXV0bywKK307CisKIHN0cnVjdCBQcmVjaXNpb25EYXRhIHsKLSAgICBzdGQ6Om9wdGlvbmFs
PHVuc2lnbmVkPiBwcmVjaXNpb247CisgICAgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVk
PiBwcmVjaXNpb247CiAgICAgVGVtcG9yYWxVbml0IHVuaXQ7Ci0gICAgZG91YmxlIGluY3JlbWVu
dDsKKyAgICB1bnNpZ25lZCBpbmNyZW1lbnQ7CiB9OwogCiBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFs
VW5pdD4gdGVtcG9yYWxVbml0VHlwZShTdHJpbmdWaWV3KTsKQEAgLTg5LDQgKzEwMiwxMSBAQCBz
dGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KFRlbXBvcmFsVW5p
dCk7CiBkb3VibGUgdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChKU0dsb2JhbE9iamVjdCosIEpT
T2JqZWN0KiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGl2aWRlbmQsIGJvb2wgaW5j
bHVzaXZlKTsKIGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRvdWJsZSwgZG91YmxlIGlu
Y3JlbWVudCwgUm91bmRpbmdNb2RlKTsKIAorZW51bSBjbGFzcyBUZW1wb3JhbE92ZXJmbG93IDog
dWludDhfdCB7CisgICAgQ29uc3RyYWluLAorICAgIFJlamVjdCwKK307CisKK1RlbXBvcmFsT3Zl
cmZsb3cgdG9UZW1wb3JhbE92ZXJmbG93KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKKwog
fSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVlZWFhODkxYmZkODY1NmViNTFl
ZDFhMTEzZjE2N2VmZmRhY2I0OAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcApAQCAtMCwwICsxLDY3NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgorCisjaW5jbHVkZSAiQWJz
dHJhY3RTbG90VmlzaXRvci5oIgorI2luY2x1ZGUgIkludGxPYmplY3RJbmxpbmVzLmgiCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkxhenlQcm9wZXJ0eUlubGluZXMuaCIKKyNp
bmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVk1UcmFwc0lubGluZXMuaCIK
KworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbFBsYWluVGltZTo6
c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVsbHB0ciwgbnVsbHB0ciwgQ1JF
QVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWluVGltZSkgfTsKKworVGVtcG9yYWxQbGFpblRp
bWUqIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSVNPODYwMTo6UGxhaW5UaW1lJiYgcGxhaW5UaW1lKQoreworICAgIGF1dG8qIG9iamVjdCA9
IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1lPih2bS5oZWFwKSkg
VGVtcG9yYWxQbGFpblRpbWUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShwbGFpblRpbWUpKTsKKyAg
ICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1cm4gb2JqZWN0OworfQorCitT
dHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1
cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5m
byhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsUGxh
aW5UaW1lOjpUZW1wb3JhbFBsYWluVGltZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJ
U084NjAxOjpQbGFpblRpbWUmJiBwbGFpblRpbWUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUp
CisgICAgLCBtX3BsYWluVGltZShXVEZNb3ZlKHBsYWluVGltZSkpCit7Cit9CisKK3ZvaWQgVGVt
cG9yYWxQbGFpblRpbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBt
X2NhbGVuZGFyLmluaXRMYXRlcigKKyAgICAgICAgW10gKGNvbnN0IGF1dG8mIGluaXQpIHsKKyAg
ICAgICAgICAgIFZNJiB2bSA9IGluaXQudm07CisgICAgICAgICAgICBhdXRvKiBwbGFpblRpbWUg
PSBqc0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPihpbml0Lm93bmVyKTsKKyAgICAgICAgICAgIGF1
dG8qIGdsb2JhbE9iamVjdCA9IHBsYWluVGltZS0+Z2xvYmFsT2JqZWN0KHZtKTsKKyAgICAgICAg
ICAgIGF1dG8qIGNhbGVuZGFyID0gVGVtcG9yYWxDYWxlbmRhcjo6Y3JlYXRlKHZtLCBnbG9iYWxP
YmplY3QtPmNhbGVuZGFyU3RydWN0dXJlKCksIGlzbzg2MDFDYWxlbmRhcklEKCkpOworICAgICAg
ICAgICAgaW5pdC5zZXQoY2FsZW5kYXIpOworICAgICAgICB9KTsKK30KKwordGVtcGxhdGU8dHlw
ZW5hbWUgVmlzaXRvcj4KK3ZvaWQgVGVtcG9yYWxQbGFpblRpbWU6OnZpc2l0Q2hpbGRyZW5JbXBs
KEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAgICBCYXNlOjp2aXNpdENoaWxk
cmVuKGNlbGwsIHZpc2l0b3IpOworCisgICAgYXV0byogdGhpc09iamVjdCA9IGpzQ2FzdDxUZW1w
b3JhbFBsYWluVGltZSo+KGNlbGwpOworICAgIHRoaXNPYmplY3QtPm1fY2FsZW5kYXIudmlzaXQo
dmlzaXRvcik7Cit9CisKK0RFRklORV9WSVNJVF9DSElMRFJFTihUZW1wb3JhbFBsYWluVGltZSk7
CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWlz
dmFsaWR0aW1lCitzdGF0aWMgSVNPODYwMTo6UGxhaW5UaW1lIHRvUGxhaW5UaW1lKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIElTTzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRpb24pCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBob3VyID0gZHVyYXRpb24uaG91cnMoKTsK
KyAgICBkb3VibGUgbWludXRlID0gZHVyYXRpb24ubWludXRlcygpOworICAgIGRvdWJsZSBzZWNv
bmQgPSBkdXJhdGlvbi5zZWNvbmRzKCk7CisgICAgZG91YmxlIG1pbGxpc2Vjb25kID0gZHVyYXRp
b24ubWlsbGlzZWNvbmRzKCk7CisgICAgZG91YmxlIG1pY3Jvc2Vjb25kID0gZHVyYXRpb24ubWlj
cm9zZWNvbmRzKCk7CisgICAgZG91YmxlIG5hbm9zZWNvbmQgPSBkdXJhdGlvbi5uYW5vc2Vjb25k
cygpOworICAgIGlmICghKGhvdXIgPj0gMCAmJiBob3VyIDw9IDIzKSkgeworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImhvdXIgaXMgb3V0IG9mIHJhbmdlIl9z
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgaWYgKCEobWludXRlID49IDAgJiYg
bWludXRlIDw9IDU5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBz
Y29wZSwgIm1pbnV0ZSBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9Owor
ICAgIH0KKyAgICBpZiAoIShzZWNvbmQgPj0gMCAmJiBzZWNvbmQgPD0gNTkpKSB7CisgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic2Vjb25kIGlzIG91dCBvZiBy
YW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKG1pbGxpc2Vj
b25kID49IDAgJiYgbWlsbGlzZWNvbmQgPD0gOTk5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm1pbGxpc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKG1pY3Jvc2Vjb25kID49IDAg
JiYgbWljcm9zZWNvbmQgPD0gOTk5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIm1pY3Jvc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAg
IHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKG5hbm9zZWNvbmQgPj0gMCAmJiBuYW5vc2Vj
b25kIDw9IDk5OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJuYW5vc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorICAgIHJldHVybiBJU084NjAxOjpQbGFpblRpbWUgeworICAgICAgICBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oaG91ciksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtaW51
dGUpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2Vjb25kKSwKKyAgICAgICAgc3Rh
dGljX2Nhc3Q8dW5zaWduZWQ+KG1pbGxpc2Vjb25kKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KG1pY3Jvc2Vjb25kKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG5hbm9z
ZWNvbmQpCisgICAgfTsKK30KKworLy8gQ3JlYXRlVGVtcG9yYWxQbGFpblRpbWUgKCB5ZWFycywg
bW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25k
cywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcyBbICwgbmV3VGFyZ2V0IF0gKQorLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtY3JlYXRldGVtcG9yYWxw
bGFpblRpbWUKK1RlbXBvcmFsUGxhaW5UaW1lKiBUZW1wb3JhbFBsYWluVGltZTo6dHJ5Q3JlYXRl
SWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVy
ZSwgSVNPODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgYXV0byBwbGFpblRpbWUgPSB0b1BsYWluVGltZShnbG9iYWxPYmplY3QsIFdURk1vdmUo
ZHVyYXRpb24pKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
cmV0dXJuIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIHN0cnVjdHVyZSwgV1RGTW92ZShw
bGFpblRpbWUpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwtYmFsYW5jZXRpbWUKK3N0YXRpYyBJU084NjAxOjpEdXJhdGlvbiBiYWxhbmNl
VGltZShkb3VibGUgaG91ciwgZG91YmxlIG1pbnV0ZSwgZG91YmxlIHNlY29uZCwgZG91YmxlIG1p
bGxpc2Vjb25kLCBkb3VibGUgbWljcm9zZWNvbmQsIGRvdWJsZSBuYW5vc2Vjb25kKQoreworICAg
IC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXRlbXBvcmFsL2lzc3Vlcy8xODA0
CisgICAgbWludXRlID0gNjAgKiBob3VyICsgbWludXRlOworICAgIHNlY29uZCA9IDYwICogbWlu
dXRlICsgc2Vjb25kOworICAgIG1pbGxpc2Vjb25kID0gMTAwMCAqIHNlY29uZCArIG1pbGxpc2Vj
b25kOworICAgIG1pY3Jvc2Vjb25kID0gMTAwMCAqIG1pbGxpc2Vjb25kICsgbWljcm9zZWNvbmQ7
CisgICAgbmFub3NlY29uZCA9IDEwMDAgKiBtaWNyb3NlY29uZCArIG5hbm9zZWNvbmQ7CisKKyAg
ICBtaWNyb3NlY29uZCA9IHN0ZDo6dHJ1bmMobmFub3NlY29uZCAvIDEwMDApOworICAgIG5hbm9z
ZWNvbmQgPSBzdGQ6OmZtb2QobmFub3NlY29uZCwgMTAwMCk7CisgICAgbWlsbGlzZWNvbmQgPSBz
dGQ6OnRydW5jKG1pY3Jvc2Vjb25kIC8gMTAwMCk7CisgICAgbWljcm9zZWNvbmQgPSBzdGQ6OmZt
b2QobWljcm9zZWNvbmQsIDEwMDApOworICAgIHNlY29uZCA9IHN0ZDo6dHJ1bmMobWlsbGlzZWNv
bmQgLyAxMDAwKTsKKyAgICBtaWxsaXNlY29uZCA9IHN0ZDo6Zm1vZChtaWxsaXNlY29uZCwgMTAw
MCk7CisgICAgbWludXRlID0gc3RkOjp0cnVuYyhzZWNvbmQgLyA2MCk7CisgICAgc2Vjb25kID0g
c3RkOjpmbW9kKHNlY29uZCwgNjApOworICAgIGhvdXIgPSBzdGQ6OnRydW5jKG1pbnV0ZSAvIDYw
KTsKKyAgICBtaW51dGUgPSBzdGQ6OmZtb2QobWludXRlLCA2MCk7CisgICAgZG91YmxlIGRheXMg
PSBzdGQ6OnRydW5jKGhvdXIgLyAyNCk7CisgICAgaG91ciA9IHN0ZDo6Zm1vZChob3VyLCAyNCk7
CisgICAgcmV0dXJuIElTTzg2MDE6OkR1cmF0aW9uKDAsIDAsIDAsIGRheXMsIGhvdXIsIG1pbnV0
ZSwgc2Vjb25kLCBtaWxsaXNlY29uZCwgbWljcm9zZWNvbmQsIG5hbm9zZWNvbmQpOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1yb3VuZHRp
bWUKK3N0YXRpYyBJU084NjAxOjpEdXJhdGlvbiByb3VuZFRpbWUoSVNPODYwMTo6UGxhaW5UaW1l
IHBsYWluVGltZSwgZG91YmxlIGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVuaXQsIFJvdW5kaW5n
TW9kZSByb3VuZGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkYXlMZW5ndGhOcykKK3sK
KyAgICBhdXRvIGZyYWN0aW9uYWxTZWNvbmQgPSBbXShJU084NjAxOjpQbGFpblRpbWUgcGxhaW5U
aW1lKSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gcGxhaW5UaW1lLnNlY29uZCgpICsgcGxh
aW5UaW1lLm1pbGxpc2Vjb25kKCkgKiAxZS0zICsgcGxhaW5UaW1lLm1pY3Jvc2Vjb25kKCkgKiAx
ZS02ICsgcGxhaW5UaW1lLm5hbm9zZWNvbmQoKSAqIDFlLTk7CisgICAgfTsKKworICAgIGRvdWJs
ZSBxdWFudGl0eSA9IDA7CisgICAgc3dpdGNoICh1bml0KSB7CisgICAgY2FzZSBUZW1wb3JhbFVu
aXQ6OkRheTogeworICAgICAgICBkb3VibGUgbGVuZ3RoID0gZGF5TGVuZ3RoTnMudmFsdWVfb3Io
OC42NCAqIDFlKzEzKTsKKyAgICAgICAgcXVhbnRpdHkgPSAoKCgocGxhaW5UaW1lLmhvdXIoKSAq
IDYwLjAgKyBwbGFpblRpbWUubWludXRlKCkpICogNjAuMCArIHBsYWluVGltZS5zZWNvbmQoKSkg
KiAxMDAwLjAgKyBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSkgKiAxMDAwLjAgKyBwbGFpblRpbWUu
bmFub3NlY29uZCgpKSAvIGxlbmd0aDsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJl
clRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAg
IHJldHVybiBJU084NjAxOjpEdXJhdGlvbigwLCAwLCAwLCByZXN1bHQsIDAsIDAsIDAsIDAsIDAs
IDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6SG91cjogeworICAgICAgICBxdWFu
dGl0eSA9IChmcmFjdGlvbmFsU2Vjb25kKHBsYWluVGltZSkgLyA2MC4wICsgcGxhaW5UaW1lLm1p
bnV0ZSgpKSAvIDYwLjAgKyBwbGFpblRpbWUuaG91cigpOworICAgICAgICBhdXRvIHJlc3VsdCA9
IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2Rl
KTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHJlc3VsdCwgMCwgMCwgMCwgMCwgMCk7Cisg
ICAgfQorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IHsKKyAgICAgICAgcXVhbnRpdHkg
PSBmcmFjdGlvbmFsU2Vjb25kKHBsYWluVGltZSkgLyA2MC4wICsgcGxhaW5UaW1lLm1pbnV0ZSgp
OworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHks
IGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBs
YWluVGltZS5ob3VyKCksIHJlc3VsdCwgMCwgMCwgMCwgMCk7CisgICAgfQorICAgIGNhc2UgVGVt
cG9yYWxVbml0OjpTZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBmcmFjdGlvbmFsU2Vjb25k
KHBsYWluVGltZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0luY3JlbWVu
dChxdWFudGl0eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOworICAgICAgICByZXR1cm4gYmFs
YW5jZVRpbWUocGxhaW5UaW1lLmhvdXIoKSwgcGxhaW5UaW1lLm1pbnV0ZSgpLCByZXN1bHQsIDAs
IDAsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IHsKKyAg
ICAgICAgcXVhbnRpdHkgPSBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSArIHBsYWluVGltZS5taWNy
b3NlY29uZCgpICogMWUtMyArIHBsYWluVGltZS5uYW5vc2Vjb25kKCkgKiAxZS02OworICAgICAg
ICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVu
dCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5o
b3VyKCksIHBsYWluVGltZS5taW51dGUoKSwgcGxhaW5UaW1lLnNlY29uZCgpLCByZXN1bHQsIDAs
IDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6IHsKKyAgICAg
ICAgcXVhbnRpdHkgPSBwbGFpblRpbWUubWljcm9zZWNvbmQoKSArIHBsYWluVGltZS5uYW5vc2Vj
b25kKCkgKiAxZS0zOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1l
bnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJh
bGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5taW51dGUoKSwgcGxhaW5UaW1l
LnNlY29uZCgpLCBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSwgcmVzdWx0LCAwKTsKKyAgICB9Cisg
ICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBw
bGFpblRpbWUubmFub3NlY29uZCgpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVy
VG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAg
cmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5taW51dGUoKSwg
cGxhaW5UaW1lLnNlY29uZCgpLCBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSwgcGxhaW5UaW1lLm1p
Y3Jvc2Vjb25kKCksIHJlc3VsdCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworSVNP
ODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjpyb3VuZChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChn
bG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9i
YWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1v
bnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5IH0pOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgaWYgKCFzbWFsbGVzdCkgeworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRo
b3V0IGEgc21hbGxlc3RVbml0IG9wdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAg
fQorICAgIFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1ZSgpOworCisg
ICAgYXV0byByb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsCisgICAgICAgIHsg
eyAiY2VpbCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01v
ZGU6OkZsb29yIH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZF
eHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCisgICAgICAgICJyb3VuZGlu
Z01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wiLCBvciBc
ImhhbGZFeHBhbmRcIiJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKKyAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBpbmNyZW1lbnQgPSB0ZW1wb3Jh
bFJvdW5kaW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bVJvdW5kaW5n
SW5jcmVtZW50KHNtYWxsZXN0VW5pdCksIGZhbHNlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgYXV0byBkdXJhdGlvbiA9IHJvdW5kVGltZShtX3BsYWluVGlt
ZSwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSwgc3RkOjpudWxsb3B0KTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvUGxhaW5UaW1lKGdsb2JhbE9iamVjdCwg
V1RGTW92ZShkdXJhdGlvbikpKTsKK30KKworU3RyaW5nIFRlbXBvcmFsUGxhaW5UaW1lOjp0b1N0
cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkg
Y29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBp
bnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghb3B0aW9ucykKKyAgICAg
ICAgcmV0dXJuIHRvU3RyaW5nKCk7CisKKyAgICBQcmVjaXNpb25EYXRhIGRhdGEgPSBzZWNvbmRz
U3RyaW5nUHJlY2lzaW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gcm91bmRpbmdNb2RlID0gaW50bE9wdGlv
bjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+
cm91bmRpbmdNb2RlLAorICAgICAgICB7IHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2VpbCB9
LCB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7ICJ0cnVuYyJfcywgUm91bmRp
bmdNb2RlOjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBh
bmQgfSB9LAorICAgICAgICAicm91bmRpbmdNb2RlIG11c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBc
ImZsb29yXCIsIFwidHJ1bmNcIiwgb3IgXCJoYWxmRXhwYW5kXCIiX3MsIFJvdW5kaW5nTW9kZTo6
VHJ1bmMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAvLyBO
byBuZWVkIHRvIG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUgZ2l2ZW4gZXhwbGljaXQgZGVm
YXVsdHMuCisgICAgaWYgKHN0ZDo6Z2V0PDA+KGRhdGEucHJlY2lzaW9uKSA9PSBQcmVjaXNpb246
OkF1dG8gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9kZTo6VHJ1bmMpCisgICAgICAgIHJl
dHVybiB0b1N0cmluZygpOworCisgICAgYXV0byBkdXJhdGlvbiA9IHJvdW5kVGltZShtX3BsYWlu
VGltZSwgZGF0YS5pbmNyZW1lbnQsIGRhdGEudW5pdCwgcm91bmRpbmdNb2RlLCBzdGQ6Om51bGxv
cHQpOworICAgIGF1dG8gcGxhaW5UaW1lID0gdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKGR1cmF0aW9uKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIHJldHVybiBJU084NjAxOjp0ZW1wb3JhbFRpbWVUb1N0cmluZyhwbGFpblRpbWUsIGRhdGEu
cHJlY2lzaW9uKTsKK30KKworCitzdGF0aWMgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZShWTSYg
dm0sIHVuc2lnbmVkIGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mVGVtcG9y
YWxVbml0cyk7CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxUZW1wb3JhbFVuaXQ+KGluZGV4KSkg
eworI2RlZmluZSBKU0NfVEVNUE9SQUxfRFVSQVRJT05fUFJPUEVSVFlfTkFNRShuYW1lLCBjYXBp
dGFsaXplZE5hbWUpIGNhc2UgVGVtcG9yYWxVbml0OjpjYXBpdGFsaXplZE5hbWU6IHJldHVybiB2
bS5wcm9wZXJ0eU5hbWVzLT5uYW1lOworICAgICAgICBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX1RF
TVBPUkFMX0RVUkFUSU9OX1BST1BFUlRZX05BTUUpCisjdW5kZWYgSlNDX1RFTVBPUkFMX0RVUkFU
SU9OX1BST1BFUlRZX05BTUUKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hF
RCgpOworfQorCitzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gdG9UZW1wb3JhbFRpbWVSZWNvcmQo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRlbXBvcmFsVGltZUxpa2Up
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9u
IHsgfTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZlRlbXBv
cmFsUGxhaW5UaW1lVW5pdHM7ICsraW5kZXgpIHsKKyAgICAgICAgdW5zaWduZWQgZHVyYXRpb25J
bmRleCA9IGluZGV4ICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRlbXBvcmFsVW5pdDo6SG91cik7
CisgICAgICAgIGF1dG8gbmFtZSA9IHByb3BlcnR5TmFtZSh2bSwgZHVyYXRpb25JbmRleCk7Cisg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSB0ZW1wb3JhbFRpbWVMaWtlLT5nZXQoZ2xvYmFsT2JqZWN0
LCBuYW1lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
ICAgICAvLyBXZSBhcmUgdGhyb3dpbmcgYW4gZXJyb3IgaGVyZSwgYnV0IHByb2JhYmx5IHRoaXMg
aXMgYSBzcGVjIGJ1Zy4KKyAgICAgICAgLy8gVHJhY2tlZCBpbiBodHRwczovL2dpdGh1Yi5jb20v
dGMzOS9wcm9wb3NhbC10ZW1wb3JhbC9pc3N1ZXMvMTgwMy4KKyAgICAgICAgaWYgKHZhbHVlLmlz
VW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsIG1ha2VTdHJpbmcoJyInLCBTdHJpbmdWaWV3KG5hbWUudWlkKCkpLCAiXCIgZmllbGQg
aXMgbWlzc2luZyJfcykpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorCisg
ICAgICAgIGRvdWJsZSBpbnRlZ2VyID0gdmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxP
YmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUoaW50ZWdlcikpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lIHByb3BlcnRpZXMg
bXVzdCBiZSBmaW5pdGUiX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQor
ICAgICAgICBkdXJhdGlvbltkdXJhdGlvbkluZGV4XSA9IGludGVnZXI7CisgICAgfQorICAgIHJl
dHVybiBkdXJhdGlvbjsKK30KKworc3RhdGljIHN0ZDo6YXJyYXk8c3RkOjpvcHRpb25hbDxkb3Vi
bGU+LCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHM+IHRvUGFydGlhbFRpbWUoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRlbXBvcmFsVGltZUxpa2UpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGJvb2wgaGFzQW55RmllbGRzID0gZmFsc2U7CisgICAg
c3RkOjphcnJheTxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIG51bWJlck9mVGVtcG9yYWxQbGFpblRp
bWVVbml0cz4gcGFydGlhbFRpbWUgeyB9OworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBp
bmRleCA8IG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0czsgKytpbmRleCkgeworICAgICAg
ICB1bnNpZ25lZCBkdXJhdGlvbkluZGV4ID0gaW5kZXggKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4o
VGVtcG9yYWxVbml0OjpIb3VyKTsKKyAgICAgICAgYXV0byBuYW1lID0gcHJvcGVydHlOYW1lKHZt
LCBkdXJhdGlvbkluZGV4KTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRlbXBvcmFsVGltZUxp
a2UtPmdldChnbG9iYWxPYmplY3QsIG5hbWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAg
ICAgICAgICAgaGFzQW55RmllbGRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGRvdWJsZSBkb3VibGVW
YWx1ZSA9IHZhbHVlLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUoZG91YmxlVmFsdWUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0b1BhcnRpYWxUaW1lIHByb3BlcnRpZXMgbXVzdCBi
ZSBmaW5pdGUiX3MpOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBwYXJ0aWFsVGltZVtpbmRleF0gPSBkb3VibGVWYWx1ZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBpZiAoIWhhc0FueUZpZWxkcykgeworICAgICAgICB0aHJvd1R5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAidG9QYXJ0aWFsVGltZSByZXF1aXJlcyBhdCBsZWFzdCBv
bmUgcHJvcGVydHkiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICByZXR1cm4g
cGFydGlhbFRpbWU7Cit9CisKK3N0YXRpYyBJU084NjAxOjpQbGFpblRpbWUgY29uc3RyYWludFRp
bWUoSVNPODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbikKK3sKKyAgICBhdXRvIGNvbnN0cmFpblRv
UmFuZ2UgPSBbXShkb3VibGUgdmFsdWUsIHVuc2lnbmVkIG1pbmltdW0sIHVuc2lnbmVkIG1heGlt
dW0pIC0+IHVuc2lnbmVkIHsKKyAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQorICAgICAg
ICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3Rk
OjptaW48ZG91YmxlPihzdGQ6Om1heDxkb3VibGU+KHZhbHVlLCBtaW5pbXVtKSwgbWF4aW11bSkp
OworICAgIH07CisgICAgcmV0dXJuIElTTzg2MDE6OlBsYWluVGltZSgKKyAgICAgICAgY29uc3Ry
YWluVG9SYW5nZShkdXJhdGlvbi5ob3VycygpLCAwLCAyMyksCisgICAgICAgIGNvbnN0cmFpblRv
UmFuZ2UoZHVyYXRpb24ubWludXRlcygpLCAwLCA1OSksCisgICAgICAgIGNvbnN0cmFpblRvUmFu
Z2UoZHVyYXRpb24uc2Vjb25kcygpLCAwLCA1OSksCisgICAgICAgIGNvbnN0cmFpblRvUmFuZ2Uo
ZHVyYXRpb24ubWlsbGlzZWNvbmRzKCksIDAsIDEwMDApLAorICAgICAgICBjb25zdHJhaW5Ub1Jh
bmdlKGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpLCAwLCAxMDAwKSwKKyAgICAgICAgY29uc3RyYWlu
VG9SYW5nZShkdXJhdGlvbi5uYW5vc2Vjb25kcygpLCAwLCAxMDAwKSk7Cit9CisKK3N0YXRpYyBJ
U084NjAxOjpQbGFpblRpbWUgcmVndWxhdGVUaW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIElTTzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRpb24sIFRlbXBvcmFsT3ZlcmZsb3cgb3ZlcmZs
b3cpCit7CisgICAgc3dpdGNoIChvdmVyZmxvdykgeworICAgIGNhc2UgVGVtcG9yYWxPdmVyZmxv
dzo6Q29uc3RyYWluOgorICAgICAgICByZXR1cm4gY29uc3RyYWludFRpbWUoV1RGTW92ZShkdXJh
dGlvbikpOworICAgIGNhc2UgVGVtcG9yYWxPdmVyZmxvdzo6UmVqZWN0OgorICAgICAgICByZXR1
cm4gdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGR1cmF0aW9uKSk7CisgICAgfQor
ICAgIHJldHVybiB7IH07Cit9CisKK3N0YXRpYyBKU09iamVjdCogdG9UZW1wb3JhbENhbGVuZGFy
V2l0aElTT0RlZmF1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0ZW1w
b3JhbENhbGVuZGFyTGlrZSkKK3sKKyAgICBpZiAodGVtcG9yYWxDYWxlbmRhckxpa2UuaXNVbmRl
ZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZShnbG9iYWxP
YmplY3QtPnZtKCksIGdsb2JhbE9iamVjdC0+Y2FsZW5kYXJTdHJ1Y3R1cmUoKSwgaXNvODYwMUNh
bGVuZGFySUQoKSk7CisgICAgcmV0dXJuIFRlbXBvcmFsQ2FsZW5kYXI6OmZyb20oZ2xvYmFsT2Jq
ZWN0LCB0ZW1wb3JhbENhbGVuZGFyTGlrZSk7Cit9CisKK3N0YXRpYyBKU09iamVjdCogZ2V0VGVt
cG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgaXRlbVZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoaXRl
bVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsUGxhaW5UaW1lPih2bSkpCisgICAgICAgIHJldHVybiBq
c0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPihpdGVtVmFsdWUpLT5jYWxlbmRhcigpOworCisgICAg
SlNWYWx1ZSBjYWxlbmRhciA9IGl0ZW1WYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0
eU5hbWVzLT5jYWxlbmRhcik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvVGVtcG9yYWxDYWxlbmRhcldpdGhJU09E
ZWZhdWx0KGdsb2JhbE9iamVjdCwgY2FsZW5kYXIpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG90ZW1wb3JhbHRpbWUKK1RlbXBvcmFs
UGxhaW5UaW1lKiBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSwgc3RkOjpvcHRpb25hbDxUZW1wb3JhbE92ZXJmbG93
PiBvdmVyZmxvd1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG92ZXJm
bG93ID0gb3ZlcmZsb3dWYWx1ZS52YWx1ZV9vcihUZW1wb3JhbE92ZXJmbG93OjpDb25zdHJhaW4p
OworCisgICAgaWYgKGl0ZW1WYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIGlmIChpdGVtVmFs
dWUuaW5oZXJpdHM8VGVtcG9yYWxQbGFpblRpbWU+KHZtKSkKKyAgICAgICAgICAgIHJldHVybiBq
c0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPihpdGVtVmFsdWUpOworICAgICAgICBKU09iamVjdCog
Y2FsZW5kYXIgPSBnZXRUZW1wb3JhbENhbGVuZGFyV2l0aElTT0RlZmF1bHQoZ2xvYmFsT2JqZWN0
LCBpdGVtVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
ICAgICAgICBKU1N0cmluZyogY2FsZW5kYXJTdHJpbmcgPSBjYWxlbmRhci0+dG9TdHJpbmcoZ2xv
YmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAg
ICAgICAgU3RyaW5nIGNhbGVuZGFyV1RGU3RyaW5nID0gY2FsZW5kYXJTdHJpbmctPnZhbHVlKGds
b2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Cisg
ICAgICAgIGlmIChjYWxlbmRhcldURlN0cmluZyAhPSAiaXNvODYwMSJfcykgeworICAgICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjYWxlbmRhciBpcyBub3Qg
aXNvODYwMSJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAg
IGF1dG8gZHVyYXRpb24gPSB0b1RlbXBvcmFsVGltZVJlY29yZChnbG9iYWxPYmplY3QsIGpzQ2Fz
dDxKU09iamVjdCo+KGl0ZW1WYWx1ZSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworICAgICAgICBhdXRvIHBsYWluVGltZSA9IHJlZ3VsYXRlVGltZShnbG9iYWxP
YmplY3QsIFdURk1vdmUoZHVyYXRpb24pLCBvdmVyZmxvdyk7CisgICAgICAgIFJFVFVSTl9JRl9F
WENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGltZTo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHBs
YWluVGltZSkpOworICAgIH0KKworICAgIGF1dG8gc3RyaW5nID0gaXRlbVZhbHVlLnRvV1RGU3Ry
aW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIGF1dG8gdGltZSA9IElTTzg2MDE6OnBhcnNlVGltZShzdHJpbmcpOworICAgIGlmICh0
aW1lKSB7CisgICAgICAgIGF1dG8gW3BsYWluVGltZSwgdGltZVpvbmVPcHRpb25hbF0gPSB0aW1l
LnZhbHVlKCk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHBsYWluVGltZSkpOwor
ICAgIH0KKworICAgIGF1dG8gZGF0ZVRpbWUgPSBJU084NjAxOjpwYXJzZURhdGVUaW1lKHN0cmlu
Zyk7CisgICAgaWYgKGRhdGVUaW1lKSB7CisgICAgICAgIGF1dG8gW3BsYWluRGF0ZSwgcGxhaW5U
aW1lT3B0aW9uYWwsIHRpbWVab25lT3B0aW9uYWxdID0gZGF0ZVRpbWUudmFsdWUoKTsKKyAgICAg
ICAgYXV0byBwbGFpblRpbWUgPSBwbGFpblRpbWVPcHRpb25hbC52YWx1ZV9vcihJU084NjAxOjpQ
bGFpblRpbWUoKSk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHBsYWluVGltZSkp
OworICAgIH0KKworICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiaW52
YWxpZCB0aW1lIHN0cmluZyJfcyk7CisgICAgcmV0dXJuIHsgfTsKK30KKworLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtY29tcGFyZXRlbXBvcmFsdGlt
ZQoraW50MzJfdCBUZW1wb3JhbFBsYWluVGltZTo6Y29tcGFyZShUZW1wb3JhbFBsYWluVGltZSog
cGxhaW5UaW1lMSwgVGVtcG9yYWxQbGFpblRpbWUqIHBsYWluVGltZTIpCit7CisgICAgSVNPODYw
MTo6UGxhaW5UaW1lIHQxID0gcGxhaW5UaW1lMS0+cGxhaW5UaW1lKCk7CisgICAgSVNPODYwMTo6
UGxhaW5UaW1lIHQyID0gcGxhaW5UaW1lMi0+cGxhaW5UaW1lKCk7CisgICAgaWYgKHQxLmhvdXIo
KSA+IHQyLmhvdXIoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKHQxLmhvdXIoKSA8IHQy
LmhvdXIoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh0MS5taW51dGUoKSA+IHQyLm1p
bnV0ZSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAodDEubWludXRlKCkgPCB0Mi5taW51
dGUoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh0MS5zZWNvbmQoKSA+IHQyLnNlY29u
ZCgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAodDEuc2Vjb25kKCkgPCB0Mi5zZWNvbmQo
KSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh0MS5taWxsaXNlY29uZCgpID4gdDIubWls
bGlzZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKHQxLm1pbGxpc2Vjb25kKCkg
PCB0Mi5taWxsaXNlY29uZCgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHQxLm1pY3Jv
c2Vjb25kKCkgPiB0Mi5taWNyb3NlY29uZCgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAo
dDEubWljcm9zZWNvbmQoKSA8IHQyLm1pY3Jvc2Vjb25kKCkpCisgICAgICAgIHJldHVybiAtMTsK
KyAgICBpZiAodDEubmFub3NlY29uZCgpID4gdDIubmFub3NlY29uZCgpKQorICAgICAgICByZXR1
cm4gMTsKKyAgICBpZiAodDEubmFub3NlY29uZCgpIDwgdDIubmFub3NlY29uZCgpKQorICAgICAg
ICByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvbGltaXRlZHRlbXBvcmFsZHVyYXRpb24KK3N0
YXRpYyBJU084NjAxOjpEdXJhdGlvbiB0b0xpbWl0ZWRUZW1wb3JhbER1cmF0aW9uKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGVtcG9yYWxEdXJhdGlvbkxpa2UsIHN0ZDo6
aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93ZWRGaWVsZHMpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uOworICAgIGlm
ICghdGVtcG9yYWxEdXJhdGlvbkxpa2UuaXNPYmplY3QoKSkgeworICAgICAgICBTdHJpbmcgc3Ry
aW5nID0gdGVtcG9yYWxEdXJhdGlvbkxpa2UudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgYXV0byBkdXJh
dGlvbk9wdGlvbmFsID0gSVNPODYwMTo6cGFyc2VEdXJhdGlvbihzdHJpbmcpOworICAgICAgICBp
ZiAoIWR1cmF0aW9uT3B0aW9uYWwpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiQ291bGQgbm90IHBhcnNlIER1cmF0aW9uIHN0cmluZyJfcyk7Cisg
ICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGR1cmF0aW9uID0gZHVy
YXRpb25PcHRpb25hbC52YWx1ZSgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGR1cmF0aW9uID0g
VGVtcG9yYWxEdXJhdGlvbjo6dG9EdXJhdGlvblJlY29yZChnbG9iYWxPYmplY3QsIHRlbXBvcmFs
RHVyYXRpb25MaWtlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KyAgICB9CisKKyAgICBpZiAoIUlTTzg2MDE6OmlzVmFsaWREdXJhdGlvbihkdXJhdGlvbikpIHsK
KyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5E
dXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBvZiBjb25zaXN0ZW50IHNpZ24i
X3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGZvciAoc2l6ZV90IGluZGV4
ID0gMDsgaW5kZXggPCBudW1iZXJPZlRlbXBvcmFsVW5pdHM7IGluZGV4KyspIHsKKyAgICAgICAg
aWYgKGR1cmF0aW9uW2luZGV4XSkgeworICAgICAgICAgICAgaWYgKGRpc2FsbG93ZWRGaWVsZHMu
c2l6ZSgpICYmIHN0ZDo6ZmluZChkaXNhbGxvd2VkRmllbGRzLmJlZ2luKCksIGRpc2FsbG93ZWRG
aWVsZHMuZW5kKCksIHN0YXRpY19jYXN0PFRlbXBvcmFsVW5pdD4oaW5kZXgpKSAhPSBkaXNhbGxv
d2VkRmllbGRzLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJEdXJhdGlvbiBwcm9wZXJ0aWVzIGluY2x1ZGUgZGlzYWxsb3dlZCBm
aWVsZCJfcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBkdXJhdGlvbjsKK30KKworc3RhdGljIElTTzg2
MDE6OkR1cmF0aW9uIGFkZFRpbWUoY29uc3QgSVNPODYwMTo6UGxhaW5UaW1lJiBwbGFpblRpbWUs
IGNvbnN0IElTTzg2MDE6OkR1cmF0aW9uJiBkdXJhdGlvbikKK3sKKyAgICByZXR1cm4gYmFsYW5j
ZVRpbWUoCisgICAgICAgIHBsYWluVGltZS5ob3VyKCkgKyBkdXJhdGlvbi5ob3VycygpLAorICAg
ICAgICBwbGFpblRpbWUubWludXRlKCkgKyBkdXJhdGlvbi5taW51dGVzKCksCisgICAgICAgIHBs
YWluVGltZS5zZWNvbmQoKSArIGR1cmF0aW9uLnNlY29uZHMoKSwKKyAgICAgICAgcGxhaW5UaW1l
Lm1pbGxpc2Vjb25kKCkgKyBkdXJhdGlvbi5taWxsaXNlY29uZHMoKSwKKyAgICAgICAgcGxhaW5U
aW1lLm1pY3Jvc2Vjb25kKCkgKyBkdXJhdGlvbi5taWNyb3NlY29uZHMoKSwKKyAgICAgICAgcGxh
aW5UaW1lLm5hbm9zZWNvbmQoKSArIGR1cmF0aW9uLm5hbm9zZWNvbmRzKCkpOworfQorCitJU084
NjAxOjpQbGFpblRpbWUgVGVtcG9yYWxQbGFpblRpbWU6OmFkZChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIHRlbXBvcmFsRHVyYXRpb25MaWtlKSBjb25zdAoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGR1cmF0aW9uID0gdG9MaW1pdGVkVGVtcG9yYWxEdXJh
dGlvbihnbG9iYWxPYmplY3QsIHRlbXBvcmFsRHVyYXRpb25MaWtlLCB7IH0pOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIHRvUGxhaW5UaW1lKGdsb2JhbE9iamVjdCwgYWRkVGltZShtX3BsYWluVGltZSwgZHVyYXRp
b24pKSk7Cit9CisKK0lTTzg2MDE6OlBsYWluVGltZSBUZW1wb3JhbFBsYWluVGltZTo6c3VidHJh
Y3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0ZW1wb3JhbER1cmF0aW9u
TGlrZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBkdXJhdGlvbiA9
IHRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCB0ZW1wb3JhbER1cmF0aW9u
TGlrZSwgeyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0b1BsYWluVGltZShnbG9iYWxPYmplY3QsIGFkZFRp
bWUobV9wbGFpblRpbWUsIC1kdXJhdGlvbikpKTsKK30KKworSVNPODYwMTo6UGxhaW5UaW1lIFRl
bXBvcmFsUGxhaW5UaW1lOjp3aXRoKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2Jq
ZWN0KiB0ZW1wb3JhbFRpbWVMaWtlLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHRlbXBvcmFsVGltZUxpa2UtPmluaGVyaXRzPFRl
bXBvcmFsUGxhaW5UaW1lPih2bSkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBtdXN0IG5vdCBjYXJyeSBjYWxlbmRhciJfcyk7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgSlNWYWx1ZSBjYWxlbmRhclByb3Bl
cnR5ID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+Y2FsZW5kYXIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
aWYgKCFjYWxlbmRhclByb3BlcnR5LmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgdGhyb3dUeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBtdXN0IG5vdCBjYXJy
eSBjYWxlbmRhciJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgSlNWYWx1
ZSB0aW1lWm9uZVByb3BlcnR5ID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwg
dm0ucHJvcGVydHlOYW1lcy0+dGltZVpvbmUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgaWYgKCF0aW1lWm9uZVByb3BlcnR5LmlzVW5kZWZpbmVkKCkpIHsKKyAg
ICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVj
dCBtdXN0IG5vdCBjYXJyeSB0aW1lIHpvbmUiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAg
IH0KKworICAgIGF1dG8gW2hvdXJPcHRpb25hbCwgbWludXRlT3B0aW9uYWwsIHNlY29uZE9wdGlv
bmFsLCBtaWxsaXNlY29uZE9wdGlvbmFsLCBtaWNyb3NlY29uZE9wdGlvbmFsLCBuYW5vc2Vjb25k
T3B0aW9uYWxdID0gdG9QYXJ0aWFsVGltZShnbG9iYWxPYmplY3QsIHRlbXBvcmFsVGltZUxpa2Up
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU09iamVjdCog
b3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVl
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgVGVtcG9yYWxP
dmVyZmxvdyBvdmVyZmxvdyA9IHRvVGVtcG9yYWxPdmVyZmxvdyhnbG9iYWxPYmplY3QsIG9wdGlv
bnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBJU084NjAx
OjpEdXJhdGlvbiBkdXJhdGlvbiB7IH07CisgICAgZHVyYXRpb24uc2V0SG91cnMoaG91ck9wdGlv
bmFsLnZhbHVlX29yKGhvdXIoKSkpOworICAgIGR1cmF0aW9uLnNldE1pbnV0ZXMobWludXRlT3B0
aW9uYWwudmFsdWVfb3IobWludXRlKCkpKTsKKyAgICBkdXJhdGlvbi5zZXRTZWNvbmRzKHNlY29u
ZE9wdGlvbmFsLnZhbHVlX29yKHNlY29uZCgpKSk7CisgICAgZHVyYXRpb24uc2V0TWlsbGlzZWNv
bmRzKG1pbGxpc2Vjb25kT3B0aW9uYWwudmFsdWVfb3IobWlsbGlzZWNvbmQoKSkpOworICAgIGR1
cmF0aW9uLnNldE1pY3Jvc2Vjb25kcyhtaWNyb3NlY29uZE9wdGlvbmFsLnZhbHVlX29yKG1pY3Jv
c2Vjb25kKCkpKTsKKyAgICBkdXJhdGlvbi5zZXROYW5vc2Vjb25kcyhuYW5vc2Vjb25kT3B0aW9u
YWwudmFsdWVfb3IobmFub3NlY29uZCgpKSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIHJlZ3VsYXRlVGltZShnbG9iYWxPYmplY3QsIFdURk1vdmUoZHVyYXRpb24pLCBvdmVyZmxv
dykpOworfQorCitzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gZGlmZmVyZW5jZVRpbWUoSVNPODYw
MTo6UGxhaW5UaW1lIHRpbWUxLCBJU084NjAxOjpQbGFpblRpbWUgdGltZTIpCit7CisgICAgZG91
YmxlIGhvdXJzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMi5ob3VyKCkpIC0gc3RhdGljX2Nh
c3Q8ZG91YmxlPih0aW1lMS5ob3VyKCkpOworICAgIGRvdWJsZSBtaW51dGVzID0gc3RhdGljX2Nh
c3Q8ZG91YmxlPih0aW1lMi5taW51dGUoKSkgLSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUxLm1p
bnV0ZSgpKTsKKyAgICBkb3VibGUgc2Vjb25kcyA9IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTIu
c2Vjb25kKCkpIC0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMS5zZWNvbmQoKSk7CisgICAgZG91
YmxlIG1pbGxpc2Vjb25kcyA9IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTIubWlsbGlzZWNvbmQo
KSkgLSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUxLm1pbGxpc2Vjb25kKCkpOworICAgIGRvdWJs
ZSBtaWNyb3NlY29uZHMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUyLm1pY3Jvc2Vjb25kKCkp
IC0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMS5taWNyb3NlY29uZCgpKTsKKyAgICBkb3VibGUg
bmFub3NlY29uZHMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUyLm5hbm9zZWNvbmQoKSkgLSBz
dGF0aWNfY2FzdDxkb3VibGU+KHRpbWUxLm5hbm9zZWNvbmQoKSk7CisgICAgcmV0dXJuIGJhbGFu
Y2VUaW1lKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25k
cywgbmFub3NlY29uZHMpOworfQorCitzdGF0aWMgc3RkOjp0dXBsZTxUZW1wb3JhbFVuaXQsIFRl
bXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlLCBkb3VibGU+IGV4dHJhY3REaWZmZXJlbmNlT3B0aW9u
cyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0
aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3JhbFNtYWxs
ZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBUZW1w
b3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5IH0p
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgVGVtcG9yYWxVbml0
IHNtYWxsZXN0VW5pdCA9IHNtYWxsZXN0LnZhbHVlX29yKFRlbXBvcmFsVW5pdDo6TmFub3NlY29u
ZCk7CisKKyAgICBhdXRvIGxhcmdlc3QgPSB0ZW1wb3JhbExhcmdlc3RVbml0KGdsb2JhbE9iamVj
dCwgb3B0aW9ucywgeyBUZW1wb3JhbFVuaXQ6OlllYXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRl
bXBvcmFsVW5pdDo6V2VlaywgVGVtcG9yYWxVbml0OjpEYXkgfSwgVGVtcG9yYWxVbml0OjpIb3Vy
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFRlbXBvcmFsVW5p
dCBsYXJnZXN0VW5pdCA9IGxhcmdlc3QudmFsdWVfb3IoVGVtcG9yYWxVbml0OjpIb3VyKTsKKwor
ICAgIGlmIChzbWFsbGVzdFVuaXQgPCBsYXJnZXN0VW5pdCkgeworICAgICAgICB0aHJvd1Jhbmdl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBtdXN0IGJlIHNtYWxsZXIg
dGhhbiBsYXJnZXN0VW5pdCJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAg
YXV0byByb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0
LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsCisgICAgICAgIHsgeyAi
Y2VpbCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6
OkZsb29yIH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZFeHBh
bmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCisgICAgICAgICJyb3VuZGluZ01v
ZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wiLCBvciBcImhh
bGZFeHBhbmRcIiJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gaW5jcmVtZW50ID0gdGVtcG9yYWxSb3VuZGlu
Z0luY3JlbWVudChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIG1heGltdW1Sb3VuZGluZ0luY3JlbWVu
dChzbWFsbGVzdFVuaXQpLCBmYWxzZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIHJldHVybiB7IHNtYWxsZXN0VW5pdCwgbGFyZ2VzdFVuaXQsIHJvdW5kaW5n
TW9kZSwgaW5jcmVtZW50IH07Cit9CisKK0lTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFsUGxhaW5U
aW1lOjp1bnRpbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBUZW1wb3JhbFBsYWluVGlt
ZSogb3RoZXIsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvIFtzbWFsbGVzdFVuaXQsIGxhcmdlc3RVbml0LCByb3VuZGluZ01vZGUs
IGluY3JlbWVudF0gPSBleHRyYWN0RGlmZmVyZW5jZU9wdGlvbnMoZ2xvYmFsT2JqZWN0LCBvcHRp
b25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBh
dXRvIHJlc3VsdCA9IGRpZmZlcmVuY2VUaW1lKHBsYWluVGltZSgpLCBvdGhlci0+cGxhaW5UaW1l
KCkpOworICAgIHJlc3VsdC5zZXRZZWFycygwKTsKKyAgICByZXN1bHQuc2V0TW9udGhzKDApOwor
ICAgIHJlc3VsdC5zZXRXZWVrcygwKTsKKyAgICByZXN1bHQuc2V0RGF5cygwKTsKKyAgICBUZW1w
b3JhbER1cmF0aW9uOjpyb3VuZChyZXN1bHQsIGluY3JlbWVudCwgc21hbGxlc3RVbml0LCByb3Vu
ZGluZ01vZGUpOworICAgIFRlbXBvcmFsRHVyYXRpb246OmJhbGFuY2UocmVzdWx0LCBsYXJnZXN0
VW5pdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSVNPODYwMTo6RHVyYXRpb24gVGVtcG9y
YWxQbGFpblRpbWU6OnNpbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlbXBvcmFs
UGxhaW5UaW1lKiBvdGhlciwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGF1dG8gW3NtYWxsZXN0VW5pdCwgbGFyZ2VzdFVuaXQsIHJvdW5k
aW5nTW9kZSwgaW5jcmVtZW50XSA9IGV4dHJhY3REaWZmZXJlbmNlT3B0aW9ucyhnbG9iYWxPYmpl
Y3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIGF1dG8gcmVzdWx0ID0gZGlmZmVyZW5jZVRpbWUob3RoZXItPnBsYWluVGltZSgpLCBw
bGFpblRpbWUoKSk7CisgICAgcmVzdWx0ID0gLXJlc3VsdDsKKyAgICByZXN1bHQuc2V0WWVhcnMo
MCk7CisgICAgcmVzdWx0LnNldE1vbnRocygwKTsKKyAgICByZXN1bHQuc2V0V2Vla3MoMCk7Cisg
ICAgcmVzdWx0LnNldERheXMoMCk7CisgICAgVGVtcG9yYWxEdXJhdGlvbjo6cm91bmQocmVzdWx0
LCBpbmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlKTsKKyAgICByZXN1bHQgPSAt
cmVzdWx0OworICAgIHJlc3VsdC5zZXREYXlzKDApOworICAgIFRlbXBvcmFsRHVyYXRpb246OmJh
bGFuY2UocmVzdWx0LCBsYXJnZXN0VW5pdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworfSAv
LyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9UZW1wb3JhbFBsYWluVGltZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTk3MDAwZDhlMDhkMjg0NmVmMmRjMDM2NWE5
OTEzNDFmN2RjM2JmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaApAQCAtMCwwICsxLDkwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiTGF6eVByb3BlcnR5LmgiCisjaW5jbHVkZSAiVGVt
cG9yYWxDYWxlbmRhci5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxQbGFp
blRpbWUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNp
bmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNw
YWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2bS50ZW1wb3JhbFBsYWluVGlt
ZVNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1lKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpQbGFpblRpbWUmJik7CisgICAgc3RhdGlj
IFRlbXBvcmFsUGxhaW5UaW1lKiB0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiwgU3Ry
dWN0dXJlKiwgSVNPODYwMTo6RHVyYXRpb24mJik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3Jl
YXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xB
UkVfSU5GTzsKKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluVGltZSogZnJvbShKU0dsb2JhbE9i
amVjdCosIEpTVmFsdWUsIHN0ZDo6b3B0aW9uYWw8VGVtcG9yYWxPdmVyZmxvdz4pOworICAgIHN0
YXRpYyBpbnQzMl90IGNvbXBhcmUoVGVtcG9yYWxQbGFpblRpbWUqLCBUZW1wb3JhbFBsYWluVGlt
ZSopOworCisgICAgVGVtcG9yYWxDYWxlbmRhciogY2FsZW5kYXIoKSB7IHJldHVybiBtX2NhbGVu
ZGFyLmdldCh0aGlzKTsgfQorICAgIElTTzg2MDE6OlBsYWluVGltZSBwbGFpblRpbWUoKSBjb25z
dCB7IHJldHVybiBtX3BsYWluVGltZTsgfQorCisjZGVmaW5lIEpTQ19ERUZJTkVfVEVNUE9SQUxf
UExBSU5fVElNRV9GSUVMRChuYW1lLCBjYXBpdGFsaXplZE5hbWUpIFwKKyAgICB1bnNpZ25lZCBu
YW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGFpblRpbWUubmFtZSgpOyB9CisgICAgSlNDX1RFTVBP
UkFMX1BMQUlOX1RJTUVfVU5JVFMoSlNDX0RFRklORV9URU1QT1JBTF9QTEFJTl9USU1FX0ZJRUxE
KTsKKyN1bmRlZiBKU0NfREVGSU5FX1RFTVBPUkFMX1BMQUlOX1RJTUVfRklFTEQKKworICAgIElT
Tzg2MDE6OlBsYWluVGltZSB3aXRoKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIHRlbXBvcmFs
VGltZUxpa2UsIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgSVNPODYwMTo6UGxhaW5UaW1l
IGFkZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpIGNvbnN0OworICAgIElTTzg2MDE6OlBsYWlu
VGltZSBzdWJ0cmFjdChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpIGNvbnN0OworICAgIElTTzg2
MDE6OlBsYWluVGltZSByb3VuZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucykgY29u
c3Q7CisgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25z
KSBjb25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2ln
bmVkPiBwcmVjaXNpb24gPSB7IFByZWNpc2lvbjo6QXV0bywgMCB9KSBjb25zdAorICAgIHsKKyAg
ICAgICAgcmV0dXJuIElTTzg2MDE6OnRlbXBvcmFsVGltZVRvU3RyaW5nKG1fcGxhaW5UaW1lLCBw
cmVjaXNpb24pOworICAgIH0KKworICAgIElTTzg2MDE6OkR1cmF0aW9uIHVudGlsKEpTR2xvYmFs
T2JqZWN0KiwgVGVtcG9yYWxQbGFpblRpbWUqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAg
IElTTzg2MDE6OkR1cmF0aW9uIHNpbmNlKEpTR2xvYmFsT2JqZWN0KiwgVGVtcG9yYWxQbGFpblRp
bWUqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworCisgICAgREVDTEFSRV9WSVNJVF9DSElMRFJF
TjsKKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbFBsYWluVGltZShWTSYsIFN0cnVjdHVyZSosIElT
Tzg2MDE6OlBsYWluVGltZSYmKTsKKyAgICB2b2lkIGZpbmlzaENyZWF0aW9uKFZNJik7CisKKyAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPElTTzg2MDE6OlBsYWluVGltZT4gcGFyc2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0
ZXJUeXBlPiYpOworICAgIHN0YXRpYyBJU084NjAxOjpQbGFpblRpbWUgZnJvbU9iamVjdChKU0ds
b2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CisKKyAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFN1YnBs
YWluVGltZSgpIGNvbnN0OworCisgICAgSVNPODYwMTo6UGxhaW5UaW1lIG1fcGxhaW5UaW1lOwor
ICAgIExhenlQcm9wZXJ0eTxUZW1wb3JhbFBsYWluVGltZSwgVGVtcG9yYWxDYWxlbmRhcj4gbV9j
YWxlbmRhcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9y
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5hZjQ2OTA5ODY5NTIyZmQxODE4ZGNjYjVlZGQ4YWM0ZDBkM2UxZmUy
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIgorCisjaW5jbHVkZSAi
SlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK1NUQVRJ
Q19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShUZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yKTsKKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3RvckZ1bmNGcm9tKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jQ29tcGFyZSk7CisKK30KKworI2lu
Y2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IubHV0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6c19p
bmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmdGVtcG9yYWxQbGFpblRpbWVDb25z
dHJ1Y3RvclRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFsUGxhaW5U
aW1lQ29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxQbGFpblRpbWVDb25z
dHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JUYWJsZQor
ICBmcm9tICAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jRnJvbSAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGNvbXBhcmUgICAgICAgICAgdGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNDb21wYXJlICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDIKK0BlbmQKKyovCisKK1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IqIFRlbXBvcmFs
UGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJl
LCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogcGxhaW5UaW1lUHJvdG90eXBlKQoreworICAg
IGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQ
bGFpblRpbWVDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0
b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZpbmlzaENyZWF0aW9uKHZtLCBw
bGFpblRpbWVQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1Y3RvcjsKK30KKworU3RydWN0
dXJlKiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZt
LCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAg
ICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBU
eXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwor
fQorCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjYWxsVGVtcG9yYWxQbGFpblRp
bWUpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxQ
bGFpblRpbWUpOworCitUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpUZW1wb3JhbFBsYWlu
VGltZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCisgICAgOiBCYXNl
KHZtLCBzdHJ1Y3R1cmUsIGNhbGxUZW1wb3JhbFBsYWluVGltZSwgY29uc3RydWN0VGVtcG9yYWxQ
bGFpblRpbWUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogcGxhaW5UaW1l
UHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiUGxhaW5UaW1l
Il9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVyZVRyYW5zaXRpb24pOwor
ICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5wcm90
b3R5cGUsIHBsYWluVGltZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwg
UHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9u
bHkpOworICAgIHBsYWluVGltZVByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24o
dm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNp
Z25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0KGNhbGxGcmFtZS0+bmV3VGFy
Z2V0KCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlNDX0dFVF9ERVJJVkVEX1NUUlVD
VFVSRSh2bSwgcGxhaW5UaW1lU3RydWN0dXJlLCBuZXdUYXJnZXQsIGNhbGxGcmFtZS0+anNDYWxs
ZWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIElTTzg2
MDE6OkR1cmF0aW9uIGR1cmF0aW9uIHsgfTsKKyAgICBhdXRvIGNvdW50ID0gc3RkOjptaW48c2l6
ZV90PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSwgbnVtYmVyT2ZUZW1wb3JhbFBsYWluVGlt
ZVVuaXRzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAg
ICAgICB1bnNpZ25lZCBkdXJhdGlvbkluZGV4ID0gaSArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihU
ZW1wb3JhbFVuaXQ6OkhvdXIpOworICAgICAgICBkdXJhdGlvbltkdXJhdGlvbkluZGV4XSA9IGNh
bGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxP
YmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAg
ICBpZiAoIXN0ZDo6aXNmaW5pdGUoZHVyYXRpb25bZHVyYXRpb25JbmRleF0pKQorICAgICAgICAg
ICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5QbGFpblRpbWUgcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAgfQorICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1l
Ojp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgc3RydWN0dXJlLCBXVEZNb3ZlKGR1cmF0
aW9uKSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbFBsYWlu
VGltZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRocm93Q29uc3Ry
dWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlBsYWluVGltZSIpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLmZyb20KK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yRnVuY0Zyb20sIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgVGVtcG9yYWxPdmVyZmxvdyBvdmVyZmxvdyA9IHRvVGVtcG9y
YWxPdmVyZmxvdyhnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIGl0ZW1WYWx1ZSA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CisKKyAgICBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsUGxhaW5UaW1l
Pih2bSkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3Ry
dWN0dXJlKCksIGpzQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KGl0ZW1WYWx1ZSktPnBsYWluVGlt
ZSgpKSkpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUo
VGVtcG9yYWxQbGFpblRpbWU6OmZyb20oZ2xvYmFsT2JqZWN0LCBpdGVtVmFsdWUsIG92ZXJmbG93
KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1w
b3JhbC5wbGFpbnRpbWUuY29tcGFyZQorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
UGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jQ29tcGFyZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogb25lID0gVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51bGxvcHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvKiB0d28gPSBUZW1wb3JhbFBsYWluVGltZTo6ZnJv
bShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSksIHN0ZDo6bnVsbG9wdCk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIoVGVtcG9yYWxQbGFpblRpbWU6OmNvbXBhcmUob25lLCB0d28pKSk7
Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjkyYTkzNjVlMTUwZDUzOTg2NWFmNWVmMzIzMTYxY2ViZGMxZjA1ZjQKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNv
bnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBB
cHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJp
bmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0
ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6Cisg
KiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUK
KyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRo
IHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBB
UFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBS
RVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IK
KyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisg
KiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSW50ZXJuYWxG
dW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGU7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IgZmluYWwgOiBw
dWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEludGVy
bmFsRnVuY3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFn
cyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAg
IHN0YXRpYyBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1
cmUqLCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUq
IGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBE
RUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
cihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBUZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NI
QVJBQkxFKFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IsIEludGVybmFsRnVuY3Rpb24pOwor
Cit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44
YzYwZjc0NWYyYTcwMmQ3ODA1M2NiMjNjMmMwNmY0ZTY2ODg4MTdmCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGUuY3BwCkBAIC0wLDAgKzEsMzg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxl
IEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICog
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJP
Q1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBP
UiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJ
UyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK3N0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0FkZCk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZUZ1bmNTdWJ0cmFjdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNXaXRoKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1VudGlsKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1Np
bmNlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlRnVuY1JvdW5kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0VxdWFscyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNHZXRJU09GaWVsZHMp
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGVGdW5jVG9TdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9KU09OKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvTG9jYWxlU3RyaW5n
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlRnVuY1ZhbHVlT2YpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWludXRlKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
R2V0dGVyU2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWlsbGlzZWNvbmQpOworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaWNyb3NlY29u
ZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZUdldHRlck5hbm9zZWNvbmQpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRU
RVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhcik7CisKK30KKworI2lu
Y2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpzX2luZm8g
PSB7ICJUZW1wb3JhbC5QbGFpblRpbWUiLCAmQmFzZTo6c19pbmZvLCAmcGxhaW5UaW1lUHJvdG90
eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUu
bHV0LmgKK0BiZWdpbiBwbGFpblRpbWVQcm90b3R5cGVUYWJsZQorICBhZGQgICAgICAgICAgICAg
IHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0FkZCAgICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAxCisgIHN1YnRyYWN0ICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVGdW5jU3VidHJhY3QgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgd2l0aCAgICAg
ICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNXaXRoICAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQorICB1bnRpbCAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlRnVuY1VudGlsICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHNp
bmNlICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jU2luY2UgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcm91bmQgICAgICAgICAgICB0ZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZUZ1bmNSb3VuZCAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQorICBlcXVhbHMgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0VxdWFs
cyAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGdldElTT0ZpZWxkcyAgICAgdGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jR2V0SVNPRmllbGRzICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDAKKyAgdG9TdHJpbmcgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1
bmNUb1N0cmluZyAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b0pTT04gICAgICAg
ICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvSlNPTiAgICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAwCisgIHRvTG9jYWxlU3RyaW5nICAgdGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdmFsdWVP
ZiAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNWYWx1ZU9mICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMAorICBob3VyICAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlR2V0dGVySG91ciAgICAgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0
b21BY2Nlc3NvcgorICBtaW51dGUgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
R2V0dGVyTWludXRlICAgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3Nvcgor
ICBzZWNvbmQgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyU2Vjb25k
ICAgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBtaWxsaXNlY29u
ZCAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWlsbGlzZWNvbmQgICAgICBE
b250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBtaWNyb3NlY29uZCAgICAgIHRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQgICAgICBEb250RW51bXxSZWFk
T25seXxDdXN0b21BY2Nlc3NvcgorICBuYW5vc2Vjb25kICAgICAgIHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlR2V0dGVyTmFub3NlY29uZCAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21B
Y2Nlc3NvcgorICBjYWxlbmRhciAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0
dGVyQ2FsZW5kYXIgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorQGVu
ZAorKi8KKworVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUqIFRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBTdHJ1
Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBwcm90b3R5cGUgPSBuZXcgKE5vdE51bGws
IGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZT4odm0uaGVhcCkpIFRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOworICAgIHByb3RvdHlwZS0+Zmlu
aXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIHByb3RvdHlwZTsKK30K
KworU3RydWN0dXJlKiBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUp
Cit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3Rv
dHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQor
CitUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkK
K3sKK30KKwordm9pZCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6ZmluaXNoQ3JlYXRpb24o
Vk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0p
OworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgSlNDX1RPX1NUUklOR19U
QUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUuYWRkCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jQWRkLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRl
bXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICgh
cGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5hZGQgY2FsbGVkIG9uIHZhbHVl
IHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgYXV0byByZXN1bHQgPSBwbGFpblRp
bWUtPmFkZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2Rl
KFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3Ry
dWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLnN1YnRyYWN0
CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5j
U3VidHJhY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpz
RHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUo
KSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnN1YnRy
YWN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIGF1
dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT5zdWJ0cmFjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIGds
b2JhbE9iamVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSkpOworfQor
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFp
bnRpbWUucHJvdG90eXBlLndpdGgKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZUZ1bmNXaXRoLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRv
KiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxG
cmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1l
LnByb3RvdHlwZS53aXRoIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9z
KTsKKworICAgIEpTVmFsdWUgdGVtcG9yYWxUaW1lTGlrZSAgPSBjYWxsRnJhbWUtPmFyZ3VtZW50
KDApOworICAgIGlmICghdGVtcG9yYWxUaW1lTGlrZS5pc09iamVjdCgpKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRmlyc3QgYXJndW1lbnQg
dG8gVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS53aXRoIG11c3QgYmUgYW4gb2JqZWN0Il9z
KTsKKworICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT53aXRoKGdsb2JhbE9iamVjdCwgYXNP
YmplY3QodGVtcG9yYWxUaW1lTGlrZSksIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5UaW1l
U3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLnVudGls
CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5j
VW50aWwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnVudGlsIGNh
bGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIGF1dG8qIG90
aGVyID0gVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDApLCBzdGQ6Om51bGxvcHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHBsYWluVGltZS0+dW50aWwoZ2xvYmFsT2JqZWN0
LCBvdGhlciwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJh
dGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIFdURk1vdmUocmVzdWx0KSwgZ2xv
YmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUuc2lu
Y2UKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1
bmNTaW5jZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuc2luY2Ug
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgYXV0byog
b3RoZXIgPSBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCksIHN0ZDo6bnVsbG9wdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT5zaW5jZShnbG9iYWxPYmpl
Y3QsIG90aGVyLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1
cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShyZXN1bHQpLCBn
bG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS5y
b3VuZAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
RnVuY1JvdW5kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5yb3Vu
ZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBhdXRv
IG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmIChvcHRpb25zLmlzVW5k
ZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnJvdW5kIHJlcXVpcmVzIGFuIG9w
dGlvbnMgYXJndW1lbnQiX3MpOworCisgICAgYXV0byByb3VuZGVkID0gcGxhaW5UaW1lLT5yb3Vu
ZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCksIFdURk1vdmUocm91
bmRlZCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS5lcXVhbHMKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNFcXVhbHMsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFp
blRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBhdXRvKiBvdGhlciA9IFRlbXBvcmFsUGxhaW5U
aW1lOjpmcm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc3RkOjpudWxs
b3B0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocGxhaW5UaW1lLT5wbGFpblRpbWUoKSA9PSBvdGhl
ci0+cGxhaW5UaW1lKCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS5nZXRpc29maWVsZHMKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNHZXRJU09G
aWVsZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7
CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVxdWFscyBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBKU09iamVj
dCogZmllbGRzID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFsT2JqZWN0KTsKKyAgICBmaWVs
ZHMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsZW5kYXIsIHBsYWluVGltZS0+
Y2FsZW5kYXIoKSk7CisgICAgZmllbGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMt
Pmlzb0hvdXIsIGpzTnVtYmVyKHBsYWluVGltZS0+aG91cigpKSk7CisgICAgZmllbGRzLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzb01pY3Jvc2Vjb25kLCBqc051bWJlcihwbGFp
blRpbWUtPm1pY3Jvc2Vjb25kKCkpKTsKKyAgICBmaWVsZHMtPnB1dERpcmVjdCh2bSwgdm0ucHJv
cGVydHlOYW1lcy0+aXNvTWlsbGlzZWNvbmQsIGpzTnVtYmVyKHBsYWluVGltZS0+bWlsbGlzZWNv
bmQoKSkpOworICAgIGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc29N
aW51dGUsIGpzTnVtYmVyKHBsYWluVGltZS0+bWludXRlKCkpKTsKKyAgICBmaWVsZHMtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNvTmFub3NlY29uZCwganNOdW1iZXIocGxhaW5U
aW1lLT5uYW5vc2Vjb25kKCkpKTsKKyAgICBmaWVsZHMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVy
dHlOYW1lcy0+aXNvU2Vjb25kLCBqc051bWJlcihwbGFpblRpbWUtPnNlY29uZCgpKSk7CisgICAg
cmV0dXJuIEpTVmFsdWU6OmVuY29kZShmaWVsZHMpOworfQorCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLnRvc3Ry
aW5nCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVG
dW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9
IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRv
U3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAg
IFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBw
bGFpblRpbWUtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSkp
KSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBv
cmFsLnBsYWludGltZS5wcm90b3R5cGUudG9qc29uCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9KU09OLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1l
Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b0pTT04gY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2
bSwgcGxhaW5UaW1lLT50b1N0cmluZygpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUudG9sb2NhbGVz
dHJpbmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZUZ1bmNUb0xvY2FsZVN0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxG
cmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxh
aW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUt
PnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90
b3R5cGUudG9Mb2NhbGVTdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRp
bWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcGxhaW5U
aW1lLT50b1N0cmluZygpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1w
b3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUudmFsdWVvZgorSlNDX0RFRklO
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1ZhbHVlT2YsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudmFsdWVPZiBtdXN0IG5vdCBiZSBjYWxs
ZWQuIFRvIGNvbXBhcmUgUGxhaW5UaW1lIHZhbHVlcywgdXNlIFRlbXBvcmFsLlBsYWluVGltZS5j
b21wYXJlIl9zKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlR2V0dGVySG91ciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWlu
VGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRp
bWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmhvdXIgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051
bWJlcihwbGFpblRpbWUtPmhvdXIoKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIo
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nh
c3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taW51dGUgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm1pbnV0ZSgpKSk7Cit9CisKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlclNlY29u
ZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxh
aW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUu
cHJvdG90eXBlLnNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJf
cyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+c2Vj
b25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlR2V0dGVyTWlsbGlzZWNvbmQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQ
bGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghcGxh
aW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWxsaXNlY29uZCBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+bWlsbGlzZWNvbmQoKSkpOworfQorCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaWNyb3Nl
Y29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNW
YWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byog
cGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVl
OjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRp
bWUucHJvdG90eXBlLm1pY3Jvc2Vjb25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxh
aW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5U
aW1lLT5taWNyb3NlY29uZCgpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1w
b3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck5hbm9zZWNvbmQsIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nh
c3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOwor
ICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5uYW5vc2Vjb25k
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5uYW5vc2Vjb25kKCkpKTsKK30K
KworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0
dGVyQ2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1
ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwg
SlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwu
UGxhaW5UaW1lLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHBsYWluVGltZS0+
Y2FsZW5kYXIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMmVhMjI5YTdiZDUxOTRiYjQ2MTZmYTQ3MmMyZmFkNjE0ZDNhZTU4ZQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAyMSBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFO
WSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJM
RSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFS
WSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBM
T1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElP
TikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUg
VVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklM
SVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSlNP
YmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgeworcHVibGljOgorICAgIHVz
aW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRpYyBjb25zdGV4cHIgdW5zaWdu
ZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhhc1N0YXRpY1Byb3Bl
cnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nl
c3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgewor
ICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAmdm0ucGxhaW5PYmplY3RTcGFj
ZTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUqIGNyZWF0
ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mLCBKU0dsb2Jh
bE9iamVjdCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCmluZGV4IDk3ODRjM2QxNzQ5
OTY5MTUwYjNlZDZlNjg2ZDVjYTg5NjllMmIyZDIuLjc2NTliMDU4MmNjZDI5NWU4ZDFiYTVmMzhl
ZWJkNDE0NzE4NjE3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsVGltZVpvbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsVGltZVpvbmUuY3BwCkBAIC01NywxNyArNTcsNiBAQCBUZW1wb3JhbFRpbWVab25l
OjpUZW1wb3JhbFRpbWVab25lKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRpbWVab25l
IHRpbWVabwogewogfQogCi0vLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3N1
cC1pc3ZhbGlkdGltZXpvbmVuYW1lCi1zdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IFRlbXBvcmFs
VGltZVpvbmU6OmlkRm9yVGltZVpvbmVOYW1lKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIGNv
bnN0IGF1dG8mIHRpbWVab25lcyA9IGludGxBdmFpbGFibGVUaW1lWm9uZXMoKTsKLSAgICBmb3Ig
KHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB0aW1lWm9uZXMuc2l6ZSgpOyArK2luZGV4KSB7
Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRpbWVab25lc1tpbmRleF0sIHN0
cmluZykpCi0gICAgICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAgfQotICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7Ci19Ci0KIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2Vj
LXRlbXBvcmFsLXBhcnNldGVtcG9yYWx0aW1lWm9uZXN0cmluZwogc3RhdGljIHN0ZDo6b3B0aW9u
YWw8aW50NjRfdD4gcGFyc2VUZW1wb3JhbFRpbWVab25lU3RyaW5nKFN0cmluZ1ZpZXcpCiB7CkBA
IC0xMTAsNyArOTksNyBAQCBKU09iamVjdCogVGVtcG9yYWxUaW1lWm9uZTo6ZnJvbShKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRpbWVab25lTAogICAgIGlmICh1dGNPZmZz
ZXQpCiAgICAgICAgIHJldHVybiBUZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tVVRDT2Zmc2V0
KHZtLCBnbG9iYWxPYmplY3QtPnRpbWVab25lU3RydWN0dXJlKCksIHV0Y09mZnNldC52YWx1ZSgp
KTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IGlkRm9yVGlt
ZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+
IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7
CiAgICAgaWYgKGlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBUZW1wb3JhbFRpbWVab25lOjpj
cmVhdGVGcm9tSUQodm0sIGdsb2JhbE9iamVjdC0+dGltZVpvbmVTdHJ1Y3R1cmUoKSwgaWRlbnRp
Zmllci52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxUaW1lWm9uZS5oCmluZGV4IGJjMjgxNTNiN2ZkMjViYjc2NWUyNTA2ZmQ5NmZhNzZiNWU1
MTBhZGIuLmU1NzllYTNhNjNmNjIxZmRmNDMyNjExMzI5NzQ5YmYzYzQ3NDZhNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmgKQEAgLTI1
LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJJU084NjAxLmgiCiAjaW5j
bHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KQEAgLTQ3LDEwICs0OCw5IEBAIGNsYXNzIFRlbXBvcmFsVGltZVpvbmUgZmlu
YWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBERUNMQVJFX0lORk87CiAKLSAg
ICB1c2luZyBUaW1lWm9uZSA9IFZhcmlhbnQ8VGltZVpvbmVJRCwgaW50NjRfdD47Ci0gICAgVGlt
ZVpvbmUgdGltZVpvbmUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVab25lOyB9CisgICAgdXNpbmcg
VGltZVpvbmUgPSBJU084NjAxOjpUaW1lWm9uZTsKIAotICAgIHN0YXRpYyBzdGQ6Om9wdGlvbmFs
PFRpbWVab25lSUQ+IGlkRm9yVGltZVpvbmVOYW1lKFN0cmluZ1ZpZXcpOworICAgIFRpbWVab25l
IHRpbWVab25lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lWm9uZTsgfQogCiAgICAgc3RhdGljIEpT
T2JqZWN0KiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3Ry
dWN0b3IuY3BwCmluZGV4IDk5MzM2NWFiMzMyZjhmZmFkODc1ODgwMDA4MTBjZDMwZWRkYTYxZDcu
LjZkMjNlOGYwNTlkYzc5YmNmYTI5ZDljNjVhMDVlZWU4M2IzYTVjYzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNv
bnN0cnVjdG9yLmNwcApAQCAtNzQsNiArNzQsNyBAQCB2b2lkIFRlbXBvcmFsVGltZVpvbmVDb25z
dHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbFRpbWVab25lUHJvdG90eQog
ewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiVGltZVpvbmUiX3MsIFByb3BlcnR5
QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgdGVtcG9y
YWxUaW1lWm9uZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVy
dHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOwor
ICAgIHRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9u
KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5z
aWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBKU0NfREVGSU5FX0hP
U1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxUaW1lWm9uZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkyLDcgKzkzLDcgQEAgSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsVGltZVpvbmUsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBpZiAodXRjT2Zmc2V0KQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENPZmZzZXQodm0s
IHN0cnVjdHVyZSwgdXRjT2Zmc2V0LnZhbHVlKCkpKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8VGlt
ZVpvbmVJRD4gaWRlbnRpZmllciA9IFRlbXBvcmFsVGltZVpvbmU6OmlkRm9yVGltZVpvbmVOYW1l
KHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkZW50aWZp
ZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7CiAgICAgaWYg
KCFpZGVudGlmaWVyKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiYXJndW1lbnQgbmVlZHMgdG8gYmUgVVRDIG9mZnNldCBzdHJpbmcgb3IgVGltZVpvbmUg
aWRlbnRpZmllciJfcyk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKaW5kZXggMDJmMTg5N2IwZjM5MTg1NjBiNTA1MzE5ZDZlNDYxYmRiNWQ3MTBk
ZC4uMTVkZGIyYWZhZTUyMzc3N2FlOTA2NmIzMWIwZDcxMDU0NmI3ZDg3MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTY0LDYgKzE2NCw3IEBACiAjaW5jbHVkZSAiU3lt
Ym9sT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgogI2luY2x1ZGUgIlRl
bXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgogI2luY2x1
ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIKICNp
bmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKQEAgLTE1ODgsNiArMTU4OSw4IEBAIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgZGVzdHJ1Y3RpYmxl
Q2VsbEhlYXBDZWxsVHlwCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
c3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN5bWJvbE9iamVjdCkK
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVjdERl
c2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUZW1w
bGF0ZU9iamVjdERlc2NyaXB0b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVS
X1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1w
b3JhbENhbGVuZGFyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRl
bXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxEdXJh
dGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFBs
YWluVGltZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbFBsYWluVGltZSkK
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVab25l
U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsVGltZVpvbmUpCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhBcnJheVNwYWNlLCBjZWxsSGVh
cENlbGxUeXBlLmdldCgpLCBKU1VpbnQ4QXJyYXkpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgSlNVaW50OENsYW1wZWRBcnJheSkKQEAgLTE2MjIsNyArMTYyNSw2IEBAIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0U3Bh
Y2UsIGludGxSZWxhdGl2CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
aW50bFNlZ21lbnRJdGVyYXRvclNwYWNlLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxUeXBl
LmdldCgpLCBJbnRsU2VnbWVudEl0ZXJhdG9yKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUl9TTE9XKGludGxTZWdtZW50ZXJTcGFjZSwgaW50bFNlZ21lbnRlckhlYXBDZWxsVHlw
ZS5nZXQoKSwgSW50bFNlZ21lbnRlcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlLmdldCgp
LCBJbnRsU2VnbWVudHMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1co
dGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbER1
cmF0aW9uKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUu
Z2V0KCksIEpTVG9XYXNtSUNDYWxsZWUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1ibHlDb2RlQmxvY2tI
ZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6MHg5YWQ5
OTVjZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMWU3MjVjZTM3NDg3M2UwMDdk
MWIwM2Y1NDk1NmM1MDIzMDRjNmIzNy4uN2E1OGIyNzllNjcwYTg0MDNkMWYzOTQxMjM1N2Q1ZTc3
MTEzZjU3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xOTUsNiArMTk1LDcg
QEAgY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmlydHVhbFJl
Z2lzdGVyOwogY2xhc3MgVk1FbnRyeVNjb3BlOwogY2xhc3MgVGVtcG9yYWxDYWxlbmRhcjsKK2Ns
YXNzIFRlbXBvcmFsUGxhaW5UaW1lOwogY2xhc3MgVGVtcG9yYWxUaW1lWm9uZTsKIGNsYXNzIFRv
cExldmVsR2xvYmFsT2JqZWN0U2NvcGU7CiBjbGFzcyBUeXBlUHJvZmlsZXI7CkBAIC01OTUsNiAr
NTk2LDggQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBwdWJs
aWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSKHN5bWJvbE9iamVjdFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UpCiAgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2UpCisgICAg
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3BhY2Up
CisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFBsYWluVGlt
ZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxU
aW1lWm9uZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWlu
dDhBcnJheVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodWlu
dDhDbGFtcGVkQXJyYXlTcGFjZSkKQEAgLTYyMCw3ICs2MjMsNiBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxW
TT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRJ
dGVyYXRvclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50
bFNlZ21lbnRlclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
aW50bFNlZ21lbnRzU3BhY2UpCi0gICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih0ZW1wb3JhbER1cmF0aW9uU3BhY2UpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNUb1dhc21JQ0NhbGxlZVNwYWNlKQog
ICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlDb2RlQmxv
Y2tTcGFjZSkKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMzIyMzY2YTg2ODM0NTZmMGE0YjFkYTc4ZjliOTI2MTdlYjAwMWUyNi4uMzk0OGUy
N2Y3Y2YwYmE0ZDA0MDE5MWMxZWMzODk4Njk4MDg5MzJmMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9D
aGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNSBAQAorMjAyMS0w
OS0wNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0Nd
IEltcGxlbWVudCBUZW1wb3JhbC5QbGFpblRpbWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTg5MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzOgorICAg
ICAgICAqIHN0cmVzcy90ZW1wb3JhbC1kdXJhdGlvbi5qczoKKyAgICAgICAgKiBzdHJlc3MvdGVt
cG9yYWwtcGxhaW50aW1lLmpzOiBBZGRlZC4KKyAgICAgICAgKHNob3VsZEJlKToKKyAgICAgICAg
KHNob3VsZFRocm93KToKKyAgICAgICAgKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKToKKyAgICAg
ICAgKGxldC50aW1lLlRlbXBvcmFsLlBsYWluVGltZS5mcm9tLnNob3VsZEJlKToKKyAgICAgICAg
KGxldC50ZXh0Lm9mLmZhaWx1cmVzLnNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZEJlLlRl
bXBvcmFsLlBsYWluVGltZS5mcm9tKToKKyAgICAgICAgKG5ldy5UZW1wb3JhbC5QbGFpblRpbWUu
dmFsdWVPZik6CisgICAgICAgIChzaG91bGRCZS5TdHJpbmcudGltZS51bnRpbC5UZW1wb3JhbC5Q
bGFpblRpbWUuZnJvbSk6CisgICAgICAgICogc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzOgor
ICAgICAgICAobGV0LnRleHQub2YuZmFpbHVyZXMuc2hvdWxkVGhyb3cpOiBEZWxldGVkLgorICAg
ICAgICAqIHRlc3QyNjIvY29uZmlnLnlhbWw6CisKIDIwMjEtMDktMDMgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBNYWtlIEVudW1lcmF0b3JOZXh0
VXBkYXRlSW5kZXhBbmRNb2RlIGNsb2JiZXJpemluZyBydWxlIHByZWNpc2UKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGVt
cG9yYWwtY2FsZW5kYXIuanMKaW5kZXggZWYwYWMxMTFhNWI4YjczYzNhMDE3NWRhYTc3OTM2YzA4
OWFmY2Y0NC4uMzUwOTcxY2UzY2EwY2QxMzk1MTk2OTg4NGJkNDViMTZiMTljYjM5ZCAxMDA2NDQK
LS0tIGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtY2FsZW5kYXIuanMKKysrIGIvSlNUZXN0cy9z
dHJlc3MvdGVtcG9yYWwtY2FsZW5kYXIuanMKQEAgLTE4LDYgKzE4LDEzIEBAIGZ1bmN0aW9uIHNo
b3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSwgbWVzc2FnZSkgewogICAgICAgICBzaG91bGRCZShT
dHJpbmcoZXJyb3IpLCBtZXNzYWdlKTsKIH0KIAorc2hvdWxkQmUoVGVtcG9yYWwuQ2FsZW5kYXIg
aW5zdGFuY2VvZiBGdW5jdGlvbiwgdHJ1ZSk7CitzaG91bGRCZShUZW1wb3JhbC5DYWxlbmRhci5s
ZW5ndGgsIDApOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1w
b3JhbC5DYWxlbmRhciwgJ3Byb3RvdHlwZScpLndyaXRhYmxlLCBmYWxzZSk7CitzaG91bGRCZShP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLkNhbGVuZGFyLCAncHJvdG90
eXBlJykuZW51bWVyYWJsZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihUZW1wb3JhbC5DYWxlbmRhciwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSwg
ZmFsc2UpOworc2hvdWxkQmUoVGVtcG9yYWwuQ2FsZW5kYXIucHJvdG90eXBlLmNvbnN0cnVjdG9y
LCBUZW1wb3JhbC5DYWxlbmRhcik7CisKIHsKICAgICBsZXQgY2FsZW5kYXIgPSBuZXcgVGVtcG9y
YWwuQ2FsZW5kYXIoImlzbzg2MDEiKTsKICAgICBzaG91bGRCZShjYWxlbmRhci5pZCwgYGlzbzg2
MDFgKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWR1cmF0aW9uLmpzIGIv
SlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtZHVyYXRpb24uanMKaW5kZXggZjY1MjI3MGEwODI4ZWY0
Zjk5Zjk0YjRjMzY1YmI3YzhlYzgxMzg5Ny4uZjI3OTc4MWZhYzY1Yzc5ZDkwYTc3ZGUyNDJhYzFj
MGZjYjAwOTYyYiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtZHVyYXRpb24u
anMKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtZHVyYXRpb24uanMKQEAgLTI3LDYgKzI3
LDcgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlKSB7CiBzaG91bGRCZShP
YmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLkR1cmF0aW9uLCAncHJvdG90
eXBlJykuZW51bWVyYWJsZSwgZmFsc2UpOwogc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5
RGVzY3JpcHRvcihUZW1wb3JhbC5EdXJhdGlvbiwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSwg
ZmFsc2UpOwogc2hvdWxkVGhyb3coKCkgPT4gVGVtcG9yYWwuRHVyYXRpb24oKSwgVHlwZUVycm9y
KTsKK3Nob3VsZEJlKFRlbXBvcmFsLkR1cmF0aW9uLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgVGVt
cG9yYWwuRHVyYXRpb24pOwogCiBzaG91bGRCZShuZXcgVGVtcG9yYWwuRHVyYXRpb24oKSBpbnN0
YW5jZW9mIFRlbXBvcmFsLkR1cmF0aW9uLCB0cnVlKTsKIHsKZGlmZiAtLWdpdCBhL0pTVGVzdHMv
c3RyZXNzL3RlbXBvcmFsLXBsYWludGltZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXBs
YWludGltZS5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4xN2FkNmE3MDExYzJlYWE0NThiMGY2ZGNjOTZiZmMxNWM3
NjY2MzU2Ci0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtcGxhaW50
aW1lLmpzCkBAIC0wLDAgKzEsMjg4IEBACisvL0AgcmVxdWlyZU9wdGlvbnMoIi0tdXNlVGVtcG9y
YWw9MSIpCisKK2Z1bmN0aW9uIHNob3VsZEJlKGFjdHVhbCwgZXhwZWN0ZWQpIHsKKyAgICBpZiAo
YWN0dWFsICE9PSBleHBlY3RlZCkKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBleHBlY3RlZCAk
e2V4cGVjdGVkfSBidXQgZ290ICR7YWN0dWFsfWApOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJv
dyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKKyAgICBsZXQgZXJyb3I7CisgICAgdHJ5IHsK
KyAgICAgICAgZnVuYygpOworICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgZXJyb3IgPSBlOwor
ICAgIH0KKworICAgIGlmICghKGVycm9yIGluc3RhbmNlb2YgZXJyb3JUeXBlKSkKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKGBFeHBlY3RlZCAke2Vycm9yVHlwZS5uYW1lfSFgKTsKKyAgICBpZiAo
bWVzc2FnZSAhPT0gdW5kZWZpbmVkKQorICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyb3IpLCBt
ZXNzYWdlKTsKK30KKworc2hvdWxkQmUoVGVtcG9yYWwuUGxhaW5UaW1lIGluc3RhbmNlb2YgRnVu
Y3Rpb24sIHRydWUpOworc2hvdWxkQmUoVGVtcG9yYWwuUGxhaW5UaW1lLmxlbmd0aCwgMCk7Citz
aG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLlBsYWluVGlt
ZSwgJ3Byb3RvdHlwZScpLndyaXRhYmxlLCBmYWxzZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLlBsYWluVGltZSwgJ3Byb3RvdHlwZScpLmVudW1l
cmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3Io
VGVtcG9yYWwuUGxhaW5UaW1lLCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlLCBmYWxzZSk7Citz
aG91bGRCZShUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBUZW1wb3Jh
bC5QbGFpblRpbWUpOworCit7CisgICAgbGV0IHRpbWUgPSBuZXcgVGVtcG9yYWwuUGxhaW5UaW1l
KDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcpOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lKSwgYDAw
OjAxOjAyLjAwMzAwNDAwNWApOworICAgIHNob3VsZEJlKHRpbWUuaG91ciwgMCk7CisgICAgc2hv
dWxkQmUodGltZS5taW51dGUsIDEpOworICAgIHNob3VsZEJlKHRpbWUuc2Vjb25kLCAyKTsKKyAg
ICBzaG91bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCAzKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pY3Jv
c2Vjb25kLCA0KTsKKyAgICBzaG91bGRCZSh0aW1lLm5hbm9zZWNvbmQsIDUpOworfQorCit7Cisg
ICAgbGV0IHRpbWUgPSBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDAsIDApOwor
ICAgIHNob3VsZEJlKFN0cmluZyh0aW1lKSwgYDAwOjAwOjAwYCk7CisgICAgc2hvdWxkQmUodGlt
ZS5ob3VyLCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgMCk7CisgICAgc2hvdWxkQmUo
dGltZS5zZWNvbmQsIDApOworICAgIHNob3VsZEJlKHRpbWUubWlsbGlzZWNvbmQsIDApOworICAg
IHNob3VsZEJlKHRpbWUubWljcm9zZWNvbmQsIDApOworICAgIHNob3VsZEJlKHRpbWUubmFub3Nl
Y29uZCwgMCk7Cit9CisKK3sKKyAgICBsZXQgdGltZSA9IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUo
MjMsIDU5LCA1OSwgOTk5LCA5OTksIDk5OSk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBg
MjM6NTk6NTkuOTk5OTk5OTk5YCk7CisgICAgc2hvdWxkQmUodGltZS5ob3VyLCAyMyk7CisgICAg
c2hvdWxkQmUodGltZS5taW51dGUsIDU5KTsKKyAgICBzaG91bGRCZSh0aW1lLnNlY29uZCwgNTkp
OworICAgIHNob3VsZEJlKHRpbWUubWlsbGlzZWNvbmQsIDk5OSk7CisgICAgc2hvdWxkQmUodGlt
ZS5taWNyb3NlY29uZCwgOTk5KTsKKyAgICBzaG91bGRCZSh0aW1lLm5hbm9zZWNvbmQsIDk5OSk7
Cit9CisKK3sKKyAgICBsZXQgdGltZSA9IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMjMsIDU5LCA1
OSwgOTk5LCA5OTksIDk5OSk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBgMjM6NTk6NTku
OTk5OTk5OTk5YCk7CisgICAgc2hvdWxkQmUodGltZS5ob3VyLCAyMyk7CisgICAgc2hvdWxkQmUo
dGltZS5taW51dGUsIDU5KTsKKyAgICBzaG91bGRCZSh0aW1lLnNlY29uZCwgNTkpOworICAgIHNo
b3VsZEJlKHRpbWUubWlsbGlzZWNvbmQsIDk5OSk7CisgICAgc2hvdWxkQmUodGltZS5taWNyb3Nl
Y29uZCwgOTk5KTsKKyAgICBzaG91bGRCZSh0aW1lLm5hbm9zZWNvbmQsIDk5OSk7Cit9CisKK3sK
KyAgICAvLyBXZSBhY2NlcHQgNjAgc2Vjb25kcywgYnV0IGludGVycHJldCBpdCBhcyA1OSBzZWNv
bmRzLgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBv
cmFsLXBhcnNlaXNvZGF0ZXRpbWUgc3RlcCAxMworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxh
aW5UaW1lLmZyb20oIjIzOjU5OjYwLjk5OTk5OTk5OSIpOworICAgIHNob3VsZEJlKFN0cmluZyh0
aW1lKSwgYDIzOjU5OjU5Ljk5OTk5OTk5OWApOworICAgIHNob3VsZEJlKHRpbWUuaG91ciwgMjMp
OworICAgIHNob3VsZEJlKHRpbWUubWludXRlLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5zZWNv
bmQsIDU5KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCA5OTkpOworICAgIHNob3Vs
ZEJlKHRpbWUubWljcm9zZWNvbmQsIDk5OSk7CisgICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25k
LCA5OTkpOworfQorCit7CisgICAgLy8gV2UgYWNjZXB0IDYwIHNlY29uZHMsIGJ1dCBpbnRlcnBy
ZXQgaXQgYXMgNTkgc2Vjb25kcy4KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC1wYXJzZWlzb2RhdGV0aW1lIHN0ZXAgMTMKKyAgICBsZXQgdGlt
ZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCIyMDIxLTA5LTA0VDIzOjE0OjI2LjEwMDIwMDMw
MCIpOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lKSwgYDIzOjE0OjI2LjEwMDIwMDNgKTsKKyAg
ICBzaG91bGRCZSh0aW1lLmhvdXIsIDIzKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgMTQp
OworICAgIHNob3VsZEJlKHRpbWUuc2Vjb25kLCAyNik7CisgICAgc2hvdWxkQmUodGltZS5taWxs
aXNlY29uZCwgMTAwKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pY3Jvc2Vjb25kLCAyMDApOworICAg
IHNob3VsZEJlKHRpbWUubmFub3NlY29uZCwgMzAwKTsKK30KKworc2hvdWxkQmUoU3RyaW5nKFRl
bXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMzoyNDozMCcpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRC
ZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzAnKSks
IGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcx
OTk1LTEyLTA3VDAzOjI0OjMwWicpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVt
cG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbRXVyb3BlL0Jy
dXNzZWxzXScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgVGVtcG9y
YWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbVU5LTk9XTl0nKTsK
K30sIFJhbmdlRXJyb3IpOworeworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZy
b20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbRXVyb3BlL0JydXNzZWxzXScpCisgICAgc2hv
dWxkQmUodGltZSA9PT0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20odGltZSksIGZhbHNlKTsKK30K
K3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsKKyAgICAgIGhvdXI6
IDE5LAorICAgICAgbWludXRlOiAzOSwKKyAgICAgIHNlY29uZDogOSwKKyAgICAgIG1pbGxpc2Vj
b25kOiA2OCwKKyAgICAgIG1pY3Jvc2Vjb25kOiAzNDYsCisgICAgICBuYW5vc2Vjb25kOiAyMDUK
KyAgICB9KTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAxOTozOTowOS4wNjgzNDYyMDVg
KTsKKworICAgIC8vIFRoaXMgaXMgc3BlYyBidWcuIEN1cnJlbnRseSB0aGlzIHRocm93cyBhbiBl
cnJvci4gQnV0IHBvc3NpYmx5IHRoaXMgc2hvdWxkIG5vdCB0aHJvdyBhbiBlcnJvci4KKyAgICAv
LyBUcmFja2VkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXRlbXBvcmFsL2lz
c3Vlcy8xODAzLgorICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgVGVtcG9yYWwuUGxh
aW5UaW1lLmZyb20oeyBob3VyOiAxOSwgbWludXRlOiAzOSwgc2Vjb25kOiA5IH0pOworICAgIH0s
IFR5cGVFcnJvcik7Cit9Cit7CisgICAgLy8gRGlmZmVyZW50IG92ZXJmbG93IG1vZGVzCisgICAg
c2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsgaG91cjogMTUsIG1pbnV0
ZTogNjAsIHNlY29uZDogMCwgbWlsbGlzZWNvbmQ6IDAsIG1pY3Jvc2Vjb25kOiAwLCBuYW5vc2Vj
b25kOiAwIH0sIHsgb3ZlcmZsb3c6ICdjb25zdHJhaW4nIH0pKSwgYDE1OjU5OjAwYCk7CisgICAg
c2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsgaG91cjogMTUsIG1pbnV0
ZTogLTEsIHNlY29uZDogMCwgbWlsbGlzZWNvbmQ6IDAsIG1pY3Jvc2Vjb25kOiAwLCBuYW5vc2Vj
b25kOiAwIH0sIHsgb3ZlcmZsb3c6ICdjb25zdHJhaW4nIH0pKSwgYDE1OjAwOjAwYCk7Cit9Citz
aG91bGRUaHJvdygoKSA9PiB7CisgICAgVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oeyBob3VyOiAx
NSwgbWludXRlOiA2MCwgc2Vjb25kOiAwLCBtaWxsaXNlY29uZDogMCwgbWljcm9zZWNvbmQ6IDAs
IG5hbm9zZWNvbmQ6IDAgfSwgeyBvdmVyZmxvdzogJ3JlamVjdCcgfSk7Cit9LCBSYW5nZUVycm9y
KTsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh7IGhv
dXI6IDE1LCBtaW51dGU6IC0xLCBzZWNvbmQ6IDAsIG1pbGxpc2Vjb25kOiAwLCBtaWNyb3NlY29u
ZDogMCwgbmFub3NlY29uZDogMCB9LCB7IG92ZXJmbG93OiAncmVqZWN0JyB9KTsKK30sIFJhbmdl
RXJyb3IpOworCitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoLTEp
OyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgyNSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9y
YWwuUGxhaW5UaW1lKDI0KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5l
dyBUZW1wb3JhbC5QbGFpblRpbWUoMzApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgp
ID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZShJbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKC1JbmZpbml0eSk7IH0s
IFJhbmdlRXJyb3IpOworCitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRp
bWUoMCwgLTEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBv
cmFsLlBsYWluVGltZSgwLCA2MCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
eyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDYxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgNzcpOyB9LCBSYW5nZUVycm9y
KTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAxMDApOyB9
LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGlt
ZSgwLCBJbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcg
VGVtcG9yYWwuUGxhaW5UaW1lKDAsIC1JbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworCitzaG91
bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgLTEpOyB9LCBSYW5n
ZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAw
LCA2MCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwu
UGxhaW5UaW1lKDAsIDAsIDYxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7
IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgNzcpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3Vs
ZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAxMDApOyB9LCBSYW5n
ZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAw
LCBJbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVt
cG9yYWwuUGxhaW5UaW1lKDAsIDAsIC1JbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworCitzaG91
bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgLTEpOyB9LCBS
YW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgw
LCAwLCAwLCAxMDAwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBU
ZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMTAwMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxk
VGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDUwMDAwKTsgfSwg
UmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUo
MCwgMCwgMCwgOTk5OTk5OTk5OSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
eyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIEluZmluaXR5KTsgfSwgUmFuZ2VFcnJv
cik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwg
LUluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRl
bXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAtMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxk
VGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDEwMDApOyB9
LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGlt
ZSgwLCAwLCAwLCAwLCAxMDAxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7
IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgNTAwMDApOyB9LCBSYW5nZUVycm9y
KTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAw
LCA5OTk5OTk5OTk5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBU
ZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsK
K3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAt
SW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVt
cG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDAsIC0xKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgMTAw
MCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxh
aW5UaW1lKDAsIDAsIDAsIDAsIDAsIDEwMDEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCA1MDAwMCk7IH0s
IFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1l
KDAsIDAsIDAsIDAsIDAsIDk5OTk5OTk5OTkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCBJbmZpbml0eSk7
IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5U
aW1lKDAsIDAsIDAsIDAsIDAsIC1JbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworCitsZXQgZmFp
bHVyZXMgPSBbCisgICAgIiIsCisgICAgIjIzOjU5OjYxLjk5OTk5OTk5OSIsCitdOworCitmb3Ig
KGxldCB0ZXh0IG9mIGZhaWx1cmVzKSB7CisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAg
ICBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh0ZXh0KTsKKyAgICB9LCBSYW5nZUVycm9yKTsKK30K
KworeworICAgIGxldCBvbmUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDM6MjQnKTsKKyAg
ICBsZXQgdHdvID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAxOjI0Jyk7CisgICAgbGV0IHRo
cmVlID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAxOjI0OjA1Jyk7CisgICAgbGV0IHNvcnRl
ZCA9IFtvbmUsIHR3bywgdGhyZWVdLnNvcnQoVGVtcG9yYWwuUGxhaW5UaW1lLmNvbXBhcmUpOwor
ICAgIHNob3VsZEJlKHNvcnRlZC5qb2luKCcgJyksIGAwMToyNDowMCAwMToyNDowNSAwMzoyNDow
MGApOworfQorCitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oIjIwOjM0
IikuY2FsZW5kYXIpLCBgaXNvODYwMWApOworc2hvdWxkQmUoVGVtcG9yYWwuUGxhaW5UaW1lLmZy
b20oIjIwOjM0IikuY2FsZW5kYXIgaW5zdGFuY2VvZiBUZW1wb3JhbC5DYWxlbmRhciwgdHJ1ZSk7
Cit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgiMjA6MzQiKTsKKyAg
ICBzaG91bGRCZSh0aW1lLmNhbGVuZGFyLCB0aW1lLmNhbGVuZGFyKTsKK30KKworeworICAgIGxl
dCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OjM5OjA5LjA2ODM0NjIwNScpOwor
ICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnJvdW5kKHsgc21hbGxlc3RVbml0OiAnaG91cicgfSkp
LCBgMjA6MDA6MDBgKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZS5yb3VuZCh7IHJvdW5kaW5n
SW5jcmVtZW50OiAzMCwgc21hbGxlc3RVbml0OiAnbWludXRlJyB9KSksIGAxOTozMDowMGApOwor
ICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnJvdW5kKHsgcm91bmRpbmdJbmNyZW1lbnQ6IDMwLCBz
bWFsbGVzdFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01vZGU6ICdjZWlsJyB9KSksIGAyMDowMDow
MGApOworfQoreworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OjM5
OjA5LjA2ODM0NjIwNScpOworICAgIGxldCBvdGhlciA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9t
KCcyMDoxMzoyMC45NzEzOTgwOTknKTsKKyAgICBzaG91bGRCZSh0aW1lLmVxdWFscyhvdGhlciks
IGZhbHNlKTsKKyAgICBzaG91bGRCZSh0aW1lLmVxdWFscyh0aW1lKSwgdHJ1ZSk7Cit9Cit7Cisg
ICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1
Jyk7CisgICAgc2hvdWxkQmUodGltZS50b1N0cmluZygpLCBgMTk6Mzk6MDkuMDY4MzQ2MjA1YCk7
CisKKyAgICBzaG91bGRCZSh0aW1lLnRvU3RyaW5nKHsgc21hbGxlc3RVbml0OiAnbWludXRlJyB9
KSwgYDE5OjM5YCk7CisgICAgc2hvdWxkQmUodGltZS50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNv
bmREaWdpdHM6IDAgfSksIGAxOTozOTowOWApOworICAgIHNob3VsZEJlKHRpbWUudG9TdHJpbmco
eyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA0IH0pLCBgMTk6Mzk6MDkuMDY4M2ApOworICAgIHNo
b3VsZEJlKHRpbWUudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA1LCByb3VuZGlu
Z01vZGU6ICdoYWxmRXhwYW5kJyB9KSwgYDE5OjM5OjA5LjA2ODM1YCk7CisgICAgc2hvdWxkQmUo
VGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OjM5OjA5LjAwMDAwMDIwNScpLnRvU3RyaW5nKHsg
ZnJhY3Rpb25hbFNlY29uZERpZ2l0czogNCB9KSwgYDE5OjM5OjA5LjAwMDBgKTsKK30KK3sKKyAg
ICBjb25zdCB3b3JrQnJlYWsgPSB7CisgICAgICB0eXBlOiAnbWFuZGF0b3J5JywKKyAgICAgIG5h
bWU6ICdMdW5jaCcsCisgICAgICBzdGFydFRpbWU6IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMTIp
LAorICAgICAgZW5kVGltZTogbmV3IFRlbXBvcmFsLlBsYWluVGltZSgxMykKKyAgICB9OworICAg
IGNvbnN0IHN0ciA9IEpTT04uc3RyaW5naWZ5KHdvcmtCcmVhayk7CisgICAgc2hvdWxkQmUoc3Ry
LCBgeyJ0eXBlIjoibWFuZGF0b3J5IiwibmFtZSI6Ikx1bmNoIiwic3RhcnRUaW1lIjoiMTI6MDA6
MDAiLCJlbmRUaW1lIjoiMTM6MDA6MDAifWApOworICAgIGZ1bmN0aW9uIHJldml2ZXIoa2V5LCB2
YWx1ZSkgeworICAgICAgaWYgKGtleS5lbmRzV2l0aCgnVGltZScpKSByZXR1cm4gVGVtcG9yYWwu
UGxhaW5UaW1lLmZyb20odmFsdWUpOworICAgICAgcmV0dXJuIHZhbHVlOworICAgIH0KKyAgICBs
ZXQgb2JqZWN0ID0gSlNPTi5wYXJzZShzdHIsIHJldml2ZXIpOworICAgIHNob3VsZEJlKG9iamVj
dC5zdGFydFRpbWUgaW5zdGFuY2VvZiBUZW1wb3JhbC5QbGFpblRpbWUsIHRydWUpOworICAgIHNo
b3VsZEJlKFN0cmluZyhvYmplY3Quc3RhcnRUaW1lKSwgYDEyOjAwOjAwYCk7CisgICAgc2hvdWxk
QmUob2JqZWN0LmVuZFRpbWUgaW5zdGFuY2VvZiBUZW1wb3JhbC5QbGFpblRpbWUsIHRydWUpOwor
ICAgIHNob3VsZEJlKFN0cmluZyhvYmplY3QuZW5kVGltZSksIGAxMzowMDowMGApOworfQorc2hv
dWxkVGhyb3coKCkgPT4geworICAgIG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMTIpLnZhbHVlT2Yo
KTsKK30sIFR5cGVFcnJvcik7Cit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUu
ZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgc2hvdWxkQmUoSlNPTi5zdHJpbmdpZnko
dGltZS5nZXRJU09GaWVsZHMoKSksIGB7ImNhbGVuZGFyIjoiaXNvODYwMSIsImlzb0hvdXIiOjE5
LCJpc29NaWNyb3NlY29uZCI6MzQ2LCJpc29NaWxsaXNlY29uZCI6NjgsImlzb01pbnV0ZSI6Mzks
Imlzb05hbm9zZWNvbmQiOjIwNSwiaXNvU2Vjb25kIjo5fWApOworfQoreworICAgIGxldCB0aW1l
ID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OjM5OjA5LjA2ODM0NjIwNScpOworICAgIHNo
b3VsZEJlKFN0cmluZyh0aW1lLmFkZCh7IG1pbnV0ZXM6IDUsIG5hbm9zZWNvbmRzOiA4MDAgfSkp
LCBgMTk6NDQ6MDkuMDY4MzQ3MDA1YCk7Cit9Cit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5Q
bGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgc2hvdWxkQmUoU3RyaW5n
KHRpbWUuc3VidHJhY3QoeyBtaW51dGVzOiA1LCBuYW5vc2Vjb25kczogODAwIH0pKSwgYDE5OjM0
OjA5LjA2ODM0NTQwNWApOworfQoreworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1l
LmZyb20oJzE5OjM5OjA5LjA2ODM0NjIwNScpOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLmFk
ZCh7IGhvdXJzOiAxIH0pLndpdGgoeworICAgICAgbWludXRlOiAwLAorICAgICAgc2Vjb25kOiAw
LAorICAgICAgbWlsbGlzZWNvbmQ6IDAsCisgICAgICBtaWNyb3NlY29uZDogMCwKKyAgICAgIG5h
bm9zZWNvbmQ6IDAKKyAgICB9KSksIGAyMDowMDowMGApOworfQoreworICAgIGxldCB0aW1lID0g
VGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzIwOjEzOjIwLjk3MTM5ODA5OScpOworICAgIHNob3Vs
ZEJlKFN0cmluZyh0aW1lLnVudGlsKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcyMjozOTowOS4w
NjgzNDYyMDUnKSkpLCBgUFQySDI1TTQ4LjA5Njk0ODEwNlNgKTsKKyAgICBzaG91bGRCZShTdHJp
bmcodGltZS51bnRpbChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1
JykpKSwgYC1QVDM0TTExLjkwMzA1MTg5NFNgKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZS51
bnRpbChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMjI6Mzk6MDkuMDY4MzQ2MjA1JyksIHsgc21h
bGxlc3RVbml0OiAnc2Vjb25kJyB9KSksIGBQVDJIMjVNNDhTYCk7Cit9Cit7CisgICAgbGV0IHRp
bWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMjA6MTM6MjAuOTcxMzk4MDk5Jyk7CisgICAg
c2hvdWxkQmUoU3RyaW5nKHRpbWUuc2luY2UoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OjM5
OjA5LjA2ODM0NjIwNScpKSksIGBQVDM0TTExLjkwMzA1MTg5NFNgKTsKKyAgICBzaG91bGRCZShT
dHJpbmcodGltZS5zaW5jZShUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMjI6Mzk6MDkuMDY4MzQ2
MjA1JykpKSwgYC1QVDJIMjVNNDguMDk2OTQ4MTA2U2ApOworfQpkaWZmIC0tZ2l0IGEvSlNUZXN0
cy9zdHJlc3MvdGVtcG9yYWwtdGltZXpvbmUuanMgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC10
aW1lem9uZS5qcwppbmRleCBkODhmOGM4ODdlODQ0YWUyZjAzMDllYWYxNTFlY2EyMjAxNDQxOTU2
Li5mNDgxNTk2NjJmYjc5ZjlhNjFjOTE3YjkyZGIwMmYxMDg3MjEzYWNlIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC10aW1lem9uZS5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy90
ZW1wb3JhbC10aW1lem9uZS5qcwpAQCAtMTgsNiArMTgsMTMgQEAgZnVuY3Rpb24gc2hvdWxkVGhy
b3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CiAgICAgICAgIHNob3VsZEJlKFN0cmluZyhl
cnJvciksIG1lc3NhZ2UpOwogfQogCitzaG91bGRCZShUZW1wb3JhbC5UaW1lWm9uZSBpbnN0YW5j
ZW9mIEZ1bmN0aW9uLCB0cnVlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLlRpbWVab25lLmxlbmd0aCwg
MCk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLlRp
bWVab25lLCAncHJvdG90eXBlJykud3JpdGFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuVGltZVpvbmUsICdwcm90b3R5cGUnKS5l
bnVtZXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlw
dG9yKFRlbXBvcmFsLlRpbWVab25lLCAncHJvdG90eXBlJykuY29uZmlndXJhYmxlLCBmYWxzZSk7
CitzaG91bGRCZShUZW1wb3JhbC5UaW1lWm9uZS5wcm90b3R5cGUuY29uc3RydWN0b3IsIFRlbXBv
cmFsLlRpbWVab25lKTsKKwogbGV0IGZhaWx1cmVzID0gWwogICAgICIiLAogICAgICIrIiwKQEAg
LTI2LDkgKzMzLDIyIEBAIGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSwgbWVz
c2FnZSkgewogICAgICIrMjQiLAogICAgICIrMjM6IiwKICAgICAiMjA6MDAiLAorICAgICIrMjow
MCIsCisgICAgIiszMjowMCIsCisgICAgIisyMzowMDEiLAorICAgICIrMjM6OTkiLAorICAgICIr
MjM6OTkwIiwKKyAgICAiKzIzOjU5Ojk5IiwKKyAgICAiKzIzOjU5OjAwMSIsCisgICAgIisyMzo1
OTo5OTkiLAorICAgICIrMjM6NTk6NTkuIiwKKyAgICAiKzIzOjU5OjU5LCIsCisgICAgIisyMzo1
OTo1OWEiLAorICAgICIrMjM6NTk6NTkuYSIsCiAgICAgIisyMDowMDAwIiwKICAgICAiKzIwOjYw
IiwKICAgICAiKzIwOjU5OiIsCisgICAgIisyMDo1OTo2MCIsCiAgICAgIjIwNTk6MDAiLAogICAg
ICIrMjA1OTowMCIsCiAgICAgIisyMDo1OTAwIiwKQEAgLTUyLDYgKzcyLDEwIEBAIGZ1bmN0aW9u
IHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSwgbWVzc2FnZSkgewogc2hvdWxkQmUobmV3IFRl
bXBvcmFsLlRpbWVab25lKCItMDE6NTk6MzAuMTIzNDUwMDAwIikuaWQsIGAtMDE6NTk6MzAuMTIz
NDVgKTsKIHNob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjMwLjAwMDAwMDAw
MSIpLmlkLCBgLTAxOjU5OjMwLjAwMDAwMDAwMWApOwogc2hvdWxkQmUobmV3IFRlbXBvcmFsLlRp
bWVab25lKCItMDE6NTk6MzAuMTIzNDU2Nzg5IikuaWQsIGAtMDE6NTk6MzAuMTIzNDU2Nzg5YCk7
CitzaG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4wMDEwMDIwMDMiKS5p
ZCwgYC0wMTo1OTozMC4wMDEwMDIwMDNgKTsKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9u
ZSgiLTAxOjU5OjMwLjAwMDAwMDAwMCIpLmlkLCBgLTAxOjU5OjMwYCk7CitzaG91bGRCZShuZXcg
VGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTowMC4wMDAwMDAwMDAiKS5pZCwgYC0wMTo1OWApOwor
c2hvdWxkQmUobmV3IFRlbXBvcmFsLlRpbWVab25lKCItMDE6MDA6MDAuMDAwMDAwMDAwIikuaWQs
IGAtMDE6MDBgKTsKIAogbGV0IHR6ID0gbmV3IFRlbXBvcmFsLlRpbWVab25lKCItMDE6NTk6MzAu
MTIzNDU2Nzg5IikKIHNob3VsZEJlKHR6LmlkLCBTdHJpbmcodHopKTsKZGlmZiAtLWdpdCBhL0pT
VGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApp
bmRleCAxMDVmZGY0MjUzOTY1MzcyODVhNzE3ODAyNTA5ZjhkZTI5MGZhYjZjLi5hNmM4YTExZGVi
ZTNkYjU3ZjExZTA1MWQ5YzdkNjY4MmRmMDUyZTEyIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rlc3Qy
NjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0yNyw3
ICsyNyw4IEBAIHNraXA6CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpbkRhdGUK
ICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluRGF0ZVRpbWUKICAgICAtIHRlc3Qv
YnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluTW9udGhEYXkKLSAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL1BsYWluVGltZQorICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1l
L3Byb3RvdHlwZS90b1BsYWluRGF0ZVRpbWUKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFs
L1BsYWluVGltZS9wcm90b3R5cGUvdG9ab25lZERhdGVUaW1lCiAgICAgLSB0ZXN0L2J1aWx0LWlu
cy9UZW1wb3JhbC9QbGFpblllYXJNb250aAogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
VGltZVpvbmUKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1pvbmVkRGF0ZVRpbWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437357</attachid>
            <date>2021-09-05 05:20:59 -0700</date>
            <delta_ts>2021-09-06 04:48:49 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229892-20210905052058.patch</filename>
            <type>text/plain</type>
            <size>159269</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTM5NDE1YzNmNmI3NTVlOTY3YjE3MTMzYjU5ZTY5ZWM1NjNkOWNjLi5mODMxNDQyNWY4MTgzZmQw
MTM2MTMxNDQ5ZDA0NWE5Y2YxMmYzNWQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjggQEAKKzIwMjEtMDktMDUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuUGxhaW5UaW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4OTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JU084NjAxLmNwcDoKKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6aWRGb3JUaW1lWm9uZU5hbWUpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpwYXJzZVRpbWVTcGVjKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lWm9uZU51
bWVyaWNVVENPZmZzZXQpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZVRpbWVab25lQnJh
Y2tldGVkQW5ub3RhdGlvbik6CisgICAgICAgIChKU0M6OklTTzg2MDE6OmNhbkJlVGltZVpvbmUp
OgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZVRpbWVab25lKToKKyAgICAgICAgKEpTQzo6
SVNPODYwMTo6cGFyc2VUaW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6ZGF5c0luTW9udGgp
OgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZURhdGUpOgorICAgICAgICAoSlNDOjpJU084
NjAxOjpwYXJzZURhdGVUaW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6Zm9ybWF0VGltZVpv
bmVPZmZzZXRTdHJpbmcpOgorICAgICAgICAoSlNDOjpJU084NjAxOjp0ZW1wb3JhbFRpbWVUb1N0
cmluZyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OmlzVmFsaWREdXJhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9JU084NjAxLmg6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpE
dXJhdGlvbik6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpvcGVyYXRvcltdKToK
KyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJhdG9yW10gY29uc3QpOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6YmVnaW4gY29uc3QpOgorICAgICAgICAoSlND
OjpJU084NjAxOjpEdXJhdGlvbjo6ZW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
RHVyYXRpb246OmNsZWFyKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJh
dG9yLSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OlBsYWluVGltZTo6UGxhaW5UaW1l
KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5UaW1lOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRlOjpQbGFpbkRhdGUpOgorICAgICAgICAoSlNDOjpJ
U084NjAxOjpQbGFpbkRhdGU6OnllYXIgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpQ
bGFpbkRhdGU6Om1vbnRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRl
OjpkYXkgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OnV0Y1RpbWVab25lSURTbG93KToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6dXRjVGltZVpvbmVJRCk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpwbGFpblRpbWVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZCk6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OmZyb21Ob25EdXJhdGlvblZhbHVlKToK
KyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9EdXJhdGlvbik6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb25SZWNvcmQpOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFs
RHVyYXRpb246OnRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6aXNWYWxpZER1cmF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6ZnJvbU9iamVjdCk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmg6CisgICAgICAgICogcnVu
dGltZS9UZW1wb3JhbE5vdy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6c2Vjb25kc1N0
cmluZ1ByZWNpc2lvbik6CisgICAgICAgIChKU0M6OnRvVGVtcG9yYWxPdmVyZmxvdyk6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9y
YWxQbGFpblRpbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6VGVtcG9yYWxQbGFpblRpbWUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAg
ICAoSlNDOjp0b1BsYWluVGltZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp0
cnlDcmVhdGVJZlZhbGlkKToKKyAgICAgICAgKEpTQzo6YmFsYW5jZVRpbWUpOgorICAgICAgICAo
SlNDOjpyb3VuZFRpbWUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6cm91bmQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dG9TdHJpbmcgY29uc3Qp
OgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWUpOgorICAgICAgICAoSlNDOjp0b1RlbXBvcmFs
VGltZVJlY29yZCk6CisgICAgICAgIChKU0M6OnRvUGFydGlhbFRpbWUpOgorICAgICAgICAoSlND
Ojpjb25zdHJhaW50VGltZSk6CisgICAgICAgIChKU0M6OnJlZ3VsYXRlVGltZSk6CisgICAgICAg
IChKU0M6OnRvVGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KToKKyAgICAgICAgKEpTQzo6
Z2V0VGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxQbGFpblRpbWU6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6Y29t
cGFyZSk6CisgICAgICAgIChKU0M6OnRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24pOgorICAgICAg
ICAoSlNDOjphZGRUaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6OmFkZCBj
b25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpzdWJ0cmFjdCBjb25zdCk6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp3aXRoIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6ZGlmZmVyZW5jZVRpbWUpOgorICAgICAgICAoSlNDOjpleHRyYWN0RGlmZmVyZW5jZU9w
dGlvbnMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dW50aWwgY29uc3QpOgor
ICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6c2luY2UgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRl
bXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaC4KKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OlRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaC4KKyAgICAgICAgKiBydW50aW1lL1Rl
bXBvcmFsVGltZVpvbmUuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFRpbWVab25lOjpmcm9t
KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZTo6aWRGb3JUaW1lWm9uZU5hbWUpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA5LTAzICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gTWFrZSBFbnVtZXJhdG9yTmV4dFVw
ZGF0ZUluZGV4QW5kTW9kZSBjbG9iYmVyaXppbmcgcnVsZSBwcmVjaXNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA3OWRiODJl
OGQxZTY0OGQyNmQwYzY2NDJjYjI5MzA2MGFmOWZmM2UuLjEyNDExZGMxMjlkZWE5ZDFiYTEzZGYw
MDU0MTcwZTU0MTQzOTZiNGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMDUgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQg
VGVtcG9yYWwuUGxhaW5UaW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjk4OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaDoKKwogMjAyMS0wOS0w
MyAgQmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgVXNl
IFVTRShTWVNURU1fTUFMTE9DKSBtYWNybyBpbiBhbGwgY2FzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBlY2EwODMxNGI2NDQ1OWM3OGNhMDM4NjQyODE1MzdmODUxOGRi
ZWUwLi4zOGNiODRkYTA1NmUyYjZhNmMxM2VkOWY4ZDcwNTE4ZWFmMDg5NThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTMsNiArMTEzLDggQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblBy
b3RvdHlwZS5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogICAgIHJ1bnRpbWUvVGVt
cG9yYWxPYmplY3QuY3BwCisgICAgcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9y
LmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCiAgICAgcnVu
dGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9UZW1wb3Jh
bFRpbWVab25lUHJvdG90eXBlLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGNlNWY2Mjg4YWFhMjdjYjc4
MTdiZWFlMTQ0Mzc2ZWEyOGFmYWU2M2YuLjI4ODViNTEwMTdjYzFhZTNkODkyZWYzYzVmMjdhNGIx
MjM3NTM4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNzUsNiArMTc1LDggQEAgJChQUk9KRUNUX0RJUikv
cnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9y
dW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsTm93LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE9iamVj
dC5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ci5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUu
Y3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5j
cHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAK
ICQoUFJPSkVDVF9ESVIpL3VjZC9DYXNlRm9sZGluZy50eHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAxYjA1
NWM5MjJjMDk0YTU5NTg0MjYwODQxZGNlZGZjYWE3Mzc2NTAzLi4yYWQyMTMxYzU4NjY5YmQwNTc1
YzdhZjQwYTZjNDI3YTU5NGY1YzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC03Miw2ICs3Miw4IEBAICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3Jh
bER1cmF0aW9uQ29uc3RydWN0b3IuCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5sdXQuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsTm93
Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvVGVtcG9yYWxPYmplY3QubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IubHV0LmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1w
b3JhbFRpbWVab25lUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVW5pY29kZVBhdHRlcm5UYWJsZXMuaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA4ODE5MjdlMTdiZGEyMzhkN2Rh
Y2VmMWQ2ZWI1YzNjM2I3NDhiMzc3Li5lY2JjZTY3Zjc4YzAwMzRjMTY2ZjUwZDU4OTJhNmYwOGM1
ZGE0MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
MTk3LDYgKzE5Nyw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBUZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmx1dC5oIFwKICAgICBUZW1wb3JhbE5vdy5sdXQuaCBcCiAgICAgVGVtcG9y
YWxPYmplY3QubHV0LmggXAorICAgIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IubHV0Lmgg
XAorICAgIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oIFwKICAgICBUZW1wb3JhbFRp
bWVab25lQ29uc3RydWN0b3IubHV0LmggXAogICAgIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUu
bHV0LmggXAogICAgIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDMyOGY5MmY1YjJmYjIwNWM4Mzg3ODIyNDE5
YTUwODRlMGZhMWY3Y2EuLjg0NmU5ZWU3NWZlZDA1NDc1NTZjNGJmZDRhMjYxZDgwZDU5YWZiZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTEwMTksNiArMTAxOSw5IEBAIHJ1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmNwcAogcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKIHJ1bnRpbWUvVGVtcG9y
YWxPYmplY3QuY3BwCitydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcAorcnVudGltZS9UZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKIHJ1bnRpbWUvVGVtcG9y
YWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90
eXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKaW5kZXggNzE0YWEyZmViMjI0ZmE1OGYyN2VkNTU1MWI2N2M5ZjMyNjVjYmQyNy4u
NDBjMTU5ZThkN2M1NDA0OWZkOThjOGE2NjY4YTY0YThkZjRlYTM2NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0xNDksNiAr
MTQ5LDEyIEBACiAgICAgbWFjcm8oaW5kaWNlcykgXAogICAgIG1hY3JvKGluZmVycmVkTmFtZSkg
XAogICAgIG1hY3JvKGlucHV0KSBcCisgICAgbWFjcm8oaXNvSG91cikgXAorICAgIG1hY3JvKGlz
b01pY3Jvc2Vjb25kKSBcCisgICAgbWFjcm8oaXNvTWlsbGlzZWNvbmQpIFwKKyAgICBtYWNybyhp
c29NaW51dGUpIFwKKyAgICBtYWNybyhpc29OYW5vc2Vjb25kKSBcCisgICAgbWFjcm8oaXNvU2Vj
b25kKSBcCiAgICAgbWFjcm8oaW5zdHJ1Y3Rpb25Db3VudCkgXAogICAgIG1hY3JvKGlzQXJyYXkp
IFwKICAgICBtYWNybyhpc0VuYWJsZWQpIFwKQEAgLTE2OSw3ICsxNzUsOSBAQAogICAgIG1hY3Jv
KG1heGltdW1GcmFjdGlvbkRpZ2l0cykgXAogICAgIG1hY3JvKG1heGltdW1TaWduaWZpY2FudERp
Z2l0cykgXAogICAgIG1hY3JvKG1lc3NhZ2UpIFwKKyAgICBtYWNybyhtaWNyb3NlY29uZCkgXAog
ICAgIG1hY3JvKG1pY3Jvc2Vjb25kcykgXAorICAgIG1hY3JvKG1pbGxpc2Vjb25kKSBcCiAgICAg
bWFjcm8obWlsbGlzZWNvbmRzKSBcCiAgICAgbWFjcm8obWluaW11bUZyYWN0aW9uRGlnaXRzKSBc
CiAgICAgbWFjcm8obWluaW11bUludGVnZXJEaWdpdHMpIFwKQEAgLTE4MSw2ICsxODksNyBAQAog
ICAgIG1hY3JvKG1vbnRocykgXAogICAgIG1hY3JvKG11bHRpbGluZSkgXAogICAgIG1hY3JvKG5h
bWUpIFwKKyAgICBtYWNybyhuYW5vc2Vjb25kKSBcCiAgICAgbWFjcm8obmFub3NlY29uZHMpIFwK
ICAgICBtYWNybyhuZXh0KSBcCiAgICAgbWFjcm8obm93KSBcCkBAIC0xOTQsNiArMjAzLDcgQEAK
ICAgICBtYWNybyhvcmlnaW4pIFwKICAgICBtYWNybyhvc3JFeGl0U2l0ZXMpIFwKICAgICBtYWNy
byhvc3JFeGl0cykgXAorICAgIG1hY3JvKG92ZXJmbG93KSBcCiAgICAgbWFjcm8ocGFyc2UpIFwK
ICAgICBtYWNybyhwYXJzZUludCkgXAogICAgIG1hY3JvKHBhcnNlRmxvYXQpIFwKQEAgLTI0NSw2
ICsyNTUsNyBAQAogICAgIG1hY3JvKHVzYWdlKSBcCiAgICAgbWFjcm8odmFsdWUpIFwKICAgICBt
YWNybyh2YWx1ZU9mKSBcCisgICAgbWFjcm8od2VlaykgXAogICAgIG1hY3JvKHdlZWtkYXkpIFwK
ICAgICBtYWNybyh3ZWVrcykgXAogICAgIG1hY3JvKHdyaXRhYmxlKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCmluZGV4IDllNDJhZmMxMzNjMDdlM2ZiOTFiODk3
NzU2ZTNhMTU1MTIzYWY5MzcuLjZiYzEwZWU0ZDlhOTBkNWZiNTZhOTkxNzc5NTc4MmYxODBkNGU4
NzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjcsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIklTTzg2MDEuaCIKIAorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNp
bmNsdWRlICJQYXJzZUludC5oIgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0z
OCw2ICs0MSwxNiBAQCBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbnNQZXJTZWNvbmQgPSAxMDAw
TEwgKiAxMDAwICogMTAwMDsKIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBuc1Blck1pbGxpc2Vj
b25kID0gMTAwMExMICogMTAwMDsKIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBuc1Blck1pY3Jv
c2Vjb25kID0gMTAwMExMOwogCitzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkRm9yVGltZVpv
bmVOYW1lKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGNvbnN0IGF1dG8mIHRpbWVab25lcyA9
IGludGxBdmFpbGFibGVUaW1lWm9uZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCB0aW1lWm9uZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKHRpbWVab25lc1tpbmRleF0sIHN0cmluZykpCisgICAgICAgICAgICBy
ZXR1cm4gaW5kZXg7CisgICAgfQorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJUeXBlPgogaW50MzJfdCBwYXJzZURlY2ltYWxJbnQzMihjb25zdCBD
aGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewpAQCAtMjQzLDMyICsyNTYs
MjYgQEAgc3RkOjpvcHRpb25hbDxEdXJhdGlvbj4gcGFyc2VEdXJhdGlvbihTdHJpbmdWaWV3IHN0
cmluZykKICAgICB9KTsKIH0KIAorCitlbnVtIGNsYXNzIFNlY29uZDYwTW9kZSB7IEFjY2VwdCwg
UmVqZWN0IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIHN0ZDo6
b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nUGFy
c2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UGxhaW5UaW1lPiBwYXJzZVRpbWVTcGVjKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlw
ZT4mIGJ1ZmZlciwgU2Vjb25kNjBNb2RlIHNlY29uZDYwTW9kZSkKIHsKLSAgICAvLyBUaW1lWm9u
ZU51bWVyaWNVVENPZmZzZXQgOgotICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGlt
ZVpvbmVVVENPZmZzZXRIb3VyCi0gICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1l
Wm9uZVVUQ09mZnNldEhvdXIgOiBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZQotICAgIC8vICAgICBU
aW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIFRpbWVab25lVVRDT2Zm
c2V0TWludXRlCi0gICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lWm9uZVVUQ09m
ZnNldEhvdXIgOiBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZSA6IFRpbWVab25lVVRDT2Zmc2V0U2Vj
b25kIFRpbWVab25lVVRDT2Zmc2V0RnJhY3Rpb25bb3B0XQotICAgIC8vICAgICBUaW1lWm9uZVVU
Q09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIFRpbWVab25lVVRDT2Zmc2V0TWludXRl
IFRpbWVab25lVVRDT2Zmc2V0U2Vjb25kW29wdF0KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVNwZWMKKyAgICAvLyBUaW1lU3BlYyA6CisgICAgLy8g
ICAgIFRpbWVIb3VyCisgICAgLy8gICAgIFRpbWVIb3VyIDogVGltZU1pbnV0ZQorICAgIC8vICAg
ICBUaW1lSG91ciBUaW1lTWludXRlCisgICAgLy8gICAgIFRpbWVIb3VyIDogVGltZU1pbnV0ZSA6
IFRpbWVTZWNvbmQgVGltZUZyYWN0aW9uW29wdF0KKyAgICAvLyAgICAgVGltZUhvdXIgVGltZU1p
bnV0ZSBUaW1lU2Vjb25kIFRpbWVGcmFjdGlvbltvcHRdCiAgICAgLy8KLSAgICAvLyAgTWF4aW11
bSBhbmQgbWluaW11bSB2YWx1ZXMgYXJlIMKxMjM6NTk6NTkuOTk5OTk5OTk5ID0gwrE4NjM5OTk5
OTk5OTk5OW5zLCB3aGljaCBjYW4gYmUgcmVwcmVzZW50ZWQgYnkgaW50NjRfdCAvIGRvdWJsZSdz
IGludGVnZXIgcGFydC4KKyAgICAvLyAgVGltZVNlY29uZCBjYW4gYmUgNjAuIEFuZCBpZiBpdCBp
cyA2MCwgd2UgaW50ZXJwcmV0IGl0IGFzIDU5LgorICAgIC8vICBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1wYXJzZWlzb2RhdGV0aW1lCiAKLSAgICAvLyBz
aWduIGFuZCBob3VyLgotICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCAzKQotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotCi0gICAgaW50NjRfdCBmYWN0b3IgPSAxOwotICAg
IGlmICgqYnVmZmVyID09ICcrJykKLSAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKLSAgICBlbHNl
IGlmICgqYnVmZmVyID09ICctJyB8fCAqYnVmZmVyID09IDB4MjIxMikgewotICAgICAgICBmYWN0
b3IgPSAtMTsKLSAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKLSAgICB9IGVsc2UKKyAgICBpZiAo
YnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIGludDY0X3QgaG91ciA9IDA7CisgICAgdW5zaWduZWQgaG91ciA9IDA7CiAgICAg
QVNTRVJUKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA+PSAyKTsKICAgICBhdXRvIGZpcnN0SG91
ckNoYXJhY3RlciA9ICpidWZmZXI7CiAgICAgaWYgKGZpcnN0SG91ckNoYXJhY3RlciA+PSAnMCcg
JiYgZmlyc3RIb3VyQ2hhcmFjdGVyIDw9ICcyJykgewpAQCAtMjg0LDE1ICsyOTEsMTYgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQo
U3RyaW5nUGFyc2luZ0J1ZmZlcjwKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmIChidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIChuc1BlckhvdXIgKiBob3VyKSAq
IGZhY3RvcjsKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCAwLCAwLCAwLCAwLCAwKTsK
IAogICAgIGJvb2wgc3BsaXRCeUNvbG9uID0gZmFsc2U7CiAgICAgaWYgKCpidWZmZXIgPT0gJzon
KSB7Ci0gICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CiAgICAgICAgIHNwbGl0QnlDb2xvbiA9IHRy
dWU7Ci0gICAgfQorICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgIH0gZWxzZSBpZiAoISgq
YnVmZmVyID49ICcwJyAmJiAqYnVmZmVyIDw9ICc1JykpCisgICAgICAgIHJldHVybiBQbGFpblRp
bWUoaG91ciwgMCwgMCwgMCwgMCwgMCk7CiAKLSAgICBpbnQ2NF90IG1pbnV0ZSA9IDA7CisgICAg
dW5zaWduZWQgbWludXRlID0gMDsKICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwg
MikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGZpcnN0TWludXRlQ2hh
cmFjdGVyID0gKmJ1ZmZlcjsKQEAgLTMwOCwxNiArMzE2LDE3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdC
dWZmZXI8CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYnVmZmVyLmF0
RW5kKCkpCi0gICAgICAgIHJldHVybiAobnNQZXJIb3VyICogaG91ciArIG5zUGVyTWludXRlICog
bWludXRlKSAqIGZhY3RvcjsKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUs
IDAsIDAsIDAsIDApOwogCiAgICAgaWYgKHNwbGl0QnlDb2xvbikgewogICAgICAgICBpZiAoKmJ1
ZmZlciA9PSAnOicpCiAgICAgICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiBQbGFpblRpbWUoaG91ciwgbWludXRlLCAwLCAwLCAwLCAwKTsKKyAgICB9IGVsc2UgaWYg
KCEoKmJ1ZmZlciA+PSAnMCcgJiYgKHNlY29uZDYwTW9kZSA9PSBTZWNvbmQ2ME1vZGU6OkFjY2Vw
dCA/ICgqYnVmZmVyIDw9ICc2JykgOiAoKmJ1ZmZlciA8PSAnNScpKSkpCisgICAgICAgIHJldHVy
biBQbGFpblRpbWUoaG91ciwgbWludXRlLCAwLCAwLCAwLCAwKTsKIAotICAgIGludDY0X3Qgc2Vj
b25kID0gMDsKKyAgICB1bnNpZ25lZCBzZWNvbmQgPSAwOwogICAgIGlmIChidWZmZXIubGVuZ3Ro
UmVtYWluaW5nKCkgPCAyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8g
Zmlyc3RTZWNvbmRDaGFyYWN0ZXIgPSAqYnVmZmVyOwpAQCAtMzI3LDM0ICszMzYsODQgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQo
U3RyaW5nUGFyc2luZ0J1ZmZlcjwKICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc2Vjb25kU2Vj
b25kQ2hhcmFjdGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHNlY29uZCA9IChzZWNvbmRTZWNvbmRDaGFyYWN0ZXIgLSAnMCcpICsgMTAgKiAoZmlyc3RTZWNv
bmRDaGFyYWN0ZXIgLSAnMCcpOwotICAgICAgICBBU1NFUlQobWludXRlIDwgNjApOworICAgICAg
ICBBU1NFUlQoc2Vjb25kIDwgNjApOworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgIH0g
ZWxzZSBpZiAoc2Vjb25kNjBNb2RlID09IFNlY29uZDYwTW9kZTo6QWNjZXB0ICYmIGZpcnN0U2Vj
b25kQ2hhcmFjdGVyID09ICc2JykgeworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAg
ICBhdXRvIHNlY29uZFNlY29uZENoYXJhY3RlciA9ICpidWZmZXI7CisgICAgICAgIGlmIChzZWNv
bmRTZWNvbmRDaGFyYWN0ZXIgIT0gJzAnKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgc2Vjb25kID0gNTk7CiAgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CiAgICAg
fSBlbHNlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYnVmZmVyLmF0
RW5kKCkpCi0gICAgICAgIHJldHVybiAobnNQZXJIb3VyICogaG91ciArIG5zUGVyTWludXRlICog
bWludXRlICsgbnNQZXJTZWNvbmQgKiBzZWNvbmQpICogZmFjdG9yOworICAgICAgICByZXR1cm4g
UGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCAwLCAwLCAwKTsKIAogICAgIGlmICgqYnVm
ZmVyICE9ICcuJyAmJiAqYnVmZmVyICE9ICcsJykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgMCwgMCwg
MCk7CiAgICAgYnVmZmVyLmFkdmFuY2UoKTsKIAogICAgIHVuc2lnbmVkIGRpZ2l0cyA9IDA7Ci0g
ICAgd2hpbGUgKGRpZ2l0cyA8IGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSAmJiBpc0FTQ0lJRGln
aXQoYnVmZmVyW2RpZ2l0c10pKQotICAgICAgICBkaWdpdHMrKzsKLSAgICBpZiAoIWRpZ2l0cyB8
fCBkaWdpdHMgPiA5KQorICAgIHVuc2lnbmVkIG1heENvdW50ID0gc3RkOjptaW48dW5zaWduZWQ+
KGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSwgOSk7CisgICAgZm9yICg7IGRpZ2l0cyA8IG1heENv
dW50OyArK2RpZ2l0cykgeworICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChidWZmZXJbZGlnaXRz
XSkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKCFkaWdpdHMpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8TENoYXIsIDk+IHBhZGRlZCg5LCAn
MCcpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaWdpdHM7ICsraSkKICAgICAgICAg
cGFkZGVkW2ldID0gYnVmZmVyW2ldOwogICAgIGJ1ZmZlci5hZHZhbmNlQnkoZGlnaXRzKTsKLSAg
ICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQorCisgICAgdW5zaWduZWQgbWlsbGlzZWNvbmQgPSBwYXJz
ZURlY2ltYWxJbnQzMihwYWRkZWQuZGF0YSgpLCAzKTsKKyAgICB1bnNpZ25lZCBtaWNyb3NlY29u
ZCA9IHBhcnNlRGVjaW1hbEludDMyKHBhZGRlZC5kYXRhKCkgKyAzLCAzKTsKKyAgICB1bnNpZ25l
ZCBuYW5vc2Vjb25kID0gcGFyc2VEZWNpbWFsSW50MzIocGFkZGVkLmRhdGEoKSArIDYsIDMpOwor
CisgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQs
IG1pY3Jvc2Vjb25kLCBuYW5vc2Vjb25kKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1l
cmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikK
K3sKKyAgICAvLyBUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQgOgorICAgIC8vICAgICBUaW1lWm9u
ZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyCisgICAgLy8gICAgIFRpbWVab25l
VVRDT2Zmc2V0U2lnbiBUaW1lWm9uZVVUQ09mZnNldEhvdXIgOiBUaW1lWm9uZVVUQ09mZnNldE1p
bnV0ZQorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRI
b3VyIFRpbWVab25lVVRDT2Zmc2V0TWludXRlCisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0
U2lnbiBUaW1lWm9uZVVUQ09mZnNldEhvdXIgOiBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZSA6IFRp
bWVab25lVVRDT2Zmc2V0U2Vjb25kIFRpbWVab25lVVRDT2Zmc2V0RnJhY3Rpb25bb3B0XQorICAg
IC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIFRpbWVa
b25lVVRDT2Zmc2V0TWludXRlIFRpbWVab25lVVRDT2Zmc2V0U2Vjb25kIFRpbWVab25lVVRDT2Zm
c2V0RnJhY3Rpb25bb3B0XQorICAgIC8vCisgICAgLy8gIFRoaXMgaXMgdGhlIHNhbWUgdG8KKyAg
ICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVTcGVjCisgICAgLy8KKyAgICAvLyAg
TWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMgYXJlIMKxMjM6NTk6NTkuOTk5OTk5OTk5ID0gwrE4
NjM5OTk5OTk5OTk5OW5zLCB3aGljaCBjYW4gYmUgcmVwcmVzZW50ZWQgYnkgaW50NjRfdCAvIGRv
dWJsZSdzIGludGVnZXIgcGFydC4KKworICAgIC8vIHNpZ24gYW5kIGhvdXIuCisgICAgaWYgKGJ1
ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpbnQ2NF90IGZhY3RvciA9IDE7CisgICAgaWYgKCpidWZmZXIgPT0gJysnKQorICAg
ICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgIGVsc2UgaWYgKCpidWZmZXIgPT0gJy0nIHx8ICpi
dWZmZXIgPT0gMHgyMjEyKSB7CisgICAgICAgIGZhY3RvciA9IC0xOworICAgICAgICBidWZmZXIu
YWR2YW5jZSgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgYXV0byBwbGFpblRpbWUgPSBwYXJzZVRpbWVTcGVjKGJ1ZmZlciwgU2Vjb25kNjBNb2RlOjpS
ZWplY3QpOworICAgIGlmICghcGxhaW5UaW1lKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OwogCi0gICAgaW50NjRfdCBtaWxsaXNlY29uZCA9IHBhcnNlRGVjaW1hbEludDMyKHBhZGRlZC5k
YXRhKCksIDMpOwotICAgIGludDY0X3QgbWljcm9zZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQzMihw
YWRkZWQuZGF0YSgpICsgMywgMyk7Ci0gICAgaW50NjRfdCBuYW5vc2Vjb25kID0gcGFyc2VEZWNp
bWFsSW50MzIocGFkZGVkLmRhdGEoKSArIDYsIDMpOworICAgIGludDY0X3QgaG91ciA9IHBsYWlu
VGltZS0+aG91cigpOworICAgIGludDY0X3QgbWludXRlID0gcGxhaW5UaW1lLT5taW51dGUoKTsK
KyAgICBpbnQ2NF90IHNlY29uZCA9IHBsYWluVGltZS0+c2Vjb25kKCk7CisgICAgaW50NjRfdCBt
aWxsaXNlY29uZCA9IHBsYWluVGltZS0+bWlsbGlzZWNvbmQoKTsKKyAgICBpbnQ2NF90IG1pY3Jv
c2Vjb25kID0gcGxhaW5UaW1lLT5taWNyb3NlY29uZCgpOworICAgIGludDY0X3QgbmFub3NlY29u
ZCA9IHBsYWluVGltZS0+bmFub3NlY29uZCgpOwogCiAgICAgcmV0dXJuIChuc1BlckhvdXIgKiBo
b3VyICsgbnNQZXJNaW51dGUgKiBtaW51dGUgKyBuc1BlclNlY29uZCAqIHNlY29uZCArIG5zUGVy
TWlsbGlzZWNvbmQgKiBtaWxsaXNlY29uZCArIG5zUGVyTWljcm9zZWNvbmQgKiBtaWNyb3NlY29u
ZCArIG5hbm9zZWNvbmQpICogZmFjdG9yOwogfQpAQCAtMzYyLDcgKzQyMSwzOTIgQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3Ry
aW5nUGFyc2luZ0J1ZmZlcjwKIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51
bWVyaWNVVENPZmZzZXQoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIHJlYWRDaGFy
YWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFs
PGludDY0X3Q+IHsKLSAgICAgICAgcmV0dXJuIHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0
KGJ1ZmZlcik7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENP
ZmZzZXQoYnVmZmVyKTsKKyAgICAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFsPFRpbWVa
b25lPiBwYXJzZVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbihTdHJpbmdQYXJzaW5nQnVmZmVy
PENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbgorICAgIC8vIFRp
bWVab25lQnJhY2tldGVkQW5ub3RhdGlvbiA6CisgICAgLy8gICAgIFsgVGltZVpvbmVCcmFja2V0
ZWROYW1lIF0KKyAgICAvLworICAgIC8vIFRpbWVab25lQnJhY2tldGVkTmFtZSA6CisgICAgLy8g
ICAgIFRpbWVab25lSUFOQU5hbWUKKyAgICAvLyAgICAgRXRjL0dNVCBBU0NJSVNpZ24gSG91cgor
ICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldE5hbWUKKworICAgIGlmIChidWZmZXIubGVuZ3Ro
UmVtYWluaW5nKCkgPCAzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYg
KCpidWZmZXIgIT0gJ1snKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGJ1ZmZl
ci5hZHZhbmNlKCk7CisKKyAgICBzd2l0Y2ggKCpidWZmZXIpIHsKKyAgICBjYXNlICcrJzoKKyAg
ICBjYXNlICctJzoKKyAgICBjYXNlIDB4MjIxMjogeworICAgICAgICAvLyBUaW1lWm9uZVVUQ09m
ZnNldE5hbWUgaXMgdGhlIHNhbWUgdG8gVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0LgorICAgICAg
ICBhdXRvIG9mZnNldCA9IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KGJ1ZmZlcik7Cisg
ICAgICAgIGlmICghb2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgaWYgKCpidWZmZXIgIT0gJ10nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgcmV0dXJuIG9mZnNl
dC52YWx1ZSgpOworICAgIH0KKyAgICBjYXNlICdFJzogeworICAgICAgICAvLyAiRXRjL0dNVCsy
MCIgYW5kICJdIiA9PiBsZW5ndGggaXMgMTEuCisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoUmVt
YWluaW5nKCkgPj0gMTEpIHsKKyAgICAgICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ0UnICYmIGJ1
ZmZlclsxXSA9PSAndCcgJiYgYnVmZmVyWzJdID09ICdjJyAmJiBidWZmZXJbM10gPT0gJy8nICYm
IGJ1ZmZlcls0XSA9PSAnRycgJiYgYnVmZmVyWzVdID09ICdNJyAmJiBidWZmZXJbNl0gPT0gJ1Qn
KSB7CisgICAgICAgICAgICAgICAgYXV0byBzaWduQ2hhcmFjdGVyID0gYnVmZmVyWzddOworICAg
ICAgICAgICAgICAgIC8vIE5vdCBpbmNsdWRpbmcgMHgyMjEyIHNpbmNlIGl0IGlzIEFTQ0lJU2ln
bi4KKyAgICAgICAgICAgICAgICBpZiAoc2lnbkNoYXJhY3RlciA9PSAnKycgfHwgc2lnbkNoYXJh
Y3RlciA9PSAnLScpIHsKKyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBmYWN0b3IgPSBzaWdu
Q2hhcmFjdGVyID09ICcrJyA/IDEgOiAtMTsKKyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBo
b3VyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBmaXJzdEhvdXJDaGFyYWN0ZXIgPSBi
dWZmZXJbOF07CisgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdEhvdXJDaGFyYWN0ZXIgPj0g
JzAnICYmIGZpcnN0SG91ckNoYXJhY3RlciA8PSAnMicpIHsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIGF1dG8gc2Vjb25kSG91ckNoYXJhY3RlciA9IGJ1ZmZlcls5XTsKKyAgICAgICAgICAgICAg
ICAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoc2Vjb25kSG91ckNoYXJhY3RlcikpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBob3VyID0gKHNlY29uZEhvdXJDaGFyYWN0ZXIgLSAnMCcp
ICsgMTAgKiAoZmlyc3RIb3VyQ2hhcmFjdGVyIC0gJzAnKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAoaG91ciA8IDI0ICYmIGJ1ZmZlclsxMF0gPT0gJ10nKSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hZHZhbmNlQnkoMTEpOworICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnNQZXJIb3VyICogaG91ciAqIGZhY3RvcjsKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQorICAgIGRlZmF1bHQ6IHsKKyAg
ICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICBmb3IgKDsgaW5kZXggPCBidWZmZXIu
bGVuZ3RoUmVtYWluaW5nKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlmIChidWZmZXJbaW5k
ZXhdID09ICddJykKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBp
ZiAoIWluZGV4KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgU3Ry
aW5nVmlldyB0aW1lWm9uZVN0cmluZyA9IGJ1ZmZlci5zdHJpbmdWaWV3T2ZDaGFyYWN0ZXJzUmVt
YWluaW5nKCkubGVmdChpbmRleCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4g
aWRlbnRpZmllciA9IGlkRm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICAgICAg
aWYgKCFpZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgYnVmZmVyLmFkdmFuY2VCeShpbmRleCk7CisgICAgICAgIGlmIChidWZmZXIuYXRFbmQoKSkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGlmICgqYnVmZmVyICE9
ICddJykKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGJ1ZmZlci5h
ZHZhbmNlKCk7CisgICAgICAgIHJldHVybiBpZGVudGlmaWVyLnZhbHVlKCk7CisgICAgfQorICAg
IH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK2Jvb2wgY2FuQmVUaW1l
Wm9uZShjb25zdCBTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIsIENo
YXJhY3RlclR5cGUgY2hhcmFjdGVyKQoreworICAgIHN3aXRjaCAoY2hhcmFjdGVyKSB7CisgICAg
Ly8gVVRDRGVzaWduYXRvcgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3Jh
bC8jcHJvZC1VVENEZXNpZ25hdG9yCisgICAgY2FzZSAneic6CisgICAgY2FzZSAnWic6CisgICAg
Ly8gVGltZVpvbmVVVENPZmZzZXRTaWduCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNwcm9kLVRpbWVab25lVVRDT2Zmc2V0U2lnbgorICAgIGNhc2UgJysnOgorICAg
IGNhc2UgJy0nOgorICAgIGNhc2UgMHgyMjEyOgorICAgIC8vIFRpbWVab25lQnJhY2tldGVkQW5u
b3RhdGlvbgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1U
aW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICBjYXNlICdbJzogeworICAgICAgICAvLyBX
ZSBzaG91bGQgcmVqZWN0IGNhbGVuZGFyIGV4dGVuc2lvbiBjYXNlLgorICAgICAgICAvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtQ2FsZW5kYXIKKyAgICAgICAgLy8g
Q2FsZW5kYXIgOgorICAgICAgICAvLyAgICAgW3UtY2E9IENhbGVuZGFyTmFtZV0KKyAgICAgICAg
aWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA+PSA2ICYmIGJ1ZmZlclsxXSA9PSAndScgJiYg
YnVmZmVyWzJdID09ICctJyAmJiBidWZmZXJbM10gPT0gJ2MnICYmIGJ1ZmZlcls0XSA9PSAnYScg
JiYgYnVmZmVyWzVdID09ICc9JykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlv
bmFsPFRpbWVab25lPiBwYXJzZVRpbWVab25lKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVy
VHlwZT4mIGJ1ZmZlcikKK3sKKyAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgc3dpdGNoICgqYnVmZmVyKSB7CisgICAgLy8gVVRDRGVzaWdu
YXRvcgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1VVENE
ZXNpZ25hdG9yCisgICAgY2FzZSAneic6CisgICAgY2FzZSAnWic6IHsKKyAgICAgICAgYnVmZmVy
LmFkdmFuY2UoKTsKKyAgICAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0
dXJuIHV0Y1RpbWVab25lSUQoKTsKKyAgICAgICAgaWYgKCpidWZmZXIgPT0gJ1snKSB7CisgICAg
ICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24o
YnVmZmVyKTsKKyAgICAgICAgICAgIGlmICghdGltZVpvbmUpCisgICAgICAgICAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiB0aW1lWm9uZS52YWx1ZSgpOwor
ICAgICAgICB9CisgICAgICAgIHJldHVybiB1dGNUaW1lWm9uZUlEKCk7CisgICAgfQorICAgIC8v
IFRpbWVab25lVVRDT2Zmc2V0U2lnbgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jcHJvZC1UaW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICBjYXNlICcrJzoKKyAgICBj
YXNlICctJzoKKyAgICBjYXNlIDB4MjIxMjogeworICAgICAgICBhdXRvIG9mZnNldCA9IHBhcnNl
VGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KGJ1ZmZlcik7CisgICAgICAgIGlmICghb2Zmc2V0KQor
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKGJ1ZmZlci5hdEVu
ZCgpKQorICAgICAgICAgICAgcmV0dXJuIG9mZnNldC52YWx1ZSgpOworICAgICAgICBpZiAoKmJ1
ZmZlciA9PSAnWycpIHsKKyAgICAgICAgICAgIGF1dG8gdGltZVpvbmUgPSBwYXJzZVRpbWVab25l
QnJhY2tldGVkQW5ub3RhdGlvbihidWZmZXIpOworICAgICAgICAgICAgaWYgKCF0aW1lWm9uZSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJu
IHRpbWVab25lLnZhbHVlKCk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG9mZnNldC52YWx1
ZSgpOworICAgIH0KKyAgICAvLyBUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICAvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVCcmFja2V0ZWRB
bm5vdGF0aW9uCisgICAgY2FzZSAnWyc6IHsKKyAgICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNl
VGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uKGJ1ZmZlcik7CisgICAgICAgIGlmICghdGltZVpv
bmUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gdGlt
ZVpvbmUudmFsdWUoKTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citz
dGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25l
Pj4+IHBhcnNlVGltZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIp
Cit7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWUK
KyAgICAvLyBUaW1lIDoKKyAgICAvLyAgICAgVGltZVNwZWMgVGltZVpvbmVbb3B0XQorICAgIGF1
dG8gcGxhaW5UaW1lID0gcGFyc2VUaW1lU3BlYyhidWZmZXIsIFNlY29uZDYwTW9kZTo6QWNjZXB0
KTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5U
aW1lLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCB9OworICAgIGlmIChjYW5CZVRpbWVab25lKGJ1ZmZl
ciwgKmJ1ZmZlcikpIHsKKyAgICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpvbmUoYnVm
ZmVyKTsKKyAgICAgICAgaWYgKCF0aW1lWm9uZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZhbHVlKCksIHRp
bWVab25lIH07CisgICAgfQorICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZhbHVl
KCksIHN0ZDo6bnVsbG9wdCB9OworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC1pc29kYXlzaW5tb250aAoraW5saW5lIHVuc2lnbmVkIGRheXNJ
bk1vbnRoKGludDMyX3QgeWVhciwgdW5zaWduZWQgbW9udGgpCit7CisgICAgc3dpdGNoIChtb250
aCkgeworICAgIGNhc2UgMToKKyAgICBjYXNlIDM6CisgICAgY2FzZSA1OgorICAgIGNhc2UgNzoK
KyAgICBjYXNlIDg6CisgICAgY2FzZSAxMDoKKyAgICBjYXNlIDEyOgorICAgICAgICByZXR1cm4g
MzE7CisgICAgY2FzZSA0OgorICAgIGNhc2UgNjoKKyAgICBjYXNlIDk6CisgICAgY2FzZSAxMToK
KyAgICAgICAgcmV0dXJuIDMwOworICAgIGNhc2UgMjoKKyAgICAgICAgaWYgKGlzTGVhcFllYXIo
eWVhcikpCisgICAgICAgICAgICByZXR1cm4gMjk7CisgICAgICAgIHJldHVybiAyODsKKyAgICB9
CisgICAgcmV0dXJuIDA7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citz
dGQ6Om9wdGlvbmFsPFBsYWluRGF0ZT4gcGFyc2VEYXRlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hh
cmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwt
dGVtcG9yYWwvI3Byb2QtRGF0ZQorICAgIC8vIERhdGUgOgorICAgIC8vICAgICBEYXRlWWVhciAt
IERhdGVNb250aCAtIERhdGVEYXkKKyAgICAvLyAgICAgRGF0ZVllYXIgRGF0ZU1vbnRoIERhdGVE
YXkKKyAgICAvLworICAgIC8vIERhdGVZZWFyIDoKKyAgICAvLyAgICAgRGF0ZUZvdXJEaWdpdFll
YXIKKyAgICAvLyAgICAgRGF0ZUV4dGVuZGVkWWVhcgorICAgIC8vCisgICAgLy8gRGF0ZUZvdXJE
aWdpdFllYXIgOgorICAgIC8vICAgICBEaWdpdCBEaWdpdCBEaWdpdCBEaWdpdAorICAgIC8vCisg
ICAgLy8gRGF0ZUV4dGVuZGVkWWVhciA6CisgICAgLy8gICAgIFNpZ24gRGlnaXQgRGlnaXQgRGln
aXQgRGlnaXQgRGlnaXQgRGlnaXQKKyAgICAvLworICAgIC8vIERhdGVNb250aCA6CisgICAgLy8g
ICAgIDAgTm9uemVyb0RpZ2l0CisgICAgLy8gICAgIDEwCisgICAgLy8gICAgIDExCisgICAgLy8g
ICAgIDEyCisgICAgLy8KKyAgICAvLyBEYXRlRGF5IDoKKyAgICAvLyAgICAgMCBOb256ZXJvRGln
aXQKKyAgICAvLyAgICAgMSBEaWdpdAorICAgIC8vICAgICAyIERpZ2l0CisgICAgLy8gICAgIDMw
CisgICAgLy8gICAgIDMxCisKKyAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisKKyAgICBib29sIHNpeERpZ2l0c1llYXIgPSBmYWxzZTsKKyAgICBp
bnQgeWVhckZhY3RvciA9IDE7CisgICAgaWYgKCpidWZmZXIgPT0gJysnKSB7CisgICAgICAgIGJ1
ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIHNpeERpZ2l0c1llYXIgPSB0cnVlOworICAgIH0gZWxz
ZSBpZiAoKmJ1ZmZlciA9PSAnLScgfHwgKmJ1ZmZlciA9PSAweDIyMTIpIHsKKyAgICAgICAgeWVh
ckZhY3RvciA9IC0xOworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBzaXhEaWdp
dHNZZWFyID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKCFpc0FTQ0lJRGlnaXQoKmJ1ZmZlcikpCisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpbnQzMl90IHllYXIgPSAwOworICAg
IGlmIChzaXhEaWdpdHNZZWFyKSB7CisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5n
KCkgPCA2KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZm9yICh1
bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgNjsgKytpbmRleCkgeworICAgICAgICAgICAgaWYg
KCFpc0FTQ0lJRGlnaXQoYnVmZmVyW2luZGV4XSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgfQorICAgICAgICB5ZWFyID0gcGFyc2VEZWNpbWFsSW50MzIo
YnVmZmVyLnBvc2l0aW9uKCksIDYpICogeWVhckZhY3RvcjsKKyAgICAgICAgYnVmZmVyLmFkdmFu
Y2VCeSg2KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmlu
ZygpIDwgNCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGZvciAo
dW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IDQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlm
ICghaXNBU0NJSURpZ2l0KGJ1ZmZlcltpbmRleF0pKQorICAgICAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICAgICAgeWVhciA9IHBhcnNlRGVjaW1hbEludDMy
KGJ1ZmZlci5wb3NpdGlvbigpLCA0KTsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2VCeSg0KTsKKyAg
ICB9CisKKyAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICBib29sIHNwbGl0QnlIeXBoZW4gPSBmYWxzZTsKKyAgICBpZiAoKmJ1ZmZlciA9
PSAnLScpIHsKKyAgICAgICAgc3BsaXRCeUh5cGhlbiA9IHRydWU7CisgICAgICAgIGJ1ZmZlci5h
ZHZhbmNlKCk7CisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCA1KQorICAg
ICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAo
YnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgNCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgfQorICAgIC8vIFdlIGVuc3VyZWQgdGhhdCBidWZmZXIgaGFzIGVub3VnaCBs
ZW5ndGggZm9yIG1vbnRoIGFuZCBkYXkuIFdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGxlbmd0aC4K
KworICAgIHVuc2lnbmVkIG1vbnRoID0gMDsKKyAgICBhdXRvIGZpcnN0TW9udGhDaGFyYWN0ZXIg
PSAqYnVmZmVyOworICAgIGlmIChmaXJzdE1vbnRoQ2hhcmFjdGVyID09ICcwJyB8fCBmaXJzdE1v
bnRoQ2hhcmFjdGVyID09ICcxJykgeworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAg
ICBhdXRvIHNlY29uZE1vbnRoQ2hhcmFjdGVyID0gKmJ1ZmZlcjsKKyAgICAgICAgaWYgKCFpc0FT
Q0lJRGlnaXQoc2Vjb25kTW9udGhDaGFyYWN0ZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgbW9udGggPSAoc2Vjb25kTW9udGhDaGFyYWN0ZXIgLSAnMCcpICsg
MTAgKiAoZmlyc3RNb250aENoYXJhY3RlciAtICcwJyk7CisgICAgICAgIGlmICghbW9udGggfHwg
bW9udGggPiAxMikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGJ1
ZmZlci5hZHZhbmNlKCk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoc3BsaXRCeUh5cGhlbikgeworICAgICAgICBpZiAoKmJ1ZmZlciA9PSAnLScp
CisgICAgICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHVuc2lnbmVkIGRheSA9IDA7Cisg
ICAgYXV0byBmaXJzdERheUNoYXJhY3RlciA9ICpidWZmZXI7CisgICAgaWYgKGZpcnN0RGF5Q2hh
cmFjdGVyID49ICcwJyAmJiBmaXJzdERheUNoYXJhY3RlciA8PSAnMycpIHsKKyAgICAgICAgYnVm
ZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgYXV0byBzZWNvbmREYXlDaGFyYWN0ZXIgPSAqYnVmZmVy
OworICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChzZWNvbmREYXlDaGFyYWN0ZXIpKQorICAgICAg
ICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZGF5ID0gKHNlY29uZERheUNoYXJh
Y3RlciAtICcwJykgKyAxMCAqIChmaXJzdERheUNoYXJhY3RlciAtICcwJyk7CisgICAgICAgIGlm
ICghZGF5IHx8IGRheSA+IGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkKKyAgICAgICAgICAgIHJl
dHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgfSBlbHNl
CisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gUGxhaW5EYXRlKHll
YXIsIG1vbnRoLCBkYXkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgor
c3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRp
bWU+LCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lPj4+IHBhcnNlRGF0ZVRpbWUoU3RyaW5nUGFyc2lu
Z0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1EYXRlVGltZQorICAgIC8vIERhdGVUaW1lIDoKKyAg
ICAvLyAgICAgRGF0ZSBUaW1lU3BlY1NlcGFyYXRvcltvcHRdIFRpbWVab25lW29wdF0KKyAgICAv
LworICAgIC8vIFRpbWVTcGVjU2VwYXJhdG9yIDoKKyAgICAvLyAgICAgRGF0ZVRpbWVTZXBhcmF0
b3IgVGltZVNwZWMKKyAgICBhdXRvIHBsYWluRGF0ZSA9IHBhcnNlRGF0ZShidWZmZXIpOworICAg
IGlmICghcGxhaW5EYXRlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmIChi
dWZmZXIuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpbkRhdGUudmFs
dWUoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKKworICAgIGlmICgqYnVmZmVyID09
ICcgJyB8fCAqYnVmZmVyID09ICdUJyB8fCAqYnVmZmVyID09ICd0JykgeworICAgICAgICBidWZm
ZXIuYWR2YW5jZSgpOworICAgICAgICBhdXRvIHBsYWluVGltZUFuZFRpbWVab25lID0gcGFyc2VU
aW1lKGJ1ZmZlcik7CisgICAgICAgIGlmICghcGxhaW5UaW1lQW5kVGltZVpvbmUpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhdXRvIFtwbGFpblRpbWUsIHRpbWVa
b25lXSA9IHBsYWluVGltZUFuZFRpbWVab25lLnZhbHVlKCk7CisgICAgICAgIHJldHVybiBzdGQ6
OnR1cGxlIHsgcGxhaW5EYXRlLnZhbHVlKCksIHBsYWluVGltZSwgdGltZVpvbmUgfTsKKyAgICB9
CisKKyAgICBpZiAoY2FuQmVUaW1lWm9uZShidWZmZXIsICpidWZmZXIpKSB7CisgICAgICAgIGF1
dG8gdGltZVpvbmUgPSBwYXJzZVRpbWVab25lKGJ1ZmZlcik7CisgICAgICAgIGlmICghdGltZVpv
bmUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
Ojp0dXBsZSB7IHBsYWluRGF0ZS52YWx1ZSgpLCBzdGQ6Om51bGxvcHQsIHRpbWVab25lIH07Cisg
ICAgfQorCisgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpbkRhdGUudmFsdWUoKSwgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKK30KKworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBs
YWluVGltZSwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZT4+PiBwYXJzZVRpbWUoU3RyaW5nVmlldyBz
dHJpbmcpCit7CisgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtd
KGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5UaW1lLCBzdGQ6
Om9wdGlvbmFsPFRpbWVab25lPj4+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBwYXJzZVRpbWUo
YnVmZmVyKTsKKyAgICAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSk7Cit9CisKK3N0
ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9uYWw8UGxhaW5UaW1l
Piwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZT4+PiBwYXJzZURhdGVUaW1lKFN0cmluZ1ZpZXcgc3Ry
aW5nKQoreworICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShh
dXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluRGF0ZSwgc3RkOjpv
cHRpb25hbDxQbGFpblRpbWU+LCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lPj4+IHsKKyAgICAgICAg
YXV0byByZXN1bHQgPSBwYXJzZURhdGVUaW1lKGJ1ZmZlcik7CisgICAgICAgIGlmICghYnVmZmVy
LmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0pOwogfQogCkBAIC0zODIsMTMgKzgyNiwxOSBAQCBTdHJpbmcgZm9y
bWF0VGltZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCBvZmZzZXQpCiAgICAgaWYgKG5hbm9zZWNv
bmRzKSB7CiAgICAgICAgIC8vIFNpbmNlIG5zUGVyU2Vjb25kIGlzIDEwMDAwMDAwMDAsIHN0cmlu
Z2lmaWVkIG5hbm9zZWNvbmRzIHRha2VzIGF0IG1vc3QgOSBjaGFyYWN0ZXJzICg5OTk5OTk5OTkp
LgogICAgICAgICBhdXRvIGZyYWN0aW9uID0gV1RGOjpudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZl
Y3RvcjxMQ2hhciwgOT4+KG5hbm9zZWNvbmRzKTsKLSAgICAgICAgdW5zaWduZWQgaW5kZXggPSAw
OwogICAgICAgICB1bnNpZ25lZCBwYWRkaW5nTGVuZ3RoID0gOSAtIGZyYWN0aW9uLnNpemUoKTsK
LSAgICAgICAgZm9yICg7IGluZGV4IDwgZnJhY3Rpb24uc2l6ZSgpOyArK2luZGV4KSB7Ci0gICAg
ICAgICAgICBpZiAoZnJhY3Rpb25baW5kZXhdID09ICcwJykKKyAgICAgICAgdW5zaWduZWQgaW5k
ZXggPSBmcmFjdGlvbi5zaXplKCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZh
bGlkTGVuZ3RoOworICAgICAgICB3aGlsZSAoaW5kZXgtLSkgeworICAgICAgICAgICAgaWYgKGZy
YWN0aW9uW2luZGV4XSAhPSAnMCcpIHsKKyAgICAgICAgICAgICAgICB2YWxpZExlbmd0aCA9IGlu
ZGV4ICsgMTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAg
fQotICAgICAgICBmcmFjdGlvbi5yZXNpemUoaW5kZXgpOworICAgICAgICBpZiAodmFsaWRMZW5n
dGgpCisgICAgICAgICAgICBmcmFjdGlvbi5yZXNpemUodmFsaWRMZW5ndGgudmFsdWUoKSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZyYWN0aW9uLmNsZWFyKCk7CiAgICAgICAgIHJldHVy
biBtYWtlU3RyaW5nKG5lZ2F0aXZlID8gJy0nIDogJysnLCBwYWQoJzAnLCAyLCBob3VycyksICc6
JywgcGFkKCcwJywgMiwgbWludXRlcyksICc6JywgcGFkKCcwJywgMiwgc2Vjb25kcyksICcuJywg
cGFkKCcwJywgcGFkZGluZ0xlbmd0aCwgZW1wdHlTdHJpbmcoKSksIGZyYWN0aW9uKTsKICAgICB9
CiAgICAgaWYgKHNlY29uZHMpCkBAIC0zOTYsNSArODQ2LDU4IEBAIFN0cmluZyBmb3JtYXRUaW1l
Wm9uZU9mZnNldFN0cmluZyhpbnQ2NF90IG9mZnNldCkKICAgICByZXR1cm4gbWFrZVN0cmluZyhu
ZWdhdGl2ZSA/ICctJyA6ICcrJywgcGFkKCcwJywgMiwgaG91cnMpLCAnOicsIHBhZCgnMCcsIDIs
IG1pbnV0ZXMpKTsKIH0KIAorU3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGltZSBw
bGFpblRpbWUsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uKQorewor
ICAgIGF1dG8gW3ByZWNpc2lvblR5cGUsIHByZWNpc2lvblZhbHVlXSA9IHByZWNpc2lvbjsKKyAg
ICBBU1NFUlQocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8gfHwgcHJlY2lzaW9uVmFs
dWUgPCAxMCk7CisgICAgaWYgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpNaW51dGUpCisg
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAn
OicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSkpOworCisgICAgaW50NjRfdCBmcmFj
dGlvbk5hbm9zZWNvbmRzID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ocGxhaW5UaW1lLm1pbGxpc2Vj
b25kKCkpICogbnNQZXJNaWxsaXNlY29uZCArIHN0YXRpY19jYXN0PGludDY0X3Q+KHBsYWluVGlt
ZS5taWNyb3NlY29uZCgpKSAqIG5zUGVyTWljcm9zZWNvbmQgKyBzdGF0aWNfY2FzdDxpbnQ2NF90
PihwbGFpblRpbWUubmFub3NlY29uZCgpKTsKKyAgICBpZiAocHJlY2lzaW9uVHlwZSA9PSBQcmVj
aXNpb246OkF1dG8pIHsKKyAgICAgICAgaWYgKCFmcmFjdGlvbk5hbm9zZWNvbmRzKQorICAgICAg
ICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgMiwgcGxhaW5UaW1lLmhvdXIoKSksICc6
JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLm1pbnV0ZSgpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFp
blRpbWUuc2Vjb25kKCkpKTsKKyAgICAgICAgYXV0byBmcmFjdGlvbiA9IFdURjo6bnVtYmVyVG9T
dHJpbmdVbnNpZ25lZDxWZWN0b3I8TENoYXIsIDk+PihmcmFjdGlvbk5hbm9zZWNvbmRzKTsKKyAg
ICAgICAgdW5zaWduZWQgcGFkZGluZ0xlbmd0aCA9IDkgLSBmcmFjdGlvbi5zaXplKCk7CisgICAg
ICAgIHVuc2lnbmVkIGluZGV4ID0gZnJhY3Rpb24uc2l6ZSgpOworICAgICAgICBzdGQ6Om9wdGlv
bmFsPHVuc2lnbmVkPiB2YWxpZExlbmd0aDsKKyAgICAgICAgd2hpbGUgKGluZGV4LS0pIHsKKyAg
ICAgICAgICAgIGlmIChmcmFjdGlvbltpbmRleF0gIT0gJzAnKSB7CisgICAgICAgICAgICAgICAg
dmFsaWRMZW5ndGggPSBpbmRleCArIDE7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbGlkTGVuZ3RoKQorICAgICAgICAgICAg
ZnJhY3Rpb24ucmVzaXplKHZhbGlkTGVuZ3RoLnZhbHVlKCkpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBmcmFjdGlvbi5jbGVhcigpOworICAgICAgICByZXR1cm4gbWFrZVN0cmluZyhwYWQo
JzAnLCAyLCBwbGFpblRpbWUuaG91cigpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUubWlu
dXRlKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5zZWNvbmQoKSksICcuJywgcGFkKCcw
JywgcGFkZGluZ0xlbmd0aCwgZW1wdHlTdHJpbmcoKSksIGZyYWN0aW9uKTsKKyAgICB9CisgICAg
aWYgKCFwcmVjaXNpb25WYWx1ZSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywg
MiwgcGxhaW5UaW1lLmhvdXIoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLm1pbnV0ZSgp
KSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUuc2Vjb25kKCkpKTsKKyAgICBhdXRvIGZyYWN0
aW9uID0gV1RGOjpudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwgOT4+KGZyYWN0
aW9uTmFub3NlY29uZHMpOworICAgIHVuc2lnbmVkIHBhZGRpbmdMZW5ndGggPSA5IC0gZnJhY3Rp
b24uc2l6ZSgpOworICAgIHBhZGRpbmdMZW5ndGggPSBzdGQ6Om1pbihwYWRkaW5nTGVuZ3RoLCBw
cmVjaXNpb25WYWx1ZSk7CisgICAgcHJlY2lzaW9uVmFsdWUgLT0gcGFkZGluZ0xlbmd0aDsKKyAg
ICBmcmFjdGlvbi5yZXNpemUocHJlY2lzaW9uVmFsdWUpOworICAgIHJldHVybiBtYWtlU3RyaW5n
KHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGlt
ZS5taW51dGUoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLnNlY29uZCgpKSwgJy4nLCBw
YWQoJzAnLCBwYWRkaW5nTGVuZ3RoLCBlbXB0eVN0cmluZygpKSwgZnJhY3Rpb24pOworfQorCisv
LyBJc1ZhbGlkRHVyYXRpb24gKCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1p
bnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcyAp
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3Zh
bGlkZHVyYXRpb24KK2Jvb2wgaXNWYWxpZER1cmF0aW9uKGNvbnN0IER1cmF0aW9uJiBkdXJhdGlv
bikKK3sKKyAgICBpbnQgc2lnbiA9IDA7CisgICAgZm9yIChhdXRvIHZhbHVlIDogZHVyYXRpb24p
IHsKKyAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSB8fCAodmFsdWUgPCAwICYmIHNp
Z24gPiAwKSB8fCAodmFsdWUgPiAwICYmIHNpZ24gPCAwKSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICBpZiAoIXNpZ24gJiYgdmFsdWUpCisgICAgICAgICAgICBzaWduID0g
dmFsdWUgPiAwID8gMSA6IC0xOworICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCiB9IC8v
IG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0lTTzg2MDEuaAppbmRleCA2NzY4OWQxYzI0NWFmZWUyYWMyNjk1OWMyOTcwZGQ0
OTYzYWUzMDAyLi42YTQ3MjNlMWUxZGFmNjNiMzFkY2Y2OWQyMjI2MmM0YTg5MTc0M2QzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjUsMzIgKzI2LDEyOSBAQAogCiAjcHJhZ21hIG9uY2UKIAorI2luY2x1
ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgogCiBuYW1lc3Bh
Y2UgSlNDIHsKIG5hbWVzcGFjZSBJU084NjAxIHsKIAotc3RydWN0IER1cmF0aW9uIHsKK2NsYXNz
IER1cmF0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChEdXJhdGlvbik7CitwdWJs
aWM6CiAgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBzdGQ6OmFycmF5PGRvdWJsZSwgbnVtYmVy
T2ZUZW1wb3JhbFVuaXRzPjo6Y29uc3RfaXRlcmF0b3I7CiAKKyAgICBEdXJhdGlvbigpID0gZGVm
YXVsdDsKKyAgICBEdXJhdGlvbihkb3VibGUgeWVhcnMsIGRvdWJsZSBtb250aHMsIGRvdWJsZSB3
ZWVrcywgZG91YmxlIGRheXMsIGRvdWJsZSBob3VycywgZG91YmxlIG1pbnV0ZXMsIGRvdWJsZSBz
ZWNvbmRzLCBkb3VibGUgbWlsbGlzZWNvbmRzLCBkb3VibGUgbWljcm9zZWNvbmRzLCBkb3VibGUg
bmFub3NlY29uZHMpCisgICAgICAgIDogbV9kYXRhIHsKKyAgICAgICAgICAgIHllYXJzLAorICAg
ICAgICAgICAgbW9udGhzLAorICAgICAgICAgICAgd2Vla3MsCisgICAgICAgICAgICBkYXlzLAor
ICAgICAgICAgICAgaG91cnMsCisgICAgICAgICAgICBtaW51dGVzLAorICAgICAgICAgICAgc2Vj
b25kcywKKyAgICAgICAgICAgIG1pbGxpc2Vjb25kcywKKyAgICAgICAgICAgIG1pY3Jvc2Vjb25k
cywKKyAgICAgICAgICAgIG5hbm9zZWNvbmRzLAorICAgICAgICB9CisgICAgeyB9CisKICNkZWZp
bmUgSlNDX0RFRklORV9JU084NjAxX0RVUkFUSU9OX0ZJRUxEKG5hbWUsIGNhcGl0YWxpemVkTmFt
ZSkgXAotICAgIGRvdWJsZSBuYW1lIyNzKCkgY29uc3QgeyByZXR1cm4gZGF0YVtzdGF0aWNfY2Fz
dDx1aW50OF90PihUZW1wb3JhbFVuaXQ6OmNhcGl0YWxpemVkTmFtZSldOyB9IFwKLSAgICB2b2lk
IHNldCMjY2FwaXRhbGl6ZWROYW1lIyNzKGRvdWJsZSB2YWx1ZSkgeyBkYXRhW3N0YXRpY19jYXN0
PHVpbnQ4X3Q+KFRlbXBvcmFsVW5pdDo6Y2FwaXRhbGl6ZWROYW1lKV0gPSB2YWx1ZTsgfQorICAg
IGRvdWJsZSBuYW1lIyNzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhW3N0YXRpY19jYXN0PHVpbnQ4
X3Q+KFRlbXBvcmFsVW5pdDo6Y2FwaXRhbGl6ZWROYW1lKV07IH0gXAorICAgIHZvaWQgc2V0IyNj
YXBpdGFsaXplZE5hbWUjI3MoZG91YmxlIHZhbHVlKSB7IG1fZGF0YVtzdGF0aWNfY2FzdDx1aW50
OF90PihUZW1wb3JhbFVuaXQ6OmNhcGl0YWxpemVkTmFtZSldID0gdmFsdWU7IH0KICAgICBKU0Nf
VEVNUE9SQUxfVU5JVFMoSlNDX0RFRklORV9JU084NjAxX0RVUkFUSU9OX0ZJRUxEKTsKICN1bmRl
ZiBKU0NfREVGSU5FX0lTTzg2MDFfRFVSQVRJT05fRklFTEQKIAotICAgIGRvdWJsZSYgb3BlcmF0
b3JbXShzaXplX3QgaSkgeyByZXR1cm4gZGF0YVtpXTsgfQotICAgIGNvbnN0IGRvdWJsZSYgb3Bl
cmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gZGF0YVtpXTsgfQotICAgIGNvbnN0X2l0
ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gZGF0YS5iZWdpbigpOyB9Ci0gICAgY29uc3Rf
aXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gZGF0YS5lbmQoKTsgfQotICAgIHZvaWQgY2xl
YXIoKSB7IGRhdGEuZmlsbCgwKTsgfQorICAgIGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkg
eyByZXR1cm4gbV9kYXRhW2ldOyB9CisgICAgY29uc3QgZG91YmxlJiBvcGVyYXRvcltdKHNpemVf
dCBpKSBjb25zdCB7IHJldHVybiBtX2RhdGFbaV07IH0KKyAgICBjb25zdF9pdGVyYXRvciBiZWdp
bigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9CisgICAgY29uc3RfaXRlcmF0b3Ig
ZW5kKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmVuZCgpOyB9CisgICAgdm9pZCBjbGVhcigpIHsg
bV9kYXRhLmZpbGwoMCk7IH0KKworICAgIER1cmF0aW9uIG9wZXJhdG9yLSgpIGNvbnN0CisgICAg
eworICAgICAgICBEdXJhdGlvbiByZXN1bHQoKnRoaXMpOworICAgICAgICBmb3IgKGF1dG8mIHZh
bHVlIDogcmVzdWx0Lm1fZGF0YSkKKyAgICAgICAgICAgIHZhbHVlID0gLXZhbHVlOworICAgICAg
ICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6OmFycmF5PGRvdWJs
ZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPiBtX2RhdGEgeyB9OworfTsKKworY2xhc3MgUGxhaW5U
aW1lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChQbGFpblRpbWUpOworcHVibGljOgor
ICAgIFBsYWluVGltZSgpID0gZGVmYXVsdDsKKyAgICBQbGFpblRpbWUodW5zaWduZWQgaG91ciwg
dW5zaWduZWQgbWludXRlLCB1bnNpZ25lZCBzZWNvbmQsIHVuc2lnbmVkIG1pbGxpc2Vjb25kLCB1
bnNpZ25lZCBtaWNyb3NlY29uZCwgdW5zaWduZWQgbmFub3NlY29uZCkKKyAgICAgICAgOiBtX2hv
dXIoaG91cikKKyAgICAgICAgLCBtX21pbnV0ZShtaW51dGUpCisgICAgICAgICwgbV9zZWNvbmQo
c2Vjb25kKQorICAgICAgICAsIG1fbWlsbGlzZWNvbmQobWlsbGlzZWNvbmQpCisgICAgICAgICwg
bV9taWNyb3NlY29uZChtaWNyb3NlY29uZCkKKyAgICAgICAgLCBtX25hbm9zZWNvbmQobmFub3Nl
Y29uZCkKKyAgICB7IH0KKworI2RlZmluZSBKU0NfREVGSU5FX0lTTzg2MDFfUExBSU5fVElNRV9G
SUVMRChuYW1lLCBjYXBpdGFsaXplZE5hbWUpIFwKKyAgICB1bnNpZ25lZCBuYW1lKCkgY29uc3Qg
eyByZXR1cm4gbV8jI25hbWU7IH0KKyAgICBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhK
U0NfREVGSU5FX0lTTzg2MDFfUExBSU5fVElNRV9GSUVMRCk7CisjdW5kZWYgSlNDX0RFRklORV9J
U084NjAxX0RVUkFUSU9OX0ZJRUxECisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09KFBsYWlu
VGltZSBsaHMsIFBsYWluVGltZSByaHMpCisgICAgeworICAgICAgICByZXR1cm4gbGhzLm1faG91
ciA9PSByaHMubV9ob3VyCisgICAgICAgICAgICAmJiBsaHMubV9taW51dGUgPT0gcmhzLm1fbWlu
dXRlCisgICAgICAgICAgICAmJiBsaHMubV9zZWNvbmQgPT0gcmhzLm1fc2Vjb25kCisgICAgICAg
ICAgICAmJiBsaHMubV9taWxsaXNlY29uZCA9PSByaHMubV9taWxsaXNlY29uZAorICAgICAgICAg
ICAgJiYgbGhzLm1fbWljcm9zZWNvbmQgPT0gcmhzLm1fbWljcm9zZWNvbmQKKyAgICAgICAgICAg
ICYmIGxocy5tX25hbm9zZWNvbmQgPT0gcmhzLm1fbmFub3NlY29uZDsKKyAgICB9CiAKLSAgICBz
dGQ6OmFycmF5PGRvdWJsZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPiBkYXRhIHsgfTsKK3ByaXZh
dGU6CisgICAgdWludDhfdCBtX2hvdXIgeyAwIH07CisgICAgdWludDhfdCBtX21pbnV0ZSB7IDAg
fTsKKyAgICB1aW50OF90IG1fc2Vjb25kIHsgMCB9OworICAgIHVpbnQxNl90IG1fbWlsbGlzZWNv
bmQgeyAwIH07CisgICAgdWludDE2X3QgbV9taWNyb3NlY29uZCB7IDAgfTsKKyAgICB1aW50MTZf
dCBtX25hbm9zZWNvbmQgeyAwIH07CiB9OwogCisvLyBOb3RlIHRoYXQgUGxhaW5EYXRlIGRvZXMg
bm90IGluY2x1ZGUgd2VlayB1bml0LgorLy8geWVhciBjYW4gYmUgbmVnYXRpdmUuIEFuZCBtb250
aCBhbmQgZGF5IHN0YXJ0cyB3aXRoIDEuCitjbGFzcyBQbGFpbkRhdGUgeworICAgIFdURl9NQUtF
X0ZBU1RfQUxMT0NBVEVEKFBsYWluRGF0ZSk7CitwdWJsaWM6CisgICAgUGxhaW5EYXRlKCkgPSBk
ZWZhdWx0OworICAgIFBsYWluRGF0ZShpbnQzMl90IHllYXIsIHVuc2lnbmVkIG1vbnRoLCB1bnNp
Z25lZCBkYXkpCisgICAgICAgIDogbV95ZWFyKHllYXIpCisgICAgICAgICwgbV9tb250aChtb250
aCkKKyAgICAgICAgLCBtX2RheShkYXkpCisgICAgeworICAgIH0KKworICAgIGludDMyX3QgeWVh
cigpIGNvbnN0IHsgcmV0dXJuIG1feWVhcjsgfQorICAgIHVpbnQ4X3QgbW9udGgoKSBjb25zdCB7
IHJldHVybiBtX21vbnRoOyB9CisgICAgdWludDhfdCBkYXkoKSBjb25zdCB7IHJldHVybiBtX2Rh
eTsgfQorCitwcml2YXRlOgorICAgIGludDMyX3QgbV95ZWFyIHsgMCB9OworICAgIHVpbnQ4X3Qg
bV9tb250aCB7IDEgfTsKKyAgICB1aW50OF90IG1fZGF5IHsgMSB9OworfTsKKwordXNpbmcgVGlt
ZVpvbmUgPSBWYXJpYW50PFRpbWVab25lSUQsIGludDY0X3Q+OworCisvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3N1cC1pc3ZhbGlkdGltZXpvbmVuYW1lCitzdGQ6Om9wdGlv
bmFsPFRpbWVab25lSUQ+IGlkRm9yVGltZVpvbmVOYW1lKFN0cmluZ1ZpZXcpOwogc3RkOjpvcHRp
b25hbDxEdXJhdGlvbj4gcGFyc2VEdXJhdGlvbihTdHJpbmdWaWV3KTsKIHN0ZDo6b3B0aW9uYWw8
aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nVmlldyk7CitzdGQ6
Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lPj4+
IHBhcnNlVGltZShTdHJpbmdWaWV3KTsKK3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRh
dGUsIHN0ZDo6b3B0aW9uYWw8UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZT4+PiBw
YXJzZURhdGVUaW1lKFN0cmluZ1ZpZXcpOwogU3RyaW5nIGZvcm1hdFRpbWVab25lT2Zmc2V0U3Ry
aW5nKGludDY0X3QpOworU3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGltZSwgc3Rk
Ojp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24pOworCitib29sIGlzVmFsaWRE
dXJhdGlvbihjb25zdCBEdXJhdGlvbiYpOwogCiB9IC8vIG5hbWVzcGFjZSBJU084NjAxCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAKaW5kZXggOGQ4ZTk2ZTc3NTVkNThhYjg0MmUzNjBjZmFmYjE5ZDAwZmUyNjI3MC4uNzk3
NTliYzVmYTQ0ZmUyOTc3MjYwNWY1NmE1Y2E5YjA4OTU2MzFjMyAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTE4MzksNiArMTgzOSwyMyBAQCBj
b25zdCBWZWN0b3I8U3RyaW5nPiYgaW50bEF2YWlsYWJsZVRpbWVab25lcygpCiAgICAgcmV0dXJu
IGF2YWlsYWJsZVRpbWVab25lczsKIH0KIAorVGltZVpvbmVJRCB1dGNUaW1lWm9uZUlEU3RvcmFn
ZSB7IHN0ZDo6bnVtZXJpY19saW1pdHM8VGltZVpvbmVJRD46Om1heCgpIH07CitUaW1lWm9uZUlE
IHV0Y1RpbWVab25lSURTbG93KCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlh
bGl6ZU9uY2U7CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7CisgICAg
ICAgIGNvbnN0IGF1dG8mIHRpbWVab25lcyA9IGludGxBdmFpbGFibGVUaW1lWm9uZXMoKTsKKyAg
ICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdGltZVpvbmVzLnNpemUoKTsg
KytpbmRleCkgeworICAgICAgICAgICAgaWYgKHRpbWVab25lc1tpbmRleF0gPT0gIlVUQyJfcykg
eworICAgICAgICAgICAgICAgIHV0Y1RpbWVab25lSURTdG9yYWdlID0gaW5kZXg7CisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgfSk7CisgICAgcmV0dXJuIHV0Y1RpbWVab25l
SURTdG9yYWdlOworfQorCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1lbnVtZXJh
dGlvbi8jc2VjLWF2YWlsYWJsZXRpbWV6b25lcwogc3RhdGljIEpTQXJyYXkqIGF2YWlsYWJsZVRp
bWVab25lcyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IDk2ZDIxODU1YzljYTZmM2UzMTk2Yjc0
ZWEwMmQwZWQ1M2QzOWMxMzAuLmIzZTE1ZDMwYmE5M2I1YjIwNWI1NzNlMDg5ZWJiYmYzOWNlMjEx
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTEx
Nyw2ICsxMTcsMTYgQEAgaW5saW5lIENhbGVuZGFySUQgaXNvODYwMUNhbGVuZGFySUQoKQogdXNp
bmcgVGltZVpvbmVJRCA9IHVuc2lnbmVkOwogY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGxBdmFp
bGFibGVUaW1lWm9uZXMoKTsKIAorZXh0ZXJuIFRpbWVab25lSUQgdXRjVGltZVpvbmVJRFN0b3Jh
Z2U7CitUaW1lWm9uZUlEIHV0Y1RpbWVab25lSURTbG93KCk7CitpbmxpbmUgQ2FsZW5kYXJJRCB1
dGNUaW1lWm9uZUlEKCkKK3sKKyAgICB1bnNpZ25lZCB2YWx1ZSA9IHV0Y1RpbWVab25lSURTdG9y
YWdlOworICAgIGlmICh2YWx1ZSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRpbWVab25lSUQ+Ojpt
YXgoKSkKKyAgICAgICAgcmV0dXJuIHV0Y1RpbWVab25lSURTbG93KCk7CisgICAgcmV0dXJuIHZh
bHVlOworfQorCiBUcmlTdGF0ZSBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpT
T2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUpOwogU3RyaW5nIGludGxTdHJpbmdPcHRpb24o
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1lLCBzdGQ6Omlu
aXRpYWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91bmQs
IGNvbnN0IGNoYXIqIGZhbGxiYWNrKTsKIHVuc2lnbmVkIGludGxOdW1iZXJPcHRpb24oSlNHbG9i
YWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBtaW5p
bXVtLCB1bnNpZ25lZCBtYXhpbXVtLCB1bnNpZ25lZCBmYWxsYmFjayk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYjJmZGY0NjQz
NmU4Nzc2MDQ5MDY0OGFmZDAxNDFjODIyMzYxNDk1MS4uNmRhNDU4ODM0MWEwMTZlOTFhYjkxMzY5
MDM2ZjBjOTZkYTQxNGZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTR2xvYmFsT2JqZWN0LmNwcApAQCAtMjA2LDYgKzIwNiw4IEBACiAjaW5jbHVkZSAiVGVtcG9y
YWxEdXJhdGlvbi5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaCIKICNp
bmNsdWRlICJUZW1wb3JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgi
CisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1w
b3JhbFRpbWVab25lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIlZNVHJhcHNJbmxpbmVzLmgiCkBAIC0xMjMyLDYgKzEyMzQsMTMgQEAgY2FwaXRh
bE5hbWUgIyMgQ29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVG
bGFnID8gY2FwaXRhbE5hbWUKICAgICAgICAgICAgICAgICBpbml0LnNldChUZW1wb3JhbER1cmF0
aW9uOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBkdXJhdGlvblByb3Rv
dHlwZSkpOwogICAgICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9wbGFpblRpbWVTdHJ1Y3R1cmUu
aW5pdExhdGVyKAorICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4m
IGluaXQpIHsKKyAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0g
anNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAgICAgVGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGUqIHBsYWluVGltZVByb3RvdHlwZSA9IFRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBUZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwg
Z2xvYmFsT2JqZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgICAgIGluaXQu
c2V0KFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2Jq
ZWN0LCBwbGFpblRpbWVQcm90b3R5cGUpKTsKKyAgICAgICAgICAgIH0pOworCiAgICAgICAgIG1f
dGltZVpvbmVTdHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICAgICAgW10gKGNvbnN0IEluaXRp
YWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBA
IC0yMTE5LDYgKzIxMjgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1w
bChKU0NlbGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAKICAgICB0aGlzT2JqZWN0LT5tX2Nh
bGVuZGFyU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZHVyYXRp
b25TdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9wbGFpblRpbWVT
dHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV90aW1lWm9uZVN0cnVj
dHVyZS52aXNpdCh2aXNpdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1f
bnVsbEdldHRlckZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9K
U0dsb2JhbE9iamVjdC5oCmluZGV4IGRlYjMzZGJkMTAzMDgzYTE4ZjQwYmE3YWRjNTY5NTI2MDE0
OTdkMjkuLjEyOGIzOTkxMGRkODA1N2Y3YWFiYjU5Nzc3Y2E2ODBlOWRmNjE4OTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzI2LDYg
KzMyNiw3IEBAIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFi
bGVPYmplY3QgewogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+
IG1fY2FsZW5kYXJTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmU+IG1fZHVyYXRpb25TdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFs
T2JqZWN0LCBTdHJ1Y3R1cmU+IG1fcGxhaW5UaW1lU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0
eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3RpbWVab25lU3RydWN0dXJlOwogCiAgICAg
V3JpdGVCYXJyaWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9udWxsR2V0dGVyRnVuY3Rpb247CkBA
IC04NzYsNiArODc3LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50
ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBTdHJ1Y3R1cmUqIGNhbGVuZGFyU3RydWN0dXJlKCkg
eyByZXR1cm4gbV9jYWxlbmRhclN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUq
IGR1cmF0aW9uU3RydWN0dXJlKCkgeyByZXR1cm4gbV9kdXJhdGlvblN0cnVjdHVyZS5nZXQodGhp
cyk7IH0KKyAgICBTdHJ1Y3R1cmUqIHBsYWluVGltZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGxh
aW5UaW1lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogdGltZVpvbmVTdHJ1
Y3R1cmUoKSB7IHJldHVybiBtX3RpbWVab25lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogCiAgICAg
SlNfRVhQT1JUX1BSSVZBVEUgdm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
ckNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
Q2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKaW5kZXggYTBmYWEzZmZjZDA0NDQ3NzJjNDFhNGNiNzM1
NmEyZDY4NjcwYTY5Yy4uNjUzMGRkMDFlYjY3YzUzY2Q4ZTllMzA4ODk5MTA1NjZlOGNiNTdmNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
ckNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwCkBAIC03Myw2ICs3Myw3IEBAIHZvaWQgVGVtcG9y
YWxDYWxlbmRhckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsQ2Fs
ZW5kYXJQcm90b3R5CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJDYWxlbmRh
ciJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsK
ICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJv
dG90eXBlLCB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRl
OjpSZWFkT25seSk7CisgICAgdGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0
aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBz
dGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAK
IEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbENhbGVuZGFyLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpkaWZmIC0t
Z2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAppbmRl
eCAwZGEyNGE1MjU1N2ViY2RlNThmMzVkZTE4ZDc2YzJlNzJiNjI2ZjhkLi4xYzEwMDU4NzIyMWUz
MmM3NjNkNDNiZTc2ODIxZjBiZmVlYjNlYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcApAQCAtNzIsMjIgKzcyLDYgQEAgdm9p
ZCBUZW1wb3JhbER1cmF0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgQVNTRVJUKGlu
aGVyaXRzKHZtLCBpbmZvKCkpKTsKIH0KIAotLy8gSXNWYWxpZER1cmF0aW9uICggeWVhcnMsIG1v
bnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMs
IG1pY3Jvc2Vjb25kcywgbmFub3NlY29uZHMgKQotLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaXN2YWxpZGR1cmF0aW9uCi1zdGF0aWMgYm9vbCBpc1Zh
bGlkRHVyYXRpb24oY29uc3QgVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJkdXJh
dGlvbnMpCi17Ci0gICAgaW50IHNpZ24gPSAwOwotICAgIGZvciAoYXV0byB2YWx1ZSA6IHN1YmR1
cmF0aW9ucykgewotICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpIHx8ICh2YWx1ZSA8
IDAgJiYgc2lnbiA+IDApIHx8ICh2YWx1ZSA+IDAgJiYgc2lnbiA8IDApKQotICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOwotCi0gICAgICAgIGlmICghc2lnbiAmJiB2YWx1ZSkKLSAgICAgICAgICAg
IHNpZ24gPSB2YWx1ZSA+IDAgPyAxIDogLTE7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19
Ci0KIC8vIENyZWF0ZVRlbXBvcmFsRHVyYXRpb24gKCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5
cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBu
YW5vc2Vjb25kcyBbICwgbmV3VGFyZ2V0IF0gKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtY3JlYXRldGVtcG9yYWxkdXJhdGlvbgogVGVtcG9yYWxE
dXJhdGlvbiogVGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBTdWJkdXJhdGlvbnMmJiBzdWJkdXJhdGlvbnMsIFN0cnVjdHVyZSog
c3RydWN0dXJlKQpAQCAtOTUsNyArNzksNyBAQCBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1
cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CiAKLSAgICBpZiAoIWlzVmFsaWREdXJhdGlvbihzdWJkdXJhdGlvbnMp
KSB7CisgICAgaWYgKCFJU084NjAxOjppc1ZhbGlkRHVyYXRpb24oc3ViZHVyYXRpb25zKSkgewog
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1
cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJf
cyk7CiAgICAgICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtMTA1LDE3ICs4OSwxNyBAQCBUZW1w
b3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplYwogCiAvLyBUb1RlbXBvcmFsRHVyYXRpb25SZWNvcmQgKCB0ZW1w
b3JhbER1cmF0aW9uTGlrZSApCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3NlYy10ZW1wb3JhbC10b3RlbXBvcmFsZHVyYXRpb25yZWNvcmQKLVRlbXBvcmFsRHVyYXRpb246
OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjpmcm9tT2JqZWN0KEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBkdXJhdGlvbkxpa2UpCitUZW1wb3JhbER1cmF0aW9u
OjpTdWJkdXJhdGlvbnMgVGVtcG9yYWxEdXJhdGlvbjo6ZnJvbU5vbkR1cmF0aW9uVmFsdWUoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBkdXJhdGlvbkxpa2UpCiB7CiAgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKIAotICAgIEFTU0VSVCghZHVyYXRpb25MaWtlLT5pbmhlcml0czxUZW1w
b3JhbER1cmF0aW9uPih2bSkpOworICAgIEFTU0VSVCghZHVyYXRpb25MaWtlLmluaGVyaXRzPFRl
bXBvcmFsRHVyYXRpb24+KHZtKSk7CiAKICAgICBTdWJkdXJhdGlvbnMgcmVzdWx0OwogICAgIGF1
dG8gaGFzUmVsZXZhbnRQcm9wZXJ0eSA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzOyBpKyspIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9
IGR1cmF0aW9uTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKHZtLCBpKSk7Cisg
ICAgICAgIEpTVmFsdWUgdmFsdWUgPSBkdXJhdGlvbkxpa2UuZ2V0KGdsb2JhbE9iamVjdCwgcHJv
cGVydHlOYW1lKHZtLCBpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CiAKICAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE1Miw3ICsxMzYs
NyBAQCBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0b0R1cmF0aW9uKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVgogICAgICAgICByZXR1cm4ganNDYXN0PFRlbXBv
cmFsRHVyYXRpb24qPihpdGVtVmFsdWUpOwogCiAgICAgaWYgKGl0ZW1WYWx1ZS5pc09iamVjdCgp
KSB7Ci0gICAgICAgIGF1dG8gc3ViZHVyYXRpb25zID0gZnJvbU9iamVjdChnbG9iYWxPYmplY3Qs
IGFzT2JqZWN0KGl0ZW1WYWx1ZSkpOworICAgICAgICBhdXRvIHN1YmR1cmF0aW9ucyA9IGZyb21O
b25EdXJhdGlvblZhbHVlKGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlKTsKICAgICAgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgbnVsbHB0cik7CiAKICAgICAgICAgUkVMRUFTRV9BTkRfUkVU
VVJOKHNjb3BlLCBUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVj
dCwgV1RGTW92ZShzdWJkdXJhdGlvbnMpKSk7CkBAIC0xNzAsNiArMTU0LDE2IEBAIFRlbXBvcmFs
RHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBUZW1wb3JhbER1
cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShwYXJzZWRTdWJk
dXJhdGlvbnMudmFsdWUoKSkpKTsKIH0KIAorVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25z
IFRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb25SZWNvcmQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSB0ZW1wb3JhbER1cmF0aW9uTGlrZSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisKKyAgICBpZiAodGVtcG9yYWxEdXJhdGlvbkxpa2UuaW5oZXJp
dHM8VGVtcG9yYWxEdXJhdGlvbj4odm0pKQorICAgICAgICByZXR1cm4ganNDYXN0PFRlbXBvcmFs
RHVyYXRpb24qPih0ZW1wb3JhbER1cmF0aW9uTGlrZSktPnN1YmR1cmF0aW9ucygpOworCisgICAg
cmV0dXJuIGZyb21Ob25EdXJhdGlvblZhbHVlKGdsb2JhbE9iamVjdCwgdGVtcG9yYWxEdXJhdGlv
bkxpa2UpOworfQorCiBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjpmcm9tKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQogewogICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKQEAgLTUzMCw3ICs1MjQsMTAgQEAgU3RyaW5nIFRl
bXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgb3B0aW9uc1YKIAogICAgIFByZWNpc2lvbkRhdGEgZGF0YSA9IHNlY29uZHNTdHJpbmdQ
cmVjaXNpb24oZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOwotICAgIEFTU0VSVChkYXRhLnVuaXQgPj0gVGVtcG9yYWxVbml0OjpTZWNv
bmQpOworICAgIGlmIChkYXRhLnVuaXQgPCBUZW1wb3JhbFVuaXQ6OlNlY29uZCkgeworICAgICAg
ICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBtdXN0
IG5vdCBiZSBcIm1pbnV0ZVwiIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CiAKICAg
ICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwKICAgICAgICAgeyB7
ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9k
ZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwgeyAiaGFsZkV4
cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0gfSwKQEAgLTUzOCw3ICs1MzUsNyBA
QCBTdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKICAgICAvLyBObyBuZWVkIHRvIG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUg
Z2l2ZW4gZXhwbGljaXQgZGVmYXVsdHMuCi0gICAgaWYgKCFkYXRhLnByZWNpc2lvbiAmJiByb3Vu
ZGluZ01vZGUgPT0gUm91bmRpbmdNb2RlOjpUcnVuYykKKyAgICBpZiAoc3RkOjpnZXQ8MD4oZGF0
YS5wcmVjaXNpb24pID09IFByZWNpc2lvbjo6QXV0byAmJiByb3VuZGluZ01vZGUgPT0gUm91bmRp
bmdNb2RlOjpUcnVuYykKICAgICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CiAKICAgICBTdWJkdXJh
dGlvbnMgbmV3U3ViZHVyYXRpb25zID0gbV9zdWJkdXJhdGlvbnM7CkBAIC01NDgsOSArNTQ1LDEw
IEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAKIC8vIFRlbXBvcmFsRHVyYXRpb25Ub1N0cmlu
ZyAoIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25kcywg
bWlsbGlzZWNvbmRzLCBtaWNyb3NlY29uZHMsIG5hbm9zZWNvbmRzLCBwcmVjaXNpb24gKQogLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdGVtcG9yYWxk
dXJhdGlvbnRvc3RyaW5nCi1TdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoY29uc3Qg
VGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMsIHN0ZDo6b3B0aW9u
YWw8dW5zaWduZWQ+IHByZWNpc2lvbikKK1N0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmlu
Zyhjb25zdCBUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMmIHN1YmR1cmF0aW9ucywgc3Rk
Ojp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24pCiB7Ci0gICAgQVNTRVJUKCFw
cmVjaXNpb24gfHwgcHJlY2lzaW9uLnZhbHVlKCkgPCAxMCk7CisgICAgYXV0byBbcHJlY2lzaW9u
VHlwZSwgcHJlY2lzaW9uVmFsdWVdID0gcHJlY2lzaW9uOworICAgIEFTU0VSVChwcmVjaXNpb25U
eXBlID09IFByZWNpc2lvbjo6QXV0byB8fCBwcmVjaXNpb25WYWx1ZSA8IDEwKTsKIAogICAgIGF1
dG8gYmFsYW5jZWRNaWNyb3NlY29uZHMgPSBzdWJkdXJhdGlvbnMubWljcm9zZWNvbmRzKCkgKyBz
dGQ6OnRydW5jKHN1YmR1cmF0aW9ucy5uYW5vc2Vjb25kcygpIC8gMTAwMCk7CiAgICAgYXV0byBi
YWxhbmNlZE5hbm9zZWNvbmRzID0gc3RkOjpmbW9kKHN1YmR1cmF0aW9ucy5uYW5vc2Vjb25kcygp
LCAxMDAwKTsKQEAgLTU5NywxMCArNTk1LDEwIEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0
b1N0cmluZyhjb25zdCBUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMmIHN1YmR1cmF0CiAg
ICAgICAgIGJ1aWxkZXIuYXBwZW5kKGZvcm1hdEludGVnZXIoYmFsYW5jZWRTZWNvbmRzKSk7CiAK
ICAgICAgICAgYXV0byBmcmFjdGlvbiA9IHN0ZDo6YWJzKGJhbGFuY2VkTWlsbGlzZWNvbmRzKSAq
IDFlNiArIHN0ZDo6YWJzKGJhbGFuY2VkTWljcm9zZWNvbmRzKSAqIDFlMyArIHN0ZDo6YWJzKGJh
bGFuY2VkTmFub3NlY29uZHMpOwotICAgICAgICBpZiAoKCFwcmVjaXNpb24gJiYgZnJhY3Rpb24p
IHx8IChwcmVjaXNpb24gJiYgcHJlY2lzaW9uLnZhbHVlKCkpKSB7CisgICAgICAgIGlmICgocHJl
Y2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8gJiYgZnJhY3Rpb24pIHx8IChwcmVjaXNpb25U
eXBlID09IFByZWNpc2lvbjo6Rml4ZWQgJiYgcHJlY2lzaW9uVmFsdWUpKSB7CiAgICAgICAgICAg
ICBhdXRvIHBhZGRlZCA9IG1ha2VTdHJpbmcoJy4nLCBwYWQoJzAnLCA5LCBmcmFjdGlvbikpOwot
ICAgICAgICAgICAgaWYgKHByZWNpc2lvbikKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVu
ZChTdHJpbmdWaWV3KHBhZGRlZCkubGVmdChwYWRkZWQubGVuZ3RoKCkgLSAoOSAtIHByZWNpc2lv
bi52YWx1ZSgpKSkpOworICAgICAgICAgICAgaWYgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9u
OjpGaXhlZCkKKyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KHBhZGRl
ZCkubGVmdChwYWRkZWQubGVuZ3RoKCkgLSAoOSAtIHByZWNpc2lvblZhbHVlKSkpOwogICAgICAg
ICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYXV0byBsZW5ndGhXaXRob3V0VHJhaWxpbmda
ZXJvZXMgPSBwYWRkZWQubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKHBhZGRlZFts
ZW5ndGhXaXRob3V0VHJhaWxpbmdaZXJvZXMgLSAxXSA9PSAnMCcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKaW5kZXggNTkyMDRkYzk1Mzdh
YWY3NjAxZTBlOGQxNTcwNTZiZGExOWFmNzM1NS4uYmM0MzgzMzNjNTQwNTFkMmYxZGI1NTRlM2Iz
NDlkZTVhNGE5YTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxEdXJhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsRHVyYXRpb24uaApAQCAtNjYsNyArNjYsMTUgQEAgY2xhc3MgVGVtcG9yYWxEdXJhdGlv
biBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBTdWJkdXJhdGlvbnMgcm91
bmQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OwogICAgIGRvdWJsZSB0
b3RhbChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CiAgICAgU3RyaW5n
IHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKLSAgICBT
dHJpbmcgdG9TdHJpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uID0gc3RkOjpu
dWxsb3B0KSBjb25zdCB7IHJldHVybiB0b1N0cmluZyhtX3N1YmR1cmF0aW9ucywgcHJlY2lzaW9u
KTsgfQorICAgIFN0cmluZyB0b1N0cmluZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+
IHByZWNpc2lvbiA9IHsgUHJlY2lzaW9uOjpBdXRvLCAwIH0pIGNvbnN0IHsgcmV0dXJuIHRvU3Ry
aW5nKG1fc3ViZHVyYXRpb25zLCBwcmVjaXNpb24pOyB9CisKKyAgICBjb25zdCBTdWJkdXJhdGlv
bnMmIHN1YmR1cmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc3ViZHVyYXRpb25zOyB9CisKKyAg
ICBzdGF0aWMgU3ViZHVyYXRpb25zIHRvRHVyYXRpb25SZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlKTsKKworICAgIHN0YXRpYyBpbnQgc2lnbihjb25zdCBTdWJkdXJhdGlvbnMmKTsKKyAg
ICBzdGF0aWMgZG91YmxlIHJvdW5kKFN1YmR1cmF0aW9ucyYsIGRvdWJsZSBpbmNyZW1lbnQsIFRl
bXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBiYWxhbmNlKFN1YmR1
cmF0aW9ucyYsIFRlbXBvcmFsVW5pdCBsYXJnZXN0VW5pdCk7CiAKIHByaXZhdGU6CiAgICAgVGVt
cG9yYWxEdXJhdGlvbihWTSYsIFN0cnVjdHVyZSosIFN1YmR1cmF0aW9ucyYmKTsKQEAgLTc0LDEy
ICs4Miw5IEBAIGNsYXNzIFRlbXBvcmFsRHVyYXRpb24gZmluYWwgOiBwdWJsaWMgSlNOb25GaW5h
bE9iamVjdCB7CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFN1YmR1cmF0aW9ucz4gcGFyc2UoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxDaGFyYWN0ZXJUeXBlPiYpOwotICAgIHN0YXRpYyBTdWJkdXJhdGlvbnMgZnJvbU9iamVjdChK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CisgICAgc3RhdGljIFN1YmR1cmF0aW9ucyBmcm9t
Tm9uRHVyYXRpb25WYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCi0gICAgc3RhdGlj
IGludCBzaWduKGNvbnN0IFN1YmR1cmF0aW9ucyYpOwotICAgIHN0YXRpYyB2b2lkIGJhbGFuY2Uo
U3ViZHVyYXRpb25zJiwgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0KTsKLSAgICBzdGF0aWMgZG91
YmxlIHJvdW5kKFN1YmR1cmF0aW9ucyYsIGRvdWJsZSBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwg
Um91bmRpbmdNb2RlKTsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFN1YmR1cmF0
aW9ucyYsIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHByZWNpc2lvbik7CisgICAgc3RhdGljIFN0
cmluZyB0b1N0cmluZyhjb25zdCBTdWJkdXJhdGlvbnMmLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwg
dW5zaWduZWQ+IHByZWNpc2lvbik7CiAKICAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFN1YmR1cmF0
aW9uKCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsTm93LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
Tm93LmNwcAppbmRleCBiMGE3ZWVlNGM0YTAxMzYwYmEzY2ZhNWFkNWU1YTQ3Yjk0YjY3MzNhLi43
YzBmZWM1MzkxM2U4YzVkNjlkNWQ2M2ViYWE3ZmZkOTFkZmM4YjEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIEpT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbE5vd0Z1bmNUaW1lWm9uZSwgKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwog
CiAgICAgU3RyaW5nIHRpbWVab25lU3RyaW5nID0gdm0uZGF0ZUNhY2hlLmRlZmF1bHRUaW1lWm9u
ZSgpOwotICAgIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IFRlbXBvcmFs
VGltZVpvbmU6OmlkRm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFRpbWVab25lSUQ+IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFt
ZSh0aW1lWm9uZVN0cmluZyk7CiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENPZmZzZXQodm0s
IGdsb2JhbE9iamVjdC0+dGltZVpvbmVTdHJ1Y3R1cmUoKSwgMCkpOwogICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbUlEKHZtLCBnbG9iYWxPYmpl
Y3QtPnRpbWVab25lU3RydWN0dXJlKCksIGlkZW50aWZpZXIudmFsdWUoKSkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IGIyNGUz
YTllOWRhMjIwMjZjMmEzYmZkYjI4YmFmN2NlZTNkM2VmOTcuLjhlMzdkN2NmZjM1Zjk4OWUzZWVm
YWI0MDkzNTU4MGFlMGI0ZGRlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJUZW1w
b3JhbER1cmF0aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxOb3cuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRl
ICJUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmgiCiAKQEAgLTYxLDYgKzYzLDEzIEBAIHN0YXRp
YyBKU1ZhbHVlIGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2Jq
ZWN0KQogICAgIHJldHVybiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwg
VGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9i
amVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PFRlbXBvcmFs
RHVyYXRpb25Qcm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCktPnN0
b3JlZFByb3RvdHlwZU9iamVjdCgpKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsYWlu
VGltZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBUZW1wb3Jh
bE9iamVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3Qp
OworICAgIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0ZW1wb3JhbE9iamVjdC0+Z2xv
YmFsT2JqZWN0KHZtKTsKKyAgICByZXR1cm4gVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6
Y3JlYXRlKHZtLCBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUo
dm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganND
YXN0PFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVT
dHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKK30KKwogc3RhdGljIEpTVmFs
dWUgY3JlYXRlVGltZVpvbmVDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7
CiAgICAgVGVtcG9yYWxPYmplY3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0PFRlbXBvcmFsT2Jq
ZWN0Kj4ob2JqZWN0KTsKQEAgLTc5LDYgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgIENhbGVu
ZGFyICAgICAgIGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVy
dHlDYWxsYmFjawogICBEdXJhdGlvbiAgICAgICBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yICAg
ICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgTm93ICAgICAgICAgICAgY3JlYXRlTm93
T2JqZWN0ICAgICAgICAgICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCisgIFBsYWlu
VGltZSAgICAgIGNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yICAgICAgRG9udEVudW18UHJvcGVy
dHlDYWxsYmFjawogICBUaW1lWm9uZSAgICAgICBjcmVhdGVUaW1lWm9uZUNvbnN0cnVjdG9yICAg
ICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKIEBlbmQKICovCkBAIC0yNDIsMTkgKzI1Miwy
MSBAQCBQcmVjaXNpb25EYXRhIHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9wdAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBh
dXRvIHNtYWxsZXN0VW5pdCA9IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0
aW9ucywgeyBUZW1wb3JhbFVuaXQ6OlllYXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRlbXBvcmFs
VW5pdDo6V2VlaywgVGVtcG9yYWxVbml0OjpEYXksIFRlbXBvcmFsVW5pdDo6SG91ciwgVGVtcG9y
YWxVbml0OjpNaW51dGUgfSk7CisgICAgYXV0byBzbWFsbGVzdFVuaXQgPSB0ZW1wb3JhbFNtYWxs
ZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBUZW1w
b3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5LCBU
ZW1wb3JhbFVuaXQ6OkhvdXIgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKIAogICAgIGlmIChzbWFsbGVzdFVuaXQpIHsKICAgICAgICAgc3dpdGNoIChzbWFsbGVzdFVu
aXQudmFsdWUoKSkgeworICAgICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWludXRlOgorICAgICAg
ICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246Ok1pbnV0ZSwgMCB9LCBUZW1wb3JhbFVuaXQ6Ok1p
bnV0ZSwgMSB9OwogICAgICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOgotICAgICAgICAg
ICAgcmV0dXJuIHsgMCwgVGVtcG9yYWxVbml0OjpTZWNvbmQsIDEgfTsKKyAgICAgICAgICAgIHJl
dHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgMCB9LCBUZW1wb3JhbFVuaXQ6OlNlY29uZCwgMSB9
OwogICAgICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6Ci0gICAgICAgICAgICBy
ZXR1cm4geyAzLCBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLCAxIH07CisgICAgICAgICAgICBy
ZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIDMgfSwgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29u
ZCwgMSB9OwogICAgICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6Ci0gICAgICAg
ICAgICByZXR1cm4geyA2LCBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kLCAxIH07CisgICAgICAg
ICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIDYgfSwgVGVtcG9yYWxVbml0OjpNaWNy
b3NlY29uZCwgMSB9OwogICAgICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZDoKLSAg
ICAgICAgICAgIHJldHVybiB7IDksIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9OworICAg
ICAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCA5IH0sIFRlbXBvcmFsVW5pdDo6
TmFub3NlY29uZCwgMSB9OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9B
U1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0yNjUsMjAg
KzI3NywyNyBAQCBQcmVjaXNpb25EYXRhIHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIG9wdAogICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoIXByZWNpc2lvbikKLSAgICAgICAgcmV0dXJuIHsg
c3RkOjpudWxsb3B0LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfTsKKyAgICAgICAgcmV0
dXJuIHsgeyBQcmVjaXNpb246OkF1dG8sIDAgfSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAx
IH07CisKKyAgICBhdXRvIHBvdzEwVW5zaWduZWQgPSBbXSh1bnNpZ25lZCBuKSAtPiB1bnNpZ25l
ZCB7CisgICAgICAgIHVuc2lnbmVkIHJlc3VsdCA9IDE7CisgICAgICAgIGZvciAodW5zaWduZWQg
aSA9IDA7IGkgPCBuOyArK2kpCisgICAgICAgICAgICByZXN1bHQgKj0gMTA7CisgICAgICAgIHJl
dHVybiByZXN1bHQ7CisgICAgfTsKIAogICAgIHVuc2lnbmVkIGRpZ2l0cyA9IHByZWNpc2lvbi52
YWx1ZSgpOwogICAgIGlmICghZGlnaXRzKQotICAgICAgICByZXR1cm4geyAwLCBUZW1wb3JhbFVu
aXQ6OlNlY29uZCwgMSB9OworICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIDAg
fSwgVGVtcG9yYWxVbml0OjpTZWNvbmQsIDEgfTsKIAogICAgIGlmIChkaWdpdHMgPD0gMykKLSAg
ICAgICAgcmV0dXJuIHsgZGlnaXRzLCBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLCBzdGQ6OnBv
dygxMCwgMyAtIGRpZ2l0cykgfTsKKyAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVk
LCBkaWdpdHMgfSwgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZCwgcG93MTBVbnNpZ25lZCgzIC0g
ZGlnaXRzKSB9OwogCiAgICAgaWYgKGRpZ2l0cyA8PSA2KQotICAgICAgICByZXR1cm4geyBkaWdp
dHMsIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQsIHN0ZDo6cG93KDEwLCA2IC0gZGlnaXRzKSB9
OworICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIGRpZ2l0cyB9LCBUZW1wb3Jh
bFVuaXQ6Ok1pY3Jvc2Vjb25kLCBwb3cxMFVuc2lnbmVkKDYgLSBkaWdpdHMpIH07CiAKICAgICBB
U1NFUlQoZGlnaXRzIDw9IDkpOwotICAgIHJldHVybiB7IGRpZ2l0cywgVGVtcG9yYWxVbml0OjpO
YW5vc2Vjb25kLCBzdGQ6OnBvdygxMCwgOSAtIGRpZ2l0cykgfTsKKyAgICByZXR1cm4geyB7IFBy
ZWNpc2lvbjo6Rml4ZWQsIGRpZ2l0cyB9LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIHBvdzEw
VW5zaWduZWQoOSAtIGRpZ2l0cykgfTsKIH0KIAogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25S
b3VuZGluZ0luY3JlbWVudCAoIHVuaXQgKQpAQCAtMzQyLDQgKzM2MSwxMSBAQCBkb3VibGUgcm91
bmROdW1iZXJUb0luY3JlbWVudChkb3VibGUgeCwgZG91YmxlIGluY3JlbWVudCwgUm91bmRpbmdN
b2RlIG1vZGUpCiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorVGVtcG9y
YWxPdmVyZmxvdyB0b1RlbXBvcmFsT3ZlcmZsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNPYmplY3QqIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIGludGxPcHRpb248VGVtcG9yYWxP
dmVyZmxvdz4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCBnbG9iYWxPYmplY3QtPnZtKCkucHJvcGVy
dHlOYW1lcy0+b3ZlcmZsb3csCisgICAgICAgIHsgeyAiY29uc3RyYWluIl9zLCBUZW1wb3JhbE92
ZXJmbG93OjpDb25zdHJhaW4gfSwgeyAicmVqZWN0Il9zLCBUZW1wb3JhbE92ZXJmbG93OjpSZWpl
Y3QgfSB9LAorICAgICAgICAib3ZlcmZsb3cgbXVzdCBiZSBlaXRoZXIgXCJjb25zdHJhaW5cIiBv
ciBcInJlamVjdFwiIl9zLCBUZW1wb3JhbE92ZXJmbG93OjpDb25zdHJhaW4pOworfQorCiB9IC8v
IG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bE9iamVjdC5oCmluZGV4IDcyNDNjOWJhNTg0MzI2MmQyZDBjYmI4MTkzM2Y0Y2RkMTMwOGZiNDgu
Ljg5YTE1NmU4YzE1YjgxMjVjMjA0NDEwYmVlMDRkYjdhZWQyYmEzODEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaApAQCAtMjEsMTQgKzIxLDEx
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSA8d3Rm
L1ZhcmlhbnQuaD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNkZWZpbmUgSlNDX1RFTVBPUkFMX1VO
SVRTKG1hY3JvKSBcCi0gICAgbWFjcm8oeWVhciwgWWVhcikgXAotICAgIG1hY3JvKG1vbnRoLCBN
b250aCkgXAotICAgIG1hY3JvKHdlZWssIFdlZWspIFwKLSAgICBtYWNybyhkYXksIERheSkgXAor
I2RlZmluZSBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhtYWNybykgXAogICAgIG1hY3Jv
KGhvdXIsIEhvdXIpIFwKICAgICBtYWNybyhtaW51dGUsIE1pbnV0ZSkgXAogICAgIG1hY3JvKHNl
Y29uZCwgU2Vjb25kKSBcCkBAIC0zNiw2ICszMywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBt
YWNybyhtaWNyb3NlY29uZCwgTWljcm9zZWNvbmQpIFwKICAgICBtYWNybyhuYW5vc2Vjb25kLCBO
YW5vc2Vjb25kKSBcCiAKKworI2RlZmluZSBKU0NfVEVNUE9SQUxfVU5JVFMobWFjcm8pIFwKKyAg
ICBtYWNybyh5ZWFyLCBZZWFyKSBcCisgICAgbWFjcm8obW9udGgsIE1vbnRoKSBcCisgICAgbWFj
cm8od2VlaywgV2VlaykgXAorICAgIG1hY3JvKGRheSwgRGF5KSBcCisgICAgSlNDX1RFTVBPUkFM
X1BMQUlOX1RJTUVfVU5JVFMobWFjcm8pIFwKKworCiBlbnVtIGNsYXNzIFRlbXBvcmFsVW5pdCA6
IHVpbnQ4X3QgewogI2RlZmluZSBKU0NfREVGSU5FX1RFTVBPUkFMX1VOSVRfRU5VTShuYW1lLCBj
YXBpdGFsaXplZE5hbWUpIGNhcGl0YWxpemVkTmFtZSwKICAgICBKU0NfVEVNUE9SQUxfVU5JVFMo
SlNDX0RFRklORV9URU1QT1JBTF9VTklUX0VOVU0pCkBAIC00Myw2ICs0OSw3IEBAIGVudW0gY2xh
c3MgVGVtcG9yYWxVbml0IDogdWludDhfdCB7CiB9OwogI2RlZmluZSBKU0NfQ09VTlRfVEVNUE9S
QUxfVU5JVFMobmFtZSwgY2FwaXRhbGl6ZWROYW1lKSArIDEKIHN0YXRpYyBjb25zdGV4cHIgdW5z
aWduZWQgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzID0gMCBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX0NP
VU5UX1RFTVBPUkFMX1VOSVRTKTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZU
ZW1wb3JhbFBsYWluVGltZVVuaXRzID0gMCBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhK
U0NfQ09VTlRfVEVNUE9SQUxfVU5JVFMpOwogI3VuZGVmIEpTQ19DT1VOVF9URU1QT1JBTF9VTklU
UwogCiBjbGFzcyBUZW1wb3JhbE9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0
IHsKQEAgLTc0LDEwICs4MSwxNiBAQCBlbnVtIGNsYXNzIFJvdW5kaW5nTW9kZSA6IHVpbnQ4X3Qg
ewogICAgIEhhbGZFeHBhbmQKIH07CiAKK2VudW0gY2xhc3MgUHJlY2lzaW9uIHsKKyAgICBNaW51
dGUsCisgICAgRml4ZWQsCisgICAgQXV0bywKK307CisKIHN0cnVjdCBQcmVjaXNpb25EYXRhIHsK
LSAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjaXNpb247CisgICAgc3RkOjp0dXBsZTxQ
cmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb247CiAgICAgVGVtcG9yYWxVbml0IHVuaXQ7Ci0g
ICAgZG91YmxlIGluY3JlbWVudDsKKyAgICB1bnNpZ25lZCBpbmNyZW1lbnQ7CiB9OwogCiBzdGQ6
Om9wdGlvbmFsPFRlbXBvcmFsVW5pdD4gdGVtcG9yYWxVbml0VHlwZShTdHJpbmdWaWV3KTsKQEAg
LTg5LDQgKzEwMiwxMSBAQCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4aW11bVJvdW5kaW5nSW5j
cmVtZW50KFRlbXBvcmFsVW5pdCk7CiBkb3VibGUgdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChK
U0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4g
ZGl2aWRlbmQsIGJvb2wgaW5jbHVzaXZlKTsKIGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50
KGRvdWJsZSwgZG91YmxlIGluY3JlbWVudCwgUm91bmRpbmdNb2RlKTsKIAorZW51bSBjbGFzcyBU
ZW1wb3JhbE92ZXJmbG93IDogdWludDhfdCB7CisgICAgQ29uc3RyYWluLAorICAgIFJlamVjdCwK
K307CisKK1RlbXBvcmFsT3ZlcmZsb3cgdG9UZW1wb3JhbE92ZXJmbG93KEpTR2xvYmFsT2JqZWN0
KiwgSlNPYmplY3QqKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMzVl
ZWFhODkxYmZkODY1NmViNTFlZDFhMTEzZjE2N2VmZmRhY2I0OAotLS0gL2Rldi9udWxsCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcApAQCAt
MCwwICsxLDY3NCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5o
IgorCisjaW5jbHVkZSAiQWJzdHJhY3RTbG90VmlzaXRvci5oIgorI2luY2x1ZGUgIkludGxPYmpl
Y3RJbmxpbmVzLmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkxhenlQcm9w
ZXJ0eUlubGluZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAi
Vk1UcmFwc0lubGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBU
ZW1wb3JhbFBsYWluVGltZTo6c19pbmZvID0geyAiT2JqZWN0IiwgJkJhc2U6OnNfaW5mbywgbnVs
bHB0ciwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWluVGltZSkgfTsK
KworVGVtcG9yYWxQbGFpblRpbWUqIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6UGxhaW5UaW1lJiYgcGxhaW5UaW1lKQorewor
ICAgIGF1dG8qIG9iamVjdCA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxh
aW5UaW1lPih2bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWUodm0sIHN0cnVjdHVyZSwgV1RGTW92
ZShwbGFpblRpbWUpKTsKKyAgICBvYmplY3QtPmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICByZXR1
cm4gb2JqZWN0OworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGVTdHJ1
Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3Rv
dHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwg
cHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
Cit9CisKK1RlbXBvcmFsUGxhaW5UaW1lOjpUZW1wb3JhbFBsYWluVGltZShWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpQbGFpblRpbWUmJiBwbGFpblRpbWUpCisgICAgOiBC
YXNlKHZtLCBzdHJ1Y3R1cmUpCisgICAgLCBtX3BsYWluVGltZShXVEZNb3ZlKHBsYWluVGltZSkp
Cit7Cit9CisKK3ZvaWQgVGVtcG9yYWxQbGFpblRpbWU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZt
LCBpbmZvKCkpKTsKKyAgICBtX2NhbGVuZGFyLmluaXRMYXRlcigKKyAgICAgICAgW10gKGNvbnN0
IGF1dG8mIGluaXQpIHsKKyAgICAgICAgICAgIFZNJiB2bSA9IGluaXQudm07CisgICAgICAgICAg
ICBhdXRvKiBwbGFpblRpbWUgPSBqc0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPihpbml0Lm93bmVy
KTsKKyAgICAgICAgICAgIGF1dG8qIGdsb2JhbE9iamVjdCA9IHBsYWluVGltZS0+Z2xvYmFsT2Jq
ZWN0KHZtKTsKKyAgICAgICAgICAgIGF1dG8qIGNhbGVuZGFyID0gVGVtcG9yYWxDYWxlbmRhcjo6
Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPmNhbGVuZGFyU3RydWN0dXJlKCksIGlzbzg2MDFDYWxl
bmRhcklEKCkpOworICAgICAgICAgICAgaW5pdC5zZXQoY2FsZW5kYXIpOworICAgICAgICB9KTsK
K30KKwordGVtcGxhdGU8dHlwZW5hbWUgVmlzaXRvcj4KK3ZvaWQgVGVtcG9yYWxQbGFpblRpbWU6
OnZpc2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKK3sKKyAg
ICBCYXNlOjp2aXNpdENoaWxkcmVuKGNlbGwsIHZpc2l0b3IpOworCisgICAgYXV0byogdGhpc09i
amVjdCA9IGpzQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KGNlbGwpOworICAgIHRoaXNPYmplY3Qt
Pm1fY2FsZW5kYXIudmlzaXQodmlzaXRvcik7Cit9CisKK0RFRklORV9WSVNJVF9DSElMRFJFTihU
ZW1wb3JhbFBsYWluVGltZSk7CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3Jh
bC8jc2VjLXRlbXBvcmFsLWlzdmFsaWR0aW1lCitzdGF0aWMgSVNPODYwMTo6UGxhaW5UaW1lIHRv
UGxhaW5UaW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElTTzg2MDE6OkR1cmF0aW9u
JiYgZHVyYXRpb24pCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGRvdWJsZSBob3VyID0g
ZHVyYXRpb24uaG91cnMoKTsKKyAgICBkb3VibGUgbWludXRlID0gZHVyYXRpb24ubWludXRlcygp
OworICAgIGRvdWJsZSBzZWNvbmQgPSBkdXJhdGlvbi5zZWNvbmRzKCk7CisgICAgZG91YmxlIG1p
bGxpc2Vjb25kID0gZHVyYXRpb24ubWlsbGlzZWNvbmRzKCk7CisgICAgZG91YmxlIG1pY3Jvc2Vj
b25kID0gZHVyYXRpb24ubWljcm9zZWNvbmRzKCk7CisgICAgZG91YmxlIG5hbm9zZWNvbmQgPSBk
dXJhdGlvbi5uYW5vc2Vjb25kcygpOworICAgIGlmICghKGhvdXIgPj0gMCAmJiBob3VyIDw9IDIz
KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImhvdXIg
aXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgaWYg
KCEobWludXRlID49IDAgJiYgbWludXRlIDw9IDU5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm1pbnV0ZSBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBpZiAoIShzZWNvbmQgPj0gMCAmJiBzZWNvbmQg
PD0gNTkpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
c2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQor
ICAgIGlmICghKG1pbGxpc2Vjb25kID49IDAgJiYgbWlsbGlzZWNvbmQgPD0gOTk5KSkgeworICAg
ICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm1pbGxpc2Vjb25kIGlz
IG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmICgh
KG1pY3Jvc2Vjb25kID49IDAgJiYgbWljcm9zZWNvbmQgPD0gOTk5KSkgeworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm1pY3Jvc2Vjb25kIGlzIG91dCBvZiBy
YW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKG5hbm9zZWNv
bmQgPj0gMCAmJiBuYW5vc2Vjb25kIDw9IDk5OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJuYW5vc2Vjb25kIGlzIG91dCBvZiByYW5nZSJfcyk7Cisg
ICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIHJldHVybiBJU084NjAxOjpQbGFpblRpbWUg
eworICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oaG91ciksCisgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtaW51dGUpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc2Vj
b25kKSwKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1pbGxpc2Vjb25kKSwKKyAgICAg
ICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1pY3Jvc2Vjb25kKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KG5hbm9zZWNvbmQpCisgICAgfTsKK30KKworLy8gQ3JlYXRlVGVtcG9yYWxQ
bGFpblRpbWUgKCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNl
Y29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcyBbICwgbmV3VGFy
Z2V0IF0gKQorLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwtY3JlYXRldGVtcG9yYWxwbGFpblRpbWUKK1RlbXBvcmFsUGxhaW5UaW1lKiBUZW1wb3JhbFBs
YWluVGltZTo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbikKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBwbGFpblRpbWUgPSB0b1BsYWluVGltZShnbG9i
YWxPYmplY3QsIFdURk1vdmUoZHVyYXRpb24pKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgcmV0dXJuIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIHN0
cnVjdHVyZSwgV1RGTW92ZShwbGFpblRpbWUpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtYmFsYW5jZXRpbWUKK3N0YXRpYyBJU084NjAx
OjpEdXJhdGlvbiBiYWxhbmNlVGltZShkb3VibGUgaG91ciwgZG91YmxlIG1pbnV0ZSwgZG91Ymxl
IHNlY29uZCwgZG91YmxlIG1pbGxpc2Vjb25kLCBkb3VibGUgbWljcm9zZWNvbmQsIGRvdWJsZSBu
YW5vc2Vjb25kKQoreworICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXRl
bXBvcmFsL2lzc3Vlcy8xODA0CisgICAgbWludXRlID0gNjAgKiBob3VyICsgbWludXRlOworICAg
IHNlY29uZCA9IDYwICogbWludXRlICsgc2Vjb25kOworICAgIG1pbGxpc2Vjb25kID0gMTAwMCAq
IHNlY29uZCArIG1pbGxpc2Vjb25kOworICAgIG1pY3Jvc2Vjb25kID0gMTAwMCAqIG1pbGxpc2Vj
b25kICsgbWljcm9zZWNvbmQ7CisgICAgbmFub3NlY29uZCA9IDEwMDAgKiBtaWNyb3NlY29uZCAr
IG5hbm9zZWNvbmQ7CisKKyAgICBtaWNyb3NlY29uZCA9IHN0ZDo6dHJ1bmMobmFub3NlY29uZCAv
IDEwMDApOworICAgIG5hbm9zZWNvbmQgPSBzdGQ6OmZtb2QobmFub3NlY29uZCwgMTAwMCk7Cisg
ICAgbWlsbGlzZWNvbmQgPSBzdGQ6OnRydW5jKG1pY3Jvc2Vjb25kIC8gMTAwMCk7CisgICAgbWlj
cm9zZWNvbmQgPSBzdGQ6OmZtb2QobWljcm9zZWNvbmQsIDEwMDApOworICAgIHNlY29uZCA9IHN0
ZDo6dHJ1bmMobWlsbGlzZWNvbmQgLyAxMDAwKTsKKyAgICBtaWxsaXNlY29uZCA9IHN0ZDo6Zm1v
ZChtaWxsaXNlY29uZCwgMTAwMCk7CisgICAgbWludXRlID0gc3RkOjp0cnVuYyhzZWNvbmQgLyA2
MCk7CisgICAgc2Vjb25kID0gc3RkOjpmbW9kKHNlY29uZCwgNjApOworICAgIGhvdXIgPSBzdGQ6
OnRydW5jKG1pbnV0ZSAvIDYwKTsKKyAgICBtaW51dGUgPSBzdGQ6OmZtb2QobWludXRlLCA2MCk7
CisgICAgZG91YmxlIGRheXMgPSBzdGQ6OnRydW5jKGhvdXIgLyAyNCk7CisgICAgaG91ciA9IHN0
ZDo6Zm1vZChob3VyLCAyNCk7CisgICAgcmV0dXJuIElTTzg2MDE6OkR1cmF0aW9uKDAsIDAsIDAs
IGRheXMsIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWxsaXNlY29uZCwgbWljcm9zZWNvbmQsIG5h
bm9zZWNvbmQpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Nl
Yy10ZW1wb3JhbC1yb3VuZHRpbWUKK3N0YXRpYyBJU084NjAxOjpEdXJhdGlvbiByb3VuZFRpbWUo
SVNPODYwMTo6UGxhaW5UaW1lIHBsYWluVGltZSwgZG91YmxlIGluY3JlbWVudCwgVGVtcG9yYWxV
bml0IHVuaXQsIFJvdW5kaW5nTW9kZSByb3VuZGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8ZG91Ymxl
PiBkYXlMZW5ndGhOcykKK3sKKyAgICBhdXRvIGZyYWN0aW9uYWxTZWNvbmQgPSBbXShJU084NjAx
OjpQbGFpblRpbWUgcGxhaW5UaW1lKSAtPiBkb3VibGUgeworICAgICAgICByZXR1cm4gcGxhaW5U
aW1lLnNlY29uZCgpICsgcGxhaW5UaW1lLm1pbGxpc2Vjb25kKCkgKiAxZS0zICsgcGxhaW5UaW1l
Lm1pY3Jvc2Vjb25kKCkgKiAxZS02ICsgcGxhaW5UaW1lLm5hbm9zZWNvbmQoKSAqIDFlLTk7Cisg
ICAgfTsKKworICAgIGRvdWJsZSBxdWFudGl0eSA9IDA7CisgICAgc3dpdGNoICh1bml0KSB7Cisg
ICAgY2FzZSBUZW1wb3JhbFVuaXQ6OkRheTogeworICAgICAgICBkb3VibGUgbGVuZ3RoID0gZGF5
TGVuZ3RoTnMudmFsdWVfb3IoOC42NCAqIDFlKzEzKTsKKyAgICAgICAgcXVhbnRpdHkgPSAoKCgo
cGxhaW5UaW1lLmhvdXIoKSAqIDYwLjAgKyBwbGFpblRpbWUubWludXRlKCkpICogNjAuMCArIHBs
YWluVGltZS5zZWNvbmQoKSkgKiAxMDAwLjAgKyBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSkgKiAx
MDAwLjAgKyBwbGFpblRpbWUubmFub3NlY29uZCgpKSAvIGxlbmd0aDsKKyAgICAgICAgYXV0byBy
ZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5k
aW5nTW9kZSk7CisgICAgICAgIHJldHVybiBJU084NjAxOjpEdXJhdGlvbigwLCAwLCAwLCByZXN1
bHQsIDAsIDAsIDAsIDAsIDAsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6SG91
cjogeworICAgICAgICBxdWFudGl0eSA9IChmcmFjdGlvbmFsU2Vjb25kKHBsYWluVGltZSkgLyA2
MC4wICsgcGxhaW5UaW1lLm1pbnV0ZSgpKSAvIDYwLjAgKyBwbGFpblRpbWUuaG91cigpOworICAg
ICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3Jl
bWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHJlc3VsdCwg
MCwgMCwgMCwgMCwgMCk7CisgICAgfQorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IHsK
KyAgICAgICAgcXVhbnRpdHkgPSBmcmFjdGlvbmFsU2Vjb25kKHBsYWluVGltZSkgLyA2MC4wICsg
cGxhaW5UaW1lLm1pbnV0ZSgpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9J
bmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0
dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHJlc3VsdCwgMCwgMCwgMCwgMCk7Cisg
ICAgfQorICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkg
PSBmcmFjdGlvbmFsU2Vjb25kKHBsYWluVGltZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91
bmROdW1iZXJUb0luY3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOwor
ICAgICAgICByZXR1cm4gYmFsYW5jZVRpbWUocGxhaW5UaW1lLmhvdXIoKSwgcGxhaW5UaW1lLm1p
bnV0ZSgpLCByZXN1bHQsIDAsIDAsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6
TWlsbGlzZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBwbGFpblRpbWUubWlsbGlzZWNvbmQo
KSArIHBsYWluVGltZS5taWNyb3NlY29uZCgpICogMWUtMyArIHBsYWluVGltZS5uYW5vc2Vjb25k
KCkgKiAxZS02OworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQo
cXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFu
Y2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5taW51dGUoKSwgcGxhaW5UaW1lLnNl
Y29uZCgpLCByZXN1bHQsIDAsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlj
cm9zZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBwbGFpblRpbWUubWljcm9zZWNvbmQoKSAr
IHBsYWluVGltZS5uYW5vc2Vjb25kKCkgKiAxZS0zOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJv
dW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsK
KyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5t
aW51dGUoKSwgcGxhaW5UaW1lLnNlY29uZCgpLCBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSwgcmVz
dWx0LCAwKTsKKyAgICB9CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6IHsKKyAg
ICAgICAgcXVhbnRpdHkgPSBwbGFpblRpbWUubmFub3NlY29uZCgpOworICAgICAgICBhdXRvIHJl
c3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRp
bmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBs
YWluVGltZS5taW51dGUoKSwgcGxhaW5UaW1lLnNlY29uZCgpLCBwbGFpblRpbWUubWlsbGlzZWNv
bmQoKSwgcGxhaW5UaW1lLm1pY3Jvc2Vjb25kKCksIHJlc3VsdCk7CisgICAgfQorICAgIGRlZmF1
bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFr
OworICAgIH0KK30KKworSVNPODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjpyb3Vu
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29u
c3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRs
R2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3Jh
bFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFy
LCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6
RGF5IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgaWYgKCFz
bWFsbGVzdCkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IkNhbm5vdCByb3VuZCB3aXRob3V0IGEgc21hbGxlc3RVbml0IG9wdGlvbiJfcyk7CisgICAgICAg
IHJldHVybiB7IH07CisgICAgfQorICAgIFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQgPSBzbWFs
bGVzdC52YWx1ZSgpOworCisgICAgYXV0byByb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5k
aW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGlu
Z01vZGUsCisgICAgICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZs
b29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6
OlRydW5jIH0sIHsgImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0s
CisgICAgICAgICJyb3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3Jc
IiwgXCJ0cnVuY1wiLCBvciBcImhhbGZFeHBhbmRcIiJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhw
YW5kKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBp
bmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9u
cywgbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KHNtYWxsZXN0VW5pdCksIGZhbHNlKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBkdXJhdGlvbiA9IHJv
dW5kVGltZShtX3BsYWluVGltZSwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9k
ZSwgc3RkOjpudWxsb3B0KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvUGxhaW5U
aW1lKGdsb2JhbE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbikpKTsKK30KKworU3RyaW5nIFRlbXBv
cmFsUGxhaW5UaW1lOjp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNP
YmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlv
bnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlm
ICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CisKKyAgICBQcmVjaXNpb25E
YXRhIGRhdGEgPSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gcm91bmRp
bmdNb2RlID0gaW50bE9wdGlvbjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywg
dm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdNb2RlLAorICAgICAgICB7IHsgImNlaWwiX3MsIFJv
dW5kaW5nTW9kZTo6Q2VpbCB9LCB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7
ICJ0cnVuYyJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3Vu
ZGluZ01vZGU6OkhhbGZFeHBhbmQgfSB9LAorICAgICAgICAicm91bmRpbmdNb2RlIG11c3QgYmUg
ZWl0aGVyIFwiY2VpbFwiLCBcImZsb29yXCIsIFwidHJ1bmNcIiwgb3IgXCJoYWxmRXhwYW5kXCIi
X3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICAvLyBObyBuZWVkIHRvIG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUg
Z2l2ZW4gZXhwbGljaXQgZGVmYXVsdHMuCisgICAgaWYgKHN0ZDo6Z2V0PDA+KGRhdGEucHJlY2lz
aW9uKSA9PSBQcmVjaXNpb246OkF1dG8gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9kZTo6
VHJ1bmMpCisgICAgICAgIHJldHVybiB0b1N0cmluZygpOworCisgICAgYXV0byBkdXJhdGlvbiA9
IHJvdW5kVGltZShtX3BsYWluVGltZSwgZGF0YS5pbmNyZW1lbnQsIGRhdGEudW5pdCwgcm91bmRp
bmdNb2RlLCBzdGQ6Om51bGxvcHQpOworICAgIGF1dG8gcGxhaW5UaW1lID0gdG9QbGFpblRpbWUo
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGR1cmF0aW9uKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBJU084NjAxOjp0ZW1wb3JhbFRpbWVUb1N0cmlu
ZyhwbGFpblRpbWUsIGRhdGEucHJlY2lzaW9uKTsKK30KKworCitzdGF0aWMgUHJvcGVydHlOYW1l
IHByb3BlcnR5TmFtZShWTSYgdm0sIHVuc2lnbmVkIGluZGV4KQoreworICAgIEFTU0VSVChpbmRl
eCA8IG51bWJlck9mVGVtcG9yYWxVbml0cyk7CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxUZW1w
b3JhbFVuaXQ+KGluZGV4KSkgeworI2RlZmluZSBKU0NfVEVNUE9SQUxfRFVSQVRJT05fUFJPUEVS
VFlfTkFNRShuYW1lLCBjYXBpdGFsaXplZE5hbWUpIGNhc2UgVGVtcG9yYWxVbml0OjpjYXBpdGFs
aXplZE5hbWU6IHJldHVybiB2bS5wcm9wZXJ0eU5hbWVzLT5uYW1lOworICAgICAgICBKU0NfVEVN
UE9SQUxfVU5JVFMoSlNDX1RFTVBPUkFMX0RVUkFUSU9OX1BST1BFUlRZX05BTUUpCisjdW5kZWYg
SlNDX1RFTVBPUkFMX0RVUkFUSU9OX1BST1BFUlRZX05BTUUKKyAgICB9CisKKyAgICBSRUxFQVNF
X0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQorCitzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gdG9U
ZW1wb3JhbFRpbWVSZWNvcmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3Qq
IHRlbXBvcmFsVGltZUxpa2UpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwor
ICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElTTzg2MDE6
OkR1cmF0aW9uIGR1cmF0aW9uIHsgfTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5k
ZXggPCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHM7ICsraW5kZXgpIHsKKyAgICAgICAg
dW5zaWduZWQgZHVyYXRpb25JbmRleCA9IGluZGV4ICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRl
bXBvcmFsVW5pdDo6SG91cik7CisgICAgICAgIGF1dG8gbmFtZSA9IHByb3BlcnR5TmFtZSh2bSwg
ZHVyYXRpb25JbmRleCk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSB0ZW1wb3JhbFRpbWVMaWtl
LT5nZXQoZ2xvYmFsT2JqZWN0LCBuYW1lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgICAgICAvLyBXZSBhcmUgdGhyb3dpbmcgYW4gZXJyb3IgaGVyZSwg
YnV0IHByb2JhYmx5IHRoaXMgaXMgYSBzcGVjIGJ1Zy4KKyAgICAgICAgLy8gVHJhY2tlZCBpbiBo
dHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC10ZW1wb3JhbC9pc3N1ZXMvMTgwMy4KKyAg
ICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1ha2VTdHJpbmcoJyInLCBTdHJpbmdWaWV3KG5hbWUu
dWlkKCkpLCAiXCIgZmllbGQgaXMgbWlzc2luZyJfcykpOworICAgICAgICAgICAgcmV0dXJuIHsg
fTsKKyAgICAgICAgfQorCisgICAgICAgIGRvdWJsZSBpbnRlZ2VyID0gdmFsdWUudG9JbnRlZ2Vy
T3JJbmZpbml0eShnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoaW50ZWdlcikpIHsKKyAgICAg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxh
aW5UaW1lIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUiX3MpOworICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgfQorICAgICAgICBkdXJhdGlvbltkdXJhdGlvbkluZGV4XSA9IGludGVn
ZXI7CisgICAgfQorICAgIHJldHVybiBkdXJhdGlvbjsKK30KKworc3RhdGljIHN0ZDo6YXJyYXk8
c3RkOjpvcHRpb25hbDxkb3VibGU+LCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHM+IHRv
UGFydGlhbFRpbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRlbXBv
cmFsVGltZUxpa2UpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGJvb2wgaGFzQW55Rmll
bGRzID0gZmFsc2U7CisgICAgc3RkOjphcnJheTxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIG51bWJl
ck9mVGVtcG9yYWxQbGFpblRpbWVVbml0cz4gcGFydGlhbFRpbWUgeyB9OworICAgIGZvciAodW5z
aWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0czsg
KytpbmRleCkgeworICAgICAgICB1bnNpZ25lZCBkdXJhdGlvbkluZGV4ID0gaW5kZXggKyBzdGF0
aWNfY2FzdDx1bnNpZ25lZD4oVGVtcG9yYWxVbml0OjpIb3VyKTsKKyAgICAgICAgYXV0byBuYW1l
ID0gcHJvcGVydHlOYW1lKHZtLCBkdXJhdGlvbkluZGV4KTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1
ZSA9IHRlbXBvcmFsVGltZUxpa2UtPmdldChnbG9iYWxPYmplY3QsIG5hbWUpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIGlmICghdmFsdWUuaXNV
bmRlZmluZWQoKSkgeworICAgICAgICAgICAgaGFzQW55RmllbGRzID0gdHJ1ZTsKKyAgICAgICAg
ICAgIGRvdWJsZSBkb3VibGVWYWx1ZSA9IHZhbHVlLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFs
T2JqZWN0KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Cisg
ICAgICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZG91YmxlVmFsdWUpKSB7CisgICAgICAgICAg
ICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0b1BhcnRpYWxUaW1l
IHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUiX3MpOworICAgICAgICAgICAgICAgIHJldHVybiB7
IH07CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwYXJ0aWFsVGltZVtpbmRleF0gPSBkb3Vi
bGVWYWx1ZTsKKyAgICAgICAgfQorICAgIH0KKyAgICBpZiAoIWhhc0FueUZpZWxkcykgeworICAg
ICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAidG9QYXJ0aWFsVGltZSBy
ZXF1aXJlcyBhdCBsZWFzdCBvbmUgcHJvcGVydHkiX3MpOworICAgICAgICByZXR1cm4geyB9Owor
ICAgIH0KKyAgICByZXR1cm4gcGFydGlhbFRpbWU7Cit9CisKK3N0YXRpYyBJU084NjAxOjpQbGFp
blRpbWUgY29uc3RyYWludFRpbWUoSVNPODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbikKK3sKKyAg
ICBhdXRvIGNvbnN0cmFpblRvUmFuZ2UgPSBbXShkb3VibGUgdmFsdWUsIHVuc2lnbmVkIG1pbmlt
dW0sIHVuc2lnbmVkIG1heGltdW0pIC0+IHVuc2lnbmVkIHsKKyAgICAgICAgaWYgKHN0ZDo6aXNu
YW4odmFsdWUpKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNf
Y2FzdDx1bnNpZ25lZD4oc3RkOjptaW48ZG91YmxlPihzdGQ6Om1heDxkb3VibGU+KHZhbHVlLCBt
aW5pbXVtKSwgbWF4aW11bSkpOworICAgIH07CisgICAgcmV0dXJuIElTTzg2MDE6OlBsYWluVGlt
ZSgKKyAgICAgICAgY29uc3RyYWluVG9SYW5nZShkdXJhdGlvbi5ob3VycygpLCAwLCAyMyksCisg
ICAgICAgIGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRpb24ubWludXRlcygpLCAwLCA1OSksCisgICAg
ICAgIGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRpb24uc2Vjb25kcygpLCAwLCA1OSksCisgICAgICAg
IGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRpb24ubWlsbGlzZWNvbmRzKCksIDAsIDEwMDApLAorICAg
ICAgICBjb25zdHJhaW5Ub1JhbmdlKGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpLCAwLCAxMDAwKSwK
KyAgICAgICAgY29uc3RyYWluVG9SYW5nZShkdXJhdGlvbi5uYW5vc2Vjb25kcygpLCAwLCAxMDAw
KSk7Cit9CisKK3N0YXRpYyBJU084NjAxOjpQbGFpblRpbWUgcmVndWxhdGVUaW1lKEpTR2xvYmFs
T2JqZWN0KiBnbG9iYWxPYmplY3QsIElTTzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRpb24sIFRlbXBv
cmFsT3ZlcmZsb3cgb3ZlcmZsb3cpCit7CisgICAgc3dpdGNoIChvdmVyZmxvdykgeworICAgIGNh
c2UgVGVtcG9yYWxPdmVyZmxvdzo6Q29uc3RyYWluOgorICAgICAgICByZXR1cm4gY29uc3RyYWlu
dFRpbWUoV1RGTW92ZShkdXJhdGlvbikpOworICAgIGNhc2UgVGVtcG9yYWxPdmVyZmxvdzo6UmVq
ZWN0OgorICAgICAgICByZXR1cm4gdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGR1
cmF0aW9uKSk7CisgICAgfQorICAgIHJldHVybiB7IH07Cit9CisKK3N0YXRpYyBKU09iamVjdCog
dG9UZW1wb3JhbENhbGVuZGFyV2l0aElTT0RlZmF1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNWYWx1ZSB0ZW1wb3JhbENhbGVuZGFyTGlrZSkKK3sKKyAgICBpZiAodGVtcG9yYWxD
YWxlbmRhckxpa2UuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIFRlbXBvcmFsQ2FsZW5k
YXI6OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZtKCksIGdsb2JhbE9iamVjdC0+Y2FsZW5kYXJTdHJ1
Y3R1cmUoKSwgaXNvODYwMUNhbGVuZGFySUQoKSk7CisgICAgcmV0dXJuIFRlbXBvcmFsQ2FsZW5k
YXI6OmZyb20oZ2xvYmFsT2JqZWN0LCB0ZW1wb3JhbENhbGVuZGFyTGlrZSk7Cit9CisKK3N0YXRp
YyBKU09iamVjdCogZ2V0VGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBpZiAoaXRlbVZhbHVlLmluaGVyaXRzPFRlbXBvcmFsUGxhaW5UaW1lPih2bSkp
CisgICAgICAgIHJldHVybiBqc0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPihpdGVtVmFsdWUpLT5j
YWxlbmRhcigpOworCisgICAgSlNWYWx1ZSBjYWxlbmRhciA9IGl0ZW1WYWx1ZS5nZXQoZ2xvYmFs
T2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhcik7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvVGVtcG9y
YWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KGdsb2JhbE9iamVjdCwgY2FsZW5kYXIpKTsKK30KKwor
Ly8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG90ZW1w
b3JhbHRpbWUKK1RlbXBvcmFsUGxhaW5UaW1lKiBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSwgc3RkOjpvcHRpb25h
bDxUZW1wb3JhbE92ZXJmbG93PiBvdmVyZmxvd1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBhdXRvIG92ZXJmbG93ID0gb3ZlcmZsb3dWYWx1ZS52YWx1ZV9vcihUZW1wb3JhbE92
ZXJmbG93OjpDb25zdHJhaW4pOworCisgICAgaWYgKGl0ZW1WYWx1ZS5pc09iamVjdCgpKSB7Cisg
ICAgICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxQbGFpblRpbWU+KHZtKSkKKyAg
ICAgICAgICAgIHJldHVybiBqc0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPihpdGVtVmFsdWUpOwor
ICAgICAgICBKU09iamVjdCogY2FsZW5kYXIgPSBnZXRUZW1wb3JhbENhbGVuZGFyV2l0aElTT0Rl
ZmF1bHQoZ2xvYmFsT2JqZWN0LCBpdGVtVmFsdWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworICAgICAgICBKU1N0cmluZyogY2FsZW5kYXJTdHJpbmcgPSBjYWxl
bmRhci0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKyAgICAgICAgU3RyaW5nIGNhbGVuZGFyV1RGU3RyaW5nID0gY2FsZW5k
YXJTdHJpbmctPnZhbHVlKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlmIChjYWxlbmRhcldURlN0cmluZyAhPSAiaXNvODYw
MSJfcykgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJjYWxlbmRhciBpcyBub3QgaXNvODYwMSJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9Owor
ICAgICAgICB9CisgICAgICAgIGF1dG8gZHVyYXRpb24gPSB0b1RlbXBvcmFsVGltZVJlY29yZChn
bG9iYWxPYmplY3QsIGpzQ2FzdDxKU09iamVjdCo+KGl0ZW1WYWx1ZSkpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICBhdXRvIHBsYWluVGltZSA9IHJl
Z3VsYXRlVGltZShnbG9iYWxPYmplY3QsIFdURk1vdmUoZHVyYXRpb24pLCBvdmVyZmxvdyk7Cisg
ICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIHJldHVybiBU
ZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVj
dHVyZSgpLCBXVEZNb3ZlKHBsYWluVGltZSkpOworICAgIH0KKworICAgIGF1dG8gc3RyaW5nID0g
aXRlbVZhbHVlLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gdGltZSA9IElTTzg2MDE6OnBhcnNlVGltZShz
dHJpbmcpOworICAgIGlmICh0aW1lKSB7CisgICAgICAgIGF1dG8gW3BsYWluVGltZSwgdGltZVpv
bmVPcHRpb25hbF0gPSB0aW1lLnZhbHVlKCk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWlu
VGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZN
b3ZlKHBsYWluVGltZSkpOworICAgIH0KKworICAgIGF1dG8gZGF0ZVRpbWUgPSBJU084NjAxOjpw
YXJzZURhdGVUaW1lKHN0cmluZyk7CisgICAgaWYgKGRhdGVUaW1lKSB7CisgICAgICAgIGF1dG8g
W3BsYWluRGF0ZSwgcGxhaW5UaW1lT3B0aW9uYWwsIHRpbWVab25lT3B0aW9uYWxdID0gZGF0ZVRp
bWUudmFsdWUoKTsKKyAgICAgICAgYXV0byBwbGFpblRpbWUgPSBwbGFpblRpbWVPcHRpb25hbC52
YWx1ZV9vcihJU084NjAxOjpQbGFpblRpbWUoKSk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbFBs
YWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBX
VEZNb3ZlKHBsYWluVGltZSkpOworICAgIH0KKworICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiaW52YWxpZCB0aW1lIHN0cmluZyJfcyk7CisgICAgcmV0dXJuIHsgfTsK
K30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwt
Y29tcGFyZXRlbXBvcmFsdGltZQoraW50MzJfdCBUZW1wb3JhbFBsYWluVGltZTo6Y29tcGFyZShU
ZW1wb3JhbFBsYWluVGltZSogcGxhaW5UaW1lMSwgVGVtcG9yYWxQbGFpblRpbWUqIHBsYWluVGlt
ZTIpCit7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHQxID0gcGxhaW5UaW1lMS0+cGxhaW5UaW1l
KCk7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHQyID0gcGxhaW5UaW1lMi0+cGxhaW5UaW1lKCk7
CisgICAgaWYgKHQxLmhvdXIoKSA+IHQyLmhvdXIoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAg
aWYgKHQxLmhvdXIoKSA8IHQyLmhvdXIoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh0
MS5taW51dGUoKSA+IHQyLm1pbnV0ZSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAodDEu
bWludXRlKCkgPCB0Mi5taW51dGUoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh0MS5z
ZWNvbmQoKSA+IHQyLnNlY29uZCgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAodDEuc2Vj
b25kKCkgPCB0Mi5zZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh0MS5taWxs
aXNlY29uZCgpID4gdDIubWlsbGlzZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYg
KHQxLm1pbGxpc2Vjb25kKCkgPCB0Mi5taWxsaXNlY29uZCgpKQorICAgICAgICByZXR1cm4gLTE7
CisgICAgaWYgKHQxLm1pY3Jvc2Vjb25kKCkgPiB0Mi5taWNyb3NlY29uZCgpKQorICAgICAgICBy
ZXR1cm4gMTsKKyAgICBpZiAodDEubWljcm9zZWNvbmQoKSA8IHQyLm1pY3Jvc2Vjb25kKCkpCisg
ICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodDEubmFub3NlY29uZCgpID4gdDIubmFub3NlY29u
ZCgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAodDEubmFub3NlY29uZCgpIDwgdDIubmFu
b3NlY29uZCgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisKKy8vIGh0
dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvbGltaXRlZHRl
bXBvcmFsZHVyYXRpb24KK3N0YXRpYyBJU084NjAxOjpEdXJhdGlvbiB0b0xpbWl0ZWRUZW1wb3Jh
bER1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGVtcG9yYWxE
dXJhdGlvbkxpa2UsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRpc2FsbG93
ZWRGaWVsZHMpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9u
IGR1cmF0aW9uOworICAgIGlmICghdGVtcG9yYWxEdXJhdGlvbkxpa2UuaXNPYmplY3QoKSkgewor
ICAgICAgICBTdHJpbmcgc3RyaW5nID0gdGVtcG9yYWxEdXJhdGlvbkxpa2UudG9XVEZTdHJpbmco
Z2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KyAgICAgICAgYXV0byBkdXJhdGlvbk9wdGlvbmFsID0gSVNPODYwMTo6cGFyc2VEdXJhdGlvbihz
dHJpbmcpOworICAgICAgICBpZiAoIWR1cmF0aW9uT3B0aW9uYWwpIHsKKyAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ291bGQgbm90IHBhcnNlIER1cmF0
aW9uIHN0cmluZyJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAg
ICAgIGR1cmF0aW9uID0gZHVyYXRpb25PcHRpb25hbC52YWx1ZSgpOworICAgIH0gZWxzZSB7Cisg
ICAgICAgIGR1cmF0aW9uID0gVGVtcG9yYWxEdXJhdGlvbjo6dG9EdXJhdGlvblJlY29yZChnbG9i
YWxPYmplY3QsIHRlbXBvcmFsRHVyYXRpb25MaWtlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKyAgICB9CisKKyAgICBpZiAoIUlTTzg2MDE6OmlzVmFsaWREdXJh
dGlvbihkdXJhdGlvbikpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIGFuZCBv
ZiBjb25zaXN0ZW50IHNpZ24iX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAg
IGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZlRlbXBvcmFsVW5pdHM7IGlu
ZGV4KyspIHsKKyAgICAgICAgaWYgKGR1cmF0aW9uW2luZGV4XSkgeworICAgICAgICAgICAgaWYg
KGRpc2FsbG93ZWRGaWVsZHMuc2l6ZSgpICYmIHN0ZDo6ZmluZChkaXNhbGxvd2VkRmllbGRzLmJl
Z2luKCksIGRpc2FsbG93ZWRGaWVsZHMuZW5kKCksIHN0YXRpY19jYXN0PFRlbXBvcmFsVW5pdD4o
aW5kZXgpKSAhPSBkaXNhbGxvd2VkRmllbGRzLmVuZCgpKSB7CisgICAgICAgICAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEdXJhdGlvbiBwcm9wZXJ0aWVzIGlu
Y2x1ZGUgZGlzYWxsb3dlZCBmaWVsZCJfcyk7CisgICAgICAgICAgICAgICAgcmV0dXJuIHsgfTsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBkdXJhdGlvbjsK
K30KKworc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIGFkZFRpbWUoY29uc3QgSVNPODYwMTo6UGxh
aW5UaW1lJiBwbGFpblRpbWUsIGNvbnN0IElTTzg2MDE6OkR1cmF0aW9uJiBkdXJhdGlvbikKK3sK
KyAgICByZXR1cm4gYmFsYW5jZVRpbWUoCisgICAgICAgIHBsYWluVGltZS5ob3VyKCkgKyBkdXJh
dGlvbi5ob3VycygpLAorICAgICAgICBwbGFpblRpbWUubWludXRlKCkgKyBkdXJhdGlvbi5taW51
dGVzKCksCisgICAgICAgIHBsYWluVGltZS5zZWNvbmQoKSArIGR1cmF0aW9uLnNlY29uZHMoKSwK
KyAgICAgICAgcGxhaW5UaW1lLm1pbGxpc2Vjb25kKCkgKyBkdXJhdGlvbi5taWxsaXNlY29uZHMo
KSwKKyAgICAgICAgcGxhaW5UaW1lLm1pY3Jvc2Vjb25kKCkgKyBkdXJhdGlvbi5taWNyb3NlY29u
ZHMoKSwKKyAgICAgICAgcGxhaW5UaW1lLm5hbm9zZWNvbmQoKSArIGR1cmF0aW9uLm5hbm9zZWNv
bmRzKCkpOworfQorCitJU084NjAxOjpQbGFpblRpbWUgVGVtcG9yYWxQbGFpblRpbWU6OmFkZChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRlbXBvcmFsRHVyYXRpb25MaWtl
KSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGR1cmF0aW9uID0gdG9M
aW1pdGVkVGVtcG9yYWxEdXJhdGlvbihnbG9iYWxPYmplY3QsIHRlbXBvcmFsRHVyYXRpb25MaWtl
LCB7IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvUGxhaW5UaW1lKGdsb2JhbE9iamVjdCwgYWRkVGltZSht
X3BsYWluVGltZSwgZHVyYXRpb24pKSk7Cit9CisKK0lTTzg2MDE6OlBsYWluVGltZSBUZW1wb3Jh
bFBsYWluVGltZTo6c3VidHJhY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB0ZW1wb3JhbER1cmF0aW9uTGlrZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byBkdXJhdGlvbiA9IHRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24oZ2xvYmFsT2JqZWN0
LCB0ZW1wb3JhbER1cmF0aW9uTGlrZSwgeyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0b1BsYWluVGltZShn
bG9iYWxPYmplY3QsIGFkZFRpbWUobV9wbGFpblRpbWUsIC1kdXJhdGlvbikpKTsKK30KKworSVNP
ODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjp3aXRoKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0ZW1wb3JhbFRpbWVMaWtlLCBKU1ZhbHVlIG9wdGlvbnNW
YWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHRlbXBvcmFsVGlt
ZUxpa2UtPmluaGVyaXRzPFRlbXBvcmFsUGxhaW5UaW1lPih2bSkpIHsKKyAgICAgICAgdGhyb3dU
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBtdXN0IG5vdCBj
YXJyeSBjYWxlbmRhciJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgSlNW
YWx1ZSBjYWxlbmRhclByb3BlcnR5ID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVj
dCwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsZW5kYXIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgaWYgKCFjYWxlbmRhclByb3BlcnR5LmlzVW5kZWZpbmVkKCkpIHsK
KyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9i
amVjdCBtdXN0IG5vdCBjYXJyeSBjYWxlbmRhciJfcyk7CisgICAgICAgIHJldHVybiB7IH07Cisg
ICAgfQorCisgICAgSlNWYWx1ZSB0aW1lWm9uZVByb3BlcnR5ID0gdGVtcG9yYWxUaW1lTGlrZS0+
Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+dGltZVpvbmUpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgaWYgKCF0aW1lWm9uZVByb3BlcnR5Lmlz
VW5kZWZpbmVkKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgImFyZ3VtZW50IG9iamVjdCBtdXN0IG5vdCBjYXJyeSB0aW1lIHpvbmUiX3MpOworICAgICAg
ICByZXR1cm4geyB9OworICAgIH0KKworICAgIGF1dG8gW2hvdXJPcHRpb25hbCwgbWludXRlT3B0
aW9uYWwsIHNlY29uZE9wdGlvbmFsLCBtaWxsaXNlY29uZE9wdGlvbmFsLCBtaWNyb3NlY29uZE9w
dGlvbmFsLCBuYW5vc2Vjb25kT3B0aW9uYWxdID0gdG9QYXJ0aWFsVGltZShnbG9iYWxPYmplY3Qs
IHRlbXBvcmFsVGltZUxpa2UpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9i
amVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgVGVtcG9yYWxPdmVyZmxvdyBvdmVyZmxvdyA9IHRvVGVtcG9yYWxPdmVyZmxvdyhn
bG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiB7IH07CisgICAgZHVyYXRpb24u
c2V0SG91cnMoaG91ck9wdGlvbmFsLnZhbHVlX29yKGhvdXIoKSkpOworICAgIGR1cmF0aW9uLnNl
dE1pbnV0ZXMobWludXRlT3B0aW9uYWwudmFsdWVfb3IobWludXRlKCkpKTsKKyAgICBkdXJhdGlv
bi5zZXRTZWNvbmRzKHNlY29uZE9wdGlvbmFsLnZhbHVlX29yKHNlY29uZCgpKSk7CisgICAgZHVy
YXRpb24uc2V0TWlsbGlzZWNvbmRzKG1pbGxpc2Vjb25kT3B0aW9uYWwudmFsdWVfb3IobWlsbGlz
ZWNvbmQoKSkpOworICAgIGR1cmF0aW9uLnNldE1pY3Jvc2Vjb25kcyhtaWNyb3NlY29uZE9wdGlv
bmFsLnZhbHVlX29yKG1pY3Jvc2Vjb25kKCkpKTsKKyAgICBkdXJhdGlvbi5zZXROYW5vc2Vjb25k
cyhuYW5vc2Vjb25kT3B0aW9uYWwudmFsdWVfb3IobmFub3NlY29uZCgpKSk7CisKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlZ3VsYXRlVGltZShnbG9iYWxPYmplY3QsIFdURk1vdmUo
ZHVyYXRpb24pLCBvdmVyZmxvdykpOworfQorCitzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gZGlm
ZmVyZW5jZVRpbWUoSVNPODYwMTo6UGxhaW5UaW1lIHRpbWUxLCBJU084NjAxOjpQbGFpblRpbWUg
dGltZTIpCit7CisgICAgZG91YmxlIGhvdXJzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMi5o
b3VyKCkpIC0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMS5ob3VyKCkpOworICAgIGRvdWJsZSBt
aW51dGVzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMi5taW51dGUoKSkgLSBzdGF0aWNfY2Fz
dDxkb3VibGU+KHRpbWUxLm1pbnV0ZSgpKTsKKyAgICBkb3VibGUgc2Vjb25kcyA9IHN0YXRpY19j
YXN0PGRvdWJsZT4odGltZTIuc2Vjb25kKCkpIC0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMS5z
ZWNvbmQoKSk7CisgICAgZG91YmxlIG1pbGxpc2Vjb25kcyA9IHN0YXRpY19jYXN0PGRvdWJsZT4o
dGltZTIubWlsbGlzZWNvbmQoKSkgLSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUxLm1pbGxpc2Vj
b25kKCkpOworICAgIGRvdWJsZSBtaWNyb3NlY29uZHMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRp
bWUyLm1pY3Jvc2Vjb25kKCkpIC0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMS5taWNyb3NlY29u
ZCgpKTsKKyAgICBkb3VibGUgbmFub3NlY29uZHMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUy
Lm5hbm9zZWNvbmQoKSkgLSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUxLm5hbm9zZWNvbmQoKSk7
CisgICAgcmV0dXJuIGJhbGFuY2VUaW1lKGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNl
Y29uZHMsIG1pY3Jvc2Vjb25kcywgbmFub3NlY29uZHMpOworfQorCitzdGF0aWMgc3RkOjp0dXBs
ZTxUZW1wb3JhbFVuaXQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdNb2RlLCBkb3VibGU+IGV4dHJh
Y3REaWZmZXJlbmNlT3B0aW9ucyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IG9wdGlvbnNWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9w
dGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gc21hbGxl
c3QgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9y
YWxVbml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRl
bXBvcmFsVW5pdDo6RGF5IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisgICAgVGVtcG9yYWxVbml0IHNtYWxsZXN0VW5pdCA9IHNtYWxsZXN0LnZhbHVlX29yKFRlbXBv
cmFsVW5pdDo6TmFub3NlY29uZCk7CisKKyAgICBhdXRvIGxhcmdlc3QgPSB0ZW1wb3JhbExhcmdl
c3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVuaXQ6OlllYXIsIFRlbXBv
cmFsVW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9yYWxVbml0OjpEYXkgfSwg
VGVtcG9yYWxVbml0OjpIb3VyKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0VW5pdCA9IGxhcmdlc3QudmFsdWVfb3IoVGVtcG9y
YWxVbml0OjpIb3VyKTsKKworICAgIGlmIChzbWFsbGVzdFVuaXQgPCBsYXJnZXN0VW5pdCkgewor
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5p
dCBtdXN0IGJlIHNtYWxsZXIgdGhhbiBsYXJnZXN0VW5pdCJfcyk7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgfQorCisgICAgYXV0byByb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5n
TW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01v
ZGUsCisgICAgICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29y
Il9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRy
dW5jIH0sIHsgImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCisg
ICAgICAgICJyb3VuZGluZ01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwg
XCJ0cnVuY1wiLCBvciBcImhhbGZFeHBhbmRcIiJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gaW5jcmVtZW50
ID0gdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIG1heGlt
dW1Sb3VuZGluZ0luY3JlbWVudChzbWFsbGVzdFVuaXQpLCBmYWxzZSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiB7IHNtYWxsZXN0VW5pdCwgbGFy
Z2VzdFVuaXQsIHJvdW5kaW5nTW9kZSwgaW5jcmVtZW50IH07Cit9CisKK0lTTzg2MDE6OkR1cmF0
aW9uIFRlbXBvcmFsUGxhaW5UaW1lOjp1bnRpbChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBUZW1wb3JhbFBsYWluVGltZSogb3RoZXIsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIFtzbWFsbGVzdFVuaXQsIGxhcmdlc3RV
bml0LCByb3VuZGluZ01vZGUsIGluY3JlbWVudF0gPSBleHRyYWN0RGlmZmVyZW5jZU9wdGlvbnMo
Z2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IGRpZmZlcmVuY2VUaW1lKHBsYWluVGltZSgp
LCBvdGhlci0+cGxhaW5UaW1lKCkpOworICAgIHJlc3VsdC5zZXRZZWFycygwKTsKKyAgICByZXN1
bHQuc2V0TW9udGhzKDApOworICAgIHJlc3VsdC5zZXRXZWVrcygwKTsKKyAgICByZXN1bHQuc2V0
RGF5cygwKTsKKyAgICBUZW1wb3JhbER1cmF0aW9uOjpyb3VuZChyZXN1bHQsIGluY3JlbWVudCwg
c21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUpOworICAgIFRlbXBvcmFsRHVyYXRpb246OmJhbGFu
Y2UocmVzdWx0LCBsYXJnZXN0VW5pdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSVNPODYw
MTo6RHVyYXRpb24gVGVtcG9yYWxQbGFpblRpbWU6OnNpbmNlKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIFRlbXBvcmFsUGxhaW5UaW1lKiBvdGhlciwgSlNWYWx1ZSBvcHRpb25zVmFsdWUp
IGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gW3NtYWxsZXN0VW5pdCwg
bGFyZ2VzdFVuaXQsIHJvdW5kaW5nTW9kZSwgaW5jcmVtZW50XSA9IGV4dHJhY3REaWZmZXJlbmNl
T3B0aW9ucyhnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gcmVzdWx0ID0gZGlmZmVyZW5jZVRpbWUob3Ro
ZXItPnBsYWluVGltZSgpLCBwbGFpblRpbWUoKSk7CisgICAgcmVzdWx0ID0gLXJlc3VsdDsKKyAg
ICByZXN1bHQuc2V0WWVhcnMoMCk7CisgICAgcmVzdWx0LnNldE1vbnRocygwKTsKKyAgICByZXN1
bHQuc2V0V2Vla3MoMCk7CisgICAgcmVzdWx0LnNldERheXMoMCk7CisgICAgVGVtcG9yYWxEdXJh
dGlvbjo6cm91bmQocmVzdWx0LCBpbmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91bmRpbmdNb2Rl
KTsKKyAgICByZXN1bHQgPSAtcmVzdWx0OworICAgIHJlc3VsdC5zZXREYXlzKDApOworICAgIFRl
bXBvcmFsRHVyYXRpb246OmJhbGFuY2UocmVzdWx0LCBsYXJnZXN0VW5pdCk7CisgICAgcmV0dXJu
IHJlc3VsdDsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kOTk3MDAwZDhl
MDhkMjg0NmVmMmRjMDM2NWE5OTEzNDFmN2RjM2JmCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaApAQCAtMCwwICsxLDkw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJU084NjAxLmgiCisjaW5jbHVkZSAiTGF6eVByb3BlcnR5
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgorCituYW1lc3BhY2UgSlNDIHsKKwor
Y2xhc3MgVGVtcG9yYWxQbGFpblRpbWUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisKKyAgICB0ZW1w
bGF0ZTx0eXBlbmFtZSBDZWxsVHlwZSwgU3Vic3BhY2VBY2Nlc3MgbW9kZT4KKyAgICBzdGF0aWMg
SXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIHJldHVybiB2
bS50ZW1wb3JhbFBsYWluVGltZVNwYWNlPG1vZGU+KCk7CisgICAgfQorCisgICAgc3RhdGljIFRl
bXBvcmFsUGxhaW5UaW1lKiBjcmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpQbGFpblRp
bWUmJik7CisgICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1lKiB0cnlDcmVhdGVJZlZhbGlkKEpT
R2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKiwgSVNPODYwMTo6RHVyYXRpb24mJik7CisgICAgc3Rh
dGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1Zh
bHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluVGlt
ZSogZnJvbShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUsIHN0ZDo6b3B0aW9uYWw8VGVtcG9yYWxP
dmVyZmxvdz4pOworICAgIHN0YXRpYyBpbnQzMl90IGNvbXBhcmUoVGVtcG9yYWxQbGFpblRpbWUq
LCBUZW1wb3JhbFBsYWluVGltZSopOworCisgICAgVGVtcG9yYWxDYWxlbmRhciogY2FsZW5kYXIo
KSB7IHJldHVybiBtX2NhbGVuZGFyLmdldCh0aGlzKTsgfQorICAgIElTTzg2MDE6OlBsYWluVGlt
ZSBwbGFpblRpbWUoKSBjb25zdCB7IHJldHVybiBtX3BsYWluVGltZTsgfQorCisjZGVmaW5lIEpT
Q19ERUZJTkVfVEVNUE9SQUxfUExBSU5fVElNRV9GSUVMRChuYW1lLCBjYXBpdGFsaXplZE5hbWUp
IFwKKyAgICB1bnNpZ25lZCBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGFpblRpbWUubmFtZSgp
OyB9CisgICAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVfVU5JVFMoSlNDX0RFRklORV9URU1QT1JB
TF9QTEFJTl9USU1FX0ZJRUxEKTsKKyN1bmRlZiBKU0NfREVGSU5FX1RFTVBPUkFMX1BMQUlOX1RJ
TUVfRklFTEQKKworICAgIElTTzg2MDE6OlBsYWluVGltZSB3aXRoKEpTR2xvYmFsT2JqZWN0Kiwg
SlNPYmplY3QqIHRlbXBvcmFsVGltZUxpa2UsIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAg
SVNPODYwMTo6UGxhaW5UaW1lIGFkZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpIGNvbnN0Owor
ICAgIElTTzg2MDE6OlBsYWluVGltZSBzdWJ0cmFjdChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUp
IGNvbnN0OworICAgIElTTzg2MDE6OlBsYWluVGltZSByb3VuZChKU0dsb2JhbE9iamVjdCosIEpT
VmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgU3RyaW5nIHRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0
KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoc3RkOjp0dXBs
ZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24gPSB7IFByZWNpc2lvbjo6QXV0bywgMCB9
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIElTTzg2MDE6OnRlbXBvcmFsVGltZVRvU3Ry
aW5nKG1fcGxhaW5UaW1lLCBwcmVjaXNpb24pOworICAgIH0KKworICAgIElTTzg2MDE6OkR1cmF0
aW9uIHVudGlsKEpTR2xvYmFsT2JqZWN0KiwgVGVtcG9yYWxQbGFpblRpbWUqLCBKU1ZhbHVlIG9w
dGlvbnMpIGNvbnN0OworICAgIElTTzg2MDE6OkR1cmF0aW9uIHNpbmNlKEpTR2xvYmFsT2JqZWN0
KiwgVGVtcG9yYWxQbGFpblRpbWUqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworCisgICAgREVD
TEFSRV9WSVNJVF9DSElMRFJFTjsKKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbFBsYWluVGltZShW
TSYsIFN0cnVjdHVyZSosIElTTzg2MDE6OlBsYWluVGltZSYmKTsKKyAgICB2b2lkIGZpbmlzaENy
ZWF0aW9uKFZNJik7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorICAg
IHN0YXRpYyBzdGQ6Om9wdGlvbmFsPElTTzg2MDE6OlBsYWluVGltZT4gcGFyc2UoU3RyaW5nUGFy
c2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYpOworICAgIHN0YXRpYyBJU084NjAxOjpQbGFpblRp
bWUgZnJvbU9iamVjdChKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CisKKyAgICBUZW1wb3Jh
bFVuaXQgbGFyZ2VzdFN1YnBsYWluVGltZSgpIGNvbnN0OworCisgICAgSVNPODYwMTo6UGxhaW5U
aW1lIG1fcGxhaW5UaW1lOworICAgIExhenlQcm9wZXJ0eTxUZW1wb3JhbFBsYWluVGltZSwgVGVt
cG9yYWxDYWxlbmRhcj4gbV9jYWxlbmRhcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVD
b25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZjQ2OTA5ODY5NTIyZmQxODE4ZGNj
YjVlZGQ4YWM0ZDBkM2UxZmUyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKQEAgLTAsMCArMSwx
NDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ci5oIgorCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5U
aW1lLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKKworbmFtZXNw
YWNlIEpTQyB7CisKK1NUQVRJQ19BU1NFUlRfSVNfVFJJVklBTExZX0RFU1RSVUNUSUJMRShUZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKTsKKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNGcm9tKTsKK3N0YXRpYyBKU0Nf
REVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jQ29t
cGFyZSk7CisKK30KKworI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IubHV0
LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxQbGFpblRp
bWVDb25zdHJ1Y3Rvcjo6c19pbmZvID0geyAiRnVuY3Rpb24iLCAmQmFzZTo6c19pbmZvLCAmdGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvclRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RB
QkxFKFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaAorQGJlZ2luIHRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3JUYWJsZQorICBmcm9tICAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lQ29u
c3RydWN0b3JGdW5jRnJvbSAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGNvbXBh
cmUgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNDb21wYXJlICAgICAg
ICAgIERvbnRFbnVtfEZ1bmN0aW9uIDIKK0BlbmQKKyovCisKK1RlbXBvcmFsUGxhaW5UaW1lQ29u
c3RydWN0b3IqIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogcGxhaW5UaW1l
UHJvdG90eXBlKQoreworICAgIGF1dG8qIGNvbnN0cnVjdG9yID0gbmV3IChOb3ROdWxsLCBhbGxv
Y2F0ZUNlbGw8VGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcj4odm0uaGVhcCkpIFRlbXBvcmFs
UGxhaW5UaW1lQ29uc3RydWN0b3Iodm0sIHN0cnVjdHVyZSk7CisgICAgY29uc3RydWN0b3ItPmZp
bmlzaENyZWF0aW9uKHZtLCBwbGFpblRpbWVQcm90b3R5cGUpOworICAgIHJldHVybiBjb25zdHJ1
Y3RvcjsKK30KKworU3RydWN0dXJlKiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVh
dGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhJbnRlcm5hbEZ1bmN0aW9uVHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihj
YWxsVGVtcG9yYWxQbGFpblRpbWUpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
Y29uc3RydWN0VGVtcG9yYWxQbGFpblRpbWUpOworCitUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVj
dG9yOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUpCisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUsIGNhbGxUZW1wb3JhbFBsYWluVGltZSwg
Y29uc3RydWN0VGVtcG9yYWxQbGFpblRpbWUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxQbGFpblRp
bWVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZSogcGxhaW5UaW1lUHJvdG90eXBlKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9u
KHZtLCAwLCAiUGxhaW5UaW1lIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVj
dHVyZVRyYW5zaXRpb24pOworICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHBsYWluVGltZVByb3RvdHlwZSwgUHJvcGVydHlBdHRy
aWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0
eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHBsYWluVGltZVByb3RvdHlwZS0+cHV0RGlyZWN0
V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlz
LCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7Cit9
CisKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG5ld1RhcmdldCA9IGFzT2JqZWN0
KGNhbGxGcmFtZS0+bmV3VGFyZ2V0KCkpOworICAgIFN0cnVjdHVyZSogc3RydWN0dXJlID0gSlND
X0dFVF9ERVJJVkVEX1NUUlVDVFVSRSh2bSwgcGxhaW5UaW1lU3RydWN0dXJlLCBuZXdUYXJnZXQs
IGNhbGxGcmFtZS0+anNDYWxsZWUoKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uIHsgfTsKKyAgICBhdXRvIGNv
dW50ID0gc3RkOjptaW48c2l6ZV90PihjYWxsRnJhbWUtPmFyZ3VtZW50Q291bnQoKSwgbnVtYmVy
T2ZUZW1wb3JhbFBsYWluVGltZVVuaXRzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwg
Y291bnQ7IGkrKykgeworICAgICAgICB1bnNpZ25lZCBkdXJhdGlvbkluZGV4ID0gaSArIHN0YXRp
Y19jYXN0PHVuc2lnbmVkPihUZW1wb3JhbFVuaXQ6OkhvdXIpOworICAgICAgICBkdXJhdGlvbltk
dXJhdGlvbkluZGV4XSA9IGNhbGxGcmFtZS0+dW5jaGVja2VkQXJndW1lbnQoaSkudG9JbnRlZ2Vy
T3JJbmZpbml0eShnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUoZHVyYXRpb25bZHVyYXRpb25J
bmRleF0pKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1SYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUgcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSJf
cyk7CisgICAgfQorICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2Rl
KFRlbXBvcmFsUGxhaW5UaW1lOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgc3RydWN0
dXJlLCBXVEZNb3ZlKGR1cmF0aW9uKSkpKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KGNhbGxUZW1wb3JhbFBsYWluVGltZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSopKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHRocm93Q29uc3RydWN0b3JDYW5ub3RCZUNhbGxlZEFzRnVuY3Rpb25UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlBsYWluVGltZSIpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLmZyb20KK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yRnVuY0Zyb20s
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9w
dGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgVGVtcG9yYWxPdmVyZmxvdyBv
dmVyZmxvdyA9IHRvVGVtcG9yYWxPdmVyZmxvdyhnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBKU1ZhbHVlIGl0ZW1WYWx1
ZSA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisKKyAgICBpZiAoaXRlbVZhbHVlLmluaGVyaXRz
PFRlbXBvcmFsUGxhaW5UaW1lPih2bSkpCisgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29w
ZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCksIGpzQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KGl0
ZW1WYWx1ZSktPnBsYWluVGltZSgpKSkpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oZ2xvYmFsT2JqZWN0LCBp
dGVtVmFsdWUsIG92ZXJmbG93KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwt
dGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUuY29tcGFyZQorSlNDX0RFRklORV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jQ29tcGFyZSwgKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgYXV0byogb25lID0gVGVtcG9yYWxQbGFpblRpbWU6OmZyb20o
Z2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51bGxvcHQpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvKiB0d28gPSBUZW1w
b3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSks
IHN0ZDo6bnVsbG9wdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIoVGVtcG9yYWxQbGFpblRpbWU6OmNv
bXBhcmUob25lLCB0d28pKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25z
dHJ1Y3Rvci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjkyYTkzNjVlMTUwZDUzOTg2NWFmNWVmMzIzMTYxY2ViZGMx
ZjA1ZjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmgKQEAgLTAsMCArMSw1MCBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisj
aW5jbHVkZSAiSW50ZXJuYWxGdW5jdGlvbi5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3Mg
VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lQ29u
c3RydWN0b3IgZmluYWwgOiBwdWJsaWMgSW50ZXJuYWxGdW5jdGlvbiB7CitwdWJsaWM6CisgICAg
dXNpbmcgQmFzZSA9IEludGVybmFsRnVuY3Rpb247CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJv
cGVydHlUYWJsZTsKKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKiBj
cmVhdGUoVk0mLCBTdHJ1Y3R1cmUqLCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSopOworICAg
IHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2JqZWN0Kiwg
SlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxQ
bGFpblRpbWVDb25zdHJ1Y3RvcihWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSopOworfTsKK1NUQVRJQ19BU1NF
UlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IsIElu
dGVybmFsRnVuY3Rpb24pOworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi44YzYwZjc0NWYyYTcwMmQ3ODA1M2NiMjNjMmMwNmY0ZTY2ODg4MTdm
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCkBAIC0wLDAgKzEsMzg5IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisg
KiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICog
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwg
RVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFks
IFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNM
VURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgiCisKKyNpbmNsdWRlICJKU0NJ
bmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKKworbmFtZXNwYWNlIEpT
QyB7CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlRnVuY0FkZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNTdWJ0cmFjdCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNXaXRoKTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVu
Y1VudGlsKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1NpbmNlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1JvdW5kKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0VxdWFscyk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZUZ1bmNHZXRJU09GaWVsZHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9TdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9KU09OKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
RnVuY1RvTG9jYWxlU3RyaW5nKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1ZhbHVlT2YpOworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
R2V0dGVyTWludXRlKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyU2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNU
T01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWlsbGlzZWNvbmQpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVHZXR0ZXJNaWNyb3NlY29uZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck5hbm9zZWNvbmQpOworc3RhdGljIEpTQ19E
RUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJDYWxl
bmRhcik7CisKK30KKworI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5o
IgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlOjpzX2luZm8gPSB7ICJUZW1wb3JhbC5QbGFpblRpbWUiLCAmQmFzZTo6c19pbmZv
LCAmcGxhaW5UaW1lUHJvdG90eXBlVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUo
VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUpIH07CisKKy8qIFNvdXJjZSBmb3IgVGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGUubHV0LmgKK0BiZWdpbiBwbGFpblRpbWVQcm90b3R5cGVUYWJsZQor
ICBhZGQgICAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0FkZCAgICAg
ICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHN1YnRyYWN0ICAgICAgICAgdGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGVGdW5jU3VidHJhY3QgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgd2l0aCAgICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNX
aXRoICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB1bnRpbCAgICAgICAgICAg
IHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1VudGlsICAgICAgICAgICAgICBEb250RW51
bXxGdW5jdGlvbiAxCisgIHNpbmNlICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVGdW5jU2luY2UgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgcm91bmQgICAg
ICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNSb3VuZCAgICAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQorICBlcXVhbHMgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlRnVuY0VxdWFscyAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGdl
dElTT0ZpZWxkcyAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jR2V0SVNPRmllbGRz
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9TdHJpbmcgICAgICAgICB0ZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZUZ1bmNUb1N0cmluZyAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MAorICB0b0pTT04gICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvSlNP
TiAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHRvTG9jYWxlU3RyaW5nICAgdGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDAKKyAgdmFsdWVPZiAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1
bmNWYWx1ZU9mICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICBob3VyICAgICAgICAg
ICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVySG91ciAgICAgICAgICAgICBEb250
RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBtaW51dGUgICAgICAgICAgIHRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWludXRlICAgICAgICAgICBEb250RW51bXxSZWFkT25s
eXxDdXN0b21BY2Nlc3NvcgorICBzZWNvbmQgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlR2V0dGVyU2Vjb25kICAgICAgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nl
c3NvcgorICBtaWxsaXNlY29uZCAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVy
TWlsbGlzZWNvbmQgICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBtaWNy
b3NlY29uZCAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQg
ICAgICBEb250RW51bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBuYW5vc2Vjb25kICAgICAg
IHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTmFub3NlY29uZCAgICAgICBEb250RW51
bXxSZWFkT25seXxDdXN0b21BY2Nlc3NvcgorICBjYWxlbmRhciAgICAgICAgIHRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIgICAgICAgICBEb250RW51bXxSZWFkT25seXxD
dXN0b21BY2Nlc3NvcgorQGVuZAorKi8KKworVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUqIFRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpjcmVhdGUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKK3sKKyAgICBhdXRvKiBwcm90b3R5
cGUgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZT4odm0uaGVhcCkpIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKHZtLCBzdHJ1Y3R1cmUpOwor
ICAgIHByb3RvdHlwZS0+ZmluaXNoQ3JlYXRpb24odm0sIGdsb2JhbE9iamVjdCk7CisgICAgcmV0
dXJuIHByb3RvdHlwZTsKK30KKworU3RydWN0dXJlKiBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZtLCBn
bG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJlRmxh
Z3MpLCBpbmZvKCkpOworfQorCitUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6VGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSkKK3sKK30KKwordm9pZCBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZTo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBKU0dsb2JhbE9iamVjdCopCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7Cisg
ICAgSlNDX1RPX1NUUklOR19UQUdfV0lUSE9VVF9UUkFOU0lUSU9OKCk7Cit9CisKKy8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90
b3R5cGUuYWRkCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGVGdW5jQWRkLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUg
PSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5h
ZGQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgYXV0
byByZXN1bHQgPSBwbGFpblRpbWUtPmFkZChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIGdsb2JhbE9i
amVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSkpOworfQorCisvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUu
cHJvdG90eXBlLnN1YnRyYWN0CitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGVGdW5jU3VidHJhY3QsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1
dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRp
bWUucHJvdG90eXBlLnN1YnRyYWN0IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5U
aW1lIl9zKTsKKworICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT5zdWJ0cmFjdChnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5U
aW1lOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCksIFdURk1v
dmUocmVzdWx0KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLndpdGgKK0pTQ19ERUZJTkVfSE9TVF9G
VU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNXaXRoLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxh
aW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1l
KQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
VGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS53aXRoIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIEpTVmFsdWUgdGVtcG9yYWxUaW1lTGlrZSAgPSBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAgIGlmICghdGVtcG9yYWxUaW1lTGlrZS5pc09iamVj
dCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiRmlyc3QgYXJndW1lbnQgdG8gVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS53aXRoIG11
c3QgYmUgYW4gb2JqZWN0Il9zKTsKKworICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT53aXRo
KGdsb2JhbE9iamVjdCwgYXNPYmplY3QodGVtcG9yYWxUaW1lTGlrZSksIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIGdsb2Jh
bE9iamVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCksIFdURk1vdmUocmVzdWx0KSkpOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRp
bWUucHJvdG90eXBlLnVudGlsCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGVGdW5jVW50aWwsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8q
IHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUu
cHJvdG90eXBlLnVudGlsIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9z
KTsKKworICAgIGF1dG8qIG90aGVyID0gVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oZ2xvYmFsT2Jq
ZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51bGxvcHQpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHBsYWluVGltZS0+
dW50aWwoZ2xvYmFsT2JqZWN0LCBvdGhlciwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIFdU
Rk1vdmUocmVzdWx0KSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpKSk7Cit9CisK
Ky8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWlu
dGltZS5wcm90b3R5cGUuc2luY2UKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZUZ1bmNTaW5jZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0
byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxs
RnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGlt
ZS5wcm90b3R5cGUuc2luY2UgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUi
X3MpOworCisgICAgYXV0byogb3RoZXIgPSBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxP
YmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHN0ZDo6bnVsbG9wdCk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1l
LT5zaW5jZShnbG9iYWxPYmplY3QsIG90aGVyLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwg
V1RGTW92ZShyZXN1bHQpLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCkpKTsKK30K
KworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxh
aW50aW1lLnByb3RvdHlwZS5yb3VuZAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlRnVuY1JvdW5kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNh
bGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1
cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5U
aW1lLnByb3RvdHlwZS5yb3VuZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGlt
ZSJfcyk7CisKKyAgICBhdXRvIG9wdGlvbnMgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworICAg
IGlmIChvcHRpb25zLmlzVW5kZWZpbmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnJv
dW5kIHJlcXVpcmVzIGFuIG9wdGlvbnMgYXJndW1lbnQiX3MpOworCisgICAgYXV0byByb3VuZGVk
ID0gcGxhaW5UaW1lLT5yb3VuZChnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRl
bXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3RydWN0
dXJlKCksIFdURk1vdmUocm91bmRlZCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS5lcXVhbHMKK0pT
Q19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNFcXVh
bHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1p
Y0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7Cisg
ICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmVxdWFscyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBhdXRvKiBvdGhl
ciA9IFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1
bWVudCgwKSwgc3RkOjpudWxsb3B0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4ocGxhaW5UaW1lLT5w
bGFpblRpbWUoKSA9PSBvdGhlci0+cGxhaW5UaW1lKCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS5n
ZXRpc29maWVsZHMKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZUZ1bmNHZXRJU09GaWVsZHMsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBD
YWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8q
IHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZy
YW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUu
cHJvdG90eXBlLmVxdWFscyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJf
cyk7CisKKyAgICBKU09iamVjdCogZmllbGRzID0gY29uc3RydWN0RW1wdHlPYmplY3QoZ2xvYmFs
T2JqZWN0KTsKKyAgICBmaWVsZHMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y2Fs
ZW5kYXIsIHBsYWluVGltZS0+Y2FsZW5kYXIoKSk7CisgICAgZmllbGRzLT5wdXREaXJlY3Qodm0s
IHZtLnByb3BlcnR5TmFtZXMtPmlzb0hvdXIsIGpzTnVtYmVyKHBsYWluVGltZS0+aG91cigpKSk7
CisgICAgZmllbGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzb01pY3Jvc2Vj
b25kLCBqc051bWJlcihwbGFpblRpbWUtPm1pY3Jvc2Vjb25kKCkpKTsKKyAgICBmaWVsZHMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNvTWlsbGlzZWNvbmQsIGpzTnVtYmVyKHBs
YWluVGltZS0+bWlsbGlzZWNvbmQoKSkpOworICAgIGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5pc29NaW51dGUsIGpzTnVtYmVyKHBsYWluVGltZS0+bWludXRlKCkpKTsK
KyAgICBmaWVsZHMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNvTmFub3NlY29u
ZCwganNOdW1iZXIocGxhaW5UaW1lLT5uYW5vc2Vjb25kKCkpKTsKKyAgICBmaWVsZHMtPnB1dERp
cmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNvU2Vjb25kLCBqc051bWJlcihwbGFpblRpbWUt
PnNlY29uZCgpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShmaWVsZHMpOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRp
bWUucHJvdG90eXBlLnRvc3RyaW5nCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGVGdW5jVG9TdHJpbmcsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwg
Y2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFp
blRpbWUucHJvdG90eXBlLnRvU3RyaW5nIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxh
aW5UaW1lIl9zKTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5j
b2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKGdsb2JhbE9iamVjdCwgY2FsbEZy
YW1lLT5hcmd1bWVudCgwKSkpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUudG9qc29uCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9KU09OLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b0pTT04gY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1N0cmluZyh2bSwgcGxhaW5UaW1lLT50b1N0cmluZygpKSk7Cit9CisKKy8vIGh0
dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5w
cm90b3R5cGUudG9sb2NhbGVzdHJpbmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGlt
ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLlBsYWluVGltZS5wcm90b3R5cGUudG9Mb2NhbGVTdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShq
c1N0cmluZyh2bSwgcGxhaW5UaW1lLT50b1N0cmluZygpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUu
dmFsdWVvZgorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlRnVuY1ZhbHVlT2YsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUq
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudmFsdWVP
ZiBtdXN0IG5vdCBiZSBjYWxsZWQuIFRvIGNvbXBhcmUgUGxhaW5UaW1lIHZhbHVlcywgdXNlIFRl
bXBvcmFsLlBsYWluVGltZS5jb21wYXJlIl9zKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VU
VEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVySG91ciwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWlj
Q2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmhvdXIgY2Fs
bGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPmhvdXIoKSkpOworfQorCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWlu
VGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS5taW51dGUgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3Mp
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm1pbnV0
ZSgpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZUdldHRlclNlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29k
ZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGlt
ZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRpbWUp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVt
YmVyKHBsYWluVGltZS0+c2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVS
KHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTWlsbGlzZWNvbmQsIChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFt
ZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUg
PSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHlu
YW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1
ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWxs
aXNlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+bWlsbGlzZWNvbmQo
KSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGVHZXR0ZXJNaWNyb3NlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVu
Y29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWlu
VGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRp
bWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1pY3Jvc2Vjb25kIGNhbGxlZCBvbiB2YWx1
ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIocGxhaW5UaW1lLT5taWNyb3NlY29uZCgpKSk7Cit9CisKK0pTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck5hbm9zZWNvbmQs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUs
IFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWlu
VGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVj
b2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS5uYW5vc2Vjb25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1l
Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5u
YW5vc2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlR2V0dGVyQ2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICgh
cGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5jYWxlbmRhciBjYWxsZWQgb24g
dmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKHBsYWluVGltZS0+Y2FsZW5kYXIoKSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmVhMjI5YTdiZDUxOTRiYjQ2MTZmYTQ3MmMy
ZmFkNjE0ZDNhZTU4ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25j
ZQorCisjaW5jbHVkZSAiSlNPYmplY3QuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NsYXNzIFRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
eworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0OworICAgIHN0YXRp
YyBjb25zdGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFn
cyB8IEhhc1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDZWxs
VHlwZSwgU3Vic3BhY2VBY2Nlc3M+CisgICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZv
cihWTSYgdm0pCisgICAgeworICAgICAgICBTVEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFS
QUJMRShUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSwgQmFzZSk7CisgICAgICAgIHJldHVybiAm
dm0ucGxhaW5PYmplY3RTcGFjZTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGUqIGNyZWF0ZShWTSYsIEpTR2xvYmFsT2JqZWN0KiwgU3RydWN0dXJlKik7Cisg
ICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBUZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZShWTSYsIFN0cnVjdHVyZSopOworICAgIHZvaWQgZmluaXNoQ3Jl
YXRpb24oVk0mLCBKU0dsb2JhbE9iamVjdCopOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25l
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3Bw
CmluZGV4IDk3ODRjM2QxNzQ5OTY5MTUwYjNlZDZlNjg2ZDVjYTg5NjllMmIyZDIuLjc2NTliMDU4
MmNjZDI5NWU4ZDFiYTVmMzhlZWJkNDE0NzE4NjE3MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwCkBAIC01NywxNyArNTcsNiBA
QCBUZW1wb3JhbFRpbWVab25lOjpUZW1wb3JhbFRpbWVab25lKFZNJiB2bSwgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUsIFRpbWVab25lIHRpbWVabwogewogfQogCi0vLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3N1cC1pc3ZhbGlkdGltZXpvbmVuYW1lCi1zdGQ6Om9wdGlvbmFsPFRp
bWVab25lSUQ+IFRlbXBvcmFsVGltZVpvbmU6OmlkRm9yVGltZVpvbmVOYW1lKFN0cmluZ1ZpZXcg
c3RyaW5nKQotewotICAgIGNvbnN0IGF1dG8mIHRpbWVab25lcyA9IGludGxBdmFpbGFibGVUaW1l
Wm9uZXMoKTsKLSAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB0aW1lWm9uZXMu
c2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlDYXNlKHRp
bWVab25lc1tpbmRleF0sIHN0cmluZykpCi0gICAgICAgICAgICByZXR1cm4gaW5kZXg7Ci0gICAg
fQotICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci19Ci0KIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBhcnNldGVtcG9yYWx0aW1lWm9uZXN0cmluZwog
c3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUZW1wb3JhbFRpbWVab25lU3RyaW5n
KFN0cmluZ1ZpZXcpCiB7CkBAIC0xMTAsNyArOTksNyBAQCBKU09iamVjdCogVGVtcG9yYWxUaW1l
Wm9uZTo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRpbWVab25l
TAogICAgIGlmICh1dGNPZmZzZXQpCiAgICAgICAgIHJldHVybiBUZW1wb3JhbFRpbWVab25lOjpj
cmVhdGVGcm9tVVRDT2Zmc2V0KHZtLCBnbG9iYWxPYmplY3QtPnRpbWVab25lU3RydWN0dXJlKCks
IHV0Y09mZnNldC52YWx1ZSgpKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRl
bnRpZmllciA9IGlkRm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9w
dGlvbmFsPFRpbWVab25lSUQ+IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFt
ZSh0aW1lWm9uZVN0cmluZyk7CiAgICAgaWYgKGlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBU
ZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tSUQodm0sIGdsb2JhbE9iamVjdC0+dGltZVpvbmVT
dHJ1Y3R1cmUoKSwgaWRlbnRpZmllci52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oCmluZGV4IGJjMjgxNTNiN2ZkMjViYjc2
NWUyNTA2ZmQ5NmZhNzZiNWU1MTBhZGIuLmU1NzllYTNhNjNmNjIxZmRmNDMyNjExMzI5NzQ5YmYz
YzQ3NDZhNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsVGltZVpvbmUuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bFRpbWVab25lLmgKQEAgLTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJJU084NjAxLmgiCiAjaW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0
LmgiCiAjaW5jbHVkZSA8d3RmL1ZhcmlhbnQuaD4KQEAgLTQ3LDEwICs0OCw5IEBAIGNsYXNzIFRl
bXBvcmFsVGltZVpvbmUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBE
RUNMQVJFX0lORk87CiAKLSAgICB1c2luZyBUaW1lWm9uZSA9IFZhcmlhbnQ8VGltZVpvbmVJRCwg
aW50NjRfdD47Ci0gICAgVGltZVpvbmUgdGltZVpvbmUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVa
b25lOyB9CisgICAgdXNpbmcgVGltZVpvbmUgPSBJU084NjAxOjpUaW1lWm9uZTsKIAotICAgIHN0
YXRpYyBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkRm9yVGltZVpvbmVOYW1lKFN0cmluZ1Zp
ZXcpOworICAgIFRpbWVab25lIHRpbWVab25lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lWm9uZTsg
fQogCiAgICAgc3RhdGljIEpTT2JqZWN0KiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGlt
ZVpvbmVDb25zdHJ1Y3Rvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCmluZGV4IDk5MzM2NWFiMzMyZjhmZmFkODc1ODgw
MDA4MTBjZDMwZWRkYTYxZDcuLjZkMjNlOGYwNTlkYzc5YmNmYTI5ZDljNjVhMDVlZWU4M2IzYTVj
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGlt
ZVpvbmVDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcApAQCAtNzQsNiArNzQsNyBAQCB2b2lkIFRl
bXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3Jh
bFRpbWVab25lUHJvdG90eQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiVGlt
ZVpvbmUiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlv
bik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMt
PnByb3RvdHlwZSwgdGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJp
YnV0ZTo6UmVhZE9ubHkpOworICAgIHRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUtPnB1dERpcmVj
dFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhp
cywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwog
fQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxUaW1lWm9uZSwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAg
LTkyLDcgKzkzLDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFs
VGltZVpvbmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBpZiAodXRjT2Zmc2V0
KQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsVGltZVpvbmU6OmNyZWF0
ZUZyb21VVENPZmZzZXQodm0sIHN0cnVjdHVyZSwgdXRjT2Zmc2V0LnZhbHVlKCkpKTsKIAotICAg
IHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IFRlbXBvcmFsVGltZVpvbmU6
OmlkRm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRp
bWVab25lSUQ+IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9u
ZVN0cmluZyk7CiAgICAgaWYgKCFpZGVudGlmaWVyKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgbmVlZHMgdG8gYmUgVVRDIG9mZnNldCBz
dHJpbmcgb3IgVGltZVpvbmUgaWRlbnRpZmllciJfcyk7CiAgICAgICAgIHJldHVybiB7IH07CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKaW5kZXggMDJmMTg5N2IwZjM5MTg1NjBiNTA1
MzE5ZDZlNDYxYmRiNWQ3MTBkZC4uMTVkZGIyYWZhZTUyMzc3N2FlOTA2NmIzMWIwZDcxMDU0NmI3
ZDg3MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTY0LDYgKzE2NCw3
IEBACiAjaW5jbHVkZSAiU3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRh
ci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBs
YWluVGltZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0
UnVubmVyVXRpbHMuaCIKICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKQEAgLTE1ODgsNiAr
MTU4OSw4IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xT
cGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0
KCksIFN5bWJvbE9iamVjdCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh0ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxs
VHlwZS5nZXQoKSwgSlNUZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCiBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBUZW1wb3JhbENhbGVuZGFyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgVGVtcG9yYWxEdXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh0ZW1wb3JhbFBsYWluVGltZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBU
ZW1wb3JhbFBsYWluVGltZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xP
Vyh0ZW1wb3JhbFRpbWVab25lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFs
VGltZVpvbmUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhB
cnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQ4QXJyYXkpCiBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50OENsYW1wZWRBcnJheSkKQEAgLTE2MjIsNyAr
MTYyNSw2IEBAIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVs
YXRpdmVUaW1lRm9ybWF0U3BhY2UsIGludGxSZWxhdGl2CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlLCBpbnRsU2VnbWVudEl0
ZXJhdG9ySGVhcENlbGxUeXBlLmdldCgpLCBJbnRsU2VnbWVudEl0ZXJhdG9yKQogRFlOQU1JQ19J
U09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50ZXJTcGFjZSwgaW50bFNl
Z21lbnRlckhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21lbnRlcikKIERZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgaW50bFNlZ21lbnRz
SGVhcENlbGxUeXBlLmdldCgpLCBJbnRsU2VnbWVudHMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBl
LmdldCgpLCBUZW1wb3JhbER1cmF0aW9uKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2Us
IGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVG9XYXNtSUNDYWxsZWUpCiBEWU5BTUlDX0lTT19T
VUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2Vi
QXNzZW1ibHlDb2RlQmxvY2tIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlDb2RlQmxv
Y2spIC8vIEhhc2g6MHg5YWQ5OTVjZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVk0uaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXgg
MWU3MjVjZTM3NDg3M2UwMDdkMWIwM2Y1NDk1NmM1MDIzMDRjNmIzNy4uN2E1OGIyNzllNjcwYTg0
MDNkMWYzOTQxMjM1N2Q1ZTc3MTEzZjU3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVk0uaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5o
CkBAIC0xOTUsNiArMTk1LDcgQEAgY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2Nr
OwogY2xhc3MgVmlydHVhbFJlZ2lzdGVyOwogY2xhc3MgVk1FbnRyeVNjb3BlOwogY2xhc3MgVGVt
cG9yYWxDYWxlbmRhcjsKK2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lOwogY2xhc3MgVGVtcG9yYWxU
aW1lWm9uZTsKIGNsYXNzIFRvcExldmVsR2xvYmFsT2JqZWN0U2NvcGU7CiBjbGFzcyBUeXBlUHJv
ZmlsZXI7CkBAIC01OTUsNiArNTk2LDggQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJl
ZkNvdW50ZWQ8Vk0+LCBwdWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHN5bWJvbE9iamVjdFNwYWNlKQogICAgIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9y
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENh
bGVuZGFyU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1w
b3JhbER1cmF0aW9uU3BhY2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Uih0ZW1wb3JhbFBsYWluVGltZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklO
RV9NRU1CRVIodGVtcG9yYWxUaW1lWm9uZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodWludDhBcnJheVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIodWludDhDbGFtcGVkQXJyYXlTcGFjZSkKQEAgLTYyMCw3ICs2MjMsNiBA
QCBjbGFzcyBWTSA6IHB1YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3Vi
bHlMaW5rZWRMaXN0Tm9kZTxWTT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIoaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRlclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21lbnRzU3BhY2UpCi0gICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3BhY2UpCiAjaWYgRU5BQkxFKFdF
QkFTU0VNQkxZKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNUb1dh
c21JQ0NhbGxlZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
d2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3Rl
eHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdQYXJz
aW5nQnVmZmVyLmgKaW5kZXggZjBhODRmNzU3ZTNlZmU3YjBhN2RhY2FlZjA1NmZiYjhhYjk0MjU0
Ny4uNTJhOWJhZGJlMDczY2M1NjA0NWU0NmIzZTk5ZGIwMjc3YWFiMWUzMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmgKKysrIGIvU291cmNlL1dU
Ri93dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmgKQEAgLTYxLDkgKzYxLDkgQEAgY2xhc3Mg
U3RyaW5nUGFyc2luZ0J1ZmZlciBmaW5hbCB7CiAKICAgICBjb25zdGV4cHIgdW5zaWduZWQgbGVu
Z3RoUmVtYWluaW5nKCkgY29uc3QgeyByZXR1cm4gbV9lbmQgLSBtX3Bvc2l0aW9uOyB9CiAKLSAg
ICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXdPZkNoYXJhY3RlcnNSZW1haW5pbmcoKSB7IHJldHVybiB7
IG1fcG9zaXRpb24sIGxlbmd0aFJlbWFpbmluZygpIH07IH0KKyAgICBTdHJpbmdWaWV3IHN0cmlu
Z1ZpZXdPZkNoYXJhY3RlcnNSZW1haW5pbmcoKSBjb25zdCB7IHJldHVybiB7IG1fcG9zaXRpb24s
IGxlbmd0aFJlbWFpbmluZygpIH07IH0KIAotICAgIENoYXJhY3RlclR5cGUgb3BlcmF0b3JbXSh1
bnNpZ25lZCBpKQorICAgIENoYXJhY3RlclR5cGUgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25z
dAogICAgIHsKICAgICAgICAgQVNTRVJUKGkgPCBsZW5ndGhSZW1haW5pbmcoKSk7CiAgICAgICAg
IHJldHVybiBtX3Bvc2l0aW9uW2ldOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9K
U1Rlc3RzL0NoYW5nZUxvZwppbmRleCAzMjIzNjZhODY4MzQ1NmYwYTRiMWRhNzhmOWI5MjYxN2Vi
MDAxZTI2Li4zOTQ4ZTI3ZjdjZjBiYTRkMDQwMTkxYzFlYzM4OTg2OTgwODkzMmYxIDEwMDY0NAot
LS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI1IEBACisyMDIxLTA5LTA1ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisK
KyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLlBsYWluVGltZQorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODkyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtY2Fs
ZW5kYXIuanM6CisgICAgICAgICogc3RyZXNzL3RlbXBvcmFsLWR1cmF0aW9uLmpzOgorICAgICAg
ICAqIHN0cmVzcy90ZW1wb3JhbC1wbGFpbnRpbWUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxk
QmUpOgorICAgICAgICAoc2hvdWxkVGhyb3cpOgorICAgICAgICAoVGVtcG9yYWwuUGxhaW5UaW1l
LmZyb20pOgorICAgICAgICAobGV0LnRpbWUuVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20uc2hvdWxk
QmUpOgorICAgICAgICAobGV0LnRleHQub2YuZmFpbHVyZXMuc2hvdWxkVGhyb3cpOgorICAgICAg
ICAoc2hvdWxkQmUuVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20pOgorICAgICAgICAobmV3LlRlbXBv
cmFsLlBsYWluVGltZS52YWx1ZU9mKToKKyAgICAgICAgKHNob3VsZEJlLlN0cmluZy50aW1lLnVu
dGlsLlRlbXBvcmFsLlBsYWluVGltZS5mcm9tKToKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwt
dGltZXpvbmUuanM6CisgICAgICAgIChsZXQudGV4dC5vZi5mYWlsdXJlcy5zaG91bGRUaHJvdyk6
IERlbGV0ZWQuCisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKwogMjAyMS0wOS0wMyAg
WXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIE1ha2Ug
RW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGUgY2xvYmJlcml6aW5nIHJ1bGUgcHJlY2lz
ZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtY2FsZW5kYXIuanMgYi9KU1Rl
c3RzL3N0cmVzcy90ZW1wb3JhbC1jYWxlbmRhci5qcwppbmRleCBlZjBhYzExMWE1YjhiNzNjM2Ew
MTc1ZGFhNzc5MzZjMDg5YWZjZjQ0Li4zNTA5NzFjZTNjYTBjZDEzOTUxOTY5ODg0YmQ0NWIxNmIx
OWNiMzlkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1jYWxlbmRhci5qcwor
KysgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1jYWxlbmRhci5qcwpAQCAtMTgsNiArMTgsMTMg
QEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CiAgICAg
ICAgIHNob3VsZEJlKFN0cmluZyhlcnJvciksIG1lc3NhZ2UpOwogfQogCitzaG91bGRCZShUZW1w
b3JhbC5DYWxlbmRhciBpbnN0YW5jZW9mIEZ1bmN0aW9uLCB0cnVlKTsKK3Nob3VsZEJlKFRlbXBv
cmFsLkNhbGVuZGFyLmxlbmd0aCwgMCk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKFRlbXBvcmFsLkNhbGVuZGFyLCAncHJvdG90eXBlJykud3JpdGFibGUsIGZhbHNl
KTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuQ2Fs
ZW5kYXIsICdwcm90b3R5cGUnKS5lbnVtZXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLkNhbGVuZGFyLCAncHJvdG90eXBlJyku
Y29uZmlndXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShUZW1wb3JhbC5DYWxlbmRhci5wcm90b3R5
cGUuY29uc3RydWN0b3IsIFRlbXBvcmFsLkNhbGVuZGFyKTsKKwogewogICAgIGxldCBjYWxlbmRh
ciA9IG5ldyBUZW1wb3JhbC5DYWxlbmRhcigiaXNvODYwMSIpOwogICAgIHNob3VsZEJlKGNhbGVu
ZGFyLmlkLCBgaXNvODYwMWApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwt
ZHVyYXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1kdXJhdGlvbi5qcwppbmRleCBm
NjUyMjcwYTA4MjhlZjRmOTlmOTRiNGMzNjViYjdjOGVjODEzODk3Li5mMjc5NzgxZmFjNjVjNzlk
OTBhNzdkZTI0MmFjMWMwZmNiMDA5NjJiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy90ZW1w
b3JhbC1kdXJhdGlvbi5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1kdXJhdGlvbi5q
cwpAQCAtMjcsNiArMjcsNyBAQCBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUp
IHsKIHNob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuRHVy
YXRpb24sICdwcm90b3R5cGUnKS5lbnVtZXJhYmxlLCBmYWxzZSk7CiBzaG91bGRCZShPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLkR1cmF0aW9uLCAncHJvdG90eXBlJyku
Y29uZmlndXJhYmxlLCBmYWxzZSk7CiBzaG91bGRUaHJvdygoKSA9PiBUZW1wb3JhbC5EdXJhdGlv
bigpLCBUeXBlRXJyb3IpOworc2hvdWxkQmUoVGVtcG9yYWwuRHVyYXRpb24ucHJvdG90eXBlLmNv
bnN0cnVjdG9yLCBUZW1wb3JhbC5EdXJhdGlvbik7CiAKIHNob3VsZEJlKG5ldyBUZW1wb3JhbC5E
dXJhdGlvbigpIGluc3RhbmNlb2YgVGVtcG9yYWwuRHVyYXRpb24sIHRydWUpOwogewpkaWZmIC0t
Z2l0IGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtcGxhaW50aW1lLmpzIGIvSlNUZXN0cy9zdHJl
c3MvdGVtcG9yYWwtcGxhaW50aW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjE3YWQ2YTcwMTFjMmVhYTQ1OGIw
ZjZkY2M5NmJmYzE1Yzc2NjYzNTYKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL3N0cmVzcy90
ZW1wb3JhbC1wbGFpbnRpbWUuanMKQEAgLTAsMCArMSwyODggQEAKKy8vQCByZXF1aXJlT3B0aW9u
cygiLS11c2VUZW1wb3JhbD0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFsLCBleHBlY3Rl
ZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBuZXcgRXJy
b3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9CisKK2Z1bmN0
aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAgIGxldCBlcnJv
cjsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICBlcnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2VvZiBlcnJvclR5
cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JUeXBlLm5hbWV9
IWApOworICAgIGlmIChtZXNzYWdlICE9PSB1bmRlZmluZWQpCisgICAgICAgIHNob3VsZEJlKFN0
cmluZyhlcnJvciksIG1lc3NhZ2UpOworfQorCitzaG91bGRCZShUZW1wb3JhbC5QbGFpblRpbWUg
aW5zdGFuY2VvZiBGdW5jdGlvbiwgdHJ1ZSk7CitzaG91bGRCZShUZW1wb3JhbC5QbGFpblRpbWUu
bGVuZ3RoLCAwKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVt
cG9yYWwuUGxhaW5UaW1lLCAncHJvdG90eXBlJykud3JpdGFibGUsIGZhbHNlKTsKK3Nob3VsZEJl
KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuUGxhaW5UaW1lLCAncHJv
dG90eXBlJykuZW51bWVyYWJsZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3Bl
cnR5RGVzY3JpcHRvcihUZW1wb3JhbC5QbGFpblRpbWUsICdwcm90b3R5cGUnKS5jb25maWd1cmFi
bGUsIGZhbHNlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuY29uc3Ry
dWN0b3IsIFRlbXBvcmFsLlBsYWluVGltZSk7CisKK3sKKyAgICBsZXQgdGltZSA9IG5ldyBUZW1w
b3JhbC5QbGFpblRpbWUoMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7CisgICAgc2hvdWxkQmUoU3Ry
aW5nKHRpbWUpLCBgMDA6MDE6MDIuMDAzMDA0MDA1YCk7CisgICAgc2hvdWxkQmUodGltZS5ob3Vy
LCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgMSk7CisgICAgc2hvdWxkQmUodGltZS5z
ZWNvbmQsIDIpOworICAgIHNob3VsZEJlKHRpbWUubWlsbGlzZWNvbmQsIDMpOworICAgIHNob3Vs
ZEJlKHRpbWUubWljcm9zZWNvbmQsIDQpOworICAgIHNob3VsZEJlKHRpbWUubmFub3NlY29uZCwg
NSk7Cit9CisKK3sKKyAgICBsZXQgdGltZSA9IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwg
MCwgMCwgMCwgMCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBgMDA6MDA6MDBgKTsKKyAg
ICBzaG91bGRCZSh0aW1lLmhvdXIsIDApOworICAgIHNob3VsZEJlKHRpbWUubWludXRlLCAwKTsK
KyAgICBzaG91bGRCZSh0aW1lLnNlY29uZCwgMCk7CisgICAgc2hvdWxkQmUodGltZS5taWxsaXNl
Y29uZCwgMCk7CisgICAgc2hvdWxkQmUodGltZS5taWNyb3NlY29uZCwgMCk7CisgICAgc2hvdWxk
QmUodGltZS5uYW5vc2Vjb25kLCAwKTsKK30KKworeworICAgIGxldCB0aW1lID0gbmV3IFRlbXBv
cmFsLlBsYWluVGltZSgyMywgNTksIDU5LCA5OTksIDk5OSwgOTk5KTsKKyAgICBzaG91bGRCZShT
dHJpbmcodGltZSksIGAyMzo1OTo1OS45OTk5OTk5OTlgKTsKKyAgICBzaG91bGRCZSh0aW1lLmhv
dXIsIDIzKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgNTkpOworICAgIHNob3VsZEJlKHRp
bWUuc2Vjb25kLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwgOTk5KTsKKyAg
ICBzaG91bGRCZSh0aW1lLm1pY3Jvc2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJlKHRpbWUubmFu
b3NlY29uZCwgOTk5KTsKK30KKworeworICAgIGxldCB0aW1lID0gbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgyMywgNTksIDU5LCA5OTksIDk5OSwgOTk5KTsKKyAgICBzaG91bGRCZShTdHJpbmcodGlt
ZSksIGAyMzo1OTo1OS45OTk5OTk5OTlgKTsKKyAgICBzaG91bGRCZSh0aW1lLmhvdXIsIDIzKTsK
KyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgNTkpOworICAgIHNob3VsZEJlKHRpbWUuc2Vjb25k
LCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwgOTk5KTsKKyAgICBzaG91bGRC
ZSh0aW1lLm1pY3Jvc2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJlKHRpbWUubmFub3NlY29uZCwg
OTk5KTsKK30KKworeworICAgIC8vIFdlIGFjY2VwdCA2MCBzZWNvbmRzLCBidXQgaW50ZXJwcmV0
IGl0IGFzIDU5IHNlY29uZHMuCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBv
cmFsLyNzZWMtdGVtcG9yYWwtcGFyc2Vpc29kYXRldGltZSBzdGVwIDEzCisgICAgbGV0IHRpbWUg
PSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgiMjM6NTk6NjAuOTk5OTk5OTk5Iik7CisgICAgc2hv
dWxkQmUoU3RyaW5nKHRpbWUpLCBgMjM6NTk6NTkuOTk5OTk5OTk5YCk7CisgICAgc2hvdWxkQmUo
dGltZS5ob3VyLCAyMyk7CisgICAgc2hvdWxkQmUodGltZS5taW51dGUsIDU5KTsKKyAgICBzaG91
bGRCZSh0aW1lLnNlY29uZCwgNTkpOworICAgIHNob3VsZEJlKHRpbWUubWlsbGlzZWNvbmQsIDk5
OSk7CisgICAgc2hvdWxkQmUodGltZS5taWNyb3NlY29uZCwgOTk5KTsKKyAgICBzaG91bGRCZSh0
aW1lLm5hbm9zZWNvbmQsIDk5OSk7Cit9CisKK3sKKyAgICAvLyBXZSBhY2NlcHQgNjAgc2Vjb25k
cywgYnV0IGludGVycHJldCBpdCBhcyA1OSBzZWNvbmRzLgorICAgIC8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBhcnNlaXNvZGF0ZXRpbWUgc3RlcCAx
MworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oIjIwMjEtMDktMDRUMjM6
MTQ6MjYuMTAwMjAwMzAwIik7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBgMjM6MTQ6MjYu
MTAwMjAwM2ApOworICAgIHNob3VsZEJlKHRpbWUuaG91ciwgMjMpOworICAgIHNob3VsZEJlKHRp
bWUubWludXRlLCAxNCk7CisgICAgc2hvdWxkQmUodGltZS5zZWNvbmQsIDI2KTsKKyAgICBzaG91
bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCAxMDApOworICAgIHNob3VsZEJlKHRpbWUubWljcm9zZWNv
bmQsIDIwMCk7CisgICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCAzMDApOworfQorCitzaG91
bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAzOjI0OjMwJykpLCBgMDM6MjQ6
MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0w
N1QwMzoyNDozMCcpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxh
aW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzBaJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3Vs
ZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCsw
MTowMFtFdXJvcGUvQnJ1c3NlbHNdJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZFRocm93KCgpID0+
IHsKKyAgICBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCswMTow
MFtVTktOT1dOXScpOworfSwgUmFuZ2VFcnJvcik7Cit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3Jh
bC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtFdXJvcGUvQnJ1c3Nl
bHNdJykKKyAgICBzaG91bGRCZSh0aW1lID09PSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh0aW1l
KSwgZmFsc2UpOworfQoreworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20o
eworICAgICAgaG91cjogMTksCisgICAgICBtaW51dGU6IDM5LAorICAgICAgc2Vjb25kOiA5LAor
ICAgICAgbWlsbGlzZWNvbmQ6IDY4LAorICAgICAgbWljcm9zZWNvbmQ6IDM0NiwKKyAgICAgIG5h
bm9zZWNvbmQ6IDIwNQorICAgIH0pOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lKSwgYDE5OjM5
OjA5LjA2ODM0NjIwNWApOworCisgICAgLy8gVGhpcyBpcyBzcGVjIGJ1Zy4gQ3VycmVudGx5IHRo
aXMgdGhyb3dzIGFuIGVycm9yLiBCdXQgcG9zc2libHkgdGhpcyBzaG91bGQgbm90IHRocm93IGFu
IGVycm9yLgorICAgIC8vIFRyYWNrZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9z
YWwtdGVtcG9yYWwvaXNzdWVzLzE4MDMuCisgICAgc2hvdWxkVGhyb3coKCkgPT4geworICAgICAg
ICBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh7IGhvdXI6IDE5LCBtaW51dGU6IDM5LCBzZWNvbmQ6
IDkgfSk7CisgICAgfSwgVHlwZUVycm9yKTsKK30KK3sKKyAgICAvLyBEaWZmZXJlbnQgb3ZlcmZs
b3cgbW9kZXMKKyAgICBzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oeyBo
b3VyOiAxNSwgbWludXRlOiA2MCwgc2Vjb25kOiAwLCBtaWxsaXNlY29uZDogMCwgbWljcm9zZWNv
bmQ6IDAsIG5hbm9zZWNvbmQ6IDAgfSwgeyBvdmVyZmxvdzogJ2NvbnN0cmFpbicgfSkpLCBgMTU6
NTk6MDBgKTsKKyAgICBzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oeyBo
b3VyOiAxNSwgbWludXRlOiAtMSwgc2Vjb25kOiAwLCBtaWxsaXNlY29uZDogMCwgbWljcm9zZWNv
bmQ6IDAsIG5hbm9zZWNvbmQ6IDAgfSwgeyBvdmVyZmxvdzogJ2NvbnN0cmFpbicgfSkpLCBgMTU6
MDA6MDBgKTsKK30KK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBUZW1wb3JhbC5QbGFpblRpbWUu
ZnJvbSh7IGhvdXI6IDE1LCBtaW51dGU6IDYwLCBzZWNvbmQ6IDAsIG1pbGxpc2Vjb25kOiAwLCBt
aWNyb3NlY29uZDogMCwgbmFub3NlY29uZDogMCB9LCB7IG92ZXJmbG93OiAncmVqZWN0JyB9KTsK
K30sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geworICAgIFRlbXBvcmFsLlBsYWlu
VGltZS5mcm9tKHsgaG91cjogMTUsIG1pbnV0ZTogLTEsIHNlY29uZDogMCwgbWlsbGlzZWNvbmQ6
IDAsIG1pY3Jvc2Vjb25kOiAwLCBuYW5vc2Vjb25kOiAwIH0sIHsgb3ZlcmZsb3c6ICdyZWplY3Qn
IH0pOworfSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFs
LlBsYWluVGltZSgtMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcg
VGVtcG9yYWwuUGxhaW5UaW1lKDI1KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMjQpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRo
cm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgzMCk7IH0sIFJhbmdlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKEluZmluaXR5KTsgfSwg
UmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUo
LUluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRl
bXBvcmFsLlBsYWluVGltZSgwLCAtMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDYwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgNjEpOyB9LCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCA3Nyk7
IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5U
aW1lKDAsIDEwMCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVt
cG9yYWwuUGxhaW5UaW1lKDAsIEluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJv
dygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgLUluZmluaXR5KTsgfSwgUmFuZ2VF
cnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAw
LCAtMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwu
UGxhaW5UaW1lKDAsIDAsIDYwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7
IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgNjEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3Vs
ZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCA3Nyk7IH0sIFJhbmdl
RXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAs
IDEwMCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwu
UGxhaW5UaW1lKDAsIDAsIEluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygo
KSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgLUluZmluaXR5KTsgfSwgUmFuZ2VF
cnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAw
LCAwLCAtMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9y
YWwuUGxhaW5UaW1lKDAsIDAsIDAsIDEwMDApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAxMDAxKTsgfSwgUmFuZ2VF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwg
MCwgNTAwMDApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBv
cmFsLlBsYWluVGltZSgwLCAwLCAwLCA5OTk5OTk5OTk5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgSW5maW5pdHkp
OyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgwLCAwLCAwLCAtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKworc2hvdWxkVGhyb3co
KCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIC0xKTsgfSwgUmFuZ2VF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwg
MCwgMCwgMTAwMCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVt
cG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDEwMDEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3Vs
ZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCA1MDAwMCk7
IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5U
aW1lKDAsIDAsIDAsIDAsIDk5OTk5OTk5OTkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCBJbmZpbml0eSk7IH0s
IFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1l
KDAsIDAsIDAsIDAsIC1JbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworCitzaG91bGRUaHJvdygo
KSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgLTEpOyB9LCBSYW5n
ZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAw
LCAwLCAwLCAwLCAxMDAwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5l
dyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgMTAwMSk7IH0sIFJhbmdlRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAs
IDAsIDUwMDAwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1w
b3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgOTk5OTk5OTk5OSk7IH0sIFJhbmdlRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAs
IDAsIEluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBU
ZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgLUluZmluaXR5KTsgfSwgUmFuZ2VFcnJv
cik7CisKK2xldCBmYWlsdXJlcyA9IFsKKyAgICAiIiwKKyAgICAiMjM6NTk6NjEuOTk5OTk5OTk5
IiwKK107CisKK2ZvciAobGV0IHRleHQgb2YgZmFpbHVyZXMpIHsKKyAgICBzaG91bGRUaHJvdygo
KSA9PiB7CisgICAgICAgIFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHRleHQpOworICAgIH0sIFJh
bmdlRXJyb3IpOworfQorCit7CisgICAgbGV0IG9uZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9t
KCcwMzoyNCcpOworICAgIGxldCB0d28gPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDE6MjQn
KTsKKyAgICBsZXQgdGhyZWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDE6MjQ6MDUnKTsK
KyAgICBsZXQgc29ydGVkID0gW29uZSwgdHdvLCB0aHJlZV0uc29ydChUZW1wb3JhbC5QbGFpblRp
bWUuY29tcGFyZSk7CisgICAgc2hvdWxkQmUoc29ydGVkLmpvaW4oJyAnKSwgYDAxOjI0OjAwIDAx
OjI0OjA1IDAzOjI0OjAwYCk7Cit9CisKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRp
bWUuZnJvbSgiMjA6MzQiKS5jYWxlbmRhciksIGBpc284NjAxYCk7CitzaG91bGRCZShUZW1wb3Jh
bC5QbGFpblRpbWUuZnJvbSgiMjA6MzQiKS5jYWxlbmRhciBpbnN0YW5jZW9mIFRlbXBvcmFsLkNh
bGVuZGFyLCB0cnVlKTsKK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9t
KCIyMDozNCIpOworICAgIHNob3VsZEJlKHRpbWUuY2FsZW5kYXIsIHRpbWUuY2FsZW5kYXIpOwor
fQorCit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDku
MDY4MzQ2MjA1Jyk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUucm91bmQoeyBzbWFsbGVzdFVu
aXQ6ICdob3VyJyB9KSksIGAyMDowMDowMGApOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnJv
dW5kKHsgcm91bmRpbmdJbmNyZW1lbnQ6IDMwLCBzbWFsbGVzdFVuaXQ6ICdtaW51dGUnIH0pKSwg
YDE5OjMwOjAwYCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUucm91bmQoeyByb3VuZGluZ0lu
Y3JlbWVudDogMzAsIHNtYWxsZXN0VW5pdDogJ21pbnV0ZScsIHJvdW5kaW5nTW9kZTogJ2NlaWwn
IH0pKSwgYDIwOjAwOjAwYCk7Cit9Cit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRp
bWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgbGV0IG90aGVyID0gVGVtcG9yYWwu
UGxhaW5UaW1lLmZyb20oJzIwOjEzOjIwLjk3MTM5ODA5OScpOworICAgIHNob3VsZEJlKHRpbWUu
ZXF1YWxzKG90aGVyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKHRpbWUuZXF1YWxzKHRpbWUpLCB0
cnVlKTsKK30KK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOToz
OTowOS4wNjgzNDYyMDUnKTsKKyAgICBzaG91bGRCZSh0aW1lLnRvU3RyaW5nKCksIGAxOTozOTow
OS4wNjgzNDYyMDVgKTsKKworICAgIHNob3VsZEJlKHRpbWUudG9TdHJpbmcoeyBzbWFsbGVzdFVu
aXQ6ICdtaW51dGUnIH0pLCBgMTk6MzlgKTsKKyAgICBzaG91bGRCZSh0aW1lLnRvU3RyaW5nKHsg
ZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMCB9KSwgYDE5OjM5OjA5YCk7CisgICAgc2hvdWxkQmUo
dGltZS50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDQgfSksIGAxOTozOTowOS4w
NjgzYCk7CisgICAgc2hvdWxkQmUodGltZS50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdp
dHM6IDUsIHJvdW5kaW5nTW9kZTogJ2hhbGZFeHBhbmQnIH0pLCBgMTk6Mzk6MDkuMDY4MzVgKTsK
KyAgICBzaG91bGRCZShUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDAwMDAwMjA1
JykudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA0IH0pLCBgMTk6Mzk6MDkuMDAw
MGApOworfQoreworICAgIGNvbnN0IHdvcmtCcmVhayA9IHsKKyAgICAgIHR5cGU6ICdtYW5kYXRv
cnknLAorICAgICAgbmFtZTogJ0x1bmNoJywKKyAgICAgIHN0YXJ0VGltZTogbmV3IFRlbXBvcmFs
LlBsYWluVGltZSgxMiksCisgICAgICBlbmRUaW1lOiBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDEz
KQorICAgIH07CisgICAgY29uc3Qgc3RyID0gSlNPTi5zdHJpbmdpZnkod29ya0JyZWFrKTsKKyAg
ICBzaG91bGRCZShzdHIsIGB7InR5cGUiOiJtYW5kYXRvcnkiLCJuYW1lIjoiTHVuY2giLCJzdGFy
dFRpbWUiOiIxMjowMDowMCIsImVuZFRpbWUiOiIxMzowMDowMCJ9YCk7CisgICAgZnVuY3Rpb24g
cmV2aXZlcihrZXksIHZhbHVlKSB7CisgICAgICBpZiAoa2V5LmVuZHNXaXRoKCdUaW1lJykpIHJl
dHVybiBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh2YWx1ZSk7CisgICAgICByZXR1cm4gdmFsdWU7
CisgICAgfQorICAgIGxldCBvYmplY3QgPSBKU09OLnBhcnNlKHN0ciwgcmV2aXZlcik7CisgICAg
c2hvdWxkQmUob2JqZWN0LnN0YXJ0VGltZSBpbnN0YW5jZW9mIFRlbXBvcmFsLlBsYWluVGltZSwg
dHJ1ZSk7CisgICAgc2hvdWxkQmUoU3RyaW5nKG9iamVjdC5zdGFydFRpbWUpLCBgMTI6MDA6MDBg
KTsKKyAgICBzaG91bGRCZShvYmplY3QuZW5kVGltZSBpbnN0YW5jZW9mIFRlbXBvcmFsLlBsYWlu
VGltZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoU3RyaW5nKG9iamVjdC5lbmRUaW1lKSwgYDEzOjAw
OjAwYCk7Cit9CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbmV3IFRlbXBvcmFsLlBsYWluVGlt
ZSgxMikudmFsdWVPZigpOworfSwgVHlwZUVycm9yKTsKK3sKKyAgICBsZXQgdGltZSA9IFRlbXBv
cmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYyMDUnKTsKKyAgICBzaG91bGRCZShK
U09OLnN0cmluZ2lmeSh0aW1lLmdldElTT0ZpZWxkcygpKSwgYHsiY2FsZW5kYXIiOiJpc284NjAx
IiwiaXNvSG91ciI6MTksImlzb01pY3Jvc2Vjb25kIjozNDYsImlzb01pbGxpc2Vjb25kIjo2OCwi
aXNvTWludXRlIjozOSwiaXNvTmFub3NlY29uZCI6MjA1LCJpc29TZWNvbmQiOjl9YCk7Cit9Cit7
CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2
MjA1Jyk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUuYWRkKHsgbWludXRlczogNSwgbmFub3Nl
Y29uZHM6IDgwMCB9KSksIGAxOTo0NDowOS4wNjgzNDcwMDVgKTsKK30KK3sKKyAgICBsZXQgdGlt
ZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYyMDUnKTsKKyAgICBz
aG91bGRCZShTdHJpbmcodGltZS5zdWJ0cmFjdCh7IG1pbnV0ZXM6IDUsIG5hbm9zZWNvbmRzOiA4
MDAgfSkpLCBgMTk6MzQ6MDkuMDY4MzQ1NDA1YCk7Cit9Cit7CisgICAgbGV0IHRpbWUgPSBUZW1w
b3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgc2hvdWxkQmUo
U3RyaW5nKHRpbWUuYWRkKHsgaG91cnM6IDEgfSkud2l0aCh7CisgICAgICBtaW51dGU6IDAsCisg
ICAgICBzZWNvbmQ6IDAsCisgICAgICBtaWxsaXNlY29uZDogMCwKKyAgICAgIG1pY3Jvc2Vjb25k
OiAwLAorICAgICAgbmFub3NlY29uZDogMAorICAgIH0pKSwgYDIwOjAwOjAwYCk7Cit9Cit7Cisg
ICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMjA6MTM6MjAuOTcxMzk4MDk5
Jyk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUudW50aWwoVGVtcG9yYWwuUGxhaW5UaW1lLmZy
b20oJzIyOjM5OjA5LjA2ODM0NjIwNScpKSksIGBQVDJIMjVNNDguMDk2OTQ4MTA2U2ApOworICAg
IHNob3VsZEJlKFN0cmluZyh0aW1lLnVudGlsKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOToz
OTowOS4wNjgzNDYyMDUnKSkpLCBgLVBUMzRNMTEuOTAzMDUxODk0U2ApOworICAgIHNob3VsZEJl
KFN0cmluZyh0aW1lLnVudGlsKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcyMjozOTowOS4wNjgz
NDYyMDUnKSwgeyBzbWFsbGVzdFVuaXQ6ICdzZWNvbmQnIH0pKSwgYFBUMkgyNU00OFNgKTsKK30K
K3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcyMDoxMzoyMC45NzEz
OTgwOTknKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZS5zaW5jZShUZW1wb3JhbC5QbGFpblRp
bWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1JykpKSwgYFBUMzRNMTEuOTAzMDUxODk0U2ApOwor
ICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnNpbmNlKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcy
MjozOTowOS4wNjgzNDYyMDUnKSkpLCBgLVBUMkgyNU00OC4wOTY5NDgxMDZTYCk7Cit9CmRpZmYg
LS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC10aW1lem9uZS5qcyBiL0pTVGVzdHMvc3Ry
ZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzCmluZGV4IGQ4OGY4Yzg4N2U4NDRhZTJmMDMwOWVhZjE1
MWVjYTIyMDE0NDE5NTYuLmY0ODE1OTY2MmZiNzlmOWE2MWM5MTdiOTJkYjAyZjEwODcyMTNhY2Ug
MTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzCisrKyBiL0pT
VGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzCkBAIC0xOCw2ICsxOCwxMyBAQCBmdW5j
dGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKICAgICAgICAgc2hv
dWxkQmUoU3RyaW5nKGVycm9yKSwgbWVzc2FnZSk7CiB9CiAKK3Nob3VsZEJlKFRlbXBvcmFsLlRp
bWVab25lIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworc2hvdWxkQmUoVGVtcG9yYWwuVGlt
ZVpvbmUubGVuZ3RoLCAwKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoVGVtcG9yYWwuVGltZVpvbmUsICdwcm90b3R5cGUnKS53cml0YWJsZSwgZmFsc2UpOworc2hv
dWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5UaW1lWm9uZSwg
J3Byb3RvdHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Q
cm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuVGltZVpvbmUsICdwcm90b3R5cGUnKS5jb25maWd1
cmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLlRpbWVab25lLnByb3RvdHlwZS5jb25z
dHJ1Y3RvciwgVGVtcG9yYWwuVGltZVpvbmUpOworCiBsZXQgZmFpbHVyZXMgPSBbCiAgICAgIiIs
CiAgICAgIisiLApAQCAtMjYsOSArMzMsMjIgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywg
ZXJyb3JUeXBlLCBtZXNzYWdlKSB7CiAgICAgIisyNCIsCiAgICAgIisyMzoiLAogICAgICIyMDow
MCIsCisgICAgIisyOjAwIiwKKyAgICAiKzMyOjAwIiwKKyAgICAiKzIzOjAwMSIsCisgICAgIisy
Mzo5OSIsCisgICAgIisyMzo5OTAiLAorICAgICIrMjM6NTk6OTkiLAorICAgICIrMjM6NTk6MDAx
IiwKKyAgICAiKzIzOjU5Ojk5OSIsCisgICAgIisyMzo1OTo1OS4iLAorICAgICIrMjM6NTk6NTks
IiwKKyAgICAiKzIzOjU5OjU5YSIsCisgICAgIisyMzo1OTo1OS5hIiwKICAgICAiKzIwOjAwMDAi
LAogICAgICIrMjA6NjAiLAogICAgICIrMjA6NTk6IiwKKyAgICAiKzIwOjU5OjYwIiwKICAgICAi
MjA1OTowMCIsCiAgICAgIisyMDU5OjAwIiwKICAgICAiKzIwOjU5MDAiLApAQCAtNTIsNiArNzIs
MTAgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CiBz
aG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTAwMDAiKS5pZCwg
YC0wMTo1OTozMC4xMjM0NWApOwogc2hvdWxkQmUobmV3IFRlbXBvcmFsLlRpbWVab25lKCItMDE6
NTk6MzAuMDAwMDAwMDAxIikuaWQsIGAtMDE6NTk6MzAuMDAwMDAwMDAxYCk7CiBzaG91bGRCZShu
ZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTY3ODkiKS5pZCwgYC0wMTo1OToz
MC4xMjM0NTY3ODlgKTsKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjMw
LjAwMTAwMjAwMyIpLmlkLCBgLTAxOjU5OjMwLjAwMTAwMjAwM2ApOworc2hvdWxkQmUobmV3IFRl
bXBvcmFsLlRpbWVab25lKCItMDE6NTk6MzAuMDAwMDAwMDAwIikuaWQsIGAtMDE6NTk6MzBgKTsK
K3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjAwLjAwMDAwMDAwMCIpLmlk
LCBgLTAxOjU5YCk7CitzaG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTowMDowMC4w
MDAwMDAwMDAiKS5pZCwgYC0wMTowMGApOwogCiBsZXQgdHogPSBuZXcgVGVtcG9yYWwuVGltZVpv
bmUoIi0wMTo1OTozMC4xMjM0NTY3ODkiKQogc2hvdWxkQmUodHouaWQsIFN0cmluZyh0eikpOwpk
aWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYy
L2NvbmZpZy55YW1sCmluZGV4IDEwNWZkZjQyNTM5NjUzNzI4NWE3MTc4MDI1MDlmOGRlMjkwZmFi
NmMuLmE2YzhhMTFkZWJlM2RiNTdmMTFlMDUxZDljN2Q2NjgyZGYwNTJlMTIgMTAwNjQ0Ci0tLSBh
L0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmln
LnlhbWwKQEAgLTI3LDcgKzI3LDggQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBv
cmFsL1BsYWluRGF0ZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5EYXRlVGlt
ZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5Nb250aERheQotICAgIC0gdGVz
dC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1w
b3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL3RvUGxhaW5EYXRlVGltZQorICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWUKICAgICAt
IHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluWWVhck1vbnRoCiAgICAgLSB0ZXN0L2J1aWx0
LWlucy9UZW1wb3JhbC9UaW1lWm9uZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvWm9u
ZWREYXRlVGltZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437404</attachid>
            <date>2021-09-06 04:48:51 -0700</date>
            <delta_ts>2021-09-06 20:38:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229892-20210906044850.patch</filename>
            <type>text/plain</type>
            <size>165061</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTM5NDE1YzNmNmI3NTVlOTY3YjE3MTMzYjU5ZTY5ZWM1NjNkOWNjLi5jZmEyYjA0ZDUwMWFkMWQ0
ZjFhNWY4NzAzOTA0MDVkNGY2ZWRlNjIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMjggQEAKKzIwMjEtMDktMDYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuUGxhaW5UaW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4OTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0
OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLWlucHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICog
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3Q6CisgICAgICAgICogRGVyaXZlZFNvdXJj
ZXMubWFrZToKKyAgICAgICAgKiBTb3VyY2VzLnR4dDoKKyAgICAgICAgKiBydW50aW1lL0NvbW1v
bklkZW50aWZpZXJzLmg6CisgICAgICAgICogcnVudGltZS9JU084NjAxLmNwcDoKKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6aWRGb3JUaW1lWm9uZU5hbWUpOgorICAgICAgICAoSlNDOjpJU084NjAx
OjpwYXJzZVRpbWVTcGVjKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lWm9uZU51
bWVyaWNVVENPZmZzZXQpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZVRpbWVab25lQnJh
Y2tldGVkQW5ub3RhdGlvbik6CisgICAgICAgIChKU0M6OklTTzg2MDE6OmNhbkJlVGltZVpvbmUp
OgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZVRpbWVab25lKToKKyAgICAgICAgKEpTQzo6
SVNPODYwMTo6cGFyc2VUaW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6ZGF5c0luTW9udGgp
OgorICAgICAgICAoSlNDOjpJU084NjAxOjpwYXJzZURhdGUpOgorICAgICAgICAoSlNDOjpJU084
NjAxOjpwYXJzZURhdGVUaW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6Zm9ybWF0VGltZVpv
bmVPZmZzZXRTdHJpbmcpOgorICAgICAgICAoSlNDOjpJU084NjAxOjp0ZW1wb3JhbFRpbWVUb1N0
cmluZyk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OmlzVmFsaWREdXJhdGlvbik6CisgICAgICAg
ICogcnVudGltZS9JU084NjAxLmg6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpE
dXJhdGlvbik6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpvcGVyYXRvcltdKToK
KyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJhdG9yW10gY29uc3QpOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6YmVnaW4gY29uc3QpOgorICAgICAgICAoSlND
OjpJU084NjAxOjpEdXJhdGlvbjo6ZW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
RHVyYXRpb246OmNsZWFyKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246Om9wZXJh
dG9yLSBjb25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OlBsYWluVGltZTo6UGxhaW5UaW1l
KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5UaW1lOjpvcGVyYXRvcj09KToKKyAgICAg
ICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRlOjpQbGFpbkRhdGUpOgorICAgICAgICAoSlNDOjpJ
U084NjAxOjpQbGFpbkRhdGU6OnllYXIgY29uc3QpOgorICAgICAgICAoSlNDOjpJU084NjAxOjpQ
bGFpbkRhdGU6Om1vbnRoIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRl
OjpkYXkgY29uc3QpOgorICAgICAgICAqIHJ1bnRpbWUvSW50bE9iamVjdC5jcHA6CisgICAgICAg
IChKU0M6OnV0Y1RpbWVab25lSURTbG93KToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3Qu
aDoKKyAgICAgICAgKEpTQzo6dXRjVGltZVpvbmVJRCk6CisgICAgICAgICogcnVudGltZS9KU0ds
b2JhbE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0Ojppbml0KToKKyAg
ICAgICAgKEpTQzo6SlNHbG9iYWxPYmplY3Q6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAg
KiBydW50aW1lL0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
OjpwbGFpblRpbWVTdHJ1Y3R1cmUpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxDYWxlbmRh
ckNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxDYWxlbmRhckNvbnN0cnVj
dG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9u
LmNwcDoKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZCk6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVyYXRpb246OmZyb21Ob25EdXJhdGlvblZhbHVlKToK
KyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9EdXJhdGlvbik6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb25SZWNvcmQpOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFs
RHVyYXRpb246OnRvU3RyaW5nKToKKyAgICAgICAgKEpTQzo6aXNWYWxpZER1cmF0aW9uKTogRGVs
ZXRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6ZnJvbU9iamVjdCk6IERlbGV0
ZWQuCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmg6CisgICAgICAgICogcnVu
dGltZS9UZW1wb3JhbE5vdy5jcHA6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHA6CisgICAgICAgIChK
U0M6OmNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6c2Vjb25kc1N0
cmluZ1ByZWNpc2lvbik6CisgICAgICAgIChKU0M6OnRvVGVtcG9yYWxPdmVyZmxvdyk6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbE9iamVjdC5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9y
YWxQbGFpblRpbWUuY3BwOiBBZGRlZC4KKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6
OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGVTdHJ1Y3R1
cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6VGVtcG9yYWxQbGFpblRpbWUp
OgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dmlzaXRDaGlsZHJlbkltcGwpOgorICAgICAg
ICAoSlNDOjp0b1BsYWluVGltZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp0
cnlDcmVhdGVJZlZhbGlkKToKKyAgICAgICAgKEpTQzo6YmFsYW5jZVRpbWUpOgorICAgICAgICAo
SlNDOjpyb3VuZFRpbWUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6cm91bmQg
Y29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dG9TdHJpbmcgY29uc3Qp
OgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWUpOgorICAgICAgICAoSlNDOjp0b1RlbXBvcmFs
VGltZVJlY29yZCk6CisgICAgICAgIChKU0M6OnRvUGFydGlhbFRpbWUpOgorICAgICAgICAoSlND
Ojpjb25zdHJhaW50VGltZSk6CisgICAgICAgIChKU0M6OnJlZ3VsYXRlVGltZSk6CisgICAgICAg
IChKU0M6OnRvVGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KToKKyAgICAgICAgKEpTQzo6
Z2V0VGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxQbGFpblRpbWU6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6Y29t
cGFyZSk6CisgICAgICAgIChKU0M6OnRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24pOgorICAgICAg
ICAoSlNDOjphZGRUaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6OmFkZCBj
b25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpzdWJ0cmFjdCBjb25zdCk6
CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp3aXRoIGNvbnN0KToKKyAgICAgICAg
KEpTQzo6ZGlmZmVyZW5jZVRpbWUpOgorICAgICAgICAoSlNDOjpleHRyYWN0RGlmZmVyZW5jZU9w
dGlvbnMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dW50aWwgY29uc3QpOgor
ICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6c2luY2UgY29uc3QpOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaDogQWRkZWQuCisgICAgICAgICogcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAgIChKU0M6OlRl
bXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6
OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0
b3IpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpmaW5pc2hD
cmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAg
ICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmg6IENvcGllZCBmcm9t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaC4KKyAgICAg
ICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcDogQWRkZWQuCisgICAg
ICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpjcmVhdGUpOgorICAgICAgICAo
SlNDOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OlRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmZpbmlz
aENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKToKKyAg
ICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAgKiBydW50aW1l
L1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaC4KKyAgICAgICAgKiBydW50aW1lL1Rl
bXBvcmFsVGltZVpvbmUuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFRpbWVab25lOjpmcm9t
KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZTo6aWRGb3JUaW1lWm9uZU5hbWUpOiBE
ZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oOgorICAgICAgICAq
IHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6
VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChK
U0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGltZS9WTS5jcHA6
CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA5LTAzICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gTWFrZSBFbnVtZXJhdG9yTmV4dFVw
ZGF0ZUluZGV4QW5kTW9kZSBjbG9iYmVyaXppbmcgcnVsZSBwcmVjaXNlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV1RGL0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDA3OWRiODJl
OGQxZTY0OGQyNmQwYzY2NDJjYjI5MzA2MGFmOWZmM2UuLmJhZTlhMzQ2YzVhYjA3MjkyZTYwNWE5
OGU4MTBjMWZkY2U1YjE2YWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9XVEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTIgQEAKKzIwMjEtMDktMDYgIFl1c3Vr
ZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQg
VGVtcG9yYWwuUGxhaW5UaW1lCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMjk4OTIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaDoKKwogMjAyMS0wOS0w
MyAgQmFzdWtlIFN1enVraSAgPGJhc3VrZS5zdXp1a2lAc29ueS5jb20+CiAKICAgICAgICAgVXNl
IFVTRShTWVNURU1fTUFMTE9DKSBtYWNybyBpbiBhbGwgY2FzZXMKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9D
TWFrZUxpc3RzLnR4dAppbmRleCBlY2EwODMxNGI2NDQ1OWM3OGNhMDM4NjQyODE1MzdmODUxOGRi
ZWUwLi4zOGNiODRkYTA1NmUyYjZhNmMxM2VkOWY4ZDcwNTE4ZWFmMDg5NThlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CkBAIC0xMTMsNiArMTEzLDggQEAgc2V0KEphdmFTY3Jp
cHRDb3JlX09CSkVDVF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblBy
b3RvdHlwZS5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogICAgIHJ1bnRpbWUvVGVt
cG9yYWxPYmplY3QuY3BwCisgICAgcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9y
LmNwcAorICAgIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCiAgICAgcnVu
dGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9UZW1wb3Jh
bFRpbWVab25lUHJvdG90eXBlLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGNlNWY2Mjg4YWFhMjdjYjc4
MTdiZWFlMTQ0Mzc2ZWEyOGFmYWU2M2YuLjI4ODViNTEwMTdjYzFhZTNkODkyZWYzYzVmMjdhNGIx
MjM3NTM4NDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CkBAIC0xNzUsNiArMTc1LDggQEAgJChQUk9KRUNUX0RJUikv
cnVudGltZS9UZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9y
dW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsTm93LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE9iamVj
dC5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ci5jcHAKKyQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUu
Y3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5j
cHAKICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAK
ICQoUFJPSkVDVF9ESVIpL3VjZC9DYXNlRm9sZGluZy50eHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAxYjA1
NWM5MjJjMDk0YTU5NTg0MjYwODQxZGNlZGZjYWE3Mzc2NTAzLi4yYWQyMTMxYzU4NjY5YmQwNTc1
YzdhZjQwYTZjNDI3YTU5NGY1YzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC03Miw2ICs3Miw4IEBAICQo
QlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3Jh
bER1cmF0aW9uQ29uc3RydWN0b3IuCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJj
ZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5sdXQuaAogJChCVUlM
VF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsTm93
Lmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENv
cmUvVGVtcG9yYWxPYmplY3QubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVk
U291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IubHV0LmgK
ICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1w
b3JhbFRpbWVab25lUHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVW5pY29kZVBhdHRlcm5UYWJsZXMuaApkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA4ODE5MjdlMTdiZGEyMzhkN2Rh
Y2VmMWQ2ZWI1YzNjM2I3NDhiMzc3Li5lY2JjZTY3Zjc4YzAwMzRjMTY2ZjUwZDU4OTJhNmYwOGM1
ZGE0MGQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMu
bWFrZQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAt
MTk3LDYgKzE5Nyw4IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBUZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmx1dC5oIFwKICAgICBUZW1wb3JhbE5vdy5sdXQuaCBcCiAgICAgVGVtcG9y
YWxPYmplY3QubHV0LmggXAorICAgIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IubHV0Lmgg
XAorICAgIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oIFwKICAgICBUZW1wb3JhbFRp
bWVab25lQ29uc3RydWN0b3IubHV0LmggXAogICAgIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUu
bHV0LmggXAogICAgIFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmggXApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0CmluZGV4IDMyOGY5MmY1YjJmYjIwNWM4Mzg3ODIyNDE5
YTUwODRlMGZhMWY3Y2EuLjg0NmU5ZWU3NWZlZDA1NDc1NTZjNGJmZDRhMjYxZDgwZDU5YWZiZDcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvU291cmNlcy50eHQKQEAgLTEwMTksNiArMTAxOSw5IEBAIHJ1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9UZW1wb3JhbER1cmF0
aW9uUHJvdG90eXBlLmNwcAogcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKIHJ1bnRpbWUvVGVtcG9y
YWxPYmplY3QuY3BwCitydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcAorcnVudGltZS9UZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKIHJ1bnRpbWUvVGVtcG9y
YWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90
eXBlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9u
SWRlbnRpZmllcnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50
aWZpZXJzLmgKaW5kZXggNzE0YWEyZmViMjI0ZmE1OGYyN2VkNTU1MWI2N2M5ZjMyNjVjYmQyNy4u
NDBjMTU5ZThkN2M1NDA0OWZkOThjOGE2NjY4YTY0YThkZjRlYTM2NCAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0xNDksNiAr
MTQ5LDEyIEBACiAgICAgbWFjcm8oaW5kaWNlcykgXAogICAgIG1hY3JvKGluZmVycmVkTmFtZSkg
XAogICAgIG1hY3JvKGlucHV0KSBcCisgICAgbWFjcm8oaXNvSG91cikgXAorICAgIG1hY3JvKGlz
b01pY3Jvc2Vjb25kKSBcCisgICAgbWFjcm8oaXNvTWlsbGlzZWNvbmQpIFwKKyAgICBtYWNybyhp
c29NaW51dGUpIFwKKyAgICBtYWNybyhpc29OYW5vc2Vjb25kKSBcCisgICAgbWFjcm8oaXNvU2Vj
b25kKSBcCiAgICAgbWFjcm8oaW5zdHJ1Y3Rpb25Db3VudCkgXAogICAgIG1hY3JvKGlzQXJyYXkp
IFwKICAgICBtYWNybyhpc0VuYWJsZWQpIFwKQEAgLTE2OSw3ICsxNzUsOSBAQAogICAgIG1hY3Jv
KG1heGltdW1GcmFjdGlvbkRpZ2l0cykgXAogICAgIG1hY3JvKG1heGltdW1TaWduaWZpY2FudERp
Z2l0cykgXAogICAgIG1hY3JvKG1lc3NhZ2UpIFwKKyAgICBtYWNybyhtaWNyb3NlY29uZCkgXAog
ICAgIG1hY3JvKG1pY3Jvc2Vjb25kcykgXAorICAgIG1hY3JvKG1pbGxpc2Vjb25kKSBcCiAgICAg
bWFjcm8obWlsbGlzZWNvbmRzKSBcCiAgICAgbWFjcm8obWluaW11bUZyYWN0aW9uRGlnaXRzKSBc
CiAgICAgbWFjcm8obWluaW11bUludGVnZXJEaWdpdHMpIFwKQEAgLTE4MSw2ICsxODksNyBAQAog
ICAgIG1hY3JvKG1vbnRocykgXAogICAgIG1hY3JvKG11bHRpbGluZSkgXAogICAgIG1hY3JvKG5h
bWUpIFwKKyAgICBtYWNybyhuYW5vc2Vjb25kKSBcCiAgICAgbWFjcm8obmFub3NlY29uZHMpIFwK
ICAgICBtYWNybyhuZXh0KSBcCiAgICAgbWFjcm8obm93KSBcCkBAIC0xOTQsNiArMjAzLDcgQEAK
ICAgICBtYWNybyhvcmlnaW4pIFwKICAgICBtYWNybyhvc3JFeGl0U2l0ZXMpIFwKICAgICBtYWNy
byhvc3JFeGl0cykgXAorICAgIG1hY3JvKG92ZXJmbG93KSBcCiAgICAgbWFjcm8ocGFyc2UpIFwK
ICAgICBtYWNybyhwYXJzZUludCkgXAogICAgIG1hY3JvKHBhcnNlRmxvYXQpIFwKQEAgLTI0NSw2
ICsyNTUsNyBAQAogICAgIG1hY3JvKHVzYWdlKSBcCiAgICAgbWFjcm8odmFsdWUpIFwKICAgICBt
YWNybyh2YWx1ZU9mKSBcCisgICAgbWFjcm8od2VlaykgXAogICAgIG1hY3JvKHdlZWtkYXkpIFwK
ICAgICBtYWNybyh3ZWVrcykgXAogICAgIG1hY3JvKHdyaXRhYmxlKSBcCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCmluZGV4IDllNDJhZmMxMzNjMDdlM2ZiOTFiODk3
NzU2ZTNhMTU1MTIzYWY5MzcuLmMyYTllM2NmZGIzMmU0MGIxMGQ3YTQyMzZjM2Q2MTkyOGM0OWE2
YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjYsNyArMjcsOSBAQAogI2luY2x1ZGUgImNvbmZp
Zy5oIgogI2luY2x1ZGUgIklTTzg2MDEuaCIKIAorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNp
bmNsdWRlICJQYXJzZUludC5oIgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0z
OCw2ICs0MSwxNiBAQCBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbnNQZXJTZWNvbmQgPSAxMDAw
TEwgKiAxMDAwICogMTAwMDsKIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBuc1Blck1pbGxpc2Vj
b25kID0gMTAwMExMICogMTAwMDsKIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBuc1Blck1pY3Jv
c2Vjb25kID0gMTAwMExMOwogCitzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkRm9yVGltZVpv
bmVOYW1lKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIGNvbnN0IGF1dG8mIHRpbWVab25lcyA9
IGludGxBdmFpbGFibGVUaW1lWm9uZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsg
aW5kZXggPCB0aW1lWm9uZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChlcXVhbEln
bm9yaW5nQVNDSUlDYXNlKHRpbWVab25lc1tpbmRleF0sIHN0cmluZykpCisgICAgICAgICAgICBy
ZXR1cm4gaW5kZXg7CisgICAgfQorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIHRlbXBs
YXRlPHR5cGVuYW1lIENoYXJUeXBlPgogaW50MzJfdCBwYXJzZURlY2ltYWxJbnQzMihjb25zdCBD
aGFyVHlwZSogY2hhcmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewpAQCAtMjQzLDMyICsyNTYs
MjYgQEAgc3RkOjpvcHRpb25hbDxEdXJhdGlvbj4gcGFyc2VEdXJhdGlvbihTdHJpbmdWaWV3IHN0
cmluZykKICAgICB9KTsKIH0KIAorCitlbnVtIGNsYXNzIFNlY29uZDYwTW9kZSB7IEFjY2VwdCwg
UmVqZWN0IH07CiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIHN0ZDo6
b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nUGFy
c2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8
UGxhaW5UaW1lPiBwYXJzZVRpbWVTcGVjKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlw
ZT4mIGJ1ZmZlciwgU2Vjb25kNjBNb2RlIHNlY29uZDYwTW9kZSkKIHsKLSAgICAvLyBUaW1lWm9u
ZU51bWVyaWNVVENPZmZzZXQgOgotICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGlt
ZVpvbmVVVENPZmZzZXRIb3VyCi0gICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1l
Wm9uZVVUQ09mZnNldEhvdXIgOiBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZQotICAgIC8vICAgICBU
aW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIFRpbWVab25lVVRDT2Zm
c2V0TWludXRlCi0gICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lWm9uZVVUQ09m
ZnNldEhvdXIgOiBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZSA6IFRpbWVab25lVVRDT2Zmc2V0U2Vj
b25kIFRpbWVab25lVVRDT2Zmc2V0RnJhY3Rpb25bb3B0XQotICAgIC8vICAgICBUaW1lWm9uZVVU
Q09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIFRpbWVab25lVVRDT2Zmc2V0TWludXRl
IFRpbWVab25lVVRDT2Zmc2V0U2Vjb25kW29wdF0KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJv
cG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVNwZWMKKyAgICAvLyBUaW1lU3BlYyA6CisgICAgLy8g
ICAgIFRpbWVIb3VyCisgICAgLy8gICAgIFRpbWVIb3VyIDogVGltZU1pbnV0ZQorICAgIC8vICAg
ICBUaW1lSG91ciBUaW1lTWludXRlCisgICAgLy8gICAgIFRpbWVIb3VyIDogVGltZU1pbnV0ZSA6
IFRpbWVTZWNvbmQgVGltZUZyYWN0aW9uW29wdF0KKyAgICAvLyAgICAgVGltZUhvdXIgVGltZU1p
bnV0ZSBUaW1lU2Vjb25kIFRpbWVGcmFjdGlvbltvcHRdCiAgICAgLy8KLSAgICAvLyAgTWF4aW11
bSBhbmQgbWluaW11bSB2YWx1ZXMgYXJlIMKxMjM6NTk6NTkuOTk5OTk5OTk5ID0gwrE4NjM5OTk5
OTk5OTk5OW5zLCB3aGljaCBjYW4gYmUgcmVwcmVzZW50ZWQgYnkgaW50NjRfdCAvIGRvdWJsZSdz
IGludGVnZXIgcGFydC4KLQotICAgIC8vIHNpZ24gYW5kIGhvdXIuCi0gICAgaWYgKGJ1ZmZlci5s
ZW5ndGhSZW1haW5pbmcoKSA8IDMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
Ly8gIFRpbWVTZWNvbmQgY2FuIGJlIDYwLiBBbmQgaWYgaXQgaXMgNjAsIHdlIGludGVycHJldCBp
dCBhcyA1OS4KKyAgICAvLyAgaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwtcGFyc2Vpc29kYXRldGltZQogCi0gICAgaW50NjRfdCBmYWN0b3IgPSAxOwotICAg
IGlmICgqYnVmZmVyID09ICcrJykKLSAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKLSAgICBlbHNl
IGlmICgqYnVmZmVyID09ICctJyB8fCAqYnVmZmVyID09IDB4MjIxMikgewotICAgICAgICBmYWN0
b3IgPSAtMTsKLSAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKLSAgICB9IGVsc2UKKyAgICBpZiAo
YnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKIAotICAgIGludDY0X3QgaG91ciA9IDA7CisgICAgdW5zaWduZWQgaG91ciA9IDA7CiAgICAg
QVNTRVJUKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA+PSAyKTsKICAgICBhdXRvIGZpcnN0SG91
ckNoYXJhY3RlciA9ICpidWZmZXI7CiAgICAgaWYgKGZpcnN0SG91ckNoYXJhY3RlciA+PSAnMCcg
JiYgZmlyc3RIb3VyQ2hhcmFjdGVyIDw9ICcyJykgewpAQCAtMjg0LDE1ICsyOTEsMTYgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQo
U3RyaW5nUGFyc2luZ0J1ZmZlcjwKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAg
IGlmIChidWZmZXIuYXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIChuc1BlckhvdXIgKiBob3VyKSAq
IGZhY3RvcjsKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCAwLCAwLCAwLCAwLCAwKTsK
IAogICAgIGJvb2wgc3BsaXRCeUNvbG9uID0gZmFsc2U7CiAgICAgaWYgKCpidWZmZXIgPT0gJzon
KSB7Ci0gICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CiAgICAgICAgIHNwbGl0QnlDb2xvbiA9IHRy
dWU7Ci0gICAgfQorICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgIH0gZWxzZSBpZiAoISgq
YnVmZmVyID49ICcwJyAmJiAqYnVmZmVyIDw9ICc1JykpCisgICAgICAgIHJldHVybiBQbGFpblRp
bWUoaG91ciwgMCwgMCwgMCwgMCwgMCk7CiAKLSAgICBpbnQ2NF90IG1pbnV0ZSA9IDA7CisgICAg
dW5zaWduZWQgbWludXRlID0gMDsKICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwg
MikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGZpcnN0TWludXRlQ2hh
cmFjdGVyID0gKmJ1ZmZlcjsKQEAgLTMwOCwxNiArMzE2LDE3IEBAIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdC
dWZmZXI8CiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYnVmZmVyLmF0
RW5kKCkpCi0gICAgICAgIHJldHVybiAobnNQZXJIb3VyICogaG91ciArIG5zUGVyTWludXRlICog
bWludXRlKSAqIGZhY3RvcjsKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUs
IDAsIDAsIDAsIDApOwogCiAgICAgaWYgKHNwbGl0QnlDb2xvbikgewogICAgICAgICBpZiAoKmJ1
ZmZlciA9PSAnOicpCiAgICAgICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwogICAgICAgICBlbHNl
Ci0gICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KKyAgICAgICAgICAgIHJl
dHVybiBQbGFpblRpbWUoaG91ciwgbWludXRlLCAwLCAwLCAwLCAwKTsKKyAgICB9IGVsc2UgaWYg
KCEoKmJ1ZmZlciA+PSAnMCcgJiYgKHNlY29uZDYwTW9kZSA9PSBTZWNvbmQ2ME1vZGU6OkFjY2Vw
dCA/ICgqYnVmZmVyIDw9ICc2JykgOiAoKmJ1ZmZlciA8PSAnNScpKSkpCisgICAgICAgIHJldHVy
biBQbGFpblRpbWUoaG91ciwgbWludXRlLCAwLCAwLCAwLCAwKTsKIAotICAgIGludDY0X3Qgc2Vj
b25kID0gMDsKKyAgICB1bnNpZ25lZCBzZWNvbmQgPSAwOwogICAgIGlmIChidWZmZXIubGVuZ3Ro
UmVtYWluaW5nKCkgPCAyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8g
Zmlyc3RTZWNvbmRDaGFyYWN0ZXIgPSAqYnVmZmVyOwpAQCAtMzI3LDM0ICszMzYsODQgQEAgc3Rh
dGljIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQo
U3RyaW5nUGFyc2luZ0J1ZmZlcjwKICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc2Vjb25kU2Vj
b25kQ2hhcmFjdGVyKSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAg
IHNlY29uZCA9IChzZWNvbmRTZWNvbmRDaGFyYWN0ZXIgLSAnMCcpICsgMTAgKiAoZmlyc3RTZWNv
bmRDaGFyYWN0ZXIgLSAnMCcpOwotICAgICAgICBBU1NFUlQobWludXRlIDwgNjApOworICAgICAg
ICBBU1NFUlQoc2Vjb25kIDwgNjApOworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgIH0g
ZWxzZSBpZiAoc2Vjb25kNjBNb2RlID09IFNlY29uZDYwTW9kZTo6QWNjZXB0ICYmIGZpcnN0U2Vj
b25kQ2hhcmFjdGVyID09ICc2JykgeworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAg
ICBhdXRvIHNlY29uZFNlY29uZENoYXJhY3RlciA9ICpidWZmZXI7CisgICAgICAgIGlmIChzZWNv
bmRTZWNvbmRDaGFyYWN0ZXIgIT0gJzAnKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgc2Vjb25kID0gNTk7CiAgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CiAgICAg
fSBlbHNlCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYnVmZmVyLmF0
RW5kKCkpCi0gICAgICAgIHJldHVybiAobnNQZXJIb3VyICogaG91ciArIG5zUGVyTWludXRlICog
bWludXRlICsgbnNQZXJTZWNvbmQgKiBzZWNvbmQpICogZmFjdG9yOworICAgICAgICByZXR1cm4g
UGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCAwLCAwLCAwKTsKIAogICAgIGlmICgqYnVm
ZmVyICE9ICcuJyAmJiAqYnVmZmVyICE9ICcsJykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgMCwgMCwg
MCk7CiAgICAgYnVmZmVyLmFkdmFuY2UoKTsKIAogICAgIHVuc2lnbmVkIGRpZ2l0cyA9IDA7Ci0g
ICAgd2hpbGUgKGRpZ2l0cyA8IGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSAmJiBpc0FTQ0lJRGln
aXQoYnVmZmVyW2RpZ2l0c10pKQotICAgICAgICBkaWdpdHMrKzsKLSAgICBpZiAoIWRpZ2l0cyB8
fCBkaWdpdHMgPiA5KQorICAgIHVuc2lnbmVkIG1heENvdW50ID0gc3RkOjptaW48dW5zaWduZWQ+
KGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSwgOSk7CisgICAgZm9yICg7IGRpZ2l0cyA8IG1heENv
dW50OyArK2RpZ2l0cykgeworICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChidWZmZXJbZGlnaXRz
XSkpCisgICAgICAgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKCFkaWdpdHMpCiAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8TENoYXIsIDk+IHBhZGRlZCg5LCAn
MCcpOwogICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaWdpdHM7ICsraSkKICAgICAgICAg
cGFkZGVkW2ldID0gYnVmZmVyW2ldOwogICAgIGJ1ZmZlci5hZHZhbmNlQnkoZGlnaXRzKTsKLSAg
ICBpZiAoIWJ1ZmZlci5hdEVuZCgpKQorCisgICAgdW5zaWduZWQgbWlsbGlzZWNvbmQgPSBwYXJz
ZURlY2ltYWxJbnQzMihwYWRkZWQuZGF0YSgpLCAzKTsKKyAgICB1bnNpZ25lZCBtaWNyb3NlY29u
ZCA9IHBhcnNlRGVjaW1hbEludDMyKHBhZGRlZC5kYXRhKCkgKyAzLCAzKTsKKyAgICB1bnNpZ25l
ZCBuYW5vc2Vjb25kID0gcGFyc2VEZWNpbWFsSW50MzIocGFkZGVkLmRhdGEoKSArIDYsIDMpOwor
CisgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQs
IG1pY3Jvc2Vjb25kLCBuYW5vc2Vjb25kKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFj
dGVyVHlwZT4KK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1l
cmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikK
K3sKKyAgICAvLyBUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQgOgorICAgIC8vICAgICBUaW1lWm9u
ZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyCisgICAgLy8gICAgIFRpbWVab25l
VVRDT2Zmc2V0U2lnbiBUaW1lWm9uZVVUQ09mZnNldEhvdXIgOiBUaW1lWm9uZVVUQ09mZnNldE1p
bnV0ZQorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRI
b3VyIFRpbWVab25lVVRDT2Zmc2V0TWludXRlCisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0
U2lnbiBUaW1lWm9uZVVUQ09mZnNldEhvdXIgOiBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZSA6IFRp
bWVab25lVVRDT2Zmc2V0U2Vjb25kIFRpbWVab25lVVRDT2Zmc2V0RnJhY3Rpb25bb3B0XQorICAg
IC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIFRpbWVa
b25lVVRDT2Zmc2V0TWludXRlIFRpbWVab25lVVRDT2Zmc2V0U2Vjb25kIFRpbWVab25lVVRDT2Zm
c2V0RnJhY3Rpb25bb3B0XQorICAgIC8vCisgICAgLy8gIFRoaXMgaXMgdGhlIHNhbWUgdG8KKyAg
ICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVTcGVjCisgICAgLy8KKyAgICAvLyAg
TWF4aW11bSBhbmQgbWluaW11bSB2YWx1ZXMgYXJlIMKxMjM6NTk6NTkuOTk5OTk5OTk5ID0gwrE4
NjM5OTk5OTk5OTk5OW5zLCB3aGljaCBjYW4gYmUgcmVwcmVzZW50ZWQgYnkgaW50NjRfdCAvIGRv
dWJsZSdzIGludGVnZXIgcGFydC4KKworICAgIC8vIHNpZ24gYW5kIGhvdXIuCisgICAgaWYgKGJ1
ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CiAKLSAgICBpbnQ2NF90IG1pbGxpc2Vjb25kID0gcGFyc2VEZWNpbWFsSW50MzIocGFkZGVkLmRh
dGEoKSwgMyk7Ci0gICAgaW50NjRfdCBtaWNyb3NlY29uZCA9IHBhcnNlRGVjaW1hbEludDMyKHBh
ZGRlZC5kYXRhKCkgKyAzLCAzKTsKLSAgICBpbnQ2NF90IG5hbm9zZWNvbmQgPSBwYXJzZURlY2lt
YWxJbnQzMihwYWRkZWQuZGF0YSgpICsgNiwgMyk7CisgICAgaW50NjRfdCBmYWN0b3IgPSAxOwor
ICAgIGlmICgqYnVmZmVyID09ICcrJykKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICBl
bHNlIGlmICgqYnVmZmVyID09ICctJyB8fCAqYnVmZmVyID09IDB4MjIxMikgeworICAgICAgICBm
YWN0b3IgPSAtMTsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICB9IGVsc2UKKyAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gcGxhaW5UaW1lID0gcGFyc2VUaW1l
U3BlYyhidWZmZXIsIFNlY29uZDYwTW9kZTo6UmVqZWN0KTsKKyAgICBpZiAoIXBsYWluVGltZSkK
KyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGludDY0X3QgaG91ciA9IHBsYWlu
VGltZS0+aG91cigpOworICAgIGludDY0X3QgbWludXRlID0gcGxhaW5UaW1lLT5taW51dGUoKTsK
KyAgICBpbnQ2NF90IHNlY29uZCA9IHBsYWluVGltZS0+c2Vjb25kKCk7CisgICAgaW50NjRfdCBt
aWxsaXNlY29uZCA9IHBsYWluVGltZS0+bWlsbGlzZWNvbmQoKTsKKyAgICBpbnQ2NF90IG1pY3Jv
c2Vjb25kID0gcGxhaW5UaW1lLT5taWNyb3NlY29uZCgpOworICAgIGludDY0X3QgbmFub3NlY29u
ZCA9IHBsYWluVGltZS0+bmFub3NlY29uZCgpOwogCiAgICAgcmV0dXJuIChuc1BlckhvdXIgKiBo
b3VyICsgbnNQZXJNaW51dGUgKiBtaW51dGUgKyBuc1BlclNlY29uZCAqIHNlY29uZCArIG5zUGVy
TWlsbGlzZWNvbmQgKiBtaWxsaXNlY29uZCArIG5zUGVyTWljcm9zZWNvbmQgKiBtaWNyb3NlY29u
ZCArIG5hbm9zZWNvbmQpICogZmFjdG9yOwogfQpAQCAtMzYyLDcgKzQyMSw0NTggQEAgc3RhdGlj
IHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3Ry
aW5nUGFyc2luZ0J1ZmZlcjwKIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51
bWVyaWNVVENPZmZzZXQoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIHJlYWRDaGFy
YWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFs
PGludDY0X3Q+IHsKLSAgICAgICAgcmV0dXJuIHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0
KGJ1ZmZlcik7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENP
ZmZzZXQoYnVmZmVyKTsKKyAgICAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSk7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFsPFZhcmlh
bnQ8VmVjdG9yPExDaGFyPiwgaW50NjRfdD4+IHBhcnNlVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0
aW9uKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3sKKyAgICAv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVCcmFja2V0
ZWRBbm5vdGF0aW9uCisgICAgLy8gVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uIDoKKyAgICAv
LyAgICAgWyBUaW1lWm9uZUJyYWNrZXRlZE5hbWUgXQorICAgIC8vCisgICAgLy8gVGltZVpvbmVC
cmFja2V0ZWROYW1lIDoKKyAgICAvLyAgICAgVGltZVpvbmVJQU5BTmFtZQorICAgIC8vICAgICBF
dGMvR01UIEFTQ0lJU2lnbiBIb3VyCisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0TmFtZQor
CisgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDMpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoKmJ1ZmZlciAhPSAnWycpCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgYnVmZmVyLmFkdmFuY2UoKTsKKworICAgIHN3aXRjaCAoKmJ1ZmZl
cikgeworICAgIGNhc2UgJysnOgorICAgIGNhc2UgJy0nOgorICAgIGNhc2UgMHgyMjEyOiB7Cisg
ICAgICAgIC8vIFRpbWVab25lVVRDT2Zmc2V0TmFtZSBpcyB0aGUgc2FtZSB0byBUaW1lWm9uZU51
bWVyaWNVVENPZmZzZXQuCisgICAgICAgIGF1dG8gb2Zmc2V0ID0gcGFyc2VUaW1lWm9uZU51bWVy
aWNVVENPZmZzZXQoYnVmZmVyKTsKKyAgICAgICAgaWYgKCFvZmZzZXQpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoKmJ1ZmZlciAhPSAnXScpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBidWZmZXIuYWR2YW5jZSgp
OworICAgICAgICByZXR1cm4gb2Zmc2V0LnZhbHVlKCk7CisgICAgfQorICAgIGNhc2UgJ0UnOiB7
CisgICAgICAgIC8vICJFdGMvR01UKzIwIiBhbmQgIl0iID0+IGxlbmd0aCBpcyAxMS4KKyAgICAg
ICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA+PSAxMSkgeworICAgICAgICAgICAgaWYg
KGJ1ZmZlclswXSA9PSAnRScgJiYgYnVmZmVyWzFdID09ICd0JyAmJiBidWZmZXJbMl0gPT0gJ2Mn
ICYmIGJ1ZmZlclszXSA9PSAnLycgJiYgYnVmZmVyWzRdID09ICdHJyAmJiBidWZmZXJbNV0gPT0g
J00nICYmIGJ1ZmZlcls2XSA9PSAnVCcpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHNpZ25DaGFy
YWN0ZXIgPSBidWZmZXJbN107CisgICAgICAgICAgICAgICAgLy8gTm90IGluY2x1ZGluZyAweDIy
MTIgc2luY2UgaXQgaXMgQVNDSUlTaWduLgorICAgICAgICAgICAgICAgIGlmIChzaWduQ2hhcmFj
dGVyID09ICcrJyB8fCBzaWduQ2hhcmFjdGVyID09ICctJykgeworICAgICAgICAgICAgICAgICAg
ICAvLyBFdGMvR01UKzAxIGlzIFVUQy0wMTowMC4gVGhpcyBzaWduIGlzIGludGVudGlvbmFsbHkg
aW52ZXJ0ZWQuCisgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9y
Zy93aWtpL1R6X2RhdGFiYXNlI0FyZWEKKyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBmYWN0
b3IgPSBzaWduQ2hhcmFjdGVyID09ICcrJyA/IC0xIDogMTsKKyAgICAgICAgICAgICAgICAgICAg
aW50NjRfdCBob3VyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBmaXJzdEhvdXJDaGFy
YWN0ZXIgPSBidWZmZXJbOF07CisgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdEhvdXJDaGFy
YWN0ZXIgPj0gJzAnICYmIGZpcnN0SG91ckNoYXJhY3RlciA8PSAnMicpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGF1dG8gc2Vjb25kSG91ckNoYXJhY3RlciA9IGJ1ZmZlcls5XTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoc2Vjb25kSG91ckNoYXJhY3Rlcikp
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBob3VyID0gKHNlY29uZEhvdXJDaGFyYWN0
ZXIgLSAnMCcpICsgMTAgKiAoZmlyc3RIb3VyQ2hhcmFjdGVyIC0gJzAnKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBpZiAoaG91ciA8IDI0ICYmIGJ1ZmZlclsxMF0gPT0gJ10nKSB7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hZHZhbmNlQnkoMTEpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gbnNQZXJIb3VyICogaG91ciAqIGZh
Y3RvcjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQorICAgIGRlZmF1
bHQ6IHsKKyAgICAgICAgLy8gVFpMZWFkaW5nQ2hhciA6CisgICAgICAgIC8vICAgICBBbHBoYQor
ICAgICAgICAvLyAgICAgLgorICAgICAgICAvLyAgICAgXworICAgICAgICAvLworICAgICAgICAv
LyBUWkNoYXIgOgorICAgICAgICAvLyAgICAgQWxwaGEKKyAgICAgICAgLy8gICAgIC4KKyAgICAg
ICAgLy8gICAgIC0KKyAgICAgICAgLy8gICAgIF8KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGlt
ZVpvbmVJQU5BTmFtZUNvbXBvbmVudCA6CisgICAgICAgIC8vICAgICBUWkxlYWRpbmdDaGFyIFRa
Q2hhcltvcHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRd
IFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltv
cHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRdIGJ1dCBub3Qgb25lIG9mIC4g
b3IgLi4KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGltZVpvbmVJQU5BTmFtZSA6CisgICAgICAg
IC8vICAgICBUaW1lWm9uZUlBTkFOYW1lQ29tcG9uZW50CisgICAgICAgIC8vICAgICBUaW1lWm9u
ZUlBTkFOYW1lIC8gVGltZVpvbmVJQU5BTmFtZUNvbXBvbmVudAorCisgICAgICAgIHVuc2lnbmVk
IG5hbWVMZW5ndGggPSAwOworICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9
IDA7CisgICAgICAgICAgICBmb3IgKDsgaW5kZXggPCBidWZmZXIubGVuZ3RoUmVtYWluaW5nKCk7
ICsraW5kZXgpIHsKKyAgICAgICAgICAgICAgICBhdXRvIGNoYXJhY3RlciA9IGJ1ZmZlcltpbmRl
eF07CisgICAgICAgICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnXScpCisgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmICghaXNBU0NJSUFscGhhKGNoYXJhY3Rl
cikgJiYgY2hhcmFjdGVyICE9ICcuJyAmJiBjaGFyYWN0ZXIgIT0gJ18nICYmIGNoYXJhY3RlciAh
PSAnLScgJiYgY2hhcmFjdGVyICE9ICcvJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIG5hbWVMZW5ndGgg
PSBpbmRleDsKKyAgICAgICAgfQorCisgICAgICAgIGF1dG8gaXNWYWxpZENvbXBvbmVudCA9IFsm
XSh1bnNpZ25lZCBzdGFydCwgdW5zaWduZWQgZW5kKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBj
b21wb25lbnRMZW5ndGggPSBlbmQgLSBzdGFydDsKKyAgICAgICAgICAgIGlmICghY29tcG9uZW50
TGVuZ3RoKQorICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChj
b21wb25lbnRMZW5ndGggPiAxNCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAg
ICAgICAgICBpZiAoY29tcG9uZW50TGVuZ3RoID09IDEgJiYgYnVmZmVyW3N0YXJ0XSA9PSAnLicp
CisgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKGNvbXBvbmVu
dExlbmd0aCA9PSAyICYmIGJ1ZmZlcltzdGFydF0gPT0gJy4nICYmIGJ1ZmZlcltzdGFydCArIDFd
ID09ICcuJykKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfTsKKworICAgICAgICB1bnNpZ25lZCBjdXJyZW50TmFtZUNvbXBv
bmVudFN0YXJ0SW5kZXggPSAwOworICAgICAgICBib29sIGlzTGVhZGluZ0NoYXJhY3RlckluTmFt
ZUNvbXBvbmVudCA9IHRydWU7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRl
eCA8IG5hbWVMZW5ndGg7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGF1dG8gY2hhcmFjdGVyID0g
YnVmZmVyW2luZGV4XTsKKyAgICAgICAgICAgIGlmIChpc0xlYWRpbmdDaGFyYWN0ZXJJbk5hbWVD
b21wb25lbnQpIHsKKyAgICAgICAgICAgICAgICBpZiAoIShpc0FTQ0lJQWxwaGEoY2hhcmFjdGVy
KSB8fCBjaGFyYWN0ZXIgPT0gJy4nIHx8IGNoYXJhY3RlciA9PSAnXycpKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgICAgICAgICAgY3VycmVudE5h
bWVDb21wb25lbnRTdGFydEluZGV4ID0gaW5kZXg7CisgICAgICAgICAgICAgICAgaXNMZWFkaW5n
Q2hhcmFjdGVySW5OYW1lQ29tcG9uZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgY29udGlu
dWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJy8nKSB7
CisgICAgICAgICAgICAgICAgaWYgKCFpc1ZhbGlkQ29tcG9uZW50KGN1cnJlbnROYW1lQ29tcG9u
ZW50U3RhcnRJbmRleCwgaW5kZXgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICAgICAgICAgIGlzTGVhZGluZ0NoYXJhY3RlckluTmFtZUNvbXBvbmVu
dCA9IHRydWU7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAg
ICAgICAgICAgIGlmICghKGlzQVNDSUlBbHBoYShjaGFyYWN0ZXIpIHx8IGNoYXJhY3RlciA9PSAn
LicgfHwgY2hhcmFjdGVyID09ICdfJyB8fCBjaGFyYWN0ZXIgPT0gJy0nKSkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgICAgIGlmIChpc0xlYWRp
bmdDaGFyYWN0ZXJJbk5hbWVDb21wb25lbnQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICBpZiAoIWlzVmFsaWRDb21wb25lbnQoY3VycmVudE5hbWVDb21wb25lbnRT
dGFydEluZGV4LCBuYW1lTGVuZ3RoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICAgICAgVmVjdG9yPExDaGFyPiByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5yZXNlcnZl
SW5pdGlhbENhcGFjaXR5KG5hbWVMZW5ndGgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4
ID0gMDsgaW5kZXggPCBuYW1lTGVuZ3RoOyArK2luZGV4KQorICAgICAgICAgICAgcmVzdWx0LnVu
Y2hlY2tlZEFwcGVuZChidWZmZXJbaW5kZXhdKTsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2VCeShu
YW1lTGVuZ3RoKTsKKworICAgICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoKmJ1ZmZlciAhPSAnXScpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAg
ICAgICByZXR1cm4gV1RGTW92ZShyZXN1bHQpOworICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+Citib29sIGNhbkJlVGltZVpvbmUoY29uc3QgU3RyaW5n
UGFyc2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCBDaGFyYWN0ZXJUeXBlIGNoYXJh
Y3RlcikKK3sKKyAgICBzd2l0Y2ggKGNoYXJhY3RlcikgeworICAgIC8vIFVUQ0Rlc2lnbmF0b3IK
KyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVVRDRGVzaWdu
YXRvcgorICAgIGNhc2UgJ3onOgorICAgIGNhc2UgJ1onOgorICAgIC8vIFRpbWVab25lVVRDT2Zm
c2V0U2lnbgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1U
aW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICBjYXNlICcrJzoKKyAgICBjYXNlICctJzoKKyAgICBj
YXNlIDB4MjIxMjoKKyAgICAvLyBUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICAvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVCcmFja2V0ZWRB
bm5vdGF0aW9uCisgICAgY2FzZSAnWyc6IHsKKyAgICAgICAgLy8gV2Ugc2hvdWxkIHJlamVjdCBj
YWxlbmRhciBleHRlbnNpb24gY2FzZS4KKyAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNwcm9kLUNhbGVuZGFyCisgICAgICAgIC8vIENhbGVuZGFyIDoKKyAgICAg
ICAgLy8gICAgIFt1LWNhPSBDYWxlbmRhck5hbWVdCisgICAgICAgIGlmIChidWZmZXIubGVuZ3Ro
UmVtYWluaW5nKCkgPj0gNiAmJiBidWZmZXJbMV0gPT0gJ3UnICYmIGJ1ZmZlclsyXSA9PSAnLScg
JiYgYnVmZmVyWzNdID09ICdjJyAmJiBidWZmZXJbNF0gPT0gJ2EnICYmIGJ1ZmZlcls1XSA9PSAn
PScpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAg
IH0KKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCit0ZW1w
bGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29y
ZD4gcGFyc2VUaW1lWm9uZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZm
ZXIpCit7CisgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIHN3aXRjaCAoKmJ1ZmZlcikgeworICAgIC8vIFVUQ0Rlc2lnbmF0b3IKKyAgICAv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVVRDRGVzaWduYXRvcgor
ICAgIGNhc2UgJ3onOgorICAgIGNhc2UgJ1onOiB7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7
CisgICAgICAgIGlmICghYnVmZmVyLmF0RW5kKCkgJiYgKmJ1ZmZlciA9PSAnWycpIHsKKyAgICAg
ICAgICAgIGF1dG8gdGltZVpvbmUgPSBwYXJzZVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbihi
dWZmZXIpOworICAgICAgICAgICAgaWYgKCF0aW1lWm9uZSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgICAgICAgICAgcmV0dXJuIFRpbWVab25lUmVjb3JkIHsgdHJ1
ZSwgc3RkOjpudWxsb3B0LCBXVEZNb3ZlKHRpbWVab25lLnZhbHVlKCkpIH07CisgICAgICAgIH0K
KyAgICAgICAgcmV0dXJuIFRpbWVab25lUmVjb3JkIHsgdHJ1ZSwgc3RkOjpudWxsb3B0LCB7IH0g
fTsKKyAgICB9CisgICAgLy8gVGltZVpvbmVVVENPZmZzZXRTaWduCisgICAgLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25lVVRDT2Zmc2V0U2lnbgorICAg
IGNhc2UgJysnOgorICAgIGNhc2UgJy0nOgorICAgIGNhc2UgMHgyMjEyOiB7CisgICAgICAgIGF1
dG8gb2Zmc2V0ID0gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoYnVmZmVyKTsKKyAgICAg
ICAgaWYgKCFvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAg
ICBpZiAoIWJ1ZmZlci5hdEVuZCgpICYmICpidWZmZXIgPT0gJ1snKSB7CisgICAgICAgICAgICBh
dXRvIHRpbWVab25lID0gcGFyc2VUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24oYnVmZmVyKTsK
KyAgICAgICAgICAgIGlmICghdGltZVpvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgICAgIHJldHVybiBUaW1lWm9uZVJlY29yZCB7IGZhbHNlLCBvZmZz
ZXQudmFsdWUoKSwgV1RGTW92ZSh0aW1lWm9uZS52YWx1ZSgpKSB9OworICAgICAgICB9CisgICAg
ICAgIHJldHVybiBUaW1lWm9uZVJlY29yZCB7IGZhbHNlLCBvZmZzZXQudmFsdWUoKSwgeyB9IH07
CisgICAgfQorICAgIC8vIFRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbgorICAgIC8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1UaW1lWm9uZUJyYWNrZXRlZEFubm90
YXRpb24KKyAgICBjYXNlICdbJzogeworICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VUaW1l
Wm9uZUJyYWNrZXRlZEFubm90YXRpb24oYnVmZmVyKTsKKyAgICAgICAgaWYgKCF0aW1lWm9uZSkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBUaW1lWm9u
ZVJlY29yZCB7IGZhbHNlLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUodGltZVpvbmUudmFsdWUoKSkg
fTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFs
PHN0ZDo6dHVwbGU8UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lUmVjb3JkPj4+IHBh
cnNlVGltZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit7Cisg
ICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWUKKyAgICAv
LyBUaW1lIDoKKyAgICAvLyAgICAgVGltZVNwZWMgVGltZVpvbmVbb3B0XQorICAgIGF1dG8gcGxh
aW5UaW1lID0gcGFyc2VUaW1lU3BlYyhidWZmZXIsIFNlY29uZDYwTW9kZTo6QWNjZXB0KTsKKyAg
ICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAo
YnVmZmVyLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZh
bHVlKCksIHN0ZDo6bnVsbG9wdCB9OworICAgIGlmIChjYW5CZVRpbWVab25lKGJ1ZmZlciwgKmJ1
ZmZlcikpIHsKKyAgICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpvbmUoYnVmZmVyKTsK
KyAgICAgICAgaWYgKCF0aW1lWm9uZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZhbHVlKCksIHRpbWVab25l
IH07CisgICAgfQorICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZhbHVlKCksIHN0
ZDo6bnVsbG9wdCB9OworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3NlYy10ZW1wb3JhbC1pc29kYXlzaW5tb250aAoraW5saW5lIHVuc2lnbmVkIGRheXNJbk1vbnRo
KGludDMyX3QgeWVhciwgdW5zaWduZWQgbW9udGgpCit7CisgICAgc3dpdGNoIChtb250aCkgewor
ICAgIGNhc2UgMToKKyAgICBjYXNlIDM6CisgICAgY2FzZSA1OgorICAgIGNhc2UgNzoKKyAgICBj
YXNlIDg6CisgICAgY2FzZSAxMDoKKyAgICBjYXNlIDEyOgorICAgICAgICByZXR1cm4gMzE7Cisg
ICAgY2FzZSA0OgorICAgIGNhc2UgNjoKKyAgICBjYXNlIDk6CisgICAgY2FzZSAxMToKKyAgICAg
ICAgcmV0dXJuIDMwOworICAgIGNhc2UgMjoKKyAgICAgICAgaWYgKGlzTGVhcFllYXIoeWVhcikp
CisgICAgICAgICAgICByZXR1cm4gMjk7CisgICAgICAgIHJldHVybiAyODsKKyAgICB9CisgICAg
cmV0dXJuIDA7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9w
dGlvbmFsPFBsYWluRGF0ZT4gcGFyc2VEYXRlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVy
VHlwZT4mIGJ1ZmZlcikKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3Byb2QtRGF0ZQorICAgIC8vIERhdGUgOgorICAgIC8vICAgICBEYXRlWWVhciAtIERhdGVN
b250aCAtIERhdGVEYXkKKyAgICAvLyAgICAgRGF0ZVllYXIgRGF0ZU1vbnRoIERhdGVEYXkKKyAg
ICAvLworICAgIC8vIERhdGVZZWFyIDoKKyAgICAvLyAgICAgRGF0ZUZvdXJEaWdpdFllYXIKKyAg
ICAvLyAgICAgRGF0ZUV4dGVuZGVkWWVhcgorICAgIC8vCisgICAgLy8gRGF0ZUZvdXJEaWdpdFll
YXIgOgorICAgIC8vICAgICBEaWdpdCBEaWdpdCBEaWdpdCBEaWdpdAorICAgIC8vCisgICAgLy8g
RGF0ZUV4dGVuZGVkWWVhciA6CisgICAgLy8gICAgIFNpZ24gRGlnaXQgRGlnaXQgRGlnaXQgRGln
aXQgRGlnaXQgRGlnaXQKKyAgICAvLworICAgIC8vIERhdGVNb250aCA6CisgICAgLy8gICAgIDAg
Tm9uemVyb0RpZ2l0CisgICAgLy8gICAgIDEwCisgICAgLy8gICAgIDExCisgICAgLy8gICAgIDEy
CisgICAgLy8KKyAgICAvLyBEYXRlRGF5IDoKKyAgICAvLyAgICAgMCBOb256ZXJvRGlnaXQKKyAg
ICAvLyAgICAgMSBEaWdpdAorICAgIC8vICAgICAyIERpZ2l0CisgICAgLy8gICAgIDMwCisgICAg
Ly8gICAgIDMxCisKKyAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBib29sIHNpeERpZ2l0c1llYXIgPSBmYWxzZTsKKyAgICBpbnQgeWVh
ckZhY3RvciA9IDE7CisgICAgaWYgKCpidWZmZXIgPT0gJysnKSB7CisgICAgICAgIGJ1ZmZlci5h
ZHZhbmNlKCk7CisgICAgICAgIHNpeERpZ2l0c1llYXIgPSB0cnVlOworICAgIH0gZWxzZSBpZiAo
KmJ1ZmZlciA9PSAnLScgfHwgKmJ1ZmZlciA9PSAweDIyMTIpIHsKKyAgICAgICAgeWVhckZhY3Rv
ciA9IC0xOworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBzaXhEaWdpdHNZZWFy
ID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKCFpc0FTQ0lJRGlnaXQoKmJ1ZmZlcikpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpbnQzMl90IHllYXIgPSAwOworICAgIGlmIChz
aXhEaWdpdHNZZWFyKSB7CisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCA2
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZm9yICh1bnNpZ25l
ZCBpbmRleCA9IDA7IGluZGV4IDwgNjsgKytpbmRleCkgeworICAgICAgICAgICAgaWYgKCFpc0FT
Q0lJRGlnaXQoYnVmZmVyW2luZGV4XSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgfQorICAgICAgICB5ZWFyID0gcGFyc2VEZWNpbWFsSW50MzIoYnVmZmVy
LnBvc2l0aW9uKCksIDYpICogeWVhckZhY3RvcjsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2VCeSg2
KTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwg
NCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGZvciAodW5zaWdu
ZWQgaW5kZXggPSAwOyBpbmRleCA8IDQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlmICghaXNB
U0NJSURpZ2l0KGJ1ZmZlcltpbmRleF0pKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgIH0KKyAgICAgICAgeWVhciA9IHBhcnNlRGVjaW1hbEludDMyKGJ1ZmZl
ci5wb3NpdGlvbigpLCA0KTsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2VCeSg0KTsKKyAgICB9CisK
KyAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBib29sIHNwbGl0QnlIeXBoZW4gPSBmYWxzZTsKKyAgICBpZiAoKmJ1ZmZlciA9PSAnLScp
IHsKKyAgICAgICAgc3BsaXRCeUh5cGhlbiA9IHRydWU7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNl
KCk7CisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCA1KQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYnVmZmVy
Lmxlbmd0aFJlbWFpbmluZygpIDwgNCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgfQorICAgIC8vIFdlIGVuc3VyZWQgdGhhdCBidWZmZXIgaGFzIGVub3VnaCBsZW5ndGgg
Zm9yIG1vbnRoIGFuZCBkYXkuIFdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGxlbmd0aC4KKworICAg
IHVuc2lnbmVkIG1vbnRoID0gMDsKKyAgICBhdXRvIGZpcnN0TW9udGhDaGFyYWN0ZXIgPSAqYnVm
ZmVyOworICAgIGlmIChmaXJzdE1vbnRoQ2hhcmFjdGVyID09ICcwJyB8fCBmaXJzdE1vbnRoQ2hh
cmFjdGVyID09ICcxJykgeworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBhdXRv
IHNlY29uZE1vbnRoQ2hhcmFjdGVyID0gKmJ1ZmZlcjsKKyAgICAgICAgaWYgKCFpc0FTQ0lJRGln
aXQoc2Vjb25kTW9udGhDaGFyYWN0ZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKyAgICAgICAgbW9udGggPSAoc2Vjb25kTW9udGhDaGFyYWN0ZXIgLSAnMCcpICsgMTAgKiAo
Zmlyc3RNb250aENoYXJhY3RlciAtICcwJyk7CisgICAgICAgIGlmICghbW9udGggfHwgbW9udGgg
PiAxMikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGJ1ZmZlci5h
ZHZhbmNlKCk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAg
ICBpZiAoc3BsaXRCeUh5cGhlbikgeworICAgICAgICBpZiAoKmJ1ZmZlciA9PSAnLScpCisgICAg
ICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworICAgIH0KKworICAgIHVuc2lnbmVkIGRheSA9IDA7CisgICAgYXV0
byBmaXJzdERheUNoYXJhY3RlciA9ICpidWZmZXI7CisgICAgaWYgKGZpcnN0RGF5Q2hhcmFjdGVy
ID49ICcwJyAmJiBmaXJzdERheUNoYXJhY3RlciA8PSAnMycpIHsKKyAgICAgICAgYnVmZmVyLmFk
dmFuY2UoKTsKKyAgICAgICAgYXV0byBzZWNvbmREYXlDaGFyYWN0ZXIgPSAqYnVmZmVyOworICAg
ICAgICBpZiAoIWlzQVNDSUlEaWdpdChzZWNvbmREYXlDaGFyYWN0ZXIpKQorICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZGF5ID0gKHNlY29uZERheUNoYXJhY3RlciAt
ICcwJykgKyAxMCAqIChmaXJzdERheUNoYXJhY3RlciAtICcwJyk7CisgICAgICAgIGlmICghZGF5
IHx8IGRheSA+IGRheXNJbk1vbnRoKHllYXIsIG1vbnRoKSkKKyAgICAgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgfSBlbHNlCisgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gUGxhaW5EYXRlKHllYXIsIG1v
bnRoLCBkYXkpOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpv
cHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRpbWU+LCBz
dGQ6Om9wdGlvbmFsPFRpbWVab25lUmVjb3JkPj4+IHBhcnNlRGF0ZVRpbWUoU3RyaW5nUGFyc2lu
Z0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1EYXRlVGltZQorICAgIC8vIERhdGVUaW1lIDoKKyAg
ICAvLyAgICAgRGF0ZSBUaW1lU3BlY1NlcGFyYXRvcltvcHRdIFRpbWVab25lW29wdF0KKyAgICAv
LworICAgIC8vIFRpbWVTcGVjU2VwYXJhdG9yIDoKKyAgICAvLyAgICAgRGF0ZVRpbWVTZXBhcmF0
b3IgVGltZVNwZWMKKyAgICBhdXRvIHBsYWluRGF0ZSA9IHBhcnNlRGF0ZShidWZmZXIpOworICAg
IGlmICghcGxhaW5EYXRlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmIChi
dWZmZXIuYXRFbmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpbkRhdGUudmFs
dWUoKSwgc3RkOjpudWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKKworICAgIGlmICgqYnVmZmVyID09
ICcgJyB8fCAqYnVmZmVyID09ICdUJyB8fCAqYnVmZmVyID09ICd0JykgeworICAgICAgICBidWZm
ZXIuYWR2YW5jZSgpOworICAgICAgICBhdXRvIHBsYWluVGltZUFuZFRpbWVab25lID0gcGFyc2VU
aW1lKGJ1ZmZlcik7CisgICAgICAgIGlmICghcGxhaW5UaW1lQW5kVGltZVpvbmUpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBhdXRvIFtwbGFpblRpbWUsIHRpbWVa
b25lXSA9IHBsYWluVGltZUFuZFRpbWVab25lLnZhbHVlKCk7CisgICAgICAgIHJldHVybiBzdGQ6
OnR1cGxlIHsgcGxhaW5EYXRlLnZhbHVlKCksIHBsYWluVGltZSwgdGltZVpvbmUgfTsKKyAgICB9
CisKKyAgICBpZiAoY2FuQmVUaW1lWm9uZShidWZmZXIsICpidWZmZXIpKSB7CisgICAgICAgIGF1
dG8gdGltZVpvbmUgPSBwYXJzZVRpbWVab25lKGJ1ZmZlcik7CisgICAgICAgIGlmICghdGltZVpv
bmUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3Rk
Ojp0dXBsZSB7IHBsYWluRGF0ZS52YWx1ZSgpLCBzdGQ6Om51bGxvcHQsIHRpbWVab25lIH07Cisg
ICAgfQorCisgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpbkRhdGUudmFsdWUoKSwgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKK30KKworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBs
YWluVGltZSwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBwYXJzZVRpbWUoU3RyaW5n
VmlldyBzdHJpbmcpCit7CisgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJp
bmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5UaW1l
LCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lUmVjb3JkPj4+IHsKKyAgICAgICAgYXV0byByZXN1bHQg
PSBwYXJzZVRpbWUoYnVmZmVyKTsKKyAgICAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAg
fSk7Cit9CisKK3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9u
YWw8UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBwYXJzZURhdGVU
aW1lKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBh
cnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxl
PFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRpbWU+LCBzdGQ6Om9wdGlvbmFsPFRpbWVa
b25lUmVjb3JkPj4+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBwYXJzZURhdGVUaW1lKGJ1ZmZl
cik7CisgICAgICAgIGlmICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0pOwogfQogCkBAIC0zODIs
MTMgKzg5MiwxOSBAQCBTdHJpbmcgZm9ybWF0VGltZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCBv
ZmZzZXQpCiAgICAgaWYgKG5hbm9zZWNvbmRzKSB7CiAgICAgICAgIC8vIFNpbmNlIG5zUGVyU2Vj
b25kIGlzIDEwMDAwMDAwMDAsIHN0cmluZ2lmaWVkIG5hbm9zZWNvbmRzIHRha2VzIGF0IG1vc3Qg
OSBjaGFyYWN0ZXJzICg5OTk5OTk5OTkpLgogICAgICAgICBhdXRvIGZyYWN0aW9uID0gV1RGOjpu
dW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwgOT4+KG5hbm9zZWNvbmRzKTsKLSAg
ICAgICAgdW5zaWduZWQgaW5kZXggPSAwOwogICAgICAgICB1bnNpZ25lZCBwYWRkaW5nTGVuZ3Ro
ID0gOSAtIGZyYWN0aW9uLnNpemUoKTsKLSAgICAgICAgZm9yICg7IGluZGV4IDwgZnJhY3Rpb24u
c2l6ZSgpOyArK2luZGV4KSB7Ci0gICAgICAgICAgICBpZiAoZnJhY3Rpb25baW5kZXhdID09ICcw
JykKKyAgICAgICAgdW5zaWduZWQgaW5kZXggPSBmcmFjdGlvbi5zaXplKCk7CisgICAgICAgIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHZhbGlkTGVuZ3RoOworICAgICAgICB3aGlsZSAoaW5kZXgt
LSkgeworICAgICAgICAgICAgaWYgKGZyYWN0aW9uW2luZGV4XSAhPSAnMCcpIHsKKyAgICAgICAg
ICAgICAgICB2YWxpZExlbmd0aCA9IGluZGV4ICsgMTsKICAgICAgICAgICAgICAgICBicmVhazsK
KyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBmcmFjdGlvbi5yZXNpemUoaW5kZXgp
OworICAgICAgICBpZiAodmFsaWRMZW5ndGgpCisgICAgICAgICAgICBmcmFjdGlvbi5yZXNpemUo
dmFsaWRMZW5ndGgudmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZyYWN0aW9u
LmNsZWFyKCk7CiAgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG5lZ2F0aXZlID8gJy0nIDogJysn
LCBwYWQoJzAnLCAyLCBob3VycyksICc6JywgcGFkKCcwJywgMiwgbWludXRlcyksICc6JywgcGFk
KCcwJywgMiwgc2Vjb25kcyksICcuJywgcGFkKCcwJywgcGFkZGluZ0xlbmd0aCwgZW1wdHlTdHJp
bmcoKSksIGZyYWN0aW9uKTsKICAgICB9CiAgICAgaWYgKHNlY29uZHMpCkBAIC0zOTYsNSArOTEy
LDU4IEBAIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNldFN0cmluZyhpbnQ2NF90IG9mZnNldCkK
ICAgICByZXR1cm4gbWFrZVN0cmluZyhuZWdhdGl2ZSA/ICctJyA6ICcrJywgcGFkKCcwJywgMiwg
aG91cnMpLCAnOicsIHBhZCgnMCcsIDIsIG1pbnV0ZXMpKTsKIH0KIAorU3RyaW5nIHRlbXBvcmFs
VGltZVRvU3RyaW5nKFBsYWluVGltZSBwbGFpblRpbWUsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1
bnNpZ25lZD4gcHJlY2lzaW9uKQoreworICAgIGF1dG8gW3ByZWNpc2lvblR5cGUsIHByZWNpc2lv
blZhbHVlXSA9IHByZWNpc2lvbjsKKyAgICBBU1NFUlQocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNp
b246OkF1dG8gfHwgcHJlY2lzaW9uVmFsdWUgPCAxMCk7CisgICAgaWYgKHByZWNpc2lvblR5cGUg
PT0gUHJlY2lzaW9uOjpNaW51dGUpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcs
IDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUo
KSkpOworCisgICAgaW50NjRfdCBmcmFjdGlvbk5hbm9zZWNvbmRzID0gc3RhdGljX2Nhc3Q8aW50
NjRfdD4ocGxhaW5UaW1lLm1pbGxpc2Vjb25kKCkpICogbnNQZXJNaWxsaXNlY29uZCArIHN0YXRp
Y19jYXN0PGludDY0X3Q+KHBsYWluVGltZS5taWNyb3NlY29uZCgpKSAqIG5zUGVyTWljcm9zZWNv
bmQgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihwbGFpblRpbWUubmFub3NlY29uZCgpKTsKKyAgICBp
ZiAocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8pIHsKKyAgICAgICAgaWYgKCFmcmFj
dGlvbk5hbm9zZWNvbmRzKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywg
MiwgcGxhaW5UaW1lLmhvdXIoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLm1pbnV0ZSgp
KSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUuc2Vjb25kKCkpKTsKKyAgICAgICAgYXV0byBm
cmFjdGlvbiA9IFdURjo6bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TENoYXIsIDk+Pihm
cmFjdGlvbk5hbm9zZWNvbmRzKTsKKyAgICAgICAgdW5zaWduZWQgcGFkZGluZ0xlbmd0aCA9IDkg
LSBmcmFjdGlvbi5zaXplKCk7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gZnJhY3Rpb24uc2l6
ZSgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2YWxpZExlbmd0aDsKKyAgICAg
ICAgd2hpbGUgKGluZGV4LS0pIHsKKyAgICAgICAgICAgIGlmIChmcmFjdGlvbltpbmRleF0gIT0g
JzAnKSB7CisgICAgICAgICAgICAgICAgdmFsaWRMZW5ndGggPSBpbmRleCArIDE7CisgICAgICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZh
bGlkTGVuZ3RoKQorICAgICAgICAgICAgZnJhY3Rpb24ucmVzaXplKHZhbGlkTGVuZ3RoLnZhbHVl
KCkpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBmcmFjdGlvbi5jbGVhcigpOworICAgICAg
ICByZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBwbGFpblRpbWUuaG91cigpKSwgJzonLCBw
YWQoJzAnLCAyLCBwbGFpblRpbWUubWludXRlKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGlt
ZS5zZWNvbmQoKSksICcuJywgcGFkKCcwJywgcGFkZGluZ0xlbmd0aCwgZW1wdHlTdHJpbmcoKSks
IGZyYWN0aW9uKTsKKyAgICB9CisgICAgaWYgKCFwcmVjaXNpb25WYWx1ZSkKKyAgICAgICAgcmV0
dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgMiwgcGxhaW5UaW1lLmhvdXIoKSksICc6JywgcGFkKCcw
JywgMiwgcGxhaW5UaW1lLm1pbnV0ZSgpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUuc2Vj
b25kKCkpKTsKKyAgICBhdXRvIGZyYWN0aW9uID0gV1RGOjpudW1iZXJUb1N0cmluZ1Vuc2lnbmVk
PFZlY3RvcjxMQ2hhciwgOT4+KGZyYWN0aW9uTmFub3NlY29uZHMpOworICAgIHVuc2lnbmVkIHBh
ZGRpbmdMZW5ndGggPSA5IC0gZnJhY3Rpb24uc2l6ZSgpOworICAgIHBhZGRpbmdMZW5ndGggPSBz
dGQ6Om1pbihwYWRkaW5nTGVuZ3RoLCBwcmVjaXNpb25WYWx1ZSk7CisgICAgcHJlY2lzaW9uVmFs
dWUgLT0gcGFkZGluZ0xlbmd0aDsKKyAgICBmcmFjdGlvbi5yZXNpemUocHJlY2lzaW9uVmFsdWUp
OworICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAn
OicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSksICc6JywgcGFkKCcwJywgMiwgcGxh
aW5UaW1lLnNlY29uZCgpKSwgJy4nLCBwYWQoJzAnLCBwYWRkaW5nTGVuZ3RoLCBlbXB0eVN0cmlu
ZygpKSwgZnJhY3Rpb24pOworfQorCisvLyBJc1ZhbGlkRHVyYXRpb24gKCB5ZWFycywgbW9udGhz
LCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWlj
cm9zZWNvbmRzLCBuYW5vc2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZHVyYXRpb24KK2Jvb2wgaXNWYWxpZER1cmF0aW9u
KGNvbnN0IER1cmF0aW9uJiBkdXJhdGlvbikKK3sKKyAgICBpbnQgc2lnbiA9IDA7CisgICAgZm9y
IChhdXRvIHZhbHVlIDogZHVyYXRpb24pIHsKKyAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZh
bHVlKSB8fCAodmFsdWUgPCAwICYmIHNpZ24gPiAwKSB8fCAodmFsdWUgPiAwICYmIHNpZ24gPCAw
KSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoIXNpZ24gJiYgdmFs
dWUpCisgICAgICAgICAgICBzaWduID0gdmFsdWUgPiAwID8gMSA6IC0xOworICAgIH0KKworICAg
IHJldHVybiB0cnVlOworfQorCiB9IC8vIG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAppbmRleCA2NzY4OWQx
YzI0NWFmZWUyYWMyNjk1OWMyOTcwZGQ0OTYzYWUzMDAyLi4xM2JhMGU2NTJmYmVmNTc0YzYwY2Mw
MGFlN2VjYWExZmE4MzlkMThkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JU084NjAxLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYw
MS5oCkBAIC0xLDUgKzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVy
YWN0aXZlIEVudGVydGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMzIgKzI2LDEzOCBAQAog
CiAjcHJhZ21hIG9uY2UKIAorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJUZW1w
b3JhbE9iamVjdC5oIgogCiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBJU084NjAxIHsKIAot
c3RydWN0IER1cmF0aW9uIHsKK2NsYXNzIER1cmF0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRChEdXJhdGlvbik7CitwdWJsaWM6CiAgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBz
dGQ6OmFycmF5PGRvdWJsZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPjo6Y29uc3RfaXRlcmF0b3I7
CiAKKyAgICBEdXJhdGlvbigpID0gZGVmYXVsdDsKKyAgICBEdXJhdGlvbihkb3VibGUgeWVhcnMs
IGRvdWJsZSBtb250aHMsIGRvdWJsZSB3ZWVrcywgZG91YmxlIGRheXMsIGRvdWJsZSBob3Vycywg
ZG91YmxlIG1pbnV0ZXMsIGRvdWJsZSBzZWNvbmRzLCBkb3VibGUgbWlsbGlzZWNvbmRzLCBkb3Vi
bGUgbWljcm9zZWNvbmRzLCBkb3VibGUgbmFub3NlY29uZHMpCisgICAgICAgIDogbV9kYXRhIHsK
KyAgICAgICAgICAgIHllYXJzLAorICAgICAgICAgICAgbW9udGhzLAorICAgICAgICAgICAgd2Vl
a3MsCisgICAgICAgICAgICBkYXlzLAorICAgICAgICAgICAgaG91cnMsCisgICAgICAgICAgICBt
aW51dGVzLAorICAgICAgICAgICAgc2Vjb25kcywKKyAgICAgICAgICAgIG1pbGxpc2Vjb25kcywK
KyAgICAgICAgICAgIG1pY3Jvc2Vjb25kcywKKyAgICAgICAgICAgIG5hbm9zZWNvbmRzLAorICAg
ICAgICB9CisgICAgeyB9CisKICNkZWZpbmUgSlNDX0RFRklORV9JU084NjAxX0RVUkFUSU9OX0ZJ
RUxEKG5hbWUsIGNhcGl0YWxpemVkTmFtZSkgXAotICAgIGRvdWJsZSBuYW1lIyNzKCkgY29uc3Qg
eyByZXR1cm4gZGF0YVtzdGF0aWNfY2FzdDx1aW50OF90PihUZW1wb3JhbFVuaXQ6OmNhcGl0YWxp
emVkTmFtZSldOyB9IFwKLSAgICB2b2lkIHNldCMjY2FwaXRhbGl6ZWROYW1lIyNzKGRvdWJsZSB2
YWx1ZSkgeyBkYXRhW3N0YXRpY19jYXN0PHVpbnQ4X3Q+KFRlbXBvcmFsVW5pdDo6Y2FwaXRhbGl6
ZWROYW1lKV0gPSB2YWx1ZTsgfQorICAgIGRvdWJsZSBuYW1lIyNzKCkgY29uc3QgeyByZXR1cm4g
bV9kYXRhW3N0YXRpY19jYXN0PHVpbnQ4X3Q+KFRlbXBvcmFsVW5pdDo6Y2FwaXRhbGl6ZWROYW1l
KV07IH0gXAorICAgIHZvaWQgc2V0IyNjYXBpdGFsaXplZE5hbWUjI3MoZG91YmxlIHZhbHVlKSB7
IG1fZGF0YVtzdGF0aWNfY2FzdDx1aW50OF90PihUZW1wb3JhbFVuaXQ6OmNhcGl0YWxpemVkTmFt
ZSldID0gdmFsdWU7IH0KICAgICBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX0RFRklORV9JU084NjAx
X0RVUkFUSU9OX0ZJRUxEKTsKICN1bmRlZiBKU0NfREVGSU5FX0lTTzg2MDFfRFVSQVRJT05fRklF
TEQKIAotICAgIGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gZGF0YVtpXTsg
fQotICAgIGNvbnN0IGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4g
ZGF0YVtpXTsgfQotICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gZGF0
YS5iZWdpbigpOyB9Ci0gICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gZGF0
YS5lbmQoKTsgfQotICAgIHZvaWQgY2xlYXIoKSB7IGRhdGEuZmlsbCgwKTsgfQorICAgIGRvdWJs
ZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gbV9kYXRhW2ldOyB9CisgICAgY29uc3Qg
ZG91YmxlJiBvcGVyYXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX2RhdGFbaV07IH0K
KyAgICBjb25zdF9pdGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5iZWdpbigp
OyB9CisgICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmVuZCgp
OyB9CisgICAgdm9pZCBjbGVhcigpIHsgbV9kYXRhLmZpbGwoMCk7IH0KKworICAgIER1cmF0aW9u
IG9wZXJhdG9yLSgpIGNvbnN0CisgICAgeworICAgICAgICBEdXJhdGlvbiByZXN1bHQoKnRoaXMp
OworICAgICAgICBmb3IgKGF1dG8mIHZhbHVlIDogcmVzdWx0Lm1fZGF0YSkKKyAgICAgICAgICAg
IHZhbHVlID0gLXZhbHVlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0
ZToKKyAgICBzdGQ6OmFycmF5PGRvdWJsZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPiBtX2RhdGEg
eyB9OworfTsKKworY2xhc3MgUGxhaW5UaW1lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRF
RChQbGFpblRpbWUpOworcHVibGljOgorICAgIFBsYWluVGltZSgpID0gZGVmYXVsdDsKKyAgICBQ
bGFpblRpbWUodW5zaWduZWQgaG91ciwgdW5zaWduZWQgbWludXRlLCB1bnNpZ25lZCBzZWNvbmQs
IHVuc2lnbmVkIG1pbGxpc2Vjb25kLCB1bnNpZ25lZCBtaWNyb3NlY29uZCwgdW5zaWduZWQgbmFu
b3NlY29uZCkKKyAgICAgICAgOiBtX2hvdXIoaG91cikKKyAgICAgICAgLCBtX21pbnV0ZShtaW51
dGUpCisgICAgICAgICwgbV9zZWNvbmQoc2Vjb25kKQorICAgICAgICAsIG1fbWlsbGlzZWNvbmQo
bWlsbGlzZWNvbmQpCisgICAgICAgICwgbV9taWNyb3NlY29uZChtaWNyb3NlY29uZCkKKyAgICAg
ICAgLCBtX25hbm9zZWNvbmQobmFub3NlY29uZCkKKyAgICB7IH0KKworI2RlZmluZSBKU0NfREVG
SU5FX0lTTzg2MDFfUExBSU5fVElNRV9GSUVMRChuYW1lLCBjYXBpdGFsaXplZE5hbWUpIFwKKyAg
ICB1bnNpZ25lZCBuYW1lKCkgY29uc3QgeyByZXR1cm4gbV8jI25hbWU7IH0KKyAgICBKU0NfVEVN
UE9SQUxfUExBSU5fVElNRV9VTklUUyhKU0NfREVGSU5FX0lTTzg2MDFfUExBSU5fVElNRV9GSUVM
RCk7CisjdW5kZWYgSlNDX0RFRklORV9JU084NjAxX0RVUkFUSU9OX0ZJRUxECisKKyAgICBmcmll
bmQgYm9vbCBvcGVyYXRvcj09KFBsYWluVGltZSBsaHMsIFBsYWluVGltZSByaHMpCisgICAgewor
ICAgICAgICByZXR1cm4gbGhzLm1faG91ciA9PSByaHMubV9ob3VyCisgICAgICAgICAgICAmJiBs
aHMubV9taW51dGUgPT0gcmhzLm1fbWludXRlCisgICAgICAgICAgICAmJiBsaHMubV9zZWNvbmQg
PT0gcmhzLm1fc2Vjb25kCisgICAgICAgICAgICAmJiBsaHMubV9taWxsaXNlY29uZCA9PSByaHMu
bV9taWxsaXNlY29uZAorICAgICAgICAgICAgJiYgbGhzLm1fbWljcm9zZWNvbmQgPT0gcmhzLm1f
bWljcm9zZWNvbmQKKyAgICAgICAgICAgICYmIGxocy5tX25hbm9zZWNvbmQgPT0gcmhzLm1fbmFu
b3NlY29uZDsKKyAgICB9CiAKLSAgICBzdGQ6OmFycmF5PGRvdWJsZSwgbnVtYmVyT2ZUZW1wb3Jh
bFVuaXRzPiBkYXRhIHsgfTsKK3ByaXZhdGU6CisgICAgdWludDhfdCBtX2hvdXIgeyAwIH07Cisg
ICAgdWludDhfdCBtX21pbnV0ZSB7IDAgfTsKKyAgICB1aW50OF90IG1fc2Vjb25kIHsgMCB9Owor
ICAgIHVpbnQxNl90IG1fbWlsbGlzZWNvbmQgeyAwIH07CisgICAgdWludDE2X3QgbV9taWNyb3Nl
Y29uZCB7IDAgfTsKKyAgICB1aW50MTZfdCBtX25hbm9zZWNvbmQgeyAwIH07CiB9OwogCisvLyBO
b3RlIHRoYXQgUGxhaW5EYXRlIGRvZXMgbm90IGluY2x1ZGUgd2VlayB1bml0LgorLy8geWVhciBj
YW4gYmUgbmVnYXRpdmUuIEFuZCBtb250aCBhbmQgZGF5IHN0YXJ0cyB3aXRoIDEuCitjbGFzcyBQ
bGFpbkRhdGUgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEKFBsYWluRGF0ZSk7CitwdWJs
aWM6CisgICAgUGxhaW5EYXRlKCkgPSBkZWZhdWx0OworICAgIFBsYWluRGF0ZShpbnQzMl90IHll
YXIsIHVuc2lnbmVkIG1vbnRoLCB1bnNpZ25lZCBkYXkpCisgICAgICAgIDogbV95ZWFyKHllYXIp
CisgICAgICAgICwgbV9tb250aChtb250aCkKKyAgICAgICAgLCBtX2RheShkYXkpCisgICAgewor
ICAgIH0KKworICAgIGludDMyX3QgeWVhcigpIGNvbnN0IHsgcmV0dXJuIG1feWVhcjsgfQorICAg
IHVpbnQ4X3QgbW9udGgoKSBjb25zdCB7IHJldHVybiBtX21vbnRoOyB9CisgICAgdWludDhfdCBk
YXkoKSBjb25zdCB7IHJldHVybiBtX2RheTsgfQorCitwcml2YXRlOgorICAgIGludDMyX3QgbV95
ZWFyIHsgMCB9OworICAgIHVpbnQ4X3QgbV9tb250aCB7IDEgfTsKKyAgICB1aW50OF90IG1fZGF5
IHsgMSB9OworfTsKKwordXNpbmcgVGltZVpvbmUgPSBWYXJpYW50PFRpbWVab25lSUQsIGludDY0
X3Q+OworCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3Jh
bC1wYXJzZXRlbXBvcmFsdGltZXpvbmVzdHJpbmcKKy8vIFJlY29yZCB7IFtbWl1dLCBbW09mZnNl
dFN0cmluZ11dLCBbW05hbWVdXSB9CitzdHJ1Y3QgVGltZVpvbmVSZWNvcmQgeworICAgIGJvb2wg
bV96IHsgZmFsc2UgfTsKKyAgICBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IG1fb2Zmc2V0OworICAg
IFZhcmlhbnQ8VmVjdG9yPExDaGFyPiwgaW50NjRfdD4gbV9uYW1lT3JPZmZzZXQ7Cit9OworCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3N1cC1pc3ZhbGlkdGltZXpvbmVu
YW1lCitzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkRm9yVGltZVpvbmVOYW1lKFN0cmluZ1Zp
ZXcpOwogc3RkOjpvcHRpb25hbDxEdXJhdGlvbj4gcGFyc2VEdXJhdGlvbihTdHJpbmdWaWV3KTsK
IHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3Ry
aW5nVmlldyk7CitlbnVtIGNsYXNzIFZhbGlkYXRlVGltZVpvbmVJRCB7IFllcywgTm8gfTsKK3N0
ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpblRpbWUsIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVS
ZWNvcmQ+Pj4gcGFyc2VUaW1lKFN0cmluZ1ZpZXcpOworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxl
PFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRpbWU+LCBzdGQ6Om9wdGlvbmFsPFRpbWVa
b25lUmVjb3JkPj4+IHBhcnNlRGF0ZVRpbWUoU3RyaW5nVmlldyk7CiBTdHJpbmcgZm9ybWF0VGlt
ZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCk7CitTdHJpbmcgdGVtcG9yYWxUaW1lVG9TdHJpbmco
UGxhaW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbik7CisK
K2Jvb2wgaXNWYWxpZER1cmF0aW9uKGNvbnN0IER1cmF0aW9uJik7CiAKIH0gLy8gbmFtZXNwYWNl
IElTTzg2MDEKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsT2JqZWN0LmNwcAppbmRleCA4ZDhlOTZlNzc1NWQ1OGFiODQyZTM2MGNmYWZiMTlk
MDBmZTI2MjcwLi43OTc1OWJjNWZhNDRmZTI5NzcyNjA1ZjU2YTVjYTliMDg5NTYzMWMzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcApAQCAtMTgzOSw2
ICsxODM5LDIzIEBAIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlVGltZVpvbmVz
KCkKICAgICByZXR1cm4gYXZhaWxhYmxlVGltZVpvbmVzOwogfQogCitUaW1lWm9uZUlEIHV0Y1Rp
bWVab25lSURTdG9yYWdlIHsgc3RkOjpudW1lcmljX2xpbWl0czxUaW1lWm9uZUlEPjo6bWF4KCkg
fTsKK1RpbWVab25lSUQgdXRjVGltZVpvbmVJRFNsb3coKQoreworICAgIHN0YXRpYyBzdGQ6Om9u
Y2VfZmxhZyBpbml0aWFsaXplT25jZTsKKyAgICBzdGQ6OmNhbGxfb25jZShpbml0aWFsaXplT25j
ZSwgWyZdIHsKKyAgICAgICAgY29uc3QgYXV0byYgdGltZVpvbmVzID0gaW50bEF2YWlsYWJsZVRp
bWVab25lcygpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB0aW1l
Wm9uZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgICAgICBpZiAodGltZVpvbmVzW2luZGV4
XSA9PSAiVVRDIl9zKSB7CisgICAgICAgICAgICAgICAgdXRjVGltZVpvbmVJRFN0b3JhZ2UgPSBp
bmRleDsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICB9KTsKKyAgICByZXR1
cm4gdXRjVGltZVpvbmVJRFN0b3JhZ2U7Cit9CisKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC1pbnRsLWVudW1lcmF0aW9uLyNzZWMtYXZhaWxhYmxldGltZXpvbmVzCiBzdGF0aWMgSlNBcnJh
eSogYXZhaWxhYmxlVGltZVpvbmVzKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QpCiB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKaW5kZXggOTZkMjE4NTVj
OWNhNmYzZTMxOTZiNzRlYTAyZDBlZDUzZDM5YzEzMC4uYjNlMTVkMzBiYTkzYjViMjA1YjU3M2Uw
ODllYmJiZjM5Y2UyMTEzYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuaApAQCAtMTE3LDYgKzExNywxNiBAQCBpbmxpbmUgQ2FsZW5kYXJJRCBpc284NjAxQ2Fs
ZW5kYXJJRCgpCiB1c2luZyBUaW1lWm9uZUlEID0gdW5zaWduZWQ7CiBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgaW50bEF2YWlsYWJsZVRpbWVab25lcygpOwogCitleHRlcm4gVGltZVpvbmVJRCB1dGNU
aW1lWm9uZUlEU3RvcmFnZTsKK1RpbWVab25lSUQgdXRjVGltZVpvbmVJRFNsb3coKTsKK2lubGlu
ZSBDYWxlbmRhcklEIHV0Y1RpbWVab25lSUQoKQoreworICAgIHVuc2lnbmVkIHZhbHVlID0gdXRj
VGltZVpvbmVJRFN0b3JhZ2U7CisgICAgaWYgKHZhbHVlID09IHN0ZDo6bnVtZXJpY19saW1pdHM8
VGltZVpvbmVJRD46Om1heCgpKQorICAgICAgICByZXR1cm4gdXRjVGltZVpvbmVJRFNsb3coKTsK
KyAgICByZXR1cm4gdmFsdWU7Cit9CisKIFRyaVN0YXRlIGludGxCb29sZWFuT3B0aW9uKEpTR2xv
YmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSk7CiBTdHJpbmcgaW50
bFN0cmluZ09wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0
eU5hbWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gdmFsdWVzLCBjb25zdCBj
aGFyKiBub3RGb3VuZCwgY29uc3QgY2hhciogZmFsbGJhY2spOwogdW5zaWduZWQgaW50bE51bWJl
ck9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBvcHRpb25zLCBQcm9wZXJ0eU5hbWUs
IHVuc2lnbmVkIG1pbmltdW0sIHVuc2lnbmVkIG1heGltdW0sIHVuc2lnbmVkIGZhbGxiYWNrKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcApp
bmRleCBiMmZkZjQ2NDM2ZTg3NzYwNDkwNjQ4YWZkMDE0MWM4MjIzNjE0OTUxLi42ZGE0NTg4MzQx
YTAxNmU5MWFiOTEzNjkwMzZmMGM5NmRhNDE0ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwCkBAIC0yMDYsNiArMjA2LDggQEAKICNp
bmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblBy
b3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsT2JqZWN0LmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpblRpbWUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgog
I2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25l
UHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVk1UcmFwc0lubGluZXMuaCIKQEAgLTEyMzIsNiArMTIz
NCwxMyBAQCBjYXBpdGFsTmFtZSAjIyBDb25zdHJ1Y3RvciogbG93ZXJOYW1lICMjIENvbnN0cnVj
dG9yID0gZmVhdHVyZUZsYWcgPyBjYXBpdGFsTmFtZQogICAgICAgICAgICAgICAgIGluaXQuc2V0
KFRlbXBvcmFsRHVyYXRpb246OmNyZWF0ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3Qs
IGR1cmF0aW9uUHJvdG90eXBlKSk7CiAgICAgICAgICAgICB9KTsKIAorICAgICAgICBtX3BsYWlu
VGltZVN0cnVjdHVyZS5pbml0TGF0ZXIoCisgICAgICAgICAgICBbXSAoY29uc3QgSW5pdGlhbGl6
ZXI8U3RydWN0dXJlPiYgaW5pdCkgeworICAgICAgICAgICAgICAgIEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihpbml0Lm93bmVyKTsKKyAgICAg
ICAgICAgICAgICBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogcGxhaW5UaW1lUHJvdG90eXBl
ID0gVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmNyZWF0ZShpbml0LnZtLCBnbG9iYWxPYmpl
Y3QsIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwg
Z2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPm9iamVjdFByb3RvdHlwZSgpKSk7CisgICAgICAg
ICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZVN0cnVjdHVyZShpbml0
LnZtLCBnbG9iYWxPYmplY3QsIHBsYWluVGltZVByb3RvdHlwZSkpOworICAgICAgICAgICAgfSk7
CisKICAgICAgICAgbV90aW1lWm9uZVN0cnVjdHVyZS5pbml0TGF0ZXIoCiAgICAgICAgICAgICBb
XSAoY29uc3QgSW5pdGlhbGl6ZXI8U3RydWN0dXJlPiYgaW5pdCkgewogICAgICAgICAgICAgICAg
IEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBqc0Nhc3Q8SlNHbG9iYWxPYmplY3QqPihp
bml0Lm93bmVyKTsKQEAgLTIxMTksNiArMjEyOCw3IEBAIHZvaWQgSlNHbG9iYWxPYmplY3Q6OnZp
c2l0Q2hpbGRyZW5JbXBsKEpTQ2VsbCogY2VsbCwgVmlzaXRvciYgdmlzaXRvcikKIAogICAgIHRo
aXNPYmplY3QtPm1fY2FsZW5kYXJTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09i
amVjdC0+bV9kdXJhdGlvblN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKKyAgICB0aGlzT2JqZWN0
LT5tX3BsYWluVGltZVN0cnVjdHVyZS52aXNpdCh2aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5t
X3RpbWVab25lU3RydWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogCiAgICAgdmlzaXRvci5hcHBlbmQo
dGhpc09iamVjdC0+bV9udWxsR2V0dGVyRnVuY3Rpb24pOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggZGViMzNkYmQxMDMwODNhMThmNDBi
YTdhZGM1Njk1MjYwMTQ5N2QyOS4uMTI4YjM5OTEwZGQ4MDU3ZjdhYWJiNTk3NzdjYTY4MGU5ZGY2
MTg5MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxP
YmplY3QuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVj
dC5oCkBAIC0zMjYsNiArMzI2LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNT
ZWdtZW50ZWRWYXJpYWJsZU9iamVjdCB7CiAKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmpl
Y3QsIFN0cnVjdHVyZT4gbV9jYWxlbmRhclN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNH
bG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9kdXJhdGlvblN0cnVjdHVyZTsKKyAgICBMYXp5UHJv
cGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVjdHVyZT4gbV9wbGFpblRpbWVTdHJ1Y3R1cmU7CiAg
ICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fdGltZVpvbmVTdHJ1
Y3R1cmU7CiAKICAgICBXcml0ZUJhcnJpZXI8TnVsbEdldHRlckZ1bmN0aW9uPiBtX251bGxHZXR0
ZXJGdW5jdGlvbjsKQEAgLTg3Niw2ICs4NzcsNyBAQCBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1
YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKIAogICAgIFN0cnVjdHVyZSogY2FsZW5k
YXJTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2NhbGVuZGFyU3RydWN0dXJlLmdldCh0aGlzKTsgfQog
ICAgIFN0cnVjdHVyZSogZHVyYXRpb25TdHJ1Y3R1cmUoKSB7IHJldHVybiBtX2R1cmF0aW9uU3Ry
dWN0dXJlLmdldCh0aGlzKTsgfQorICAgIFN0cnVjdHVyZSogcGxhaW5UaW1lU3RydWN0dXJlKCkg
eyByZXR1cm4gbV9wbGFpblRpbWVTdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJl
KiB0aW1lWm9uZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fdGltZVpvbmVTdHJ1Y3R1cmUuZ2V0KHRo
aXMpOyB9CiAKICAgICBKU19FWFBPUlRfUFJJVkFURSB2b2lkIHNldFJlbW90ZURlYnVnZ2luZ0Vu
YWJsZWQoYm9vbCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9yLmNwcAppbmRleCBhMGZhYTNmZmNkMDQ0
NDc3MmM0MWE0Y2I3MzU2YTJkNjg2NzBhNjljLi42NTMwZGQwMWViNjdjNTNjZDhlOWUzMDg4OTkx
MDU2NmU4Y2I1N2Y0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKQEAgLTczLDYgKzczLDcg
QEAgdm9pZCBUZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgVGVtcG9yYWxDYWxlbmRhclByb3RvdHkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgMCwgIkNhbGVuZGFyIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVy
ZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHRlbXBvcmFsQ2FsZW5kYXJQcm90b3R5cGUsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICB0ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBl
LT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFs
Q2FsZW5kYXIsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bER1cmF0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVy
YXRpb24uY3BwCmluZGV4IDBkYTI0YTUyNTU3ZWJjZGU1OGYzNWRlMThkNzZjMmU3MmI2MjZmOGQu
LjFjMTAwNTg3MjIxZTMyYzc2M2Q0M2JlNzY4MjFmMGJmZWViM2VhNDcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwCkBAIC03Miwy
MiArNzIsNiBAQCB2b2lkIFRlbXBvcmFsRHVyYXRpb246OmZpbmlzaENyZWF0aW9uKFZNJiB2bSkK
ICAgICBBU1NFUlQoaW5oZXJpdHModm0sIGluZm8oKSkpOwogfQogCi0vLyBJc1ZhbGlkRHVyYXRp
b24gKCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMs
IG1pbGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcyApCi0vLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkZHVyYXRpb24KLXN0
YXRpYyBib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJh
dGlvbnMmIHN1YmR1cmF0aW9ucykKLXsKLSAgICBpbnQgc2lnbiA9IDA7Ci0gICAgZm9yIChhdXRv
IHZhbHVlIDogc3ViZHVyYXRpb25zKSB7Ci0gICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1
ZSkgfHwgKHZhbHVlIDwgMCAmJiBzaWduID4gMCkgfHwgKHZhbHVlID4gMCAmJiBzaWduIDwgMCkp
Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaWYgKCFzaWduICYmIHZhbHVl
KQotICAgICAgICAgICAgc2lnbiA9IHZhbHVlID4gMCA/IDEgOiAtMTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQogLy8gQ3JlYXRlVGVtcG9yYWxEdXJhdGlvbiAoIHllYXJzLCBtb250
aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzLCBt
aWNyb3NlY29uZHMsIG5hbm9zZWNvbmRzIFsgLCBuZXdUYXJnZXQgXSApCiAvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1jcmVhdGV0ZW1wb3JhbGR1cmF0
aW9uCiBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlk
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN1YmR1cmF0aW9ucyYmIHN1YmR1cmF0aW9u
cywgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCkBAIC05NSw3ICs3OSw3IEBAIFRlbXBvcmFsRHVyYXRp
b24qIFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKIAotICAgIGlmICghaXNWYWxpZER1cmF0aW9u
KHN1YmR1cmF0aW9ucykpIHsKKyAgICBpZiAoIUlTTzg2MDE6OmlzVmFsaWREdXJhdGlvbihzdWJk
dXJhdGlvbnMpKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSBhbmQgb2YgY29u
c2lzdGVudCBzaWduIl9zKTsKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICB9CkBAIC0xMDUsMTcg
Kzg5LDE3IEBAIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlm
VmFsaWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAKIC8vIFRvVGVtcG9yYWxEdXJhdGlv
blJlY29yZCAoIHRlbXBvcmFsRHVyYXRpb25MaWtlICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvdGVtcG9yYWxkdXJhdGlvbnJlY29yZAotVGVt
cG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zIFRlbXBvcmFsRHVyYXRpb246OmZyb21PYmplY3Qo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIGR1cmF0aW9uTGlrZSkKK1Rl
bXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjpmcm9tTm9uRHVy
YXRpb25WYWx1ZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIGR1cmF0aW9u
TGlrZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgQVNTRVJUKCFkdXJhdGlvbkxpa2Ut
PmluaGVyaXRzPFRlbXBvcmFsRHVyYXRpb24+KHZtKSk7CisgICAgQVNTRVJUKCFkdXJhdGlvbkxp
a2UuaW5oZXJpdHM8VGVtcG9yYWxEdXJhdGlvbj4odm0pKTsKIAogICAgIFN1YmR1cmF0aW9ucyBy
ZXN1bHQ7CiAgICAgYXV0byBoYXNSZWxldmFudFByb3BlcnR5ID0gZmFsc2U7CiAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBudW1iZXJPZlRlbXBvcmFsVW5pdHM7IGkrKykgewotICAgICAgICBK
U1ZhbHVlIHZhbHVlID0gZHVyYXRpb25MaWtlLT5nZXQoZ2xvYmFsT2JqZWN0LCBwcm9wZXJ0eU5h
bWUodm0sIGkpKTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0aW9uTGlrZS5nZXQoZ2xv
YmFsT2JqZWN0LCBwcm9wZXJ0eU5hbWUodm0sIGkpKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKIAogICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkgewpA
QCAtMTUyLDcgKzEzNiw3IEBAIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRpb246OnRv
RHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWCiAgICAgICAgIHJldHVy
biBqc0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KGl0ZW1WYWx1ZSk7CiAKICAgICBpZiAoaXRlbVZh
bHVlLmlzT2JqZWN0KCkpIHsKLSAgICAgICAgYXV0byBzdWJkdXJhdGlvbnMgPSBmcm9tT2JqZWN0
KGdsb2JhbE9iamVjdCwgYXNPYmplY3QoaXRlbVZhbHVlKSk7CisgICAgICAgIGF1dG8gc3ViZHVy
YXRpb25zID0gZnJvbU5vbkR1cmF0aW9uVmFsdWUoZ2xvYmFsT2JqZWN0LCBpdGVtVmFsdWUpOwog
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBudWxscHRyKTsKIAogICAgICAgICBS
RUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFs
aWQoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHN1YmR1cmF0aW9ucykpKTsKQEAgLTE3MCw2ICsxNTQs
MTYgQEAgVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxEdXJhdGlvbjo6dG9EdXJhdGlvbihKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1YKICAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2Nv
cGUsIFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBXVEZN
b3ZlKHBhcnNlZFN1YmR1cmF0aW9ucy52YWx1ZSgpKSkpOwogfQogCitUZW1wb3JhbER1cmF0aW9u
OjpTdWJkdXJhdGlvbnMgVGVtcG9yYWxEdXJhdGlvbjo6dG9EdXJhdGlvblJlY29yZChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRlbXBvcmFsRHVyYXRpb25MaWtlKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKworICAgIGlmICh0ZW1wb3JhbER1cmF0
aW9uTGlrZS5pbmhlcml0czxUZW1wb3JhbER1cmF0aW9uPih2bSkpCisgICAgICAgIHJldHVybiBq
c0Nhc3Q8VGVtcG9yYWxEdXJhdGlvbio+KHRlbXBvcmFsRHVyYXRpb25MaWtlKS0+c3ViZHVyYXRp
b25zKCk7CisKKyAgICByZXR1cm4gZnJvbU5vbkR1cmF0aW9uVmFsdWUoZ2xvYmFsT2JqZWN0LCB0
ZW1wb3JhbER1cmF0aW9uTGlrZSk7Cit9CisKIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVy
YXRpb246OmZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFs
dWUpCiB7CiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwpAQCAtNTMwLDcgKzUyNCwx
MCBAQCBTdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVgogCiAgICAgUHJlY2lzaW9uRGF0YSBkYXRhID0g
c2Vjb25kc1N0cmluZ1ByZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMpOwogICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7Ci0gICAgQVNTRVJUKGRhdGEudW5pdCA+PSBUZW1w
b3JhbFVuaXQ6OlNlY29uZCk7CisgICAgaWYgKGRhdGEudW5pdCA8IFRlbXBvcmFsVW5pdDo6U2Vj
b25kKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic21h
bGxlc3RVbml0IG11c3Qgbm90IGJlIFwibWludXRlXCIiX3MpOworICAgICAgICByZXR1cm4geyB9
OworICAgIH0KIAogICAgIGF1dG8gcm91bmRpbmdNb2RlID0gaW50bE9wdGlvbjxSb3VuZGluZ01v
ZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdNb2Rl
LAogICAgICAgICB7IHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2VpbCB9LCB7ICJmbG9vciJf
cywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7ICJ0cnVuYyJfcywgUm91bmRpbmdNb2RlOjpUcnVu
YyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSB9LApAQCAt
NTM4LDcgKzUzNSw3IEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIC8vIE5vIG5lZWQgdG8gbWFrZSBhIG5ldyBvYmpl
Y3QgaWYgd2Ugd2VyZSBnaXZlbiBleHBsaWNpdCBkZWZhdWx0cy4KLSAgICBpZiAoIWRhdGEucHJl
Y2lzaW9uICYmIHJvdW5kaW5nTW9kZSA9PSBSb3VuZGluZ01vZGU6OlRydW5jKQorICAgIGlmIChz
dGQ6OmdldDwwPihkYXRhLnByZWNpc2lvbikgPT0gUHJlY2lzaW9uOjpBdXRvICYmIHJvdW5kaW5n
TW9kZSA9PSBSb3VuZGluZ01vZGU6OlRydW5jKQogICAgICAgICByZXR1cm4gdG9TdHJpbmcoKTsK
IAogICAgIFN1YmR1cmF0aW9ucyBuZXdTdWJkdXJhdGlvbnMgPSBtX3N1YmR1cmF0aW9uczsKQEAg
LTU0OCw5ICs1NDUsMTAgQEAgU3RyaW5nIFRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1YKIAogLy8gVGVtcG9yYWxE
dXJhdGlvblRvU3RyaW5nICggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51
dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcywgbmFub3NlY29uZHMsIHBy
ZWNpc2lvbiApCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1w
b3JhbC10ZW1wb3JhbGR1cmF0aW9udG9zdHJpbmcKLVN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0
b1N0cmluZyhjb25zdCBUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMmIHN1YmR1cmF0aW9u
cywgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uKQorU3RyaW5nIFRlbXBvcmFsRHVy
YXRpb246OnRvU3RyaW5nKGNvbnN0IFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyYgc3Vi
ZHVyYXRpb25zLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbikKIHsK
LSAgICBBU1NFUlQoIXByZWNpc2lvbiB8fCBwcmVjaXNpb24udmFsdWUoKSA8IDEwKTsKKyAgICBh
dXRvIFtwcmVjaXNpb25UeXBlLCBwcmVjaXNpb25WYWx1ZV0gPSBwcmVjaXNpb247CisgICAgQVNT
RVJUKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpBdXRvIHx8IHByZWNpc2lvblZhbHVlIDwg
MTApOwogCiAgICAgYXV0byBiYWxhbmNlZE1pY3Jvc2Vjb25kcyA9IHN1YmR1cmF0aW9ucy5taWNy
b3NlY29uZHMoKSArIHN0ZDo6dHJ1bmMoc3ViZHVyYXRpb25zLm5hbm9zZWNvbmRzKCkgLyAxMDAw
KTsKICAgICBhdXRvIGJhbGFuY2VkTmFub3NlY29uZHMgPSBzdGQ6OmZtb2Qoc3ViZHVyYXRpb25z
Lm5hbm9zZWNvbmRzKCksIDEwMDApOwpAQCAtNTk3LDEwICs1OTUsMTAgQEAgU3RyaW5nIFRlbXBv
cmFsRHVyYXRpb246OnRvU3RyaW5nKGNvbnN0IFRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9u
cyYgc3ViZHVyYXQKICAgICAgICAgYnVpbGRlci5hcHBlbmQoZm9ybWF0SW50ZWdlcihiYWxhbmNl
ZFNlY29uZHMpKTsKIAogICAgICAgICBhdXRvIGZyYWN0aW9uID0gc3RkOjphYnMoYmFsYW5jZWRN
aWxsaXNlY29uZHMpICogMWU2ICsgc3RkOjphYnMoYmFsYW5jZWRNaWNyb3NlY29uZHMpICogMWUz
ICsgc3RkOjphYnMoYmFsYW5jZWROYW5vc2Vjb25kcyk7Ci0gICAgICAgIGlmICgoIXByZWNpc2lv
biAmJiBmcmFjdGlvbikgfHwgKHByZWNpc2lvbiAmJiBwcmVjaXNpb24udmFsdWUoKSkpIHsKKyAg
ICAgICAgaWYgKChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6QXV0byAmJiBmcmFjdGlvbikg
fHwgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpGaXhlZCAmJiBwcmVjaXNpb25WYWx1ZSkp
IHsKICAgICAgICAgICAgIGF1dG8gcGFkZGVkID0gbWFrZVN0cmluZygnLicsIHBhZCgnMCcsIDks
IGZyYWN0aW9uKSk7Ci0gICAgICAgICAgICBpZiAocHJlY2lzaW9uKQotICAgICAgICAgICAgICAg
IGJ1aWxkZXIuYXBwZW5kKFN0cmluZ1ZpZXcocGFkZGVkKS5sZWZ0KHBhZGRlZC5sZW5ndGgoKSAt
ICg5IC0gcHJlY2lzaW9uLnZhbHVlKCkpKSk7CisgICAgICAgICAgICBpZiAocHJlY2lzaW9uVHlw
ZSA9PSBQcmVjaXNpb246OkZpeGVkKQorICAgICAgICAgICAgICAgIGJ1aWxkZXIuYXBwZW5kKFN0
cmluZ1ZpZXcocGFkZGVkKS5sZWZ0KHBhZGRlZC5sZW5ndGgoKSAtICg5IC0gcHJlY2lzaW9uVmFs
dWUpKSk7CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBhdXRvIGxlbmd0aFdp
dGhvdXRUcmFpbGluZ1plcm9lcyA9IHBhZGRlZC5sZW5ndGgoKTsKICAgICAgICAgICAgICAgICB3
aGlsZSAocGFkZGVkW2xlbmd0aFdpdGhvdXRUcmFpbGluZ1plcm9lcyAtIDFdID09ICcwJykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24u
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaAppbmRl
eCA1OTIwNGRjOTUzN2FhZjc2MDFlMGU4ZDE1NzA1NmJkYTE5YWY3MzU1Li5iYzQzODMzM2M1NDA1
MWQyZjFkYjU1NGUzYjM0OWRlNWE0YTlhNDZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5oCkBAIC02Niw3ICs2NiwxNSBAQCBjbGFzcyBU
ZW1wb3JhbER1cmF0aW9uIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogICAgIFN1
YmR1cmF0aW9ucyByb3VuZChKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7
CiAgICAgZG91YmxlIHRvdGFsKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25z
dDsKICAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMp
IGNvbnN0OwotICAgIFN0cmluZyB0b1N0cmluZyhzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVj
aXNpb24gPSBzdGQ6Om51bGxvcHQpIGNvbnN0IHsgcmV0dXJuIHRvU3RyaW5nKG1fc3ViZHVyYXRp
b25zLCBwcmVjaXNpb24pOyB9CisgICAgU3RyaW5nIHRvU3RyaW5nKHN0ZDo6dHVwbGU8UHJlY2lz
aW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uID0geyBQcmVjaXNpb246OkF1dG8sIDAgfSkgY29uc3Qg
eyByZXR1cm4gdG9TdHJpbmcobV9zdWJkdXJhdGlvbnMsIHByZWNpc2lvbik7IH0KKworICAgIGNv
bnN0IFN1YmR1cmF0aW9ucyYgc3ViZHVyYXRpb25zKCkgY29uc3QgeyByZXR1cm4gbV9zdWJkdXJh
dGlvbnM7IH0KKworICAgIHN0YXRpYyBTdWJkdXJhdGlvbnMgdG9EdXJhdGlvblJlY29yZChKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgc3RhdGljIGludCBzaWduKGNvbnN0IFN1YmR1
cmF0aW9ucyYpOworICAgIHN0YXRpYyBkb3VibGUgcm91bmQoU3ViZHVyYXRpb25zJiwgZG91Ymxl
IGluY3JlbWVudCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUpOworICAgIHN0YXRpYyB2b2lk
IGJhbGFuY2UoU3ViZHVyYXRpb25zJiwgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0KTsKIAogcHJp
dmF0ZToKICAgICBUZW1wb3JhbER1cmF0aW9uKFZNJiwgU3RydWN0dXJlKiwgU3ViZHVyYXRpb25z
JiYpOwpAQCAtNzQsMTIgKzgyLDkgQEAgY2xhc3MgVGVtcG9yYWxEdXJhdGlvbiBmaW5hbCA6IHB1
YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3Rl
clR5cGU+CiAgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8U3ViZHVyYXRpb25zPiBwYXJzZShTdHJp
bmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+Jik7Ci0gICAgc3RhdGljIFN1YmR1cmF0aW9u
cyBmcm9tT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKKyAgICBzdGF0aWMgU3Vi
ZHVyYXRpb25zIGZyb21Ob25EdXJhdGlvblZhbHVlKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7
CiAKLSAgICBzdGF0aWMgaW50IHNpZ24oY29uc3QgU3ViZHVyYXRpb25zJik7Ci0gICAgc3RhdGlj
IHZvaWQgYmFsYW5jZShTdWJkdXJhdGlvbnMmLCBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQpOwot
ICAgIHN0YXRpYyBkb3VibGUgcm91bmQoU3ViZHVyYXRpb25zJiwgZG91YmxlIGluY3JlbWVudCwg
VGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUpOwotICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmco
Y29uc3QgU3ViZHVyYXRpb25zJiwgc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uKTsK
KyAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFN1YmR1cmF0aW9ucyYsIHN0ZDo6dHVw
bGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uKTsKIAogICAgIFRlbXBvcmFsVW5pdCBs
YXJnZXN0U3ViZHVyYXRpb24oKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxOb3cuY3BwCmluZGV4IGIwYTdlZWU0YzRhMDEzNjBiYTNjZmE1YWQ1ZTVh
NDdiOTRiNjczM2EuLjdjMGZlYzUzOTEzZThjNWQ2OWQ1ZDYzZWJhYTdmZmQ5MWRmYzhiMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKQEAgLTc3
LDcgKzc3LDcgQEAgSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsTm93RnVuY1RpbWVa
b25lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwKICAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CiAKICAgICBTdHJpbmcgdGltZVpvbmVTdHJpbmcgPSB2bS5kYXRlQ2FjaGUu
ZGVmYXVsdFRpbWVab25lKCk7Ci0gICAgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZGVudGlm
aWVyID0gVGVtcG9yYWxUaW1lWm9uZTo6aWRGb3JUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcp
OworICAgIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IElTTzg2MDE6Omlk
Rm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKICAgICBpZiAoIWlkZW50aWZpZXIpCiAg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJv
bVVUQ09mZnNldCh2bSwgZ2xvYmFsT2JqZWN0LT50aW1lWm9uZVN0cnVjdHVyZSgpLCAwKSk7CiAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tSUQo
dm0sIGdsb2JhbE9iamVjdC0+dGltZVpvbmVTdHJ1Y3R1cmUoKSwgaWRlbnRpZmllci52YWx1ZSgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9i
amVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5j
cHAKaW5kZXggYjI0ZTNhOWU5ZGEyMjAyNmMyYTNiZmRiMjhiYWY3Y2VlM2QzZWY5Ny4uOGUzN2Q3
Y2ZmMzVmOTg5ZTNlZWZhYjQwOTM1NTgwYWUwYjRkZGVkZiAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcApAQCAtMzMsNiArMzMsOCBAQAog
I2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rvci5oIgogI2luY2x1ZGUgIlRlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbE5vdy5oIgorI2luY2x1
ZGUgIlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rv
ci5oIgogI2luY2x1ZGUgIlRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaCIKIApAQCAtNjEsNiAr
NjMsMTMgQEAgc3RhdGljIEpTVmFsdWUgY3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvcihWTSYgdm0s
IEpTT2JqZWN0KiBvYmplY3QpCiAgICAgcmV0dXJuIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1Y3Rv
cjo6Y3JlYXRlKHZtLCBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVy
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJvdG90eXBlKCkpLCBq
c0Nhc3Q8VGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+ZHVyYXRpb25T
dHJ1Y3R1cmUoKS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKIH0KIAorc3RhdGljIEpTVmFs
dWUgY3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQor
eworICAgIFRlbXBvcmFsT2JqZWN0KiB0ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9i
amVjdCo+KG9iamVjdCk7CisgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IHRlbXBv
cmFsT2JqZWN0LT5nbG9iYWxPYmplY3Qodm0pOworICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNy
ZWF0ZVN0cnVjdHVyZSh2bSwgZ2xvYmFsT2JqZWN0LCBnbG9iYWxPYmplY3QtPmZ1bmN0aW9uUHJv
dG90eXBlKCkpLCBqc0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUqPihnbG9iYWxPYmpl
Y3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkpOworfQor
CiBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVUaW1lWm9uZUNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmpl
Y3QqIG9iamVjdCkKIHsKICAgICBUZW1wb3JhbE9iamVjdCogdGVtcG9yYWxPYmplY3QgPSBqc0Nh
c3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOwpAQCAtNzksNiArODgsNyBAQCBuYW1lc3BhY2Ug
SlNDIHsKICAgQ2FsZW5kYXIgICAgICAgY3JlYXRlQ2FsZW5kYXJDb25zdHJ1Y3RvciAgICAgICBE
b250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIER1cmF0aW9uICAgICAgIGNyZWF0ZUR1cmF0aW9u
Q29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogICBOb3cgICAgICAg
ICAgICBjcmVhdGVOb3dPYmplY3QgICAgICAgICAgICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2Fs
bGJhY2sKKyAgUGxhaW5UaW1lICAgICAgY3JlYXRlUGxhaW5UaW1lQ29uc3RydWN0b3IgICAgICBE
b250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCiAgIFRpbWVab25lICAgICAgIGNyZWF0ZVRpbWVab25l
Q29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFjawogQGVuZAogKi8KQEAg
LTI0MiwxOSArMjUyLDIxIEBAIFByZWNpc2lvbkRhdGEgc2Vjb25kc1N0cmluZ1ByZWNpc2lvbihK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIGF1dG8gc21hbGxlc3RVbml0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xv
YmFsT2JqZWN0LCBvcHRpb25zLCB7IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpN
b250aCwgVGVtcG9yYWxVbml0OjpXZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSwgVGVtcG9yYWxVbml0
OjpIb3VyLCBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZSB9KTsKKyAgICBhdXRvIHNtYWxsZXN0VW5pdCA9
IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVu
aXQ6OlllYXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9y
YWxVbml0OjpEYXksIFRlbXBvcmFsVW5pdDo6SG91ciB9KTsKICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOwogCiAgICAgaWYgKHNtYWxsZXN0VW5pdCkgewogICAgICAgICBzd2l0
Y2ggKHNtYWxsZXN0VW5pdC52YWx1ZSgpKSB7CisgICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpN
aW51dGU6CisgICAgICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6TWludXRlLCAwIH0sIFRl
bXBvcmFsVW5pdDo6TWludXRlLCAxIH07CiAgICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpTZWNv
bmQ6Ci0gICAgICAgICAgICByZXR1cm4geyAwLCBUZW1wb3JhbFVuaXQ6OlNlY29uZCwgMSB9Owor
ICAgICAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCAwIH0sIFRlbXBvcmFsVW5p
dDo6U2Vjb25kLCAxIH07CiAgICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDoK
LSAgICAgICAgICAgIHJldHVybiB7IDMsIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQsIDEgfTsK
KyAgICAgICAgICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgMyB9LCBUZW1wb3JhbFVu
aXQ6Ok1pbGxpc2Vjb25kLCAxIH07CiAgICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpNaWNyb3Nl
Y29uZDoKLSAgICAgICAgICAgIHJldHVybiB7IDYsIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQs
IDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgNiB9LCBUZW1w
b3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kLCAxIH07CiAgICAgICAgIGNhc2UgVGVtcG9yYWxVbml0OjpO
YW5vc2Vjb25kOgotICAgICAgICAgICAgcmV0dXJuIHsgOSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vj
b25kLCAxIH07CisgICAgICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIDkgfSwg
VGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAxIH07CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgcmV0dXJuIHsg
fTsKQEAgLTI2NSwyMCArMjc3LDI3IEBAIFByZWNpc2lvbkRhdGEgc2Vjb25kc1N0cmluZ1ByZWNp
c2lvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0CiAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGlmICghcHJlY2lzaW9uKQotICAg
ICAgICByZXR1cm4geyBzdGQ6Om51bGxvcHQsIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9
OworICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6QXV0bywgMCB9LCBUZW1wb3JhbFVuaXQ6
Ok5hbm9zZWNvbmQsIDEgfTsKKworICAgIGF1dG8gcG93MTBVbnNpZ25lZCA9IFtdKHVuc2lnbmVk
IG4pIC0+IHVuc2lnbmVkIHsKKyAgICAgICAgdW5zaWduZWQgcmVzdWx0ID0gMTsKKyAgICAgICAg
Zm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IG47ICsraSkKKyAgICAgICAgICAgIHJlc3VsdCAqPSAx
MDsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9OwogCiAgICAgdW5zaWduZWQgZGlnaXRz
ID0gcHJlY2lzaW9uLnZhbHVlKCk7CiAgICAgaWYgKCFkaWdpdHMpCi0gICAgICAgIHJldHVybiB7
IDAsIFRlbXBvcmFsVW5pdDo6U2Vjb25kLCAxIH07CisgICAgICAgIHJldHVybiB7IHsgUHJlY2lz
aW9uOjpGaXhlZCwgMCB9LCBUZW1wb3JhbFVuaXQ6OlNlY29uZCwgMSB9OwogCiAgICAgaWYgKGRp
Z2l0cyA8PSAzKQotICAgICAgICByZXR1cm4geyBkaWdpdHMsIFRlbXBvcmFsVW5pdDo6TWlsbGlz
ZWNvbmQsIHN0ZDo6cG93KDEwLCAzIC0gZGlnaXRzKSB9OworICAgICAgICByZXR1cm4geyB7IFBy
ZWNpc2lvbjo6Rml4ZWQsIGRpZ2l0cyB9LCBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLCBwb3cx
MFVuc2lnbmVkKDMgLSBkaWdpdHMpIH07CiAKICAgICBpZiAoZGlnaXRzIDw9IDYpCi0gICAgICAg
IHJldHVybiB7IGRpZ2l0cywgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZCwgc3RkOjpwb3coMTAs
IDYgLSBkaWdpdHMpIH07CisgICAgICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgZGln
aXRzIH0sIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQsIHBvdzEwVW5zaWduZWQoNiAtIGRpZ2l0
cykgfTsKIAogICAgIEFTU0VSVChkaWdpdHMgPD0gOSk7Ci0gICAgcmV0dXJuIHsgZGlnaXRzLCBU
ZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIHN0ZDo6cG93KDEwLCA5IC0gZGlnaXRzKSB9OworICAg
IHJldHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgZGlnaXRzIH0sIFRlbXBvcmFsVW5pdDo6TmFu
b3NlY29uZCwgcG93MTBVbnNpZ25lZCg5IC0gZGlnaXRzKSB9OwogfQogCiAvLyBNYXhpbXVtVGVt
cG9yYWxEdXJhdGlvblJvdW5kaW5nSW5jcmVtZW50ICggdW5pdCApCkBAIC0zNDIsNCArMzYxLDEx
IEBAIGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRvdWJsZSB4LCBkb3VibGUgaW5jcmVt
ZW50LCBSb3VuZGluZ01vZGUgbW9kZSkKICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogfQogCitUZW1wb3JhbE92ZXJmbG93IHRvVGVtcG9yYWxPdmVyZmxvdyhKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogb3B0aW9ucykKK3sKKyAgICByZXR1cm4gaW50bE9w
dGlvbjxUZW1wb3JhbE92ZXJmbG93PihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIGdsb2JhbE9iamVj
dC0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5vdmVyZmxvdywKKyAgICAgICAgeyB7ICJjb25zdHJhaW4i
X3MsIFRlbXBvcmFsT3ZlcmZsb3c6OkNvbnN0cmFpbiB9LCB7ICJyZWplY3QiX3MsIFRlbXBvcmFs
T3ZlcmZsb3c6OlJlamVjdCB9IH0sCisgICAgICAgICJvdmVyZmxvdyBtdXN0IGJlIGVpdGhlciBc
ImNvbnN0cmFpblwiIG9yIFwicmVqZWN0XCIiX3MsIFRlbXBvcmFsT3ZlcmZsb3c6OkNvbnN0cmFp
bik7Cit9CisKIH0gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKaW5kZXggNzI0M2M5YmE1ODQzMjYyZDJkMGNiYjgxOTMz
ZjRjZGQxMzA4ZmI0OC4uODlhMTU2ZThjMTViODEyNWMyMDQ0MTBiZWUwNGRiN2FlZDJiYTM4MSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oCkBA
IC0yMSwxNCArMjEsMTEgQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiSlNPYmplY3QuaCIK
KyNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgogCiBuYW1lc3BhY2UgSlNDIHsKIAotI2RlZmluZSBK
U0NfVEVNUE9SQUxfVU5JVFMobWFjcm8pIFwKLSAgICBtYWNybyh5ZWFyLCBZZWFyKSBcCi0gICAg
bWFjcm8obW9udGgsIE1vbnRoKSBcCi0gICAgbWFjcm8od2VlaywgV2VlaykgXAotICAgIG1hY3Jv
KGRheSwgRGF5KSBcCisjZGVmaW5lIEpTQ19URU1QT1JBTF9QTEFJTl9USU1FX1VOSVRTKG1hY3Jv
KSBcCiAgICAgbWFjcm8oaG91ciwgSG91cikgXAogICAgIG1hY3JvKG1pbnV0ZSwgTWludXRlKSBc
CiAgICAgbWFjcm8oc2Vjb25kLCBTZWNvbmQpIFwKQEAgLTM2LDYgKzMzLDE1IEBAIG5hbWVzcGFj
ZSBKU0MgewogICAgIG1hY3JvKG1pY3Jvc2Vjb25kLCBNaWNyb3NlY29uZCkgXAogICAgIG1hY3Jv
KG5hbm9zZWNvbmQsIE5hbm9zZWNvbmQpIFwKIAorCisjZGVmaW5lIEpTQ19URU1QT1JBTF9VTklU
UyhtYWNybykgXAorICAgIG1hY3JvKHllYXIsIFllYXIpIFwKKyAgICBtYWNybyhtb250aCwgTW9u
dGgpIFwKKyAgICBtYWNybyh3ZWVrLCBXZWVrKSBcCisgICAgbWFjcm8oZGF5LCBEYXkpIFwKKyAg
ICBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhtYWNybykgXAorCisKIGVudW0gY2xhc3Mg
VGVtcG9yYWxVbml0IDogdWludDhfdCB7CiAjZGVmaW5lIEpTQ19ERUZJTkVfVEVNUE9SQUxfVU5J
VF9FTlVNKG5hbWUsIGNhcGl0YWxpemVkTmFtZSkgY2FwaXRhbGl6ZWROYW1lLAogICAgIEpTQ19U
RU1QT1JBTF9VTklUUyhKU0NfREVGSU5FX1RFTVBPUkFMX1VOSVRfRU5VTSkKQEAgLTQzLDYgKzQ5
LDcgQEAgZW51bSBjbGFzcyBUZW1wb3JhbFVuaXQgOiB1aW50OF90IHsKIH07CiAjZGVmaW5lIEpT
Q19DT1VOVF9URU1QT1JBTF9VTklUUyhuYW1lLCBjYXBpdGFsaXplZE5hbWUpICsgMQogc3RhdGlj
IGNvbnN0ZXhwciB1bnNpZ25lZCBudW1iZXJPZlRlbXBvcmFsVW5pdHMgPSAwIEpTQ19URU1QT1JB
TF9VTklUUyhKU0NfQ09VTlRfVEVNUE9SQUxfVU5JVFMpOworc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHMgPSAwIEpTQ19URU1QT1JBTF9QTEFJ
Tl9USU1FX1VOSVRTKEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUyk7CiAjdW5kZWYgSlNDX0NPVU5U
X1RFTVBPUkFMX1VOSVRTCiAKIGNsYXNzIFRlbXBvcmFsT2JqZWN0IGZpbmFsIDogcHVibGljIEpT
Tm9uRmluYWxPYmplY3QgewpAQCAtNzQsMTAgKzgxLDE2IEBAIGVudW0gY2xhc3MgUm91bmRpbmdN
b2RlIDogdWludDhfdCB7CiAgICAgSGFsZkV4cGFuZAogfTsKIAorZW51bSBjbGFzcyBQcmVjaXNp
b24geworICAgIE1pbnV0ZSwKKyAgICBGaXhlZCwKKyAgICBBdXRvLAorfTsKKwogc3RydWN0IFBy
ZWNpc2lvbkRhdGEgewotICAgIHN0ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHByZWNpc2lvbjsKKyAg
ICBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbjsKICAgICBUZW1wb3Jh
bFVuaXQgdW5pdDsKLSAgICBkb3VibGUgaW5jcmVtZW50OworICAgIHVuc2lnbmVkIGluY3JlbWVu
dDsKIH07CiAKIHN0ZDo6b3B0aW9uYWw8VGVtcG9yYWxVbml0PiB0ZW1wb3JhbFVuaXRUeXBlKFN0
cmluZ1ZpZXcpOwpAQCAtODksNCArMTAyLDExIEBAIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBtYXhp
bXVtUm91bmRpbmdJbmNyZW1lbnQoVGVtcG9yYWxVbml0KTsKIGRvdWJsZSB0ZW1wb3JhbFJvdW5k
aW5nSW5jcmVtZW50KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9wdGlvbnMsIHN0ZDo6b3B0
aW9uYWw8ZG91YmxlPiBkaXZpZGVuZCwgYm9vbCBpbmNsdXNpdmUpOwogZG91YmxlIHJvdW5kTnVt
YmVyVG9JbmNyZW1lbnQoZG91YmxlLCBkb3VibGUgaW5jcmVtZW50LCBSb3VuZGluZ01vZGUpOwog
CitlbnVtIGNsYXNzIFRlbXBvcmFsT3ZlcmZsb3cgOiB1aW50OF90IHsKKyAgICBDb25zdHJhaW4s
CisgICAgUmVqZWN0LAorfTsKKworVGVtcG9yYWxPdmVyZmxvdyB0b1RlbXBvcmFsT3ZlcmZsb3co
SlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOworCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4zNWVlYWE4OTFiZmQ4NjU2ZWI1MWVkMWExMTNmMTY3ZWZmZGFjYjQ4Ci0tLSAv
ZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFp
blRpbWUuY3BwCkBAIC0wLDAgKzEsNjc0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFw
cGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmlu
YXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRl
ZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAq
IDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZv
cm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQor
ICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGgg
dGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQ
UExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywK
KyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5U
IFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBB
TlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgor
ICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
UFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0Yg
VVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dF
VkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAq
IENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5D
RSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0Yg
VEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0Yg
U1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBv
cmFsUGxhaW5UaW1lLmgiCisKKyNpbmNsdWRlICJBYnN0cmFjdFNsb3RWaXNpdG9yLmgiCisjaW5j
bHVkZSAiSW50bE9iamVjdElubGluZXMuaCIKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5j
bHVkZSAiTGF6eVByb3BlcnR5SW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24u
aCIKKyNpbmNsdWRlICJWTVRyYXBzSW5saW5lcy5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29u
c3QgQ2xhc3NJbmZvIFRlbXBvcmFsUGxhaW5UaW1lOjpzX2luZm8gPSB7ICJPYmplY3QiLCAmQmFz
ZTo6c19pbmZvLCBudWxscHRyLCBudWxscHRyLCBDUkVBVEVfTUVUSE9EX1RBQkxFKFRlbXBvcmFs
UGxhaW5UaW1lKSB9OworCitUZW1wb3JhbFBsYWluVGltZSogVGVtcG9yYWxQbGFpblRpbWU6OmNy
ZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpQbGFpblRpbWUmJiBw
bGFpblRpbWUpCit7CisgICAgYXV0byogb2JqZWN0ID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNl
bGw8VGVtcG9yYWxQbGFpblRpbWU+KHZtLmhlYXApKSBUZW1wb3JhbFBsYWluVGltZSh2bSwgc3Ry
dWN0dXJlLCBXVEZNb3ZlKHBsYWluVGltZSkpOworICAgIG9iamVjdC0+ZmluaXNoQ3JlYXRpb24o
dm0pOworICAgIHJldHVybiBvYmplY3Q7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxQbGFpblRp
bWU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3Qs
IEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0cnVjdHVyZUZs
YWdzKSwgaW5mbygpKTsKK30KKworVGVtcG9yYWxQbGFpblRpbWU6OlRlbXBvcmFsUGxhaW5UaW1l
KFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OlBsYWluVGltZSYmIHBsYWlu
VGltZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSkKKyAgICAsIG1fcGxhaW5UaW1lKFdURk1v
dmUocGxhaW5UaW1lKSkKK3sKK30KKwordm9pZCBUZW1wb3JhbFBsYWluVGltZTo6ZmluaXNoQ3Jl
YXRpb24oVk0mIHZtKQoreworICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NF
UlQoaW5oZXJpdHModm0sIGluZm8oKSkpOworICAgIG1fY2FsZW5kYXIuaW5pdExhdGVyKAorICAg
ICAgICBbXSAoY29uc3QgYXV0byYgaW5pdCkgeworICAgICAgICAgICAgVk0mIHZtID0gaW5pdC52
bTsKKyAgICAgICAgICAgIGF1dG8qIHBsYWluVGltZSA9IGpzQ2FzdDxUZW1wb3JhbFBsYWluVGlt
ZSo+KGluaXQub3duZXIpOworICAgICAgICAgICAgYXV0byogZ2xvYmFsT2JqZWN0ID0gcGxhaW5U
aW1lLT5nbG9iYWxPYmplY3Qodm0pOworICAgICAgICAgICAgYXV0byogY2FsZW5kYXIgPSBUZW1w
b3JhbENhbGVuZGFyOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+Y2FsZW5kYXJTdHJ1Y3R1cmUo
KSwgaXNvODYwMUNhbGVuZGFySUQoKSk7CisgICAgICAgICAgICBpbml0LnNldChjYWxlbmRhcik7
CisgICAgICAgIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBWaXNpdG9yPgordm9pZCBUZW1w
b3JhbFBsYWluVGltZTo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9yJiB2
aXNpdG9yKQoreworICAgIEJhc2U6OnZpc2l0Q2hpbGRyZW4oY2VsbCwgdmlzaXRvcik7CisKKyAg
ICBhdXRvKiB0aGlzT2JqZWN0ID0ganNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4oY2VsbCk7Cisg
ICAgdGhpc09iamVjdC0+bV9jYWxlbmRhci52aXNpdCh2aXNpdG9yKTsKK30KKworREVGSU5FX1ZJ
U0lUX0NISUxEUkVOKFRlbXBvcmFsUGxhaW5UaW1lKTsKKworLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaXN2YWxpZHRpbWUKK3N0YXRpYyBJU084NjAx
OjpQbGFpblRpbWUgdG9QbGFpblRpbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSVNP
ODYwMTo6RHVyYXRpb24mJiBkdXJhdGlvbikKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
ZG91YmxlIGhvdXIgPSBkdXJhdGlvbi5ob3VycygpOworICAgIGRvdWJsZSBtaW51dGUgPSBkdXJh
dGlvbi5taW51dGVzKCk7CisgICAgZG91YmxlIHNlY29uZCA9IGR1cmF0aW9uLnNlY29uZHMoKTsK
KyAgICBkb3VibGUgbWlsbGlzZWNvbmQgPSBkdXJhdGlvbi5taWxsaXNlY29uZHMoKTsKKyAgICBk
b3VibGUgbWljcm9zZWNvbmQgPSBkdXJhdGlvbi5taWNyb3NlY29uZHMoKTsKKyAgICBkb3VibGUg
bmFub3NlY29uZCA9IGR1cmF0aW9uLm5hbm9zZWNvbmRzKCk7CisgICAgaWYgKCEoaG91ciA+PSAw
ICYmIGhvdXIgPD0gMjMpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiaG91ciBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9Owor
ICAgIH0KKyAgICBpZiAoIShtaW51dGUgPj0gMCAmJiBtaW51dGUgPD0gNTkpKSB7CisgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibWludXRlIGlzIG91dCBvZiBy
YW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKHNlY29uZCA+
PSAwICYmIHNlY29uZCA8PSA1OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJzZWNvbmQgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICB9CisgICAgaWYgKCEobWlsbGlzZWNvbmQgPj0gMCAmJiBtaWxsaXNlY29uZCA8
PSA5OTkpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
bWlsbGlzZWNvbmQgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9CisgICAgaWYgKCEobWljcm9zZWNvbmQgPj0gMCAmJiBtaWNyb3NlY29uZCA8PSA5OTkpKSB7
CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibWljcm9zZWNv
bmQgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAg
aWYgKCEobmFub3NlY29uZCA+PSAwICYmIG5hbm9zZWNvbmQgPD0gOTk5KSkgeworICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIm5hbm9zZWNvbmQgaXMgb3V0IG9m
IHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgcmV0dXJuIElTTzg2
MDE6OlBsYWluVGltZSB7CisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihob3VyKSwKKyAg
ICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KG1pbnV0ZSksCisgICAgICAgIHN0YXRpY19jYXN0
PHVuc2lnbmVkPihzZWNvbmQpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWlsbGlz
ZWNvbmQpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWljcm9zZWNvbmQpLAorICAg
ICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obmFub3NlY29uZCkKKyAgICB9OworfQorCisvLyBD
cmVhdGVUZW1wb3JhbFBsYWluVGltZSAoIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3Vy
cywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzLCBtaWNyb3NlY29uZHMsIG5hbm9zZWNv
bmRzIFsgLCBuZXdUYXJnZXQgXSApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3NlYy10ZW1wb3JhbC1jcmVhdGV0ZW1wb3JhbHBsYWluVGltZQorVGVtcG9yYWxQbGFpblRp
bWUqIFRlbXBvcmFsUGxhaW5UaW1lOjp0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlLCBJU084NjAxOjpEdXJhdGlvbiYmIGR1
cmF0aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIHBsYWluVGltZSA9IHRv
UGxhaW5UaW1lKGdsb2JhbE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbikpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gVGVtcG9yYWxQbGFpblRpbWU6
OmNyZWF0ZSh2bSwgc3RydWN0dXJlLCBXVEZNb3ZlKHBsYWluVGltZSkpOworfQorCisvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1iYWxhbmNldGltZQor
c3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIGJhbGFuY2VUaW1lKGRvdWJsZSBob3VyLCBkb3VibGUg
bWludXRlLCBkb3VibGUgc2Vjb25kLCBkb3VibGUgbWlsbGlzZWNvbmQsIGRvdWJsZSBtaWNyb3Nl
Y29uZCwgZG91YmxlIG5hbm9zZWNvbmQpCit7CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3Rj
MzkvcHJvcG9zYWwtdGVtcG9yYWwvaXNzdWVzLzE4MDQKKyAgICBtaW51dGUgPSA2MCAqIGhvdXIg
KyBtaW51dGU7CisgICAgc2Vjb25kID0gNjAgKiBtaW51dGUgKyBzZWNvbmQ7CisgICAgbWlsbGlz
ZWNvbmQgPSAxMDAwICogc2Vjb25kICsgbWlsbGlzZWNvbmQ7CisgICAgbWljcm9zZWNvbmQgPSAx
MDAwICogbWlsbGlzZWNvbmQgKyBtaWNyb3NlY29uZDsKKyAgICBuYW5vc2Vjb25kID0gMTAwMCAq
IG1pY3Jvc2Vjb25kICsgbmFub3NlY29uZDsKKworICAgIG1pY3Jvc2Vjb25kID0gc3RkOjp0cnVu
YyhuYW5vc2Vjb25kIC8gMTAwMCk7CisgICAgbmFub3NlY29uZCA9IHN0ZDo6Zm1vZChuYW5vc2Vj
b25kLCAxMDAwKTsKKyAgICBtaWxsaXNlY29uZCA9IHN0ZDo6dHJ1bmMobWljcm9zZWNvbmQgLyAx
MDAwKTsKKyAgICBtaWNyb3NlY29uZCA9IHN0ZDo6Zm1vZChtaWNyb3NlY29uZCwgMTAwMCk7Cisg
ICAgc2Vjb25kID0gc3RkOjp0cnVuYyhtaWxsaXNlY29uZCAvIDEwMDApOworICAgIG1pbGxpc2Vj
b25kID0gc3RkOjpmbW9kKG1pbGxpc2Vjb25kLCAxMDAwKTsKKyAgICBtaW51dGUgPSBzdGQ6OnRy
dW5jKHNlY29uZCAvIDYwKTsKKyAgICBzZWNvbmQgPSBzdGQ6OmZtb2Qoc2Vjb25kLCA2MCk7Cisg
ICAgaG91ciA9IHN0ZDo6dHJ1bmMobWludXRlIC8gNjApOworICAgIG1pbnV0ZSA9IHN0ZDo6Zm1v
ZChtaW51dGUsIDYwKTsKKyAgICBkb3VibGUgZGF5cyA9IHN0ZDo6dHJ1bmMoaG91ciAvIDI0KTsK
KyAgICBob3VyID0gc3RkOjpmbW9kKGhvdXIsIDI0KTsKKyAgICByZXR1cm4gSVNPODYwMTo6RHVy
YXRpb24oMCwgMCwgMCwgZGF5cywgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBt
aWNyb3NlY29uZCwgbmFub3NlY29uZCk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXJvdW5kdGltZQorc3RhdGljIElTTzg2MDE6OkR1cmF0
aW9uIHJvdW5kVGltZShJU084NjAxOjpQbGFpblRpbWUgcGxhaW5UaW1lLCBkb3VibGUgaW5jcmVt
ZW50LCBUZW1wb3JhbFVuaXQgdW5pdCwgUm91bmRpbmdNb2RlIHJvdW5kaW5nTW9kZSwgc3RkOjpv
cHRpb25hbDxkb3VibGU+IGRheUxlbmd0aE5zKQoreworICAgIGF1dG8gZnJhY3Rpb25hbFNlY29u
ZCA9IFtdKElTTzg2MDE6OlBsYWluVGltZSBwbGFpblRpbWUpIC0+IGRvdWJsZSB7CisgICAgICAg
IHJldHVybiBwbGFpblRpbWUuc2Vjb25kKCkgKyBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSAqIDFl
LTMgKyBwbGFpblRpbWUubWljcm9zZWNvbmQoKSAqIDFlLTYgKyBwbGFpblRpbWUubmFub3NlY29u
ZCgpICogMWUtOTsKKyAgICB9OworCisgICAgZG91YmxlIHF1YW50aXR5ID0gMDsKKyAgICBzd2l0
Y2ggKHVuaXQpIHsKKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6RGF5OiB7CisgICAgICAgIGRvdWJs
ZSBsZW5ndGggPSBkYXlMZW5ndGhOcy52YWx1ZV9vcig4LjY0ICogMWUrMTMpOworICAgICAgICBx
dWFudGl0eSA9ICgoKChwbGFpblRpbWUuaG91cigpICogNjAuMCArIHBsYWluVGltZS5taW51dGUo
KSkgKiA2MC4wICsgcGxhaW5UaW1lLnNlY29uZCgpKSAqIDEwMDAuMCArIHBsYWluVGltZS5taWxs
aXNlY29uZCgpKSAqIDEwMDAuMCArIHBsYWluVGltZS5uYW5vc2Vjb25kKCkpIC8gbGVuZ3RoOwor
ICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGlu
Y3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIElTTzg2MDE6OkR1cmF0aW9u
KDAsIDAsIDAsIHJlc3VsdCwgMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgfQorICAgIGNhc2UgVGVt
cG9yYWxVbml0OjpIb3VyOiB7CisgICAgICAgIHF1YW50aXR5ID0gKGZyYWN0aW9uYWxTZWNvbmQo
cGxhaW5UaW1lKSAvIDYwLjAgKyBwbGFpblRpbWUubWludXRlKCkpIC8gNjAuMCArIHBsYWluVGlt
ZS5ob3VyKCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0luY3JlbWVudChx
dWFudGl0eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOworICAgICAgICByZXR1cm4gYmFsYW5j
ZVRpbWUocmVzdWx0LCAwLCAwLCAwLCAwLCAwKTsKKyAgICB9CisgICAgY2FzZSBUZW1wb3JhbFVu
aXQ6Ok1pbnV0ZTogeworICAgICAgICBxdWFudGl0eSA9IGZyYWN0aW9uYWxTZWNvbmQocGxhaW5U
aW1lKSAvIDYwLjAgKyBwbGFpblRpbWUubWludXRlKCk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0g
cm91bmROdW1iZXJUb0luY3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUp
OworICAgICAgICByZXR1cm4gYmFsYW5jZVRpbWUocGxhaW5UaW1lLmhvdXIoKSwgcmVzdWx0LCAw
LCAwLCAwLCAwKTsKKyAgICB9CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OlNlY29uZDogeworICAg
ICAgICBxdWFudGl0eSA9IGZyYWN0aW9uYWxTZWNvbmQocGxhaW5UaW1lKTsKKyAgICAgICAgYXV0
byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJv
dW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVybiBiYWxhbmNlVGltZShwbGFpblRpbWUuaG91cigp
LCBwbGFpblRpbWUubWludXRlKCksIHJlc3VsdCwgMCwgMCwgMCk7CisgICAgfQorICAgIGNhc2Ug
VGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZDogeworICAgICAgICBxdWFudGl0eSA9IHBsYWluVGlt
ZS5taWxsaXNlY29uZCgpICsgcGxhaW5UaW1lLm1pY3Jvc2Vjb25kKCkgKiAxZS0zICsgcGxhaW5U
aW1lLm5hbm9zZWNvbmQoKSAqIDFlLTY7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1i
ZXJUb0luY3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOworICAgICAg
ICByZXR1cm4gYmFsYW5jZVRpbWUocGxhaW5UaW1lLmhvdXIoKSwgcGxhaW5UaW1lLm1pbnV0ZSgp
LCBwbGFpblRpbWUuc2Vjb25kKCksIHJlc3VsdCwgMCwgMCk7CisgICAgfQorICAgIGNhc2UgVGVt
cG9yYWxVbml0OjpNaWNyb3NlY29uZDogeworICAgICAgICBxdWFudGl0eSA9IHBsYWluVGltZS5t
aWNyb3NlY29uZCgpICsgcGxhaW5UaW1lLm5hbm9zZWNvbmQoKSAqIDFlLTM7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0luY3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50LCBy
b3VuZGluZ01vZGUpOworICAgICAgICByZXR1cm4gYmFsYW5jZVRpbWUocGxhaW5UaW1lLmhvdXIo
KSwgcGxhaW5UaW1lLm1pbnV0ZSgpLCBwbGFpblRpbWUuc2Vjb25kKCksIHBsYWluVGltZS5taWxs
aXNlY29uZCgpLCByZXN1bHQsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFu
b3NlY29uZDogeworICAgICAgICBxdWFudGl0eSA9IHBsYWluVGltZS5uYW5vc2Vjb25kKCk7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0luY3JlbWVudChxdWFudGl0eSwgaW5j
cmVtZW50LCByb3VuZGluZ01vZGUpOworICAgICAgICByZXR1cm4gYmFsYW5jZVRpbWUocGxhaW5U
aW1lLmhvdXIoKSwgcGxhaW5UaW1lLm1pbnV0ZSgpLCBwbGFpblRpbWUuc2Vjb25kKCksIHBsYWlu
VGltZS5taWxsaXNlY29uZCgpLCBwbGFpblRpbWUubWljcm9zZWNvbmQoKSwgcmVzdWx0KTsKKyAg
ICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
KyAgICAgICAgYnJlYWs7CisgICAgfQorfQorCitJU084NjAxOjpQbGFpblRpbWUgVGVtcG9yYWxQ
bGFpblRpbWU6OnJvdW5kKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0
aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCog
b3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVl
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBzbWFs
bGVzdCA9IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1w
b3JhbFVuaXQ6OlllYXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2Vlaywg
VGVtcG9yYWxVbml0OjpEYXkgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKyAgICBpZiAoIXNtYWxsZXN0KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAiQ2Fubm90IHJvdW5kIHdpdGhvdXQgYSBzbWFsbGVzdFVuaXQgb3B0aW9u
Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgVGVtcG9yYWxVbml0IHNtYWxs
ZXN0VW5pdCA9IHNtYWxsZXN0LnZhbHVlKCk7CisKKyAgICBhdXRvIHJvdW5kaW5nTW9kZSA9IGlu
dGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5
TmFtZXMtPnJvdW5kaW5nTW9kZSwKKyAgICAgICAgeyB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6
OkNlaWwgfSwgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3Ms
IFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwgeyAiaGFsZkV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpI
YWxmRXhwYW5kIH0gfSwKKyAgICAgICAgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNl
aWxcIiwgXCJmbG9vclwiLCBcInRydW5jXCIsIG9yIFwiaGFsZkV4cGFuZFwiIl9zLCBSb3VuZGlu
Z01vZGU6OkhhbGZFeHBhbmQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7
CisKKyAgICBhdXRvIGluY3JlbWVudCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoZ2xvYmFs
T2JqZWN0LCBvcHRpb25zLCBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoc21hbGxlc3RVbml0KSwg
ZmFsc2UpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRv
IGR1cmF0aW9uID0gcm91bmRUaW1lKG1fcGxhaW5UaW1lLCBpbmNyZW1lbnQsIHNtYWxsZXN0VW5p
dCwgcm91bmRpbmdNb2RlLCBzdGQ6Om51bGxvcHQpOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGR1cmF0aW9uKSkpOworfQor
CitTdHJpbmcgVGVtcG9yYWxQbGFpblRpbWU6OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2Jh
bE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgaWYgKCFvcHRpb25zKQorICAgICAgICByZXR1cm4gdG9TdHJpbmcoKTsKKwor
ICAgIFByZWNpc2lvbkRhdGEgZGF0YSA9IHNlY29uZHNTdHJpbmdQcmVjaXNpb24oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgYXV0byByb3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsCisgICAgICAgIHsg
eyAiY2VpbCJfcywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01v
ZGU6OkZsb29yIH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZF
eHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCisgICAgICAgICJyb3VuZGlu
Z01vZGUgbXVzdCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wiLCBvciBc
ImhhbGZFeHBhbmRcIiJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIC8vIE5vIG5lZWQgdG8gbWFrZSBhIG5ldyBvYmpl
Y3QgaWYgd2Ugd2VyZSBnaXZlbiBleHBsaWNpdCBkZWZhdWx0cy4KKyAgICBpZiAoc3RkOjpnZXQ8
MD4oZGF0YS5wcmVjaXNpb24pID09IFByZWNpc2lvbjo6QXV0byAmJiByb3VuZGluZ01vZGUgPT0g
Um91bmRpbmdNb2RlOjpUcnVuYykKKyAgICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CisKKyAgICBh
dXRvIGR1cmF0aW9uID0gcm91bmRUaW1lKG1fcGxhaW5UaW1lLCBkYXRhLmluY3JlbWVudCwgZGF0
YS51bml0LCByb3VuZGluZ01vZGUsIHN0ZDo6bnVsbG9wdCk7CisgICAgYXV0byBwbGFpblRpbWUg
PSB0b1BsYWluVGltZShnbG9iYWxPYmplY3QsIFdURk1vdmUoZHVyYXRpb24pKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIElTTzg2MDE6OnRlbXBv
cmFsVGltZVRvU3RyaW5nKHBsYWluVGltZSwgZGF0YS5wcmVjaXNpb24pOworfQorCisKK3N0YXRp
YyBQcm9wZXJ0eU5hbWUgcHJvcGVydHlOYW1lKFZNJiB2bSwgdW5zaWduZWQgaW5kZXgpCit7Cisg
ICAgQVNTRVJUKGluZGV4IDwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzKTsKKyAgICBzd2l0Y2ggKHN0
YXRpY19jYXN0PFRlbXBvcmFsVW5pdD4oaW5kZXgpKSB7CisjZGVmaW5lIEpTQ19URU1QT1JBTF9E
VVJBVElPTl9QUk9QRVJUWV9OQU1FKG5hbWUsIGNhcGl0YWxpemVkTmFtZSkgY2FzZSBUZW1wb3Jh
bFVuaXQ6OmNhcGl0YWxpemVkTmFtZTogcmV0dXJuIHZtLnByb3BlcnR5TmFtZXMtPm5hbWU7Cisg
ICAgICAgIEpTQ19URU1QT1JBTF9VTklUUyhKU0NfVEVNUE9SQUxfRFVSQVRJT05fUFJPUEVSVFlf
TkFNRSkKKyN1bmRlZiBKU0NfVEVNUE9SQUxfRFVSQVRJT05fUFJPUEVSVFlfTkFNRQorICAgIH0K
KworICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7Cit9CisKK3N0YXRpYyBJU084NjAx
OjpEdXJhdGlvbiB0b1RlbXBvcmFsVGltZVJlY29yZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU09iamVjdCogdGVtcG9yYWxUaW1lTGlrZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24geyB9OworICAgIGZvciAodW5zaWduZWQg
aW5kZXggPSAwOyBpbmRleCA8IG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0czsgKytpbmRl
eCkgeworICAgICAgICB1bnNpZ25lZCBkdXJhdGlvbkluZGV4ID0gaW5kZXggKyBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oVGVtcG9yYWxVbml0OjpIb3VyKTsKKyAgICAgICAgYXV0byBuYW1lID0gcHJv
cGVydHlOYW1lKHZtLCBkdXJhdGlvbkluZGV4KTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRl
bXBvcmFsVGltZUxpa2UtPmdldChnbG9iYWxPYmplY3QsIG5hbWUpOworICAgICAgICBSRVRVUk5f
SUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgICAgIC8vIFdlIGFyZSB0aHJvd2luZyBh
biBlcnJvciBoZXJlLCBidXQgcHJvYmFibHkgdGhpcyBpcyBhIHNwZWMgYnVnLgorICAgICAgICAv
LyBUcmFja2VkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXRlbXBvcmFsL2lz
c3Vlcy8xODAzLgorICAgICAgICBpZiAodmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAg
ICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgbWFrZVN0cmluZygnIicsIFN0
cmluZ1ZpZXcobmFtZS51aWQoKSksICJcIiBmaWVsZCBpcyBtaXNzaW5nIl9zKSk7CisgICAgICAg
ICAgICByZXR1cm4geyB9OworICAgICAgICB9CisKKyAgICAgICAgZG91YmxlIGludGVnZXIgPSB2
YWx1ZS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShpbnRl
Z2VyKSkgeworICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJUZW1wb3JhbC5QbGFpblRpbWUgcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAg
ICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGR1cmF0aW9uW2R1cmF0aW9u
SW5kZXhdID0gaW50ZWdlcjsKKyAgICB9CisgICAgcmV0dXJuIGR1cmF0aW9uOworfQorCitzdGF0
aWMgc3RkOjphcnJheTxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIG51bWJlck9mVGVtcG9yYWxQbGFp
blRpbWVVbml0cz4gdG9QYXJ0aWFsVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U09iamVjdCogdGVtcG9yYWxUaW1lTGlrZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAg
Ym9vbCBoYXNBbnlGaWVsZHMgPSBmYWxzZTsKKyAgICBzdGQ6OmFycmF5PHN0ZDo6b3B0aW9uYWw8
ZG91YmxlPiwgbnVtYmVyT2ZUZW1wb3JhbFBsYWluVGltZVVuaXRzPiBwYXJ0aWFsVGltZSB7IH07
CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZUZW1wb3JhbFBs
YWluVGltZVVuaXRzOyArK2luZGV4KSB7CisgICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uSW5kZXgg
PSBpbmRleCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZW1wb3JhbFVuaXQ6OkhvdXIpOworICAg
ICAgICBhdXRvIG5hbWUgPSBwcm9wZXJ0eU5hbWUodm0sIGR1cmF0aW9uSW5kZXgpOworICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgbmFt
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAgICAg
aWYgKCF2YWx1ZS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgICAgICBoYXNBbnlGaWVsZHMgPSB0
cnVlOworICAgICAgICAgICAgZG91YmxlIGRvdWJsZVZhbHVlID0gdmFsdWUudG9JbnRlZ2VyT3JJ
bmZpbml0eShnbG9iYWxPYmplY3QpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKyAgICAgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShkb3VibGVWYWx1ZSkp
IHsKKyAgICAgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
InRvUGFydGlhbFRpbWUgcHJvcGVydGllcyBtdXN0IGJlIGZpbml0ZSJfcyk7CisgICAgICAgICAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHBhcnRpYWxUaW1l
W2luZGV4XSA9IGRvdWJsZVZhbHVlOworICAgICAgICB9CisgICAgfQorICAgIGlmICghaGFzQW55
RmllbGRzKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJ0
b1BhcnRpYWxUaW1lIHJlcXVpcmVzIGF0IGxlYXN0IG9uZSBwcm9wZXJ0eSJfcyk7CisgICAgICAg
IHJldHVybiB7IH07CisgICAgfQorICAgIHJldHVybiBwYXJ0aWFsVGltZTsKK30KKworc3RhdGlj
IElTTzg2MDE6OlBsYWluVGltZSBjb25zdHJhaW50VGltZShJU084NjAxOjpEdXJhdGlvbiYmIGR1
cmF0aW9uKQoreworICAgIGF1dG8gY29uc3RyYWluVG9SYW5nZSA9IFtdKGRvdWJsZSB2YWx1ZSwg
dW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQgbWF4aW11bSkgLT4gdW5zaWduZWQgeworICAgICAg
ICBpZiAoc3RkOjppc25hbih2YWx1ZSkpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAg
cmV0dXJuIHN0YXRpY19jYXN0PHVuc2lnbmVkPihzdGQ6Om1pbjxkb3VibGU+KHN0ZDo6bWF4PGRv
dWJsZT4odmFsdWUsIG1pbmltdW0pLCBtYXhpbXVtKSk7CisgICAgfTsKKyAgICByZXR1cm4gSVNP
ODYwMTo6UGxhaW5UaW1lKAorICAgICAgICBjb25zdHJhaW5Ub1JhbmdlKGR1cmF0aW9uLmhvdXJz
KCksIDAsIDIzKSwKKyAgICAgICAgY29uc3RyYWluVG9SYW5nZShkdXJhdGlvbi5taW51dGVzKCks
IDAsIDU5KSwKKyAgICAgICAgY29uc3RyYWluVG9SYW5nZShkdXJhdGlvbi5zZWNvbmRzKCksIDAs
IDU5KSwKKyAgICAgICAgY29uc3RyYWluVG9SYW5nZShkdXJhdGlvbi5taWxsaXNlY29uZHMoKSwg
MCwgMTAwMCksCisgICAgICAgIGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRpb24ubWljcm9zZWNvbmRz
KCksIDAsIDEwMDApLAorICAgICAgICBjb25zdHJhaW5Ub1JhbmdlKGR1cmF0aW9uLm5hbm9zZWNv
bmRzKCksIDAsIDEwMDApKTsKK30KKworc3RhdGljIElTTzg2MDE6OlBsYWluVGltZSByZWd1bGF0
ZVRpbWUoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSVNPODYwMTo6RHVyYXRpb24mJiBk
dXJhdGlvbiwgVGVtcG9yYWxPdmVyZmxvdyBvdmVyZmxvdykKK3sKKyAgICBzd2l0Y2ggKG92ZXJm
bG93KSB7CisgICAgY2FzZSBUZW1wb3JhbE92ZXJmbG93OjpDb25zdHJhaW46CisgICAgICAgIHJl
dHVybiBjb25zdHJhaW50VGltZShXVEZNb3ZlKGR1cmF0aW9uKSk7CisgICAgY2FzZSBUZW1wb3Jh
bE92ZXJmbG93OjpSZWplY3Q6CisgICAgICAgIHJldHVybiB0b1BsYWluVGltZShnbG9iYWxPYmpl
Y3QsIFdURk1vdmUoZHVyYXRpb24pKTsKKyAgICB9CisgICAgcmV0dXJuIHsgfTsKK30KKworc3Rh
dGljIEpTT2JqZWN0KiB0b1RlbXBvcmFsQ2FsZW5kYXJXaXRoSVNPRGVmYXVsdChKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRlbXBvcmFsQ2FsZW5kYXJMaWtlKQoreworICAg
IGlmICh0ZW1wb3JhbENhbGVuZGFyTGlrZS5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4g
VGVtcG9yYWxDYWxlbmRhcjo6Y3JlYXRlKGdsb2JhbE9iamVjdC0+dm0oKSwgZ2xvYmFsT2JqZWN0
LT5jYWxlbmRhclN0cnVjdHVyZSgpLCBpc284NjAxQ2FsZW5kYXJJRCgpKTsKKyAgICByZXR1cm4g
VGVtcG9yYWxDYWxlbmRhcjo6ZnJvbShnbG9iYWxPYmplY3QsIHRlbXBvcmFsQ2FsZW5kYXJMaWtl
KTsKK30KKworc3RhdGljIEpTT2JqZWN0KiBnZXRUZW1wb3JhbENhbGVuZGFyV2l0aElTT0RlZmF1
bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBpdGVtVmFsdWUpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxQ
bGFpblRpbWU+KHZtKSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+
KGl0ZW1WYWx1ZSktPmNhbGVuZGFyKCk7CisKKyAgICBKU1ZhbHVlIGNhbGVuZGFyID0gaXRlbVZh
bHVlLmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGVuZGFyKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihz
Y29wZSwgdG9UZW1wb3JhbENhbGVuZGFyV2l0aElTT0RlZmF1bHQoZ2xvYmFsT2JqZWN0LCBjYWxl
bmRhcikpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10
ZW1wb3JhbC10b3RlbXBvcmFsdGltZQorVGVtcG9yYWxQbGFpblRpbWUqIFRlbXBvcmFsUGxhaW5U
aW1lOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVl
LCBzdGQ6Om9wdGlvbmFsPFRlbXBvcmFsT3ZlcmZsb3c+IG92ZXJmbG93VmFsdWUpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gb3ZlcmZsb3cgPSBvdmVyZmxvd1ZhbHVlLnZhbHVl
X29yKFRlbXBvcmFsT3ZlcmZsb3c6OkNvbnN0cmFpbik7CisKKyAgICBpZiAoaXRlbVZhbHVlLmlz
T2JqZWN0KCkpIHsKKyAgICAgICAgaWYgKGl0ZW1WYWx1ZS5pbmhlcml0czxUZW1wb3JhbFBsYWlu
VGltZT4odm0pKQorICAgICAgICAgICAgcmV0dXJuIGpzQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+
KGl0ZW1WYWx1ZSk7CisgICAgICAgIEpTT2JqZWN0KiBjYWxlbmRhciA9IGdldFRlbXBvcmFsQ2Fs
ZW5kYXJXaXRoSVNPRGVmYXVsdChnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSk7CisgICAgICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIEpTU3RyaW5nKiBjYWxlbmRh
clN0cmluZyA9IGNhbGVuZGFyLT50b1N0cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICBTdHJpbmcgY2FsZW5kYXJXVEZT
dHJpbmcgPSBjYWxlbmRhclN0cmluZy0+dmFsdWUoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgaWYgKGNhbGVuZGFyV1RGU3Ry
aW5nICE9ICJpc284NjAxIl9zKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgImNhbGVuZGFyIGlzIG5vdCBpc284NjAxIl9zKTsKKyAgICAgICAgICAg
IHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAgICAgYXV0byBkdXJhdGlvbiA9IHRvVGVtcG9y
YWxUaW1lUmVjb3JkKGdsb2JhbE9iamVjdCwganNDYXN0PEpTT2JqZWN0Kj4oaXRlbVZhbHVlKSk7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGF1dG8g
cGxhaW5UaW1lID0gcmVndWxhdGVUaW1lKGdsb2JhbE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbiks
IG92ZXJmbG93KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAg
ICAgICAgcmV0dXJuIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+
cGxhaW5UaW1lU3RydWN0dXJlKCksIFdURk1vdmUocGxhaW5UaW1lKSk7CisgICAgfQorCisgICAg
YXV0byBzdHJpbmcgPSBpdGVtVmFsdWUudG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byB0aW1lID0gSVNPODYw
MTo6cGFyc2VUaW1lKHN0cmluZyk7CisgICAgaWYgKHRpbWUpIHsKKyAgICAgICAgYXV0byBbcGxh
aW5UaW1lLCB0aW1lWm9uZU9wdGlvbmFsXSA9IHRpbWUudmFsdWUoKTsKKyAgICAgICAgcmV0dXJu
IFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3Ry
dWN0dXJlKCksIFdURk1vdmUocGxhaW5UaW1lKSk7CisgICAgfQorCisgICAgYXV0byBkYXRlVGlt
ZSA9IElTTzg2MDE6OnBhcnNlRGF0ZVRpbWUoc3RyaW5nKTsKKyAgICBpZiAoZGF0ZVRpbWUpIHsK
KyAgICAgICAgYXV0byBbcGxhaW5EYXRlLCBwbGFpblRpbWVPcHRpb25hbCwgdGltZVpvbmVPcHRp
b25hbF0gPSBkYXRlVGltZS52YWx1ZSgpOworICAgICAgICBhdXRvIHBsYWluVGltZSA9IHBsYWlu
VGltZU9wdGlvbmFsLnZhbHVlX29yKElTTzg2MDE6OlBsYWluVGltZSgpKTsKKyAgICAgICAgcmV0
dXJuIFRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5UaW1l
U3RydWN0dXJlKCksIFdURk1vdmUocGxhaW5UaW1lKSk7CisgICAgfQorCisgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJpbnZhbGlkIHRpbWUgc3RyaW5nIl9zKTsKKyAg
ICByZXR1cm4geyB9OworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwv
I3NlYy10ZW1wb3JhbC1jb21wYXJldGVtcG9yYWx0aW1lCitpbnQzMl90IFRlbXBvcmFsUGxhaW5U
aW1lOjpjb21wYXJlKFRlbXBvcmFsUGxhaW5UaW1lKiBwbGFpblRpbWUxLCBUZW1wb3JhbFBsYWlu
VGltZSogcGxhaW5UaW1lMikKK3sKKyAgICBJU084NjAxOjpQbGFpblRpbWUgdDEgPSBwbGFpblRp
bWUxLT5wbGFpblRpbWUoKTsKKyAgICBJU084NjAxOjpQbGFpblRpbWUgdDIgPSBwbGFpblRpbWUy
LT5wbGFpblRpbWUoKTsKKyAgICBpZiAodDEuaG91cigpID4gdDIuaG91cigpKQorICAgICAgICBy
ZXR1cm4gMTsKKyAgICBpZiAodDEuaG91cigpIDwgdDIuaG91cigpKQorICAgICAgICByZXR1cm4g
LTE7CisgICAgaWYgKHQxLm1pbnV0ZSgpID4gdDIubWludXRlKCkpCisgICAgICAgIHJldHVybiAx
OworICAgIGlmICh0MS5taW51dGUoKSA8IHQyLm1pbnV0ZSgpKQorICAgICAgICByZXR1cm4gLTE7
CisgICAgaWYgKHQxLnNlY29uZCgpID4gdDIuc2Vjb25kKCkpCisgICAgICAgIHJldHVybiAxOwor
ICAgIGlmICh0MS5zZWNvbmQoKSA8IHQyLnNlY29uZCgpKQorICAgICAgICByZXR1cm4gLTE7Cisg
ICAgaWYgKHQxLm1pbGxpc2Vjb25kKCkgPiB0Mi5taWxsaXNlY29uZCgpKQorICAgICAgICByZXR1
cm4gMTsKKyAgICBpZiAodDEubWlsbGlzZWNvbmQoKSA8IHQyLm1pbGxpc2Vjb25kKCkpCisgICAg
ICAgIHJldHVybiAtMTsKKyAgICBpZiAodDEubWljcm9zZWNvbmQoKSA+IHQyLm1pY3Jvc2Vjb25k
KCkpCisgICAgICAgIHJldHVybiAxOworICAgIGlmICh0MS5taWNyb3NlY29uZCgpIDwgdDIubWlj
cm9zZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh0MS5uYW5vc2Vjb25kKCkg
PiB0Mi5uYW5vc2Vjb25kKCkpCisgICAgICAgIHJldHVybiAxOworICAgIGlmICh0MS5uYW5vc2Vj
b25kKCkgPCB0Mi5uYW5vc2Vjb25kKCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4g
MDsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwtdG9saW1pdGVkdGVtcG9yYWxkdXJhdGlvbgorc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIHRv
TGltaXRlZFRlbXBvcmFsRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNW
YWx1ZSB0ZW1wb3JhbER1cmF0aW9uTGlrZSwgc3RkOjppbml0aWFsaXplcl9saXN0PFRlbXBvcmFs
VW5pdD4gZGlzYWxsb3dlZEZpZWxkcykKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSVNP
ODYwMTo6RHVyYXRpb24gZHVyYXRpb247CisgICAgaWYgKCF0ZW1wb3JhbER1cmF0aW9uTGlrZS5p
c09iamVjdCgpKSB7CisgICAgICAgIFN0cmluZyBzdHJpbmcgPSB0ZW1wb3JhbER1cmF0aW9uTGlr
ZS50b1dURlN0cmluZyhnbG9iYWxPYmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworICAgICAgICBhdXRvIGR1cmF0aW9uT3B0aW9uYWwgPSBJU084NjAxOjpw
YXJzZUR1cmF0aW9uKHN0cmluZyk7CisgICAgICAgIGlmICghZHVyYXRpb25PcHRpb25hbCkgewor
ICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDb3VsZCBu
b3QgcGFyc2UgRHVyYXRpb24gc3RyaW5nIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07Cisg
ICAgICAgIH0KKyAgICAgICAgZHVyYXRpb24gPSBkdXJhdGlvbk9wdGlvbmFsLnZhbHVlKCk7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgZHVyYXRpb24gPSBUZW1wb3JhbER1cmF0aW9uOjp0b0R1cmF0
aW9uUmVjb3JkKGdsb2JhbE9iamVjdCwgdGVtcG9yYWxEdXJhdGlvbkxpa2UpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KKworICAgIGlmICghSVNPODYw
MTo6aXNWYWxpZER1cmF0aW9uKGR1cmF0aW9uKSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHByb3BlcnRpZXMgbXVzdCBi
ZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorCisgICAgZm9yIChzaXplX3QgaW5kZXggPSAwOyBpbmRleCA8IG51bWJlck9mVGVt
cG9yYWxVbml0czsgaW5kZXgrKykgeworICAgICAgICBpZiAoZHVyYXRpb25baW5kZXhdKSB7Cisg
ICAgICAgICAgICBpZiAoZGlzYWxsb3dlZEZpZWxkcy5zaXplKCkgJiYgc3RkOjpmaW5kKGRpc2Fs
bG93ZWRGaWVsZHMuYmVnaW4oKSwgZGlzYWxsb3dlZEZpZWxkcy5lbmQoKSwgc3RhdGljX2Nhc3Q8
VGVtcG9yYWxVbml0PihpbmRleCkpICE9IGRpc2FsbG93ZWRGaWVsZHMuZW5kKCkpIHsKKyAgICAg
ICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkR1cmF0aW9u
IHByb3BlcnRpZXMgaW5jbHVkZSBkaXNhbGxvd2VkIGZpZWxkIl9zKTsKKyAgICAgICAgICAgICAg
ICByZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorCisgICAgcmV0
dXJuIGR1cmF0aW9uOworfQorCitzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gYWRkVGltZShjb25z
dCBJU084NjAxOjpQbGFpblRpbWUmIHBsYWluVGltZSwgY29uc3QgSVNPODYwMTo6RHVyYXRpb24m
IGR1cmF0aW9uKQoreworICAgIHJldHVybiBiYWxhbmNlVGltZSgKKyAgICAgICAgcGxhaW5UaW1l
LmhvdXIoKSArIGR1cmF0aW9uLmhvdXJzKCksCisgICAgICAgIHBsYWluVGltZS5taW51dGUoKSAr
IGR1cmF0aW9uLm1pbnV0ZXMoKSwKKyAgICAgICAgcGxhaW5UaW1lLnNlY29uZCgpICsgZHVyYXRp
b24uc2Vjb25kcygpLAorICAgICAgICBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSArIGR1cmF0aW9u
Lm1pbGxpc2Vjb25kcygpLAorICAgICAgICBwbGFpblRpbWUubWljcm9zZWNvbmQoKSArIGR1cmF0
aW9uLm1pY3Jvc2Vjb25kcygpLAorICAgICAgICBwbGFpblRpbWUubmFub3NlY29uZCgpICsgZHVy
YXRpb24ubmFub3NlY29uZHMoKSk7Cit9CisKK0lTTzg2MDE6OlBsYWluVGltZSBUZW1wb3JhbFBs
YWluVGltZTo6YWRkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGVtcG9y
YWxEdXJhdGlvbkxpa2UpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8g
ZHVyYXRpb24gPSB0b0xpbWl0ZWRUZW1wb3JhbER1cmF0aW9uKGdsb2JhbE9iamVjdCwgdGVtcG9y
YWxEdXJhdGlvbkxpa2UsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9QbGFpblRpbWUoZ2xvYmFsT2Jq
ZWN0LCBhZGRUaW1lKG1fcGxhaW5UaW1lLCBkdXJhdGlvbikpKTsKK30KKworSVNPODYwMTo6UGxh
aW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjpzdWJ0cmFjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBKU1ZhbHVlIHRlbXBvcmFsRHVyYXRpb25MaWtlKSBjb25zdAoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICBhdXRvIGR1cmF0aW9uID0gdG9MaW1pdGVkVGVtcG9yYWxEdXJhdGlv
bihnbG9iYWxPYmplY3QsIHRlbXBvcmFsRHVyYXRpb25MaWtlLCB7IH0pOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUs
IHRvUGxhaW5UaW1lKGdsb2JhbE9iamVjdCwgYWRkVGltZShtX3BsYWluVGltZSwgLWR1cmF0aW9u
KSkpOworfQorCitJU084NjAxOjpQbGFpblRpbWUgVGVtcG9yYWxQbGFpblRpbWU6OndpdGgoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRlbXBvcmFsVGltZUxpa2UsIEpT
VmFsdWUgb3B0aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBp
ZiAodGVtcG9yYWxUaW1lTGlrZS0+aW5oZXJpdHM8VGVtcG9yYWxQbGFpblRpbWU+KHZtKSkgewor
ICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgb2Jq
ZWN0IG11c3Qgbm90IGNhcnJ5IGNhbGVuZGFyIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9CisKKyAgICBKU1ZhbHVlIGNhbGVuZGFyUHJvcGVydHkgPSB0ZW1wb3JhbFRpbWVMaWtlLT5n
ZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhcik7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBpZiAoIWNhbGVuZGFyUHJvcGVydHkuaXNV
bmRlZmluZWQoKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAiYXJndW1lbnQgb2JqZWN0IG11c3Qgbm90IGNhcnJ5IGNhbGVuZGFyIl9zKTsKKyAgICAgICAg
cmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBKU1ZhbHVlIHRpbWVab25lUHJvcGVydHkgPSB0ZW1w
b3JhbFRpbWVMaWtlLT5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT50aW1lWm9u
ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBpZiAoIXRpbWVa
b25lUHJvcGVydHkuaXNVbmRlZmluZWQoKSkgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiYXJndW1lbnQgb2JqZWN0IG11c3Qgbm90IGNhcnJ5IHRpbWUgem9u
ZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisgICAgYXV0byBbaG91ck9wdGlv
bmFsLCBtaW51dGVPcHRpb25hbCwgc2Vjb25kT3B0aW9uYWwsIG1pbGxpc2Vjb25kT3B0aW9uYWws
IG1pY3Jvc2Vjb25kT3B0aW9uYWwsIG5hbm9zZWNvbmRPcHRpb25hbF0gPSB0b1BhcnRpYWxUaW1l
KGdsb2JhbE9iamVjdCwgdGVtcG9yYWxUaW1lTGlrZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNP
YmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBUZW1wb3JhbE92ZXJmbG93IG92ZXJmbG93ID0gdG9UZW1w
b3JhbE92ZXJmbG93KGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uIHsgfTsK
KyAgICBkdXJhdGlvbi5zZXRIb3Vycyhob3VyT3B0aW9uYWwudmFsdWVfb3IoaG91cigpKSk7Cisg
ICAgZHVyYXRpb24uc2V0TWludXRlcyhtaW51dGVPcHRpb25hbC52YWx1ZV9vcihtaW51dGUoKSkp
OworICAgIGR1cmF0aW9uLnNldFNlY29uZHMoc2Vjb25kT3B0aW9uYWwudmFsdWVfb3Ioc2Vjb25k
KCkpKTsKKyAgICBkdXJhdGlvbi5zZXRNaWxsaXNlY29uZHMobWlsbGlzZWNvbmRPcHRpb25hbC52
YWx1ZV9vcihtaWxsaXNlY29uZCgpKSk7CisgICAgZHVyYXRpb24uc2V0TWljcm9zZWNvbmRzKG1p
Y3Jvc2Vjb25kT3B0aW9uYWwudmFsdWVfb3IobWljcm9zZWNvbmQoKSkpOworICAgIGR1cmF0aW9u
LnNldE5hbm9zZWNvbmRzKG5hbm9zZWNvbmRPcHRpb25hbC52YWx1ZV9vcihuYW5vc2Vjb25kKCkp
KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgcmVndWxhdGVUaW1lKGdsb2JhbE9i
amVjdCwgV1RGTW92ZShkdXJhdGlvbiksIG92ZXJmbG93KSk7Cit9CisKK3N0YXRpYyBJU084NjAx
OjpEdXJhdGlvbiBkaWZmZXJlbmNlVGltZShJU084NjAxOjpQbGFpblRpbWUgdGltZTEsIElTTzg2
MDE6OlBsYWluVGltZSB0aW1lMikKK3sKKyAgICBkb3VibGUgaG91cnMgPSBzdGF0aWNfY2FzdDxk
b3VibGU+KHRpbWUyLmhvdXIoKSkgLSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUxLmhvdXIoKSk7
CisgICAgZG91YmxlIG1pbnV0ZXMgPSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUyLm1pbnV0ZSgp
KSAtIHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTEubWludXRlKCkpOworICAgIGRvdWJsZSBzZWNv
bmRzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMi5zZWNvbmQoKSkgLSBzdGF0aWNfY2FzdDxk
b3VibGU+KHRpbWUxLnNlY29uZCgpKTsKKyAgICBkb3VibGUgbWlsbGlzZWNvbmRzID0gc3RhdGlj
X2Nhc3Q8ZG91YmxlPih0aW1lMi5taWxsaXNlY29uZCgpKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4o
dGltZTEubWlsbGlzZWNvbmQoKSk7CisgICAgZG91YmxlIG1pY3Jvc2Vjb25kcyA9IHN0YXRpY19j
YXN0PGRvdWJsZT4odGltZTIubWljcm9zZWNvbmQoKSkgLSBzdGF0aWNfY2FzdDxkb3VibGU+KHRp
bWUxLm1pY3Jvc2Vjb25kKCkpOworICAgIGRvdWJsZSBuYW5vc2Vjb25kcyA9IHN0YXRpY19jYXN0
PGRvdWJsZT4odGltZTIubmFub3NlY29uZCgpKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTEu
bmFub3NlY29uZCgpKTsKKyAgICByZXR1cm4gYmFsYW5jZVRpbWUoaG91cnMsIG1pbnV0ZXMsIHNl
Y29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25kcyk7Cit9CisKK3N0
YXRpYyBzdGQ6OnR1cGxlPFRlbXBvcmFsVW5pdCwgVGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUs
IGRvdWJsZT4gZXh0cmFjdERpZmZlcmVuY2VPcHRpb25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwg
b3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisg
ICAgYXV0byBzbWFsbGVzdCA9IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0
aW9ucywgeyBUZW1wb3JhbFVuaXQ6OlllYXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRlbXBvcmFs
VW5pdDo6V2VlaywgVGVtcG9yYWxVbml0OjpEYXkgfSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3Qu
dmFsdWVfb3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kKTsKKworICAgIGF1dG8gbGFyZ2VzdCA9
IHRlbXBvcmFsTGFyZ2VzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB7IFRlbXBvcmFsVW5p
dDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0OjpXZWVrLCBUZW1wb3Jh
bFVuaXQ6OkRheSB9LCBUZW1wb3JhbFVuaXQ6OkhvdXIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0ID0gbGFyZ2VzdC52
YWx1ZV9vcihUZW1wb3JhbFVuaXQ6OkhvdXIpOworCisgICAgaWYgKHNtYWxsZXN0VW5pdCA8IGxh
cmdlc3RVbml0KSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCAic21hbGxlc3RVbml0IG11c3QgYmUgc21hbGxlciB0aGFuIGxhcmdlc3RVbml0Il9zKTsKKyAg
ICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxP
cHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFt
ZXMtPnJvdW5kaW5nTW9kZSwKKyAgICAgICAgeyB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNl
aWwgfSwgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJv
dW5kaW5nTW9kZTo6VHJ1bmMgfSwgeyAiaGFsZkV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxm
RXhwYW5kIH0gfSwKKyAgICAgICAgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxc
IiwgXCJmbG9vclwiLCBcInRydW5jXCIsIG9yIFwiaGFsZkV4cGFuZFwiIl9zLCBSb3VuZGluZ01v
ZGU6OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAg
YXV0byBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KHNtYWxsZXN0VW5pdCksIGZhbHNlKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIHsgc21h
bGxlc3RVbml0LCBsYXJnZXN0VW5pdCwgcm91bmRpbmdNb2RlLCBpbmNyZW1lbnQgfTsKK30KKwor
SVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxQbGFpblRpbWU6OnVudGlsKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIFRlbXBvcmFsUGxhaW5UaW1lKiBvdGhlciwgSlNWYWx1ZSBvcHRpb25z
VmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gW3NtYWxsZXN0
VW5pdCwgbGFyZ2VzdFVuaXQsIHJvdW5kaW5nTW9kZSwgaW5jcmVtZW50XSA9IGV4dHJhY3REaWZm
ZXJlbmNlT3B0aW9ucyhnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gcmVzdWx0ID0gZGlmZmVyZW5jZVRp
bWUocGxhaW5UaW1lKCksIG90aGVyLT5wbGFpblRpbWUoKSk7CisgICAgcmVzdWx0LnNldFllYXJz
KDApOworICAgIHJlc3VsdC5zZXRNb250aHMoMCk7CisgICAgcmVzdWx0LnNldFdlZWtzKDApOwor
ICAgIHJlc3VsdC5zZXREYXlzKDApOworICAgIFRlbXBvcmFsRHVyYXRpb246OnJvdW5kKHJlc3Vs
dCwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSk7CisgICAgVGVtcG9yYWxE
dXJhdGlvbjo6YmFsYW5jZShyZXN1bHQsIGxhcmdlc3RVbml0KTsKKyAgICByZXR1cm4gcmVzdWx0
OworfQorCitJU084NjAxOjpEdXJhdGlvbiBUZW1wb3JhbFBsYWluVGltZTo6c2luY2UoSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVtcG9yYWxQbGFpblRpbWUqIG90aGVyLCBKU1ZhbHVl
IG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBb
c21hbGxlc3RVbml0LCBsYXJnZXN0VW5pdCwgcm91bmRpbmdNb2RlLCBpbmNyZW1lbnRdID0gZXh0
cmFjdERpZmZlcmVuY2VPcHRpb25zKGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byByZXN1bHQgPSBkaWZm
ZXJlbmNlVGltZShvdGhlci0+cGxhaW5UaW1lKCksIHBsYWluVGltZSgpKTsKKyAgICByZXN1bHQg
PSAtcmVzdWx0OworICAgIHJlc3VsdC5zZXRZZWFycygwKTsKKyAgICByZXN1bHQuc2V0TW9udGhz
KDApOworICAgIHJlc3VsdC5zZXRXZWVrcygwKTsKKyAgICByZXN1bHQuc2V0RGF5cygwKTsKKyAg
ICBUZW1wb3JhbER1cmF0aW9uOjpyb3VuZChyZXN1bHQsIGluY3JlbWVudCwgc21hbGxlc3RVbml0
LCByb3VuZGluZ01vZGUpOworICAgIHJlc3VsdCA9IC1yZXN1bHQ7CisgICAgcmVzdWx0LnNldERh
eXMoMCk7CisgICAgVGVtcG9yYWxEdXJhdGlvbjo6YmFsYW5jZShyZXN1bHQsIGxhcmdlc3RVbml0
KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5oCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmQ5OTcwMDBkOGUwOGQyODQ2ZWYyZGMwMzY1YTk5MTM0MWY3ZGMzYmYKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5o
CkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNsdWRl
ICJMYXp5UHJvcGVydHkuaCIKKyNpbmNsdWRlICJUZW1wb3JhbENhbGVuZGFyLmgiCisKK25hbWVz
cGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbFBsYWluVGltZSBmaW5hbCA6IHB1YmxpYyBKU05v
bkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVj
dDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2Rl
PgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHZtLnRlbXBvcmFsUGxhaW5UaW1lU3BhY2U8bW9kZT4oKTsKKyAgICB9CisK
KyAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRpbWUqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIElT
Tzg2MDE6OlBsYWluVGltZSYmKTsKKyAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRpbWUqIHRyeUNy
ZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpEdXJhdGlv
biYmKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCisgICAgc3RhdGljIFRl
bXBvcmFsUGxhaW5UaW1lKiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSwgc3RkOjpvcHRp
b25hbDxUZW1wb3JhbE92ZXJmbG93Pik7CisgICAgc3RhdGljIGludDMyX3QgY29tcGFyZShUZW1w
b3JhbFBsYWluVGltZSosIFRlbXBvcmFsUGxhaW5UaW1lKik7CisKKyAgICBUZW1wb3JhbENhbGVu
ZGFyKiBjYWxlbmRhcigpIHsgcmV0dXJuIG1fY2FsZW5kYXIuZ2V0KHRoaXMpOyB9CisgICAgSVNP
ODYwMTo6UGxhaW5UaW1lIHBsYWluVGltZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5UaW1lOyB9
CisKKyNkZWZpbmUgSlNDX0RFRklORV9URU1QT1JBTF9QTEFJTl9USU1FX0ZJRUxEKG5hbWUsIGNh
cGl0YWxpemVkTmFtZSkgXAorICAgIHVuc2lnbmVkIG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3Bs
YWluVGltZS5uYW1lKCk7IH0KKyAgICBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhKU0Nf
REVGSU5FX1RFTVBPUkFMX1BMQUlOX1RJTUVfRklFTEQpOworI3VuZGVmIEpTQ19ERUZJTkVfVEVN
UE9SQUxfUExBSU5fVElNRV9GSUVMRAorCisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHdpdGgoSlNH
bG9iYWxPYmplY3QqLCBKU09iamVjdCogdGVtcG9yYWxUaW1lTGlrZSwgSlNWYWx1ZSBvcHRpb25z
KSBjb25zdDsKKyAgICBJU084NjAxOjpQbGFpblRpbWUgYWRkKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSkgY29uc3Q7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHN1YnRyYWN0KEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHJvdW5kKEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0
cmluZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbiA9IHsgUHJlY2lz
aW9uOjpBdXRvLCAwIH0pIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gSVNPODYwMTo6dGVt
cG9yYWxUaW1lVG9TdHJpbmcobV9wbGFpblRpbWUsIHByZWNpc2lvbik7CisgICAgfQorCisgICAg
SVNPODYwMTo6RHVyYXRpb24gdW50aWwoSlNHbG9iYWxPYmplY3QqLCBUZW1wb3JhbFBsYWluVGlt
ZSosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgSVNPODYwMTo6RHVyYXRpb24gc2luY2Uo
SlNHbG9iYWxPYmplY3QqLCBUZW1wb3JhbFBsYWluVGltZSosIEpTVmFsdWUgb3B0aW9ucykgY29u
c3Q7CisKKyAgICBERUNMQVJFX1ZJU0lUX0NISUxEUkVOOworCitwcml2YXRlOgorICAgIFRlbXBv
cmFsUGxhaW5UaW1lKFZNJiwgU3RydWN0dXJlKiwgSVNPODYwMTo6UGxhaW5UaW1lJiYpOworICAg
IHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJh
Y3RlclR5cGU+CisgICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8SVNPODYwMTo6UGxhaW5UaW1lPiBw
YXJzZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+Jik7CisgICAgc3RhdGljIElT
Tzg2MDE6OlBsYWluVGltZSBmcm9tT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsK
KworICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0U3VicGxhaW5UaW1lKCkgY29uc3Q7CisKKyAgICBJ
U084NjAxOjpQbGFpblRpbWUgbV9wbGFpblRpbWU7CisgICAgTGF6eVByb3BlcnR5PFRlbXBvcmFs
UGxhaW5UaW1lLCBUZW1wb3JhbENhbGVuZGFyPiBtX2NhbGVuZGFyOworfTsKKworfSAvLyBuYW1l
c3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFmNDY5MDk4
Njk1MjJmZDE4MThkY2NiNWVkZDhhYzRkMGQzZTFmZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNw
cApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMu
IEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUg
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWlu
VGltZUNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRlICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxQbGFpblRpbWUuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RBVElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVT
VFJVQ1RJQkxFKFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IpOworCitzdGF0aWMgSlNDX0RF
Q0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yRnVuY0Zyb20p
Oworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVDb25z
dHJ1Y3RvckZ1bmNDb21wYXJlKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVD
b25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBU
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpzX2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNl
OjpzX2luZm8sICZ0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENS
RUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvcikgfTsKKworLyog
U291cmNlIGZvciBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gdGVt
cG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvclRhYmxlCisgIGZyb20gICAgICAgICAgICAgdGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNGcm9tICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0
aW9uIDEKKyAgY29tcGFyZSAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yRnVu
Y0NvbXBhcmUgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMgorQGVuZAorKi8KKworVGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3RvciogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6Y3Jl
YXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlKiBwbGFpblRpbWVQcm90b3R5cGUpCit7CisgICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yPih2bS5o
ZWFwKSkgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBj
b25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0sIHBsYWluVGltZVByb3RvdHlwZSk7CisgICAg
cmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1lQ29u
c3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25U
eXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK3N0YXRpYyBKU0NfREVDTEFSRV9I
T1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbFBsYWluVGltZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVf
SE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSk7CisKK1RlbXBvcmFsUGxh
aW5UaW1lQ29uc3RydWN0b3I6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJhc2Uodm0sIHN0cnVjdHVyZSwgY2FsbFRlbXBv
cmFsUGxhaW5UaW1lLCBjb25zdHJ1Y3RUZW1wb3JhbFBsYWluVGltZSkKK3sKK30KKwordm9pZCBU
ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlKiBwbGFpblRpbWVQcm90b3R5cGUpCit7CisgICAgQmFzZTo6
ZmluaXNoQ3JlYXRpb24odm0sIDAsICJQbGFpblRpbWUiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2Rl
OjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgcGxhaW5UaW1lUHJvdG90eXBl
LCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERl
bGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgcGxhaW5UaW1lUHJvdG90
eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29u
c3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6
RG9udEVudW0pKTsKK30KKworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBv
cmFsUGxhaW5UaW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFy
Z2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5uZXdUYXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBz
dHJ1Y3R1cmUgPSBKU0NfR0VUX0RFUklWRURfU1RSVUNUVVJFKHZtLCBwbGFpblRpbWVTdHJ1Y3R1
cmUsIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0NhbGxlZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24geyB9
OworICAgIGF1dG8gY291bnQgPSBzdGQ6Om1pbjxzaXplX3Q+KGNhbGxGcmFtZS0+YXJndW1lbnRD
b3VudCgpLCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHMpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7CisgICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uSW5k
ZXggPSBpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRlbXBvcmFsVW5pdDo6SG91cik7CisgICAg
ICAgIGR1cmF0aW9uW2R1cmF0aW9uSW5kZXhdID0gY2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVu
dChpKS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZShkdXJh
dGlvbltkdXJhdGlvbkluZGV4XSkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZSBwcm9wZXJ0aWVzIG11
c3QgYmUgZmluaXRlIl9zKTsKKyAgICB9CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBK
U1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFs
T2JqZWN0LCBzdHJ1Y3R1cmUsIFdURk1vdmUoZHVyYXRpb24pKSkpOworfQorCitKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsUGxhaW5UaW1lLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25zdHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5j
dGlvblR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiUGxhaW5UaW1lIikpOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRp
bWUuZnJvbQorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lQ29uc3Ry
dWN0b3JGdW5jRnJvbSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlv
bnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1l
bnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBUZW1w
b3JhbE92ZXJmbG93IG92ZXJmbG93ID0gdG9UZW1wb3JhbE92ZXJmbG93KGdsb2JhbE9iamVjdCwg
b3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIEpT
VmFsdWUgaXRlbVZhbHVlID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKworICAgIGlmIChpdGVt
VmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxQbGFpblRpbWU+KHZtKSkKKyAgICAgICAgUkVMRUFTRV9B
TkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwganNDYXN0PFRlbXBvcmFs
UGxhaW5UaW1lKj4oaXRlbVZhbHVlKS0+cGxhaW5UaW1lKCkpKSk7CisKKyAgICBSRUxFQVNFX0FO
RF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShn
bG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSwgb3ZlcmZsb3cpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5jb21wYXJlCitK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmND
b21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJh
bWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBvbmUgPSBUZW1wb3JhbFBs
YWluVGltZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHN0ZDo6
bnVsbG9wdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1
dG8qIHR3byA9IFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgxKSwgc3RkOjpudWxsb3B0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihUZW1wb3Jh
bFBsYWluVGltZTo6Y29tcGFyZShvbmUsIHR3bykpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlND
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWlu
VGltZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTJhOTM2NWUxNTBkNTM5ODY1YWY1
ZWYzMjMxNjFjZWJkYzFmMDVmNAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUw
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5hbEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjbGFzcyBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTsKKworY2xhc3MgVGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3RvciBmaW5hbCA6IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsK
K3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0aWMg
Y29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3Mg
fCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIFRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVyZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNH
bG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAgIERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToK
KyAgICBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKik7Cit9
OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxQbGFpblRpbWVD
b25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjhjNjBmNzQ1ZjJhNzAyZDc4MDUzY2IyM2My
YzA2ZjRlNjY4ODgxN2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5jcHAKQEAgLTAsMCArMSwzODkgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKKwor
I2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgor
CituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jQWRkKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1N1YnRyYWN0KTsKK3N0YXRp
YyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVu
Y1dpdGgpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGVGdW5jVW50aWwpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jU2luY2UpOworc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jUm91bmQpOworc3Rh
dGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVG
dW5jRXF1YWxzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlRnVuY0dldElTT0ZpZWxkcyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb1N0cmluZyk7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1
bmNUb0pTT04pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVmFsdWVPZik7CitzdGF0
aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdl
dHRlckhvdXIpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9H
RVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJTZWNvbmQpOworc3RhdGljIEpT
Q19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJN
aWxsaXNlY29uZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZUdldHRlck1pY3Jvc2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9D
VVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTmFub3NlY29uZCk7
CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZUdldHRlckNhbGVuZGFyKTsKKworfQorCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OnNfaW5mbyA9IHsgIlRlbXBvcmFsLlBsYWluVGltZSIs
ICZCYXNlOjpzX2luZm8sICZwbGFpblRpbWVQcm90b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSkgfTsKKworLyogU291cmNl
IGZvciBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5sdXQuaAorQGJlZ2luIHBsYWluVGltZVBy
b3RvdHlwZVRhYmxlCisgIGFkZCAgICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVGdW5jQWRkICAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgc3VidHJhY3Qg
ICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNTdWJ0cmFjdCAgICAgICAgICAg
RG9udEVudW18RnVuY3Rpb24gMQorICB3aXRoICAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlRnVuY1dpdGggICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIHVu
dGlsICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVW50aWwgICAgICAg
ICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgc2luY2UgICAgICAgICAgICB0ZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZUZ1bmNTaW5jZSAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQorICByb3VuZCAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1JvdW5k
ICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisgIGVxdWFscyAgICAgICAgICAgdGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jRXF1YWxzICAgICAgICAgICAgIERvbnRFbnVtfEZ1
bmN0aW9uIDEKKyAgZ2V0SVNPRmllbGRzICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1
bmNHZXRJU09GaWVsZHMgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b1N0cmluZyAgICAg
ICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvU3RyaW5nICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAwCisgIHRvSlNPTiAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGVGdW5jVG9KU09OICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2Nh
bGVTdHJpbmcgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAg
ICAgRG9udEVudW18RnVuY3Rpb24gMAorICB2YWx1ZU9mICAgICAgICAgIHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1ZhbHVlT2YgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisg
IGhvdXIgICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyICAg
ICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG1pbnV0ZSAgICAg
ICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUgICAgICAgICAgIERv
bnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIHNlY29uZCAgICAgICAgICAgdGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJTZWNvbmQgICAgICAgICAgIERvbnRFbnVtfFJlYWRP
bmx5fEN1c3RvbUFjY2Vzc29yCisgIG1pbGxpc2Vjb25kICAgICAgdGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGVHZXR0ZXJNaWxsaXNlY29uZCAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFj
Y2Vzc29yCisgIG1pY3Jvc2Vjb25kICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0
ZXJNaWNyb3NlY29uZCAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG5h
bm9zZWNvbmQgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJOYW5vc2Vjb25k
ICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIGNhbGVuZGFyICAgICAg
ICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciAgICAgICAgIERvbnRF
bnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCitAZW5kCisqLworCitUZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZSogVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0cnVjdHVyZSogc3RydWN0dXJlKQoreworICAg
IGF1dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlPih2bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUodm0s
IHN0cnVjdHVyZSk7CisgICAgcHJvdG90eXBlLT5maW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2Jq
ZWN0KTsKKyAgICByZXR1cm4gcHJvdG90eXBlOworfQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlwZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJl
OjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBl
LCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9CisKK1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQoreworfQorCit2b2lkIFRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikK
K3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZt
LCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5HX1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsK
K30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwu
cGxhaW50aW1lLnByb3RvdHlwZS5hZGQKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZUZ1bmNBZGQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1
dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRp
bWUucHJvdG90eXBlLmFkZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJf
cyk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHBsYWluVGltZS0+YWRkKGdsb2JhbE9iamVjdCwgY2Fs
bEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9
KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQp
KSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBv
cmFsLnBsYWludGltZS5wcm90b3R5cGUuc3VidHJhY3QKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWlu
VGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRl
bXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuc3VidHJhY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQn
cyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgYXV0byByZXN1bHQgPSBwbGFpblRpbWUtPnN1
YnRyYWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUo
VGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1
Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUud2l0aAorSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1dpdGgs
IChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7
CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNM
QVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nh
c3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAg
aWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLndpdGggY2FsbGVkIG9u
IHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgSlNWYWx1ZSB0ZW1wb3Jh
bFRpbWVMaWtlICA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKCF0ZW1wb3JhbFRp
bWVMaWtlLmlzT2JqZWN0KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJGaXJzdCBhcmd1bWVudCB0byBUZW1wb3JhbC5QbGFpblRpbWUucHJv
dG90eXBlLndpdGggbXVzdCBiZSBhbiBvYmplY3QiX3MpOworCisgICAgYXV0byByZXN1bHQgPSBw
bGFpblRpbWUtPndpdGgoZ2xvYmFsT2JqZWN0LCBhc09iamVjdCh0ZW1wb3JhbFRpbWVMaWtlKSwg
Y2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1
bHQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRl
bXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUudW50aWwKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNVbnRpbCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGlt
ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLlBsYWluVGltZS5wcm90b3R5cGUudW50aWwgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBwbGFpblRpbWUiX3MpOworCisgICAgYXV0byogb3RoZXIgPSBUZW1wb3JhbFBsYWluVGltZTo6
ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCksIHN0ZDo6bnVsbG9wdCk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gcmVzdWx0
ID0gcGxhaW5UaW1lLT51bnRpbChnbG9iYWxPYmplY3QsIG90aGVyLCBjYWxsRnJhbWUtPmFyZ3Vt
ZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKGds
b2JhbE9iamVjdCwgV1RGTW92ZShyZXN1bHQpLCBnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0
dXJlKCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMt
dGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS5zaW5jZQorSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1NpbmNlLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5U
aW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5zaW5jZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBhdXRvKiBvdGhlciA9IFRlbXBvcmFsUGxhaW5UaW1l
Ojpmcm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc3RkOjpudWxsb3B0
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byByZXN1
bHQgPSBwbGFpblRpbWUtPnNpbmNlKGdsb2JhbE9iamVjdCwgb3RoZXIsIGNhbGxGcmFtZS0+YXJn
dW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQo
Z2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJlc3VsdCksIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1
Y3R1cmUoKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Nl
Yy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLnJvdW5kCitKU0NfREVGSU5FX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jUm91bmQsIChKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFp
blRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUp
CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJU
ZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnJvdW5kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mg
bm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIGF1dG8gb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJn
dW1lbnQoMCk7CisgICAgaWYgKG9wdGlvbnMuaXNVbmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGlt
ZS5wcm90b3R5cGUucm91bmQgcmVxdWlyZXMgYW4gb3B0aW9ucyBhcmd1bWVudCJfcyk7CisKKyAg
ICBhdXRvIHJvdW5kZWQgPSBwbGFpblRpbWUtPnJvdW5kKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7
CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1Zh
bHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5w
bGFpblRpbWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyb3VuZGVkKSkpOworfQorCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90
eXBlLmVxdWFscworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlRnVuY0VxdWFscywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFt
ZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5U
aW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRo
aXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5
cGUuZXF1YWxzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKwor
ICAgIGF1dG8qIG90aGVyID0gVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oZ2xvYmFsT2JqZWN0LCBj
YWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51bGxvcHQpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVh
bihwbGFpblRpbWUtPnBsYWluVGltZSgpID09IG90aGVyLT5wbGFpblRpbWUoKSkpOworfQorCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRp
bWUucHJvdG90eXBlLmdldGlzb2ZpZWxkcworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0dldElTT0ZpZWxkcywgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGlt
ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLlBsYWluVGltZS5wcm90b3R5cGUuZXF1YWxzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIEpTT2JqZWN0KiBmaWVsZHMgPSBjb25zdHJ1Y3RFbXB0
eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5jYWxlbmRhciwgcGxhaW5UaW1lLT5jYWxlbmRhcigpKTsKKyAgICBmaWVsZHMt
PnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNvSG91ciwganNOdW1iZXIocGxhaW5U
aW1lLT5ob3VyKCkpKTsKKyAgICBmaWVsZHMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+aXNvTWljcm9zZWNvbmQsIGpzTnVtYmVyKHBsYWluVGltZS0+bWljcm9zZWNvbmQoKSkpOwor
ICAgIGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc29NaWxsaXNlY29u
ZCwganNOdW1iZXIocGxhaW5UaW1lLT5taWxsaXNlY29uZCgpKSk7CisgICAgZmllbGRzLT5wdXRE
aXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzb01pbnV0ZSwganNOdW1iZXIocGxhaW5UaW1l
LT5taW51dGUoKSkpOworICAgIGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVz
LT5pc29OYW5vc2Vjb25kLCBqc051bWJlcihwbGFpblRpbWUtPm5hbm9zZWNvbmQoKSkpOworICAg
IGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc29TZWNvbmQsIGpzTnVt
YmVyKHBsYWluVGltZS0+c2Vjb25kKCkpKTsKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZp
ZWxkcyk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRl
bXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUudG9zdHJpbmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5D
VElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb1N0cmluZywgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBs
YWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGlt
ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRo
YXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHBsYWluVGltZS0+dG9TdHJpbmcoZ2xvYmFs
T2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS50
b2pzb24KK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9
IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRv
SlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBy
ZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkp
KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwucGxhaW50aW1lLnByb3RvdHlwZS50b2xvY2FsZXN0cmluZworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvTG9jYWxlU3RyaW5nLCAoSlNH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRl
bXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICgh
cGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b0xvY2FsZVN0cmluZyBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkpKTsKK30KKwor
Ly8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50
aW1lLnByb3RvdHlwZS52YWx1ZW9mCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGVGdW5jVmFsdWVPZiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSopKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNhbGxlZC4gVG8gY29tcGFyZSBQbGFpblRpbWUg
dmFsdWVzLCB1c2UgVGVtcG9yYWwuUGxhaW5UaW1lLmNvbXBhcmUiX3MpOworfQorCitKU0NfREVG
SU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRp
bWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90
b3R5cGUuaG91ciBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisK
KyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+aG91cigpKSk7
Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZUdldHRlck1pbnV0ZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5QbGFpblRpbWUucHJvdG90eXBlLm1pbnV0ZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBs
YWluVGltZS0+bWludXRlKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyU2Vjb25kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAg
IFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9U
SFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRl
bXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBp
ZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuc2Vjb25kIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5zZWNvbmQoKSkpOworfQorCitKU0NfREVGSU5F
X0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaWxsaXNlY29u
ZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1
ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxh
aW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpk
ZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUu
cHJvdG90eXBlLm1pbGxpc2Vjb25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5U
aW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1l
LT5taWxsaXNlY29uZCgpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pY3Jvc2Vjb25kLCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0
PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAg
ICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUubWljcm9zZWNvbmQg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm1pY3Jvc2Vjb25kKCkpKTsKK30K
KworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0
dGVyTmFub3NlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5QbGFpblRpbWUucHJvdG90eXBlLm5hbm9zZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBu
b3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJl
cihwbGFpblRpbWUtPm5hbm9zZWNvbmQoKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRU
RVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJDYWxlbmRhciwgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1l
KSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5h
bWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVl
KSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmNhbGVu
ZGFyIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUocGxhaW5UaW1lLT5jYWxlbmRhcigpKTsKK30KKworfSAvLyBu
YW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yZWEyMjlhN2JkNTE5
NGJiNDYxNmZhNDcyYzJmYWQ2MTRkM2FlNThlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaApAQCAtMCww
ICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBD
T05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4g
T1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAq
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisg
KiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJKU09iamVjdC5oIgorCituYW1lc3BhY2UgSlND
IHsKKworY2xhc3MgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNO
b25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAgdXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmpl
Y3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNpZ25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6
OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJvcGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRl
PHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFjY2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3Bh
Y2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNP
X1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLCBCYXNlKTsKKyAg
ICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNwYWNlOworICAgIH0KKworICAgIHN0YXRpYyBU
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogY3JlYXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBK
U0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRl
OgorICAgIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAg
dm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xvYmFsT2JqZWN0Kik7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsVGltZVpvbmUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxUaW1lWm9uZS5jcHAKaW5kZXggOTc4NGMzZDE3NDk5NjkxNTBiM2VkNmU2ODZkNWNhODk2OWUy
YjJkMi4uNzY1OWIwNTgyY2NkMjk1ZThkMWJhNWYzOGVlYmQ0MTQ3MTg2MTcyZSAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKQEAg
LTU3LDE3ICs1Nyw2IEBAIFRlbXBvcmFsVGltZVpvbmU6OlRlbXBvcmFsVGltZVpvbmUoVk0mIHZt
LCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGltZVpvbmUgdGltZVpvCiB7CiB9CiAKLS8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc3VwLWlzdmFsaWR0aW1lem9uZW5hbWUKLXN0
ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gVGVtcG9yYWxUaW1lWm9uZTo6aWRGb3JUaW1lWm9uZU5h
bWUoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgY29uc3QgYXV0byYgdGltZVpvbmVzID0gaW50
bEF2YWlsYWJsZVRpbWVab25lcygpOwotICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRl
eCA8IHRpbWVab25lcy5zaXplKCk7ICsraW5kZXgpIHsKLSAgICAgICAgaWYgKGVxdWFsSWdub3Jp
bmdBU0NJSUNhc2UodGltZVpvbmVzW2luZGV4XSwgc3RyaW5nKSkKLSAgICAgICAgICAgIHJldHVy
biBpbmRleDsKLSAgICB9Ci0gICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLX0KLQogLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcGFyc2V0ZW1wb3JhbHRp
bWVab25lc3RyaW5nCiBzdGF0aWMgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRlbXBvcmFs
VGltZVpvbmVTdHJpbmcoU3RyaW5nVmlldykKIHsKQEAgLTExMCw3ICs5OSw3IEBAIEpTT2JqZWN0
KiBUZW1wb3JhbFRpbWVab25lOjpmcm9tKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
VmFsdWUgdGltZVpvbmVMCiAgICAgaWYgKHV0Y09mZnNldCkKICAgICAgICAgcmV0dXJuIFRlbXBv
cmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENPZmZzZXQodm0sIGdsb2JhbE9iamVjdC0+dGltZVpv
bmVTdHJ1Y3R1cmUoKSwgdXRjT2Zmc2V0LnZhbHVlKCkpOwogCi0gICAgc3RkOjpvcHRpb25hbDxU
aW1lWm9uZUlEPiBpZGVudGlmaWVyID0gaWRGb3JUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcp
OworICAgIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IElTTzg2MDE6Omlk
Rm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKICAgICBpZiAoaWRlbnRpZmllcikKICAg
ICAgICAgcmV0dXJuIFRlbXBvcmFsVGltZVpvbmU6OmNyZWF0ZUZyb21JRCh2bSwgZ2xvYmFsT2Jq
ZWN0LT50aW1lWm9uZVN0cnVjdHVyZSgpLCBpZGVudGlmaWVyLnZhbHVlKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmgKaW5kZXggYmMy
ODE1M2I3ZmQyNWJiNzY1ZTI1MDZmZDk2ZmE3NmI1ZTUxMGFkYi4uZTU3OWVhM2E2M2Y2MjFmZGY0
MzI2MTEzMjk3NDliZjNjNDc0NmE2ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaApAQCAtMjUsNiArMjUsNyBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIklTTzg2MDEuaCIKICNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiSlNPYmplY3QuaCIKICNpbmNsdWRlIDx3dGYvVmFyaWFudC5oPgpAQCAtNDcsMTAgKzQ4
LDkgQEAgY2xhc3MgVGVtcG9yYWxUaW1lWm9uZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2Jq
ZWN0IHsKIAogICAgIERFQ0xBUkVfSU5GTzsKIAotICAgIHVzaW5nIFRpbWVab25lID0gVmFyaWFu
dDxUaW1lWm9uZUlELCBpbnQ2NF90PjsKLSAgICBUaW1lWm9uZSB0aW1lWm9uZSgpIGNvbnN0IHsg
cmV0dXJuIG1fdGltZVpvbmU7IH0KKyAgICB1c2luZyBUaW1lWm9uZSA9IElTTzg2MDE6OlRpbWVa
b25lOwogCi0gICAgc3RhdGljIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRGb3JUaW1lWm9u
ZU5hbWUoU3RyaW5nVmlldyk7CisgICAgVGltZVpvbmUgdGltZVpvbmUoKSBjb25zdCB7IHJldHVy
biBtX3RpbWVab25lOyB9CiAKICAgICBzdGF0aWMgSlNPYmplY3QqIGZyb20oSlNHbG9iYWxPYmpl
Y3QqLCBKU1ZhbHVlKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAKaW5kZXggOTkzMzY1YWIz
MzJmOGZmYWQ4NzU4ODAwMDgxMGNkMzBlZGRhNjFkNy4uNmQyM2U4ZjA1OWRjNzliY2ZhMjlkOWM2
NWEwNWVlZTgzYjNhNWNjMiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCkBAIC03NCw2ICs3
NCw3IEBAIHZvaWQgVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihW
TSYgdm0sIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRp
b24odm0sIDAsICJUaW1lWm9uZSJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1
Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0u
cHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCB0ZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLCBQcm9w
ZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8
IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25seSk7CisgICAgdGVtcG9yYWxUaW1lWm9uZVByb3Rv
dHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNv
bnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6
OkRvbnRFbnVtKSk7CiB9CiAKIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1w
b3JhbFRpbWVab25lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQpAQCAtOTIsNyArOTMsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29u
c3RydWN0VGVtcG9yYWxUaW1lWm9uZSwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAg
IGlmICh1dGNPZmZzZXQpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxU
aW1lWm9uZTo6Y3JlYXRlRnJvbVVUQ09mZnNldCh2bSwgc3RydWN0dXJlLCB1dGNPZmZzZXQudmFs
dWUoKSkpOwogCi0gICAgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZGVudGlmaWVyID0gVGVt
cG9yYWxUaW1lWm9uZTo6aWRGb3JUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcpOworICAgIHN0
ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IElTTzg2MDE6OmlkRm9yVGltZVpv
bmVOYW1lKHRpbWVab25lU3RyaW5nKTsKICAgICBpZiAoIWlkZW50aWZpZXIpIHsKICAgICAgICAg
dGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBuZWVkcyB0byBi
ZSBVVEMgb2Zmc2V0IHN0cmluZyBvciBUaW1lWm9uZSBpZGVudGlmaWVyIl9zKTsKICAgICAgICAg
cmV0dXJuIHsgfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZN
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcAppbmRleCAwMmYxODk3
YjBmMzkxODU2MGI1MDUzMTlkNmU0NjFiZGI1ZDcxMGRkLi4xNWRkYjJhZmFlNTIzNzc3YWU5MDY2
YjMxYjBkNzEwNTQ2YjdkODcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9WTS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCkBA
IC0xNjQsNiArMTY0LDcgQEAKICNpbmNsdWRlICJTeW1ib2xPYmplY3QuaCIKICNpbmNsdWRlICJU
ZW1wb3JhbENhbGVuZGFyLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1
ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgog
I2luY2x1ZGUgIlRlc3RSdW5uZXJVdGlscy5oIgogI2luY2x1ZGUgIlRodW5rR2VuZXJhdG9ycy5o
IgpAQCAtMTU4OCw2ICsxNTg5LDggQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKHN5bWJvbFNwYWNlLCBkZXN0cnVjdGlibGVDZWxsSGVhcENlbGxUeXAKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xPYmplY3RTcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgU3ltYm9sT2JqZWN0KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHRlbXBsYXRlT2JqZWN0RGVzY3JpcHRvclNwYWNlLCBkZXN0cnVjdGli
bGVDZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1RlbXBsYXRlT2JqZWN0RGVzY3JpcHRvcikKIERZ
TkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbENhbGVuZGFyU3Bh
Y2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsQ2FsZW5kYXIpCitEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbER1cmF0aW9uKQorRFlOQU1JQ19JU09fU1VCU1BB
Q0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UsIGNlbGxIZWFwQ2Vs
bFR5cGUuZ2V0KCksIFRlbXBvcmFsUGxhaW5UaW1lKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsVGltZVpvbmVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5n
ZXQoKSwgVGVtcG9yYWxUaW1lWm9uZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVJfU0xPVyh1aW50OEFycmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhB
cnJheSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh1aW50OENsYW1w
ZWRBcnJheVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQ4Q2xhbXBlZEFycmF5
KQpAQCAtMTYyMiw3ICsxNjI1LDYgQEAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJF
Ul9TTE9XKGludGxSZWxhdGl2ZVRpbWVGb3JtYXRTcGFjZSwgaW50bFJlbGF0aXYKIERZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2Us
IGludGxTZWdtZW50SXRlcmF0b3JIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxTZWdtZW50SXRlcmF0
b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRl
clNwYWNlLCBpbnRsU2VnbWVudGVySGVhcENlbGxUeXBlLmdldCgpLCBJbnRsU2VnbWVudGVyKQog
RFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50c1NwYWNl
LCBpbnRsU2VnbWVudHNIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxTZWdtZW50cykKLURZTkFNSUNf
SVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbER1cmF0aW9uU3BhY2UsIGNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsRHVyYXRpb24pCiAjaWYgRU5BQkxFKFdFQkFT
U0VNQkxZKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGpzVG9XYXNt
SUNDYWxsZWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNUb1dhc21JQ0NhbGxlZSkK
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh3ZWJBc3NlbWJseUNvZGVC
bG9ja1NwYWNlLCB3ZWJBc3NlbWJseUNvZGVCbG9ja0hlYXBDZWxsVHlwZS5nZXQoKSwgSlNXZWJB
c3NlbWJseUNvZGVCbG9jaykgLy8gSGFzaDoweDlhZDk5NWNkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVk0uaAppbmRleCAxZTcyNWNlMzc0ODczZTAwN2QxYjAzZjU0OTU2YzUwMjMwNGM2YjM3Li43
YTU4YjI3OWU2NzBhODQwM2QxZjM5NDEyMzU3ZDVlNzcxMTNmNTc4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1ZNLmgKQEAgLTE5NSw2ICsxOTUsNyBAQCBjbGFzcyBVbmxpbmtlZE1vZHVsZVBy
b2dyYW1Db2RlQmxvY2s7CiBjbGFzcyBWaXJ0dWFsUmVnaXN0ZXI7CiBjbGFzcyBWTUVudHJ5U2Nv
cGU7CiBjbGFzcyBUZW1wb3JhbENhbGVuZGFyOworY2xhc3MgVGVtcG9yYWxQbGFpblRpbWU7CiBj
bGFzcyBUZW1wb3JhbFRpbWVab25lOwogY2xhc3MgVG9wTGV2ZWxHbG9iYWxPYmplY3RTY29wZTsK
IGNsYXNzIFR5cGVQcm9maWxlcjsKQEAgLTU5NSw2ICs1OTYsOCBAQCBjbGFzcyBWTSA6IHB1Ymxp
YyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9kZTxW
TT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoc3ltYm9sT2JqZWN0
U3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wbGF0ZU9i
amVjdERlc2NyaXB0b3JTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHRlbXBvcmFsRHVyYXRpb25TcGFjZSkKKyAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsUGxhaW5UaW1lU3BhY2UpCiAgICAgRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFRpbWVab25lU3BhY2UpCiAgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OEFycmF5U3BhY2UpCiAgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih1aW50OENsYW1wZWRBcnJheVNwYWNlKQpAQCAt
NjIwLDcgKzYyMyw2IEBAIGNsYXNzIFZNIDogcHVibGljIFRocmVhZFNhZmVSZWZDb3VudGVkPFZN
PiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7CiAgICAgRFlOQU1JQ19JU09fU1VC
U1BBQ0VfREVGSU5FX01FTUJFUihpbnRsU2VnbWVudEl0ZXJhdG9yU3BhY2UpCiAgICAgRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsU2VnbWVudGVyU3BhY2UpCiAgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihpbnRsU2VnbWVudHNTcGFjZSkKLSAgICBE
WU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsRHVyYXRpb25TcGFjZSkK
ICNpZiBFTkFCTEUoV0VCQVNTRU1CTFkpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5F
X01FTUJFUihqc1RvV2FzbUlDQ2FsbGVlU3BhY2UpCiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0Vf
REVGSU5FX01FTUJFUih3ZWJBc3NlbWJseUNvZGVCbG9ja1NwYWNlKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dURi93dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmggYi9Tb3VyY2UvV1RGL3d0Zi90
ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaAppbmRleCBmMGE4NGY3NTdlM2VmZTdiMGE3ZGFjYWVm
MDU2ZmJiOGFiOTQyNTQ3Li41MmE5YmFkYmUwNzNjYzU2MDQ1ZTQ2YjNlOTlkYjAyNzdhYWIxZTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaAor
KysgYi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaApAQCAtNjEsOSAr
NjEsOSBAQCBjbGFzcyBTdHJpbmdQYXJzaW5nQnVmZmVyIGZpbmFsIHsKIAogICAgIGNvbnN0ZXhw
ciB1bnNpZ25lZCBsZW5ndGhSZW1haW5pbmcoKSBjb25zdCB7IHJldHVybiBtX2VuZCAtIG1fcG9z
aXRpb247IH0KIAotICAgIFN0cmluZ1ZpZXcgc3RyaW5nVmlld09mQ2hhcmFjdGVyc1JlbWFpbmlu
ZygpIHsgcmV0dXJuIHsgbV9wb3NpdGlvbiwgbGVuZ3RoUmVtYWluaW5nKCkgfTsgfQorICAgIFN0
cmluZ1ZpZXcgc3RyaW5nVmlld09mQ2hhcmFjdGVyc1JlbWFpbmluZygpIGNvbnN0IHsgcmV0dXJu
IHsgbV9wb3NpdGlvbiwgbGVuZ3RoUmVtYWluaW5nKCkgfTsgfQogCi0gICAgQ2hhcmFjdGVyVHlw
ZSBvcGVyYXRvcltdKHVuc2lnbmVkIGkpCisgICAgQ2hhcmFjdGVyVHlwZSBvcGVyYXRvcltdKHVu
c2lnbmVkIGkpIGNvbnN0CiAgICAgewogICAgICAgICBBU1NFUlQoaSA8IGxlbmd0aFJlbWFpbmlu
ZygpKTsKICAgICAgICAgcmV0dXJuIG1fcG9zaXRpb25baV07CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDMyMjM2NmE4NjgzNDU2ZjBhNGIx
ZGE3OGY5YjkyNjE3ZWIwMDFlMjYuLjhhMjg1YjQ3ZDNlMzU1Y2JmNDg2YTExZWZjZDdkZmRjYWFk
MWQ2ZTggMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMjEtMDktMDYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuUGxhaW5UaW1l
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4OTIK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN0cmVz
cy90ZW1wb3JhbC1jYWxlbmRhci5qczoKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtZHVyYXRp
b24uanM6CisgICAgICAgICogc3RyZXNzL3RlbXBvcmFsLXBsYWludGltZS5qczogQWRkZWQuCisg
ICAgICAgIChzaG91bGRCZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgIChzaG91
bGRCZS5TdHJpbmcuVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20pOgorICAgICAgICAobGV0LnRpbWUu
VGVtcG9yYWwuUGxhaW5UaW1lLmZyb20uc2hvdWxkQmUpOgorICAgICAgICAobGV0LnRleHQub2Yu
ZmFpbHVyZXMuc2hvdWxkVGhyb3cpOgorICAgICAgICAoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20p
OgorICAgICAgICAoc2hvdWxkQmUuVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20pOgorICAgICAgICAo
bmV3LlRlbXBvcmFsLlBsYWluVGltZS52YWx1ZU9mKToKKyAgICAgICAgKHNob3VsZEJlLlN0cmlu
Zy50aW1lLnVudGlsLlRlbXBvcmFsLlBsYWluVGltZS5mcm9tKToKKyAgICAgICAgKiBzdHJlc3Mv
dGVtcG9yYWwtdGltZXpvbmUuanM6CisgICAgICAgIChsZXQudGV4dC5vZi5mYWlsdXJlcy5zaG91
bGRUaHJvdyk6IERlbGV0ZWQuCisgICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKwogMjAy
MS0wOS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtK
U0NdIE1ha2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGUgY2xvYmJlcml6aW5nIHJ1
bGUgcHJlY2lzZQpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtY2FsZW5kYXIu
anMgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1jYWxlbmRhci5qcwppbmRleCBlZjBhYzExMWE1
YjhiNzNjM2EwMTc1ZGFhNzc5MzZjMDg5YWZjZjQ0Li4zNTA5NzFjZTNjYTBjZDEzOTUxOTY5ODg0
YmQ0NWIxNmIxOWNiMzlkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1jYWxl
bmRhci5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1jYWxlbmRhci5qcwpAQCAtMTgs
NiArMTgsMTMgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdl
KSB7CiAgICAgICAgIHNob3VsZEJlKFN0cmluZyhlcnJvciksIG1lc3NhZ2UpOwogfQogCitzaG91
bGRCZShUZW1wb3JhbC5DYWxlbmRhciBpbnN0YW5jZW9mIEZ1bmN0aW9uLCB0cnVlKTsKK3Nob3Vs
ZEJlKFRlbXBvcmFsLkNhbGVuZGFyLmxlbmd0aCwgMCk7CitzaG91bGRCZShPYmplY3QuZ2V0T3du
UHJvcGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLkNhbGVuZGFyLCAncHJvdG90eXBlJykud3JpdGFi
bGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVt
cG9yYWwuQ2FsZW5kYXIsICdwcm90b3R5cGUnKS5lbnVtZXJhYmxlLCBmYWxzZSk7CitzaG91bGRC
ZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLkNhbGVuZGFyLCAncHJv
dG90eXBlJykuY29uZmlndXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShUZW1wb3JhbC5DYWxlbmRh
ci5wcm90b3R5cGUuY29uc3RydWN0b3IsIFRlbXBvcmFsLkNhbGVuZGFyKTsKKwogewogICAgIGxl
dCBjYWxlbmRhciA9IG5ldyBUZW1wb3JhbC5DYWxlbmRhcigiaXNvODYwMSIpOwogICAgIHNob3Vs
ZEJlKGNhbGVuZGFyLmlkLCBgaXNvODYwMWApOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3Mv
dGVtcG9yYWwtZHVyYXRpb24uanMgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1kdXJhdGlvbi5q
cwppbmRleCBmNjUyMjcwYTA4MjhlZjRmOTlmOTRiNGMzNjViYjdjOGVjODEzODk3Li5mMjc5Nzgx
ZmFjNjVjNzlkOTBhNzdkZTI0MmFjMWMwZmNiMDA5NjJiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0
cmVzcy90ZW1wb3JhbC1kdXJhdGlvbi5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1k
dXJhdGlvbi5qcwpAQCAtMjcsNiArMjcsNyBAQCBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBl
cnJvclR5cGUpIHsKIHNob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVt
cG9yYWwuRHVyYXRpb24sICdwcm90b3R5cGUnKS5lbnVtZXJhYmxlLCBmYWxzZSk7CiBzaG91bGRC
ZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLkR1cmF0aW9uLCAncHJv
dG90eXBlJykuY29uZmlndXJhYmxlLCBmYWxzZSk7CiBzaG91bGRUaHJvdygoKSA9PiBUZW1wb3Jh
bC5EdXJhdGlvbigpLCBUeXBlRXJyb3IpOworc2hvdWxkQmUoVGVtcG9yYWwuRHVyYXRpb24ucHJv
dG90eXBlLmNvbnN0cnVjdG9yLCBUZW1wb3JhbC5EdXJhdGlvbik7CiAKIHNob3VsZEJlKG5ldyBU
ZW1wb3JhbC5EdXJhdGlvbigpIGluc3RhbmNlb2YgVGVtcG9yYWwuRHVyYXRpb24sIHRydWUpOwog
ewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtcGxhaW50aW1lLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvdGVtcG9yYWwtcGxhaW50aW1lLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NDc0YWQ1OTJh
NTY4MTYzZDFkNDlhNTBkNTg5MTlkZjI2OWZjZTEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3Rz
L3N0cmVzcy90ZW1wb3JhbC1wbGFpbnRpbWUuanMKQEAgLTAsMCArMSwzMTkgQEAKKy8vQCByZXF1
aXJlT3B0aW9ucygiLS11c2VUZW1wb3JhbD0xIikKKworZnVuY3Rpb24gc2hvdWxkQmUoYWN0dWFs
LCBleHBlY3RlZCkgeworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYGV4cGVjdGVkICR7ZXhwZWN0ZWR9IGJ1dCBnb3QgJHthY3R1YWx9YCk7Cit9
CisKK2Z1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSwgbWVzc2FnZSkgeworICAg
IGxldCBlcnJvcjsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7CisgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICBlcnJvciA9IGU7CisgICAgfQorCisgICAgaWYgKCEoZXJyb3IgaW5zdGFuY2Vv
ZiBlcnJvclR5cGUpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYEV4cGVjdGVkICR7ZXJyb3JU
eXBlLm5hbWV9IWApOworICAgIGlmIChtZXNzYWdlICE9PSB1bmRlZmluZWQpCisgICAgICAgIHNo
b3VsZEJlKFN0cmluZyhlcnJvciksIG1lc3NhZ2UpOworfQorCitzaG91bGRCZShUZW1wb3JhbC5Q
bGFpblRpbWUgaW5zdGFuY2VvZiBGdW5jdGlvbiwgdHJ1ZSk7CitzaG91bGRCZShUZW1wb3JhbC5Q
bGFpblRpbWUubGVuZ3RoLCAwKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoVGVtcG9yYWwuUGxhaW5UaW1lLCAncHJvdG90eXBlJykud3JpdGFibGUsIGZhbHNlKTsK
K3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuUGxhaW5U
aW1lLCAncHJvdG90eXBlJykuZW51bWVyYWJsZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0Lmdl
dE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5QbGFpblRpbWUsICdwcm90b3R5cGUnKS5j
b25maWd1cmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5
cGUuY29uc3RydWN0b3IsIFRlbXBvcmFsLlBsYWluVGltZSk7CisKK3sKKyAgICBsZXQgdGltZSA9
IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMSwgMiwgMywgNCwgNSwgNiwgNyk7CisgICAgc2hv
dWxkQmUoU3RyaW5nKHRpbWUpLCBgMDA6MDE6MDIuMDAzMDA0MDA1YCk7CisgICAgc2hvdWxkQmUo
dGltZS5ob3VyLCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgMSk7CisgICAgc2hvdWxk
QmUodGltZS5zZWNvbmQsIDIpOworICAgIHNob3VsZEJlKHRpbWUubWlsbGlzZWNvbmQsIDMpOwor
ICAgIHNob3VsZEJlKHRpbWUubWljcm9zZWNvbmQsIDQpOworICAgIHNob3VsZEJlKHRpbWUubmFu
b3NlY29uZCwgNSk7Cit9CisKK3sKKyAgICBsZXQgdGltZSA9IG5ldyBUZW1wb3JhbC5QbGFpblRp
bWUoMCwgMCwgMCwgMCwgMCwgMCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBgMDA6MDA6
MDBgKTsKKyAgICBzaG91bGRCZSh0aW1lLmhvdXIsIDApOworICAgIHNob3VsZEJlKHRpbWUubWlu
dXRlLCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLnNlY29uZCwgMCk7CisgICAgc2hvdWxkQmUodGlt
ZS5taWxsaXNlY29uZCwgMCk7CisgICAgc2hvdWxkQmUodGltZS5taWNyb3NlY29uZCwgMCk7Cisg
ICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCAwKTsKK30KKworeworICAgIGxldCB0aW1lID0g
bmV3IFRlbXBvcmFsLlBsYWluVGltZSgyMywgNTksIDU5LCA5OTksIDk5OSwgOTk5KTsKKyAgICBz
aG91bGRCZShTdHJpbmcodGltZSksIGAyMzo1OTo1OS45OTk5OTk5OTlgKTsKKyAgICBzaG91bGRC
ZSh0aW1lLmhvdXIsIDIzKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgNTkpOworICAgIHNo
b3VsZEJlKHRpbWUuc2Vjb25kLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwg
OTk5KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pY3Jvc2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJl
KHRpbWUubmFub3NlY29uZCwgOTk5KTsKK30KKworeworICAgIGxldCB0aW1lID0gbmV3IFRlbXBv
cmFsLlBsYWluVGltZSgyMywgNTksIDU5LCA5OTksIDk5OSwgOTk5KTsKKyAgICBzaG91bGRCZShT
dHJpbmcodGltZSksIGAyMzo1OTo1OS45OTk5OTk5OTlgKTsKKyAgICBzaG91bGRCZSh0aW1lLmhv
dXIsIDIzKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgNTkpOworICAgIHNob3VsZEJlKHRp
bWUuc2Vjb25kLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwgOTk5KTsKKyAg
ICBzaG91bGRCZSh0aW1lLm1pY3Jvc2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJlKHRpbWUubmFu
b3NlY29uZCwgOTk5KTsKK30KKworeworICAgIC8vIFdlIGFjY2VwdCA2MCBzZWNvbmRzLCBidXQg
aW50ZXJwcmV0IGl0IGFzIDU5IHNlY29uZHMuCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcGFyc2Vpc29kYXRldGltZSBzdGVwIDEzCisgICAg
bGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgiMjM6NTk6NjAuOTk5OTk5OTk5Iik7
CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBgMjM6NTk6NTkuOTk5OTk5OTk5YCk7CisgICAg
c2hvdWxkQmUodGltZS5ob3VyLCAyMyk7CisgICAgc2hvdWxkQmUodGltZS5taW51dGUsIDU5KTsK
KyAgICBzaG91bGRCZSh0aW1lLnNlY29uZCwgNTkpOworICAgIHNob3VsZEJlKHRpbWUubWlsbGlz
ZWNvbmQsIDk5OSk7CisgICAgc2hvdWxkQmUodGltZS5taWNyb3NlY29uZCwgOTk5KTsKKyAgICBz
aG91bGRCZSh0aW1lLm5hbm9zZWNvbmQsIDk5OSk7Cit9CisKK3sKKyAgICAvLyBXZSBhY2NlcHQg
NjAgc2Vjb25kcywgYnV0IGludGVycHJldCBpdCBhcyA1OSBzZWNvbmRzLgorICAgIC8vIGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBhcnNlaXNvZGF0ZXRp
bWUgc3RlcCAxMworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oIjIwMjEt
MDktMDRUMjM6MTQ6MjYuMTAwMjAwMzAwIik7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBg
MjM6MTQ6MjYuMTAwMjAwM2ApOworICAgIHNob3VsZEJlKHRpbWUuaG91ciwgMjMpOworICAgIHNo
b3VsZEJlKHRpbWUubWludXRlLCAxNCk7CisgICAgc2hvdWxkQmUodGltZS5zZWNvbmQsIDI2KTsK
KyAgICBzaG91bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCAxMDApOworICAgIHNob3VsZEJlKHRpbWUu
bWljcm9zZWNvbmQsIDIwMCk7CisgICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCAzMDApOwor
fQorCitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAzOjI0OjMwJykp
LCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgn
MTk5NS0xMi0wN1QwMzoyNDozMCcpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVt
cG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzBaJykpLCBgMDM6MjQ6MzBg
KTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1Qw
MzoyNDozMCswMTowMFtFdXJvcGUvQnJ1c3NlbHNdJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJl
KFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wNyAwMzoyNDozMCswMTow
MFtFdXJvcGUvQnJ1c3NlbHNdJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1w
b3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtVTktOT1dOXScp
KSwgYDAzOjI0OjMwYCk7IC8vIFRpbWVab25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hv
dWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMw
KzAxOjAwWy5oZXldJykpLCBgMDM6MjQ6MzBgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJl
IGlnbm9yZWQuCitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUt
MTItMDdUMDM6MjQ6MzArMDE6MDBbX10nKSksIGAwMzoyNDozMGApOyAvLyBUaW1lWm9uZSBlcnJv
ciBzaG91bGQgYmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUu
ZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtfLV0nKSksIGAwMzoyNDozMGApOyAvLyBU
aW1lWm9uZSBlcnJvciBzaG91bGQgYmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3Jh
bC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtfL19dJykpLCBgMDM6
MjQ6MzBgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRCZShT
dHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBb
Xy0uL18tLl0nKSksIGAwMzoyNDozMGApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQgYmUgaWdu
b3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0w
N1QwMzoyNDozMCswMTowMFtfLi4vXy4uXScpKSwgYDAzOjI0OjMwYCk7IC8vIFRpbWVab25lIGVy
cm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGlt
ZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW18uL18uXScpKSwgYDAzOjI0OjMwYCk7
IC8vIFRpbWVab25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRl
bXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW0V0Yy9HTVQr
MjBdJykpLCBgMDM6MjQ6MzBgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQu
CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6
MjQ6MzArMDE6MDBbRXRjL0dNVC0yMF0nKSksIGAwMzoyNDozMGApOyAvLyBUaW1lWm9uZSBlcnJv
ciBzaG91bGQgYmUgaWdub3JlZC4KK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGlt
ZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW0V1cm9wZS9CcnVzc2Vsc10nKQorICAg
IHNob3VsZEJlKHRpbWUgPT09IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHRpbWUpLCBmYWxzZSk7
Cit9Cit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh7CisgICAgICBo
b3VyOiAxOSwKKyAgICAgIG1pbnV0ZTogMzksCisgICAgICBzZWNvbmQ6IDksCisgICAgICBtaWxs
aXNlY29uZDogNjgsCisgICAgICBtaWNyb3NlY29uZDogMzQ2LAorICAgICAgbmFub3NlY29uZDog
MjA1CisgICAgfSk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBgMTk6Mzk6MDkuMDY4MzQ2
MjA1YCk7CisKKyAgICAvLyBUaGlzIGlzIHNwZWMgYnVnLiBDdXJyZW50bHkgdGhpcyB0aHJvd3Mg
YW4gZXJyb3IuIEJ1dCBwb3NzaWJseSB0aGlzIHNob3VsZCBub3QgdGhyb3cgYW4gZXJyb3IuCisg
ICAgLy8gVHJhY2tlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC10ZW1wb3Jh
bC9pc3N1ZXMvMTgwMy4KKyAgICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIFRlbXBvcmFs
LlBsYWluVGltZS5mcm9tKHsgaG91cjogMTksIG1pbnV0ZTogMzksIHNlY29uZDogOSB9KTsKKyAg
ICB9LCBUeXBlRXJyb3IpOworfQoreworICAgIC8vIERpZmZlcmVudCBvdmVyZmxvdyBtb2Rlcwor
ICAgIHNob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh7IGhvdXI6IDE1LCBt
aW51dGU6IDYwLCBzZWNvbmQ6IDAsIG1pbGxpc2Vjb25kOiAwLCBtaWNyb3NlY29uZDogMCwgbmFu
b3NlY29uZDogMCB9LCB7IG92ZXJmbG93OiAnY29uc3RyYWluJyB9KSksIGAxNTo1OTowMGApOwor
ICAgIHNob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh7IGhvdXI6IDE1LCBt
aW51dGU6IC0xLCBzZWNvbmQ6IDAsIG1pbGxpc2Vjb25kOiAwLCBtaWNyb3NlY29uZDogMCwgbmFu
b3NlY29uZDogMCB9LCB7IG92ZXJmbG93OiAnY29uc3RyYWluJyB9KSksIGAxNTowMDowMGApOwor
fQorc2hvdWxkVGhyb3coKCkgPT4geworICAgIFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsgaG91
cjogMTUsIG1pbnV0ZTogNjAsIHNlY29uZDogMCwgbWlsbGlzZWNvbmQ6IDAsIG1pY3Jvc2Vjb25k
OiAwLCBuYW5vc2Vjb25kOiAwIH0sIHsgb3ZlcmZsb3c6ICdyZWplY3QnIH0pOworfSwgUmFuZ2VF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20o
eyBob3VyOiAxNSwgbWludXRlOiAtMSwgc2Vjb25kOiAwLCBtaWxsaXNlY29uZDogMCwgbWljcm9z
ZWNvbmQ6IDAsIG5hbm9zZWNvbmQ6IDAgfSwgeyBvdmVyZmxvdzogJ3JlamVjdCcgfSk7Cit9LCBS
YW5nZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1l
KC0xKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5Q
bGFpblRpbWUoMjUpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRl
bXBvcmFsLlBsYWluVGltZSgyNCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
eyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDMwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJv
dygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoSW5maW5pdHkpOyB9LCBSYW5nZUVycm9y
KTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgtSW5maW5pdHkp
OyB9LCBSYW5nZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxh
aW5UaW1lKDAsIC0xKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBU
ZW1wb3JhbC5QbGFpblRpbWUoMCwgNjApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgp
ID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCA2MSk7IH0sIFJhbmdlRXJyb3IpOworc2hv
dWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDc3KTsgfSwgUmFuZ2VF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMTAw
KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFp
blRpbWUoMCwgSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsg
bmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKwor
c2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIC0xKTsgfSwg
UmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUo
MCwgMCwgNjApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBv
cmFsLlBsYWluVGltZSgwLCAwLCA2MSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDc3KTsgfSwgUmFuZ2VFcnJvcik7Citz
aG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMTAwKTsgfSwg
UmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUo
MCwgMCwgSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3
IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKwor
c2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIC0xKTsg
fSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRp
bWUoMCwgMCwgMCwgMTAwMCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBu
ZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDEwMDEpOyB9LCBSYW5nZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCA1MDAwMCk7
IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5U
aW1lKDAsIDAsIDAsIDk5OTk5OTk5OTkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgp
ID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCBJbmZpbml0eSk7IH0sIFJhbmdl
RXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAs
IDAsIC1JbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworCitzaG91bGRUaHJvdygoKSA9PiB7IG5l
dyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgLTEpOyB9LCBSYW5nZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAxMDAw
KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFp
blRpbWUoMCwgMCwgMCwgMCwgMTAwMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDUwMDAwKTsgfSwgUmFuZ2VF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwg
MCwgMCwgOTk5OTk5OTk5OSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBu
ZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIEluZmluaXR5KTsgfSwgUmFuZ2VFcnJv
cik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwg
MCwgLUluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3
IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCAtMSk7IH0sIFJhbmdlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDAs
IDEwMDApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFs
LlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCAxMDAxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgNTAwMDAp
OyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgwLCAwLCAwLCAwLCAwLCA5OTk5OTk5OTk5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRU
aHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgSW5maW5p
dHkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBs
YWluVGltZSgwLCAwLCAwLCAwLCAwLCAtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKworbGV0
IGZhaWx1cmVzID0gWworICAgICIiLAorICAgICIyMzo1OTo2MS45OTk5OTk5OTkiLAorICAgICIx
OTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwWy9dIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCsw
MTowMFsvLy9dIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtIZXkvSGVsbG8iLAor
ICAgICIxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW10iLAorICAgICIxOTk1LTEyLTA3VDAzOjI0
OjMwKzAxOjAwW0hleS9dIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFsuLl0iLAor
ICAgICIxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwWy5dIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoy
NDozMCswMTowMFsuLy5dIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFsuLi8uLl0i
LAorICAgICIxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwWy1IZXkvSGVsbG9dIiwKKyAgICAiMTk5
NS0xMi0wN1QwMzoyNDozMCswMTowMFstXSIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6
MDBbLS9fXSIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbXy8tXSIsCisgICAgIjE5
OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbQ29jb2FDYXBwdWNjaW5vTWF0Y2hhXSIsCisgICAgIjE5
OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbRXRjL0dNVCs1MF0iLAorICAgICIxOTk1LTEyLTA3VDAz
OjI0OjMwKzAxOjAwW0V0Yy9HTVQrMF0iLAorICAgICIxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAw
W0V0Yy9HTVQwXSIsCitdOworCitmb3IgKGxldCB0ZXh0IG9mIGZhaWx1cmVzKSB7CisgICAgc2hv
dWxkVGhyb3coKCkgPT4geworICAgICAgICBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh0ZXh0KTsK
KyAgICB9LCBSYW5nZUVycm9yKTsKK30KKworeworICAgIGxldCBvbmUgPSBUZW1wb3JhbC5QbGFp
blRpbWUuZnJvbSgnMDM6MjQnKTsKKyAgICBsZXQgdHdvID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZy
b20oJzAxOjI0Jyk7CisgICAgbGV0IHRocmVlID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAx
OjI0OjA1Jyk7CisgICAgbGV0IHNvcnRlZCA9IFtvbmUsIHR3bywgdGhyZWVdLnNvcnQoVGVtcG9y
YWwuUGxhaW5UaW1lLmNvbXBhcmUpOworICAgIHNob3VsZEJlKHNvcnRlZC5qb2luKCcgJyksIGAw
MToyNDowMCAwMToyNDowNSAwMzoyNDowMGApOworfQorCitzaG91bGRCZShTdHJpbmcoVGVtcG9y
YWwuUGxhaW5UaW1lLmZyb20oIjIwOjM0IikuY2FsZW5kYXIpLCBgaXNvODYwMWApOworc2hvdWxk
QmUoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oIjIwOjM0IikuY2FsZW5kYXIgaW5zdGFuY2VvZiBU
ZW1wb3JhbC5DYWxlbmRhciwgdHJ1ZSk7Cit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFp
blRpbWUuZnJvbSgiMjA6MzQiKTsKKyAgICBzaG91bGRCZSh0aW1lLmNhbGVuZGFyLCB0aW1lLmNh
bGVuZGFyKTsKK30KKworeworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20o
JzE5OjM5OjA5LjA2ODM0NjIwNScpOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnJvdW5kKHsg
c21hbGxlc3RVbml0OiAnaG91cicgfSkpLCBgMjA6MDA6MDBgKTsKKyAgICBzaG91bGRCZShTdHJp
bmcodGltZS5yb3VuZCh7IHJvdW5kaW5nSW5jcmVtZW50OiAzMCwgc21hbGxlc3RVbml0OiAnbWlu
dXRlJyB9KSksIGAxOTozMDowMGApOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnJvdW5kKHsg
cm91bmRpbmdJbmNyZW1lbnQ6IDMwLCBzbWFsbGVzdFVuaXQ6ICdtaW51dGUnLCByb3VuZGluZ01v
ZGU6ICdjZWlsJyB9KSksIGAyMDowMDowMGApOworfQoreworICAgIGxldCB0aW1lID0gVGVtcG9y
YWwuUGxhaW5UaW1lLmZyb20oJzE5OjM5OjA5LjA2ODM0NjIwNScpOworICAgIGxldCBvdGhlciA9
IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcyMDoxMzoyMC45NzEzOTgwOTknKTsKKyAgICBzaG91
bGRCZSh0aW1lLmVxdWFscyhvdGhlciksIGZhbHNlKTsKKyAgICBzaG91bGRCZSh0aW1lLmVxdWFs
cyh0aW1lKSwgdHJ1ZSk7Cit9Cit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUu
ZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgc2hvdWxkQmUodGltZS50b1N0cmluZygp
LCBgMTk6Mzk6MDkuMDY4MzQ2MjA1YCk7CisKKyAgICBzaG91bGRCZSh0aW1lLnRvU3RyaW5nKHsg
c21hbGxlc3RVbml0OiAnbWludXRlJyB9KSwgYDE5OjM5YCk7CisgICAgc2hvdWxkQmUodGltZS50
b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDAgfSksIGAxOTozOTowOWApOworICAg
IHNob3VsZEJlKHRpbWUudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA0IH0pLCBg
MTk6Mzk6MDkuMDY4M2ApOworICAgIHNob3VsZEJlKHRpbWUudG9TdHJpbmcoeyBmcmFjdGlvbmFs
U2Vjb25kRGlnaXRzOiA1LCByb3VuZGluZ01vZGU6ICdoYWxmRXhwYW5kJyB9KSwgYDE5OjM5OjA5
LjA2ODM1YCk7CisgICAgc2hvdWxkQmUoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OjM5OjA5
LjAwMDAwMDIwNScpLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogNCB9KSwgYDE5
OjM5OjA5LjAwMDBgKTsKK30KK3sKKyAgICBjb25zdCB3b3JrQnJlYWsgPSB7CisgICAgICB0eXBl
OiAnbWFuZGF0b3J5JywKKyAgICAgIG5hbWU6ICdMdW5jaCcsCisgICAgICBzdGFydFRpbWU6IG5l
dyBUZW1wb3JhbC5QbGFpblRpbWUoMTIpLAorICAgICAgZW5kVGltZTogbmV3IFRlbXBvcmFsLlBs
YWluVGltZSgxMykKKyAgICB9OworICAgIGNvbnN0IHN0ciA9IEpTT04uc3RyaW5naWZ5KHdvcmtC
cmVhayk7CisgICAgc2hvdWxkQmUoc3RyLCBgeyJ0eXBlIjoibWFuZGF0b3J5IiwibmFtZSI6Ikx1
bmNoIiwic3RhcnRUaW1lIjoiMTI6MDA6MDAiLCJlbmRUaW1lIjoiMTM6MDA6MDAifWApOworICAg
IGZ1bmN0aW9uIHJldml2ZXIoa2V5LCB2YWx1ZSkgeworICAgICAgaWYgKGtleS5lbmRzV2l0aCgn
VGltZScpKSByZXR1cm4gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20odmFsdWUpOworICAgICAgcmV0
dXJuIHZhbHVlOworICAgIH0KKyAgICBsZXQgb2JqZWN0ID0gSlNPTi5wYXJzZShzdHIsIHJldml2
ZXIpOworICAgIHNob3VsZEJlKG9iamVjdC5zdGFydFRpbWUgaW5zdGFuY2VvZiBUZW1wb3JhbC5Q
bGFpblRpbWUsIHRydWUpOworICAgIHNob3VsZEJlKFN0cmluZyhvYmplY3Quc3RhcnRUaW1lKSwg
YDEyOjAwOjAwYCk7CisgICAgc2hvdWxkQmUob2JqZWN0LmVuZFRpbWUgaW5zdGFuY2VvZiBUZW1w
b3JhbC5QbGFpblRpbWUsIHRydWUpOworICAgIHNob3VsZEJlKFN0cmluZyhvYmplY3QuZW5kVGlt
ZSksIGAxMzowMDowMGApOworfQorc2hvdWxkVGhyb3coKCkgPT4geworICAgIG5ldyBUZW1wb3Jh
bC5QbGFpblRpbWUoMTIpLnZhbHVlT2YoKTsKK30sIFR5cGVFcnJvcik7Cit7CisgICAgbGV0IHRp
bWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAg
c2hvdWxkQmUoSlNPTi5zdHJpbmdpZnkodGltZS5nZXRJU09GaWVsZHMoKSksIGB7ImNhbGVuZGFy
IjoiaXNvODYwMSIsImlzb0hvdXIiOjE5LCJpc29NaWNyb3NlY29uZCI6MzQ2LCJpc29NaWxsaXNl
Y29uZCI6NjgsImlzb01pbnV0ZSI6MzksImlzb05hbm9zZWNvbmQiOjIwNSwiaXNvU2Vjb25kIjo5
fWApOworfQoreworICAgIGxldCBtYXggPSAxICoqIDUzOworICAgIGxldCB0aW1lID0gVGVtcG9y
YWwuUGxhaW5UaW1lLmZyb20oJzE5OjM5OjA5LjA2ODM0NjIwNScpOworICAgIHNob3VsZEJlKFN0
cmluZyh0aW1lLmFkZCh7IG1pbnV0ZXM6IDUsIG5hbm9zZWNvbmRzOiA4MDAgfSkpLCBgMTk6NDQ6
MDkuMDY4MzQ3MDA1YCk7CisgICAgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOToz
OTowOS4wNjgzNDYyMDUnKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZS5hZGQoeyBob3Vyczog
bWF4LCBtaW51dGVzOiBtYXgsIHNlY29uZHM6IG1heCwgbWlsbGlzZWNvbmRzOiBtYXgsIG1pY3Jv
c2Vjb25kczogbWF4LCBuYW5vc2Vjb25kczogbWF4IH0pKSwgYDIwOjQwOjEwLjA2OTM0NzIwNmAp
OworfQoreworICAgIGxldCBtYXggPSAxICoqIDUzOworICAgIGxldCB0aW1lID0gVGVtcG9yYWwu
UGxhaW5UaW1lLmZyb20oJzE5OjM5OjA5LjA2ODM0NjIwNScpOworICAgIHNob3VsZEJlKFN0cmlu
Zyh0aW1lLnN1YnRyYWN0KHsgbWludXRlczogNSwgbmFub3NlY29uZHM6IDgwMCB9KSksIGAxOToz
NDowOS4wNjgzNDU0MDVgKTsKKyAgICB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5
OjM5OjA5LjA2ODM0NjIwNScpOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnN1YnRyYWN0KHsg
aG91cnM6IG1heCwgbWludXRlczogbWF4LCBzZWNvbmRzOiBtYXgsIG1pbGxpc2Vjb25kczogbWF4
LCBtaWNyb3NlY29uZHM6IG1heCwgbmFub3NlY29uZHM6IG1heCB9KSksIGAxODozODowOC4wNjcz
NDUyMDRgKTsKK30KK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcx
OTozOTowOS4wNjgzNDYyMDUnKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZS5hZGQoeyBob3Vy
czogMSB9KS53aXRoKHsKKyAgICAgIG1pbnV0ZTogMCwKKyAgICAgIHNlY29uZDogMCwKKyAgICAg
IG1pbGxpc2Vjb25kOiAwLAorICAgICAgbWljcm9zZWNvbmQ6IDAsCisgICAgICBuYW5vc2Vjb25k
OiAwCisgICAgfSkpLCBgMjA6MDA6MDBgKTsKK30KK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFs
LlBsYWluVGltZS5mcm9tKCcyMDoxMzoyMC45NzEzOTgwOTknKTsKKyAgICBzaG91bGRCZShTdHJp
bmcodGltZS51bnRpbChUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMjI6Mzk6MDkuMDY4MzQ2MjA1
JykpKSwgYFBUMkgyNU00OC4wOTY5NDgxMDZTYCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUu
dW50aWwoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OjM5OjA5LjA2ODM0NjIwNScpKSksIGAt
UFQzNE0xMS45MDMwNTE4OTRTYCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUudW50aWwoVGVt
cG9yYWwuUGxhaW5UaW1lLmZyb20oJzIyOjM5OjA5LjA2ODM0NjIwNScpLCB7IHNtYWxsZXN0VW5p
dDogJ3NlY29uZCcgfSkpLCBgUFQySDI1TTQ4U2ApOworfQoreworICAgIGxldCB0aW1lID0gVGVt
cG9yYWwuUGxhaW5UaW1lLmZyb20oJzIwOjEzOjIwLjk3MTM5ODA5OScpOworICAgIHNob3VsZEJl
KFN0cmluZyh0aW1lLnNpbmNlKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgz
NDYyMDUnKSkpLCBgUFQzNE0xMS45MDMwNTE4OTRTYCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRp
bWUuc2luY2UoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzIyOjM5OjA5LjA2ODM0NjIwNScpKSks
IGAtUFQySDI1TTQ4LjA5Njk0ODEwNlNgKTsKK30KZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNz
L3RlbXBvcmFsLXRpbWV6b25lLmpzIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwtdGltZXpvbmUu
anMKaW5kZXggZDg4ZjhjODg3ZTg0NGFlMmYwMzA5ZWFmMTUxZWNhMjIwMTQ0MTk1Ni4uZjQ4MTU5
NjYyZmI3OWY5YTYxYzkxN2I5MmRiMDJmMTA4NzIxM2FjZSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9z
dHJlc3MvdGVtcG9yYWwtdGltZXpvbmUuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvdGVtcG9yYWwt
dGltZXpvbmUuanMKQEAgLTE4LDYgKzE4LDEzIEBAIGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMs
IGVycm9yVHlwZSwgbWVzc2FnZSkgewogICAgICAgICBzaG91bGRCZShTdHJpbmcoZXJyb3IpLCBt
ZXNzYWdlKTsKIH0KIAorc2hvdWxkQmUoVGVtcG9yYWwuVGltZVpvbmUgaW5zdGFuY2VvZiBGdW5j
dGlvbiwgdHJ1ZSk7CitzaG91bGRCZShUZW1wb3JhbC5UaW1lWm9uZS5sZW5ndGgsIDApOworc2hv
dWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5UaW1lWm9uZSwg
J3Byb3RvdHlwZScpLndyaXRhYmxlLCBmYWxzZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJv
cGVydHlEZXNjcmlwdG9yKFRlbXBvcmFsLlRpbWVab25lLCAncHJvdG90eXBlJykuZW51bWVyYWJs
ZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1w
b3JhbC5UaW1lWm9uZSwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSwgZmFsc2UpOworc2hvdWxk
QmUoVGVtcG9yYWwuVGltZVpvbmUucHJvdG90eXBlLmNvbnN0cnVjdG9yLCBUZW1wb3JhbC5UaW1l
Wm9uZSk7CisKIGxldCBmYWlsdXJlcyA9IFsKICAgICAiIiwKICAgICAiKyIsCkBAIC0yNiw5ICsz
MywyMiBAQCBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsK
ICAgICAiKzI0IiwKICAgICAiKzIzOiIsCiAgICAgIjIwOjAwIiwKKyAgICAiKzI6MDAiLAorICAg
ICIrMzI6MDAiLAorICAgICIrMjM6MDAxIiwKKyAgICAiKzIzOjk5IiwKKyAgICAiKzIzOjk5MCIs
CisgICAgIisyMzo1OTo5OSIsCisgICAgIisyMzo1OTowMDEiLAorICAgICIrMjM6NTk6OTk5IiwK
KyAgICAiKzIzOjU5OjU5LiIsCisgICAgIisyMzo1OTo1OSwiLAorICAgICIrMjM6NTk6NTlhIiwK
KyAgICAiKzIzOjU5OjU5LmEiLAogICAgICIrMjA6MDAwMCIsCiAgICAgIisyMDo2MCIsCiAgICAg
IisyMDo1OToiLAorICAgICIrMjA6NTk6NjAiLAogICAgICIyMDU5OjAwIiwKICAgICAiKzIwNTk6
MDAiLAogICAgICIrMjA6NTkwMCIsCkBAIC01Miw2ICs3MiwxMCBAQCBmdW5jdGlvbiBzaG91bGRU
aHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKIHNob3VsZEJlKG5ldyBUZW1wb3JhbC5U
aW1lWm9uZSgiLTAxOjU5OjMwLjEyMzQ1MDAwMCIpLmlkLCBgLTAxOjU5OjMwLjEyMzQ1YCk7CiBz
aG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4wMDAwMDAwMDEiKS5pZCwg
YC0wMTo1OTozMC4wMDAwMDAwMDFgKTsKIHNob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgi
LTAxOjU5OjMwLjEyMzQ1Njc4OSIpLmlkLCBgLTAxOjU5OjMwLjEyMzQ1Njc4OWApOworc2hvdWxk
QmUobmV3IFRlbXBvcmFsLlRpbWVab25lKCItMDE6NTk6MzAuMDAxMDAyMDAzIikuaWQsIGAtMDE6
NTk6MzAuMDAxMDAyMDAzYCk7CitzaG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1
OTozMC4wMDAwMDAwMDAiKS5pZCwgYC0wMTo1OTozMGApOworc2hvdWxkQmUobmV3IFRlbXBvcmFs
LlRpbWVab25lKCItMDE6NTk6MDAuMDAwMDAwMDAwIikuaWQsIGAtMDE6NTlgKTsKK3Nob3VsZEJl
KG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjAwOjAwLjAwMDAwMDAwMCIpLmlkLCBgLTAxOjAw
YCk7CiAKIGxldCB0eiA9IG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjMwLjEyMzQ1Njc4
OSIpCiBzaG91bGRCZSh0ei5pZCwgU3RyaW5nKHR6KSk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKaW5kZXggMTA1
ZmRmNDI1Mzk2NTM3Mjg1YTcxNzgwMjUwOWY4ZGUyOTBmYWI2Yy4uYTZjOGExMWRlYmUzZGI1N2Yx
MWUwNTFkOWM3ZDY2ODJkZjA1MmUxMiAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMjcsNyArMjcsOCBA
QCBza2lwOgogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5EYXRlCiAgICAgLSB0
ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpbkRhdGVUaW1lCiAgICAgLSB0ZXN0L2J1aWx0LWlu
cy9UZW1wb3JhbC9QbGFpbk1vbnRoRGF5Ci0gICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9Q
bGFpblRpbWUKKyAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluVGltZS9wcm90b3R5
cGUvdG9QbGFpbkRhdGVUaW1lCisgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRp
bWUvcHJvdG90eXBlL3RvWm9uZWREYXRlVGltZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9y
YWwvUGxhaW5ZZWFyTW9udGgKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1RpbWVab25l
CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9ab25lZERhdGVUaW1lCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437446</attachid>
            <date>2021-09-06 20:38:40 -0700</date>
            <delta_ts>2021-09-06 21:06:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229892-20210906203839.patch</filename>
            <type>text/plain</type>
            <size>168677</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTM5NDE1YzNmNmI3NTVlOTY3YjE3MTMzYjU5ZTY5ZWM1NjNkOWNjLi5jNWY1OTliNjIzZjA5ZmQy
ZjRjMjBiZjgzYjM5YTJjOWYxMWNhYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzkgQEAKKzIwMjEtMDktMDYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuUGxhaW5UaW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4OTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxl
bWVudHMgVGVtcG9yYWwuUGxhaW5UaW1lWzFdLiBUaGlzIGlzIHRpbWUgcmVwcmVzZW50YXRpb24g
d2hpY2ggaXMgbm90IGFzc29jaWF0ZWQgdG8KKyAgICAgICAgY2FsZW5kYXJzIGFuZCB0aW1lem9u
ZXMuIFRoaXMgaXMgdHVwbGUgb2YgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBt
aWNyb3NlY29uZCwgYW5kIG5hbm9zZWNvbmQuCisKKyAgICAgICAgMS4gV2UgYWRkIGZ1bGwtZmxl
ZGdlZCBJU084NjAxIERhdGVUaW1lIC8gVGltZSBwYXJzZXIsIHNvIHRoYXQgVGVtcG9yYWwuUGxh
aW5UaW1lLmZyb20gY2FuIGV4dHJhY3QKKyAgICAgICAgICAgdGltZSBhcyBzcGVjaWZpZWQuCisK
KyAgICAgICAgMi4gSVNPODYwMTo6UGxhaW5UaW1lIGlzIHVzZWQgZm9yIGFscmVhZHktdmFsaWRh
dGVkIFBsYWluVGltZSBkYXRhLiBXaGVuIHBlcmZvcm1pbmcgYXJpdGhtZXRpY3MsIHdlIGZpcnN0
CisgICAgICAgICAgIGRvIHRoYXQgaW4gSVNPODYwMTo6RHVyYXRpb24sIGFuZCB0aGVuIHdlIHZh
bGlkYXRlIGFuZCBjb252ZXJ0IGl0IHRvIFBsYWluVGltZS4KKworICAgICAgICBbMV06IGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBsYWludGltZS1vYmpl
Y3RzCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSVNPODYwMS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2MDE6OmlkRm9yVGltZVpv
bmVOYW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lU3BlYyk6CisgICAgICAg
IChKU0M6OklTTzg2MDE6OnBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24pOgorICAgICAg
ICAoSlNDOjpJU084NjAxOjpjYW5CZVRpbWVab25lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
cGFyc2VUaW1lWm9uZSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlVGltZSk6CisgICAg
ICAgIChKU0M6OklTTzg2MDE6OmRheXNJbk1vbnRoKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
cGFyc2VEYXRlKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VEYXRlVGltZSk6CisgICAg
ICAgIChKU0M6OklTTzg2MDE6OmZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKToKKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6dGVtcG9yYWxUaW1lVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpJU084
NjAxOjppc1ZhbGlkRHVyYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6RHVyYXRpb24pOgorICAgICAgICAoSlNDOjpJ
U084NjAxOjpEdXJhdGlvbjo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1
cmF0aW9uOjpvcGVyYXRvcltdIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRp
b246OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246OmVuZCBj
b25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpjbGVhcik6CisgICAgICAg
IChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpvcGVyYXRvci0gY29uc3QpOgorICAgICAgICAoSlND
OjpJU084NjAxOjpQbGFpblRpbWU6OlBsYWluVGltZSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6
OlBsYWluVGltZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OlBsYWluRGF0
ZTo6UGxhaW5EYXRlKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRlOjp5ZWFyIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRlOjptb250aCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OklTTzg2MDE6OlBsYWluRGF0ZTo6ZGF5IGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjp1dGNUaW1lWm9uZUlEU2xvdyk6
CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OnV0Y1RpbWVa
b25lSUQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cGxhaW5UaW1lU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1
cmF0aW9uOjpmcm9tTm9uRHVyYXRpb25WYWx1ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVy
YXRpb246OnRvRHVyYXRpb24pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b0R1
cmF0aW9uUmVjb3JkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcg
Y29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyk6CisgICAg
ICAgIChKU0M6OmlzVmFsaWREdXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlRlbXBv
cmFsRHVyYXRpb246OmZyb21PYmplY3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxOb3cuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVQbGFpblRpbWVDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OnNlY29uZHNTdHJpbmdQcmVjaXNpb24pOgorICAgICAgICAo
SlNDOjp0b1RlbXBvcmFsT3ZlcmZsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxQbGFpblRpbWU6OlRlbXBvcmFsUGxhaW5UaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQ
bGFpblRpbWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRp
bWU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKEpTQzo6dG9QbGFpblRpbWUpOgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dHJ5Q3JlYXRlSWZWYWxpZCk6CisgICAgICAg
IChKU0M6OmJhbGFuY2VUaW1lKToKKyAgICAgICAgKEpTQzo6cm91bmRUaW1lKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6OnJvdW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxQbGFpblRpbWU6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6cHJvcGVydHlO
YW1lKToKKyAgICAgICAgKEpTQzo6dG9UZW1wb3JhbFRpbWVSZWNvcmQpOgorICAgICAgICAoSlND
Ojp0b1BhcnRpYWxUaW1lKToKKyAgICAgICAgKEpTQzo6Y29uc3RyYWludFRpbWUpOgorICAgICAg
ICAoSlNDOjpyZWd1bGF0ZVRpbWUpOgorICAgICAgICAoSlNDOjp0b1RlbXBvcmFsQ2FsZW5kYXJX
aXRoSVNPRGVmYXVsdCk6CisgICAgICAgIChKU0M6OmdldFRlbXBvcmFsQ2FsZW5kYXJXaXRoSVNP
RGVmYXVsdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjp0b0xp
bWl0ZWRUZW1wb3JhbER1cmF0aW9uKToKKyAgICAgICAgKEpTQzo6YWRkVGltZSk6CisgICAgICAg
IChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjphZGQgY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1w
b3JhbFBsYWluVGltZTo6c3VidHJhY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBs
YWluVGltZTo6d2l0aCBjb25zdCk6CisgICAgICAgIChKU0M6OmRpZmZlcmVuY2VUaW1lKToKKyAg
ICAgICAgKEpTQzo6ZXh0cmFjdERpZmZlcmVuY2VPcHRpb25zKToKKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxQbGFpblRpbWU6OnVudGlsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFp
blRpbWU6OnNpbmNlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1l
Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9y
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVj
dG9yOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFRpbWVab25lLmguCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRp
bWVab25lLmguCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmNwcDoKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZTo6ZnJvbSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFs
VGltZVpvbmU6OmlkRm9yVGltZVpvbmVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L1RlbXBvcmFsVGltZVpvbmUuaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmVD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KwogMjAyMS0wOS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIE1ha2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGUgY2xvYmJlcml6
aW5nIHJ1bGUgcHJlY2lzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCAwNzlkYjgyZThkMWU2NDhkMjZkMGM2NjQyY2IyOTMwNjBh
ZjlmZjNlLi5iYWU5YTM0NmM1YWIwNzI5MmU2MDVhOThlODEwYzFmZGNlNWIxNmFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDIxLTA5LTA2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLlBsYWluVGltZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdQYXJzaW5nQnVmZmVyLmg6CisKIDIwMjEtMDktMDMgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uu
c3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFVzZSBVU0UoU1lTVEVNX01BTExPQykgbWFjcm8g
aW4gYWxsIGNhc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWNhMDgz
MTRiNjQ0NTljNzhjYTAzODY0MjgxNTM3Zjg1MThkYmVlMC4uMzhjYjg0ZGEwNTZlMmI2YTZjMTNl
ZDlmOGQ3MDUxOGVhZjA4OTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTEzLDYgKzExMyw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMK
ICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9U
ZW1wb3JhbE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorICAgIHJ1bnRp
bWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAppbmRleCBjZTVmNjI4OGFhYTI3Y2I3ODE3YmVhZTE0NDM3NmVhMjhhZmFlNjNmLi4y
ODg1YjUxMDE3Y2MxYWUzZDg5MmVmM2M1ZjI3YTRiMTIzNzUzODQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAt
MTc1LDYgKzE3NSw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNv
bnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJP
SkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGlt
ZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1l
L1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS91Y2QvQ2FzZUZv
bGRpbmcudHh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMWIwNTVjOTIyYzA5NGE1OTU4NDI2MDg0MWRjZWRm
Y2FhNzM3NjUwMy4uMmFkMjEzMWM1ODY2OWJkMDU3NWM3YWY0MGE2YzQyN2E1OTRmNWMzZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdApAQCAtNzIsNiArNzIsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLgogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFs
RHVyYXRpb25Qcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVt
cG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5sdXQu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1Vu
aWNvZGVQYXR0ZXJuVGFibGVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggODgxOTI3ZTE3YmRhMjM4ZDdkYWNlZjFkNmViNWMzYzNiNzQ4YjM3Ny4uZWNi
Y2U2N2Y3OGMwMDM0YzE2NmY1MGQ1ODkyYTZmMDhjNWRhNDBkNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE5Nyw2ICsxOTcsOCBAQCBPQkpFQ1RfTFVU
X0hFQURFUlMgPSBcCiAgICAgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5sdXQuaCBcCiAgICAg
VGVtcG9yYWxOb3cubHV0LmggXAogICAgIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBUZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oIFwK
ICAgICBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmx1dC5oIFwKICAgICBXZWJBc3NlbWJseUNv
bXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCAzMjhmOTJmNWIyZmIyMDVjODM4NzgyMjQxOWE1MDg0ZTBmYTFmN2NhLi44NDZlOWVlNzVm
ZWQwNTQ3NTU2YzRiZmQ0YTI2MWQ4MGQ1OWFmYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xMDE5LDYgKzEwMTksOSBAQCBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1
Y3Rvci5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKIHJ1bnRpbWUv
VGVtcG9yYWxOb3cuY3BwCiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorcnVudGltZS9UZW1w
b3JhbFBsYWluVGltZS5jcHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5j
cHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBv
cmFsVGltZVpvbmUuY3BwCiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAK
IHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDcxNGFhMmZlYjIy
NGZhNThmMjdlZDU1NTFiNjdjOWYzMjY1Y2JkMjcuLjQwYzE1OWU4ZDdjNTQwNDlmZDk4YzhhNjY2
OGE2NGE4ZGY0ZWEzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTQ5LDYgKzE0OSwxMiBAQAogICAgIG1hY3JvKGluZGlj
ZXMpIFwKICAgICBtYWNybyhpbmZlcnJlZE5hbWUpIFwKICAgICBtYWNybyhpbnB1dCkgXAorICAg
IG1hY3JvKGlzb0hvdXIpIFwKKyAgICBtYWNybyhpc29NaWNyb3NlY29uZCkgXAorICAgIG1hY3Jv
KGlzb01pbGxpc2Vjb25kKSBcCisgICAgbWFjcm8oaXNvTWludXRlKSBcCisgICAgbWFjcm8oaXNv
TmFub3NlY29uZCkgXAorICAgIG1hY3JvKGlzb1NlY29uZCkgXAogICAgIG1hY3JvKGluc3RydWN0
aW9uQ291bnQpIFwKICAgICBtYWNybyhpc0FycmF5KSBcCiAgICAgbWFjcm8oaXNFbmFibGVkKSBc
CkBAIC0xNjksNyArMTc1LDkgQEAKICAgICBtYWNybyhtYXhpbXVtRnJhY3Rpb25EaWdpdHMpIFwK
ICAgICBtYWNybyhtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpIFwKICAgICBtYWNybyhtZXNzYWdl
KSBcCisgICAgbWFjcm8obWljcm9zZWNvbmQpIFwKICAgICBtYWNybyhtaWNyb3NlY29uZHMpIFwK
KyAgICBtYWNybyhtaWxsaXNlY29uZCkgXAogICAgIG1hY3JvKG1pbGxpc2Vjb25kcykgXAogICAg
IG1hY3JvKG1pbmltdW1GcmFjdGlvbkRpZ2l0cykgXAogICAgIG1hY3JvKG1pbmltdW1JbnRlZ2Vy
RGlnaXRzKSBcCkBAIC0xODEsNiArMTg5LDcgQEAKICAgICBtYWNybyhtb250aHMpIFwKICAgICBt
YWNybyhtdWx0aWxpbmUpIFwKICAgICBtYWNybyhuYW1lKSBcCisgICAgbWFjcm8obmFub3NlY29u
ZCkgXAogICAgIG1hY3JvKG5hbm9zZWNvbmRzKSBcCiAgICAgbWFjcm8obmV4dCkgXAogICAgIG1h
Y3JvKG5vdykgXApAQCAtMTk0LDYgKzIwMyw3IEBACiAgICAgbWFjcm8ob3JpZ2luKSBcCiAgICAg
bWFjcm8ob3NyRXhpdFNpdGVzKSBcCiAgICAgbWFjcm8ob3NyRXhpdHMpIFwKKyAgICBtYWNybyhv
dmVyZmxvdykgXAogICAgIG1hY3JvKHBhcnNlKSBcCiAgICAgbWFjcm8ocGFyc2VJbnQpIFwKICAg
ICBtYWNybyhwYXJzZUZsb2F0KSBcCkBAIC0yNDUsNiArMjU1LDcgQEAKICAgICBtYWNybyh1c2Fn
ZSkgXAogICAgIG1hY3JvKHZhbHVlKSBcCiAgICAgbWFjcm8odmFsdWVPZikgXAorICAgIG1hY3Jv
KHdlZWspIFwKICAgICBtYWNybyh3ZWVrZGF5KSBcCiAgICAgbWFjcm8od2Vla3MpIFwKICAgICBt
YWNybyh3cml0YWJsZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSVNPODYwMS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNw
cAppbmRleCA5ZTQyYWZjMTMzYzA3ZTNmYjkxYjg5Nzc1NmUzYTE1NTEyM2FmOTM3Li5jMmE5ZTNj
ZmRiMzJlNDBiMTBkN2E0MjM2YzNkNjE5MjhjNDlhNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JU084NjAxLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDcgKzI3LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJU084NjAxLmgi
CiAKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUGFyc2VJbnQuaCIKKyNpbmNs
dWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVm
ZmVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzgsNiArNDEsMTYgQEAgc3RhdGljIGNvbnN0
ZXhwciBpbnQ2NF90IG5zUGVyU2Vjb25kID0gMTAwMExMICogMTAwMCAqIDEwMDA7CiBzdGF0aWMg
Y29uc3RleHByIGludDY0X3QgbnNQZXJNaWxsaXNlY29uZCA9IDEwMDBMTCAqIDEwMDA7CiBzdGF0
aWMgY29uc3RleHByIGludDY0X3QgbnNQZXJNaWNyb3NlY29uZCA9IDEwMDBMTDsKIAorc3RkOjpv
cHRpb25hbDxUaW1lWm9uZUlEPiBpZEZvclRpbWVab25lTmFtZShTdHJpbmdWaWV3IHN0cmluZykK
K3sKKyAgICBjb25zdCBhdXRvJiB0aW1lWm9uZXMgPSBpbnRsQXZhaWxhYmxlVGltZVpvbmVzKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdGltZVpvbmVzLnNpemUoKTsg
KytpbmRleCkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0aW1lWm9uZXNb
aW5kZXhdLCBzdHJpbmcpKQorICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KIGlu
dDMyX3QgcGFyc2VEZWNpbWFsSW50MzIoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKIHsKQEAgLTI0MywzMiArMjU2LDI2IEBAIHN0ZDo6b3B0aW9uYWw8RHVyYXRp
b24+IHBhcnNlRHVyYXRpb24oU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgfSk7CiB9CiAKKworZW51
bSBjbGFzcyBTZWNvbmQ2ME1vZGUgeyBBY2NlcHQsIFJlamVjdCB9OwogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGlt
ZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4m
IGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4gcGFyc2VUaW1lU3BlYyhT
dHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIsIFNlY29uZDYwTW9kZSBz
ZWNvbmQ2ME1vZGUpCiB7Ci0gICAgLy8gVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0IDoKLSAgICAv
LyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91cgotICAgIC8v
ICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpv
bmVVVENPZmZzZXRNaW51dGUKLSAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVa
b25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZQotICAgIC8vICAgICBUaW1l
Wm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZz
ZXRNaW51dGUgOiBUaW1lWm9uZVVUQ09mZnNldFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0
aW9uW29wdF0KLSAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zm
c2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZSBUaW1lWm9uZVVUQ09mZnNldFNlY29uZFtv
cHRdCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVT
cGVjCisgICAgLy8gVGltZVNwZWMgOgorICAgIC8vICAgICBUaW1lSG91cgorICAgIC8vICAgICBU
aW1lSG91ciA6IFRpbWVNaW51dGUKKyAgICAvLyAgICAgVGltZUhvdXIgVGltZU1pbnV0ZQorICAg
IC8vICAgICBUaW1lSG91ciA6IFRpbWVNaW51dGUgOiBUaW1lU2Vjb25kIFRpbWVGcmFjdGlvbltv
cHRdCisgICAgLy8gICAgIFRpbWVIb3VyIFRpbWVNaW51dGUgVGltZVNlY29uZCBUaW1lRnJhY3Rp
b25bb3B0XQogICAgIC8vCi0gICAgLy8gIE1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGFyZSDC
sTIzOjU5OjU5Ljk5OTk5OTk5OSA9IMKxODYzOTk5OTk5OTk5OTlucywgd2hpY2ggY2FuIGJlIHJl
cHJlc2VudGVkIGJ5IGludDY0X3QgLyBkb3VibGUncyBpbnRlZ2VyIHBhcnQuCi0KLSAgICAvLyBz
aWduIGFuZCBob3VyLgotICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCAzKQotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIC8vICBUaW1lU2Vjb25kIGNhbiBiZSA2MC4g
QW5kIGlmIGl0IGlzIDYwLCB3ZSBpbnRlcnByZXQgaXQgYXMgNTkuCisgICAgLy8gIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBhcnNlaXNvZGF0ZXRpbWUK
IAotICAgIGludDY0X3QgZmFjdG9yID0gMTsKLSAgICBpZiAoKmJ1ZmZlciA9PSAnKycpCi0gICAg
ICAgIGJ1ZmZlci5hZHZhbmNlKCk7Ci0gICAgZWxzZSBpZiAoKmJ1ZmZlciA9PSAnLScgfHwgKmJ1
ZmZlciA9PSAweDIyMTIpIHsKLSAgICAgICAgZmFjdG9yID0gLTE7Ci0gICAgICAgIGJ1ZmZlci5h
ZHZhbmNlKCk7Ci0gICAgfSBlbHNlCisgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8
IDIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpbnQ2NF90IGhvdXIgPSAw
OworICAgIHVuc2lnbmVkIGhvdXIgPSAwOwogICAgIEFTU0VSVChidWZmZXIubGVuZ3RoUmVtYWlu
aW5nKCkgPj0gMik7CiAgICAgYXV0byBmaXJzdEhvdXJDaGFyYWN0ZXIgPSAqYnVmZmVyOwogICAg
IGlmIChmaXJzdEhvdXJDaGFyYWN0ZXIgPj0gJzAnICYmIGZpcnN0SG91ckNoYXJhY3RlciA8PSAn
MicpIHsKQEAgLTI4NCwxNSArMjkxLDE2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+
IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAg
ICAgIHJldHVybiAobnNQZXJIb3VyICogaG91cikgKiBmYWN0b3I7CisgICAgICAgIHJldHVybiBQ
bGFpblRpbWUoaG91ciwgMCwgMCwgMCwgMCwgMCk7CiAKICAgICBib29sIHNwbGl0QnlDb2xvbiA9
IGZhbHNlOwogICAgIGlmICgqYnVmZmVyID09ICc6JykgewotICAgICAgICBidWZmZXIuYWR2YW5j
ZSgpOwogICAgICAgICBzcGxpdEJ5Q29sb24gPSB0cnVlOwotICAgIH0KKyAgICAgICAgYnVmZmVy
LmFkdmFuY2UoKTsKKyAgICB9IGVsc2UgaWYgKCEoKmJ1ZmZlciA+PSAnMCcgJiYgKmJ1ZmZlciA8
PSAnNScpKQorICAgICAgICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIDAsIDAsIDAsIDAsIDApOwog
Ci0gICAgaW50NjRfdCBtaW51dGUgPSAwOworICAgIHVuc2lnbmVkIG1pbnV0ZSA9IDA7CiAgICAg
aWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgYXV0byBmaXJzdE1pbnV0ZUNoYXJhY3RlciA9ICpidWZmZXI7CkBAIC0zMDgs
MTYgKzMxNiwxNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25l
TnVtZXJpY1VUQ09mZnNldChTdHJpbmdQYXJzaW5nQnVmZmVyPAogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gKG5z
UGVySG91ciAqIGhvdXIgKyBuc1Blck1pbnV0ZSAqIG1pbnV0ZSkgKiBmYWN0b3I7CisgICAgICAg
IHJldHVybiBQbGFpblRpbWUoaG91ciwgbWludXRlLCAwLCAwLCAwLCAwKTsKIAogICAgIGlmIChz
cGxpdEJ5Q29sb24pIHsKICAgICAgICAgaWYgKCpidWZmZXIgPT0gJzonKQogICAgICAgICAgICAg
YnVmZmVyLmFkdmFuY2UoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICB9CisgICAgICAgICAgICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0
ZSwgMCwgMCwgMCwgMCk7CisgICAgfSBlbHNlIGlmICghKCpidWZmZXIgPj0gJzAnICYmIChzZWNv
bmQ2ME1vZGUgPT0gU2Vjb25kNjBNb2RlOjpBY2NlcHQgPyAoKmJ1ZmZlciA8PSAnNicpIDogKCpi
dWZmZXIgPD0gJzUnKSkpKQorICAgICAgICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwg
MCwgMCwgMCwgMCk7CiAKLSAgICBpbnQ2NF90IHNlY29uZCA9IDA7CisgICAgdW5zaWduZWQgc2Vj
b25kID0gMDsKICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgMikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGZpcnN0U2Vjb25kQ2hhcmFjdGVyID0gKmJ1
ZmZlcjsKQEAgLTMyNywzNCArMzM2LDg0IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+
IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiAgICAg
ICAgIGlmICghaXNBU0NJSURpZ2l0KHNlY29uZFNlY29uZENoYXJhY3RlcikpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBzZWNvbmQgPSAoc2Vjb25kU2Vjb25kQ2hh
cmFjdGVyIC0gJzAnKSArIDEwICogKGZpcnN0U2Vjb25kQ2hhcmFjdGVyIC0gJzAnKTsKLSAgICAg
ICAgQVNTRVJUKG1pbnV0ZSA8IDYwKTsKKyAgICAgICAgQVNTRVJUKHNlY29uZCA8IDYwKTsKKyAg
ICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICB9IGVsc2UgaWYgKHNlY29uZDYwTW9kZSA9PSBT
ZWNvbmQ2ME1vZGU6OkFjY2VwdCAmJiBmaXJzdFNlY29uZENoYXJhY3RlciA9PSAnNicpIHsKKyAg
ICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgYXV0byBzZWNvbmRTZWNvbmRDaGFyYWN0
ZXIgPSAqYnVmZmVyOworICAgICAgICBpZiAoc2Vjb25kU2Vjb25kQ2hhcmFjdGVyICE9ICcwJykK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHNlY29uZCA9IDU5Owog
ICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gKG5z
UGVySG91ciAqIGhvdXIgKyBuc1Blck1pbnV0ZSAqIG1pbnV0ZSArIG5zUGVyU2Vjb25kICogc2Vj
b25kKSAqIGZhY3RvcjsKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIHNl
Y29uZCwgMCwgMCwgMCk7CiAKICAgICBpZiAoKmJ1ZmZlciAhPSAnLicgJiYgKmJ1ZmZlciAhPSAn
LCcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBQbGFpblRp
bWUoaG91ciwgbWludXRlLCBzZWNvbmQsIDAsIDAsIDApOwogICAgIGJ1ZmZlci5hZHZhbmNlKCk7
CiAKICAgICB1bnNpZ25lZCBkaWdpdHMgPSAwOwotICAgIHdoaWxlIChkaWdpdHMgPCBidWZmZXIu
bGVuZ3RoUmVtYWluaW5nKCkgJiYgaXNBU0NJSURpZ2l0KGJ1ZmZlcltkaWdpdHNdKSkKLSAgICAg
ICAgZGlnaXRzKys7Ci0gICAgaWYgKCFkaWdpdHMgfHwgZGlnaXRzID4gOSkKKyAgICB1bnNpZ25l
ZCBtYXhDb3VudCA9IHN0ZDo6bWluPHVuc2lnbmVkPihidWZmZXIubGVuZ3RoUmVtYWluaW5nKCks
IDkpOworICAgIGZvciAoOyBkaWdpdHMgPCBtYXhDb3VudDsgKytkaWdpdHMpIHsKKyAgICAgICAg
aWYgKCFpc0FTQ0lJRGlnaXQoYnVmZmVyW2RpZ2l0c10pKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGlmICghZGlnaXRzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgVmVjdG9yPExDaGFyLCA5PiBwYWRkZWQoOSwgJzAnKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZGlnaXRzOyArK2kpCiAgICAgICAgIHBhZGRlZFtpXSA9IGJ1ZmZlcltpXTsKICAg
ICBidWZmZXIuYWR2YW5jZUJ5KGRpZ2l0cyk7Ci0gICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKwor
ICAgIHVuc2lnbmVkIG1pbGxpc2Vjb25kID0gcGFyc2VEZWNpbWFsSW50MzIocGFkZGVkLmRhdGEo
KSwgMyk7CisgICAgdW5zaWduZWQgbWljcm9zZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQzMihwYWRk
ZWQuZGF0YSgpICsgMywgMyk7CisgICAgdW5zaWduZWQgbmFub3NlY29uZCA9IHBhcnNlRGVjaW1h
bEludDMyKHBhZGRlZC5kYXRhKCkgKyA2LCAzKTsKKworICAgIHJldHVybiBQbGFpblRpbWUoaG91
ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBtaWNyb3NlY29uZCwgbmFub3NlY29uZCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgc3RkOjpvcHRp
b25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChTdHJpbmdQYXJzaW5n
QnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAgLy8gVGltZVpvbmVOdW1lcmlj
VVRDT2Zmc2V0IDoKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRD
T2Zmc2V0SG91cgorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENP
ZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUKKyAgICAvLyAgICAgVGltZVpvbmVV
VENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0
ZQorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3Vy
IDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUgOiBUaW1lWm9uZVVUQ09mZnNldFNlY29uZCBUaW1l
Wm9uZVVUQ09mZnNldEZyYWN0aW9uW29wdF0KKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRT
aWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZSBUaW1lWm9u
ZVVUQ09mZnNldFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0aW9uW29wdF0KKyAgICAvLwor
ICAgIC8vICBUaGlzIGlzIHRoZSBzYW1lIHRvCisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0
U2lnbiBUaW1lU3BlYworICAgIC8vCisgICAgLy8gIE1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVz
IGFyZSDCsTIzOjU5OjU5Ljk5OTk5OTk5OSA9IMKxODYzOTk5OTk5OTk5OTlucywgd2hpY2ggY2Fu
IGJlIHJlcHJlc2VudGVkIGJ5IGludDY0X3QgLyBkb3VibGUncyBpbnRlZ2VyIHBhcnQuCisKKyAg
ICAvLyBzaWduIGFuZCBob3VyLgorICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCAz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaW50NjRfdCBtaWxsaXNlY29u
ZCA9IHBhcnNlRGVjaW1hbEludDMyKHBhZGRlZC5kYXRhKCksIDMpOwotICAgIGludDY0X3QgbWlj
cm9zZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQzMihwYWRkZWQuZGF0YSgpICsgMywgMyk7Ci0gICAg
aW50NjRfdCBuYW5vc2Vjb25kID0gcGFyc2VEZWNpbWFsSW50MzIocGFkZGVkLmRhdGEoKSArIDYs
IDMpOworICAgIGludDY0X3QgZmFjdG9yID0gMTsKKyAgICBpZiAoKmJ1ZmZlciA9PSAnKycpCisg
ICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgZWxzZSBpZiAoKmJ1ZmZlciA9PSAnLScgfHwg
KmJ1ZmZlciA9PSAweDIyMTIpIHsKKyAgICAgICAgZmFjdG9yID0gLTE7CisgICAgICAgIGJ1ZmZl
ci5hZHZhbmNlKCk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBhdXRvIHBsYWluVGltZSA9IHBhcnNlVGltZVNwZWMoYnVmZmVyLCBTZWNvbmQ2ME1vZGU6
OlJlamVjdCk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICBpbnQ2NF90IGhvdXIgPSBwbGFpblRpbWUtPmhvdXIoKTsKKyAgICBpbnQ2NF90
IG1pbnV0ZSA9IHBsYWluVGltZS0+bWludXRlKCk7CisgICAgaW50NjRfdCBzZWNvbmQgPSBwbGFp
blRpbWUtPnNlY29uZCgpOworICAgIGludDY0X3QgbWlsbGlzZWNvbmQgPSBwbGFpblRpbWUtPm1p
bGxpc2Vjb25kKCk7CisgICAgaW50NjRfdCBtaWNyb3NlY29uZCA9IHBsYWluVGltZS0+bWljcm9z
ZWNvbmQoKTsKKyAgICBpbnQ2NF90IG5hbm9zZWNvbmQgPSBwbGFpblRpbWUtPm5hbm9zZWNvbmQo
KTsKIAogICAgIHJldHVybiAobnNQZXJIb3VyICogaG91ciArIG5zUGVyTWludXRlICogbWludXRl
ICsgbnNQZXJTZWNvbmQgKiBzZWNvbmQgKyBuc1Blck1pbGxpc2Vjb25kICogbWlsbGlzZWNvbmQg
KyBuc1Blck1pY3Jvc2Vjb25kICogbWljcm9zZWNvbmQgKyBuYW5vc2Vjb25kKSAqIGZhY3RvcjsK
IH0KQEAgLTM2Miw3ICs0MjEsNDU4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBh
cnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiBzdGQ6Om9w
dGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1ZpZXcg
c3RyaW5nKQogewogICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBb
XShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxpbnQ2NF90PiB7Ci0gICAgICAgIHJldHVy
biBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChidWZmZXIpOworICAgICAgICBhdXRvIHJl
c3VsdCA9IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KGJ1ZmZlcik7CisgICAgICAgIGlm
ICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxWYXJpYW50PFZlY3RvcjxMQ2hhcj4sIGludDY0X3Q+
PiBwYXJzZVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbihTdHJpbmdQYXJzaW5nQnVmZmVyPENo
YXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNwcm9kLVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbgorICAgIC8vIFRpbWVa
b25lQnJhY2tldGVkQW5ub3RhdGlvbiA6CisgICAgLy8gICAgIFsgVGltZVpvbmVCcmFja2V0ZWRO
YW1lIF0KKyAgICAvLworICAgIC8vIFRpbWVab25lQnJhY2tldGVkTmFtZSA6CisgICAgLy8gICAg
IFRpbWVab25lSUFOQU5hbWUKKyAgICAvLyAgICAgRXRjL0dNVCBBU0NJSVNpZ24gSG91cgorICAg
IC8vICAgICBUaW1lWm9uZVVUQ09mZnNldE5hbWUKKworICAgIGlmIChidWZmZXIubGVuZ3RoUmVt
YWluaW5nKCkgPCAzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCpi
dWZmZXIgIT0gJ1snKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGJ1ZmZlci5h
ZHZhbmNlKCk7CisKKyAgICBzd2l0Y2ggKCpidWZmZXIpIHsKKyAgICBjYXNlICcrJzoKKyAgICBj
YXNlICctJzoKKyAgICBjYXNlIDB4MjIxMjogeworICAgICAgICAvLyBUaW1lWm9uZVVUQ09mZnNl
dE5hbWUgaXMgdGhlIHNhbWUgdG8gVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0LgorICAgICAgICBh
dXRvIG9mZnNldCA9IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KGJ1ZmZlcik7CisgICAg
ICAgIGlmICghb2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgaWYgKCpidWZmZXIgIT0gJ10nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgcmV0dXJuIG9mZnNldC52
YWx1ZSgpOworICAgIH0KKyAgICBjYXNlICdFJzogeworICAgICAgICAvLyAiRXRjL0dNVCsyMCIg
YW5kICJdIiA9PiBsZW5ndGggaXMgMTEuCisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWlu
aW5nKCkgPj0gMTEpIHsKKyAgICAgICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ0UnICYmIGJ1ZmZl
clsxXSA9PSAndCcgJiYgYnVmZmVyWzJdID09ICdjJyAmJiBidWZmZXJbM10gPT0gJy8nICYmIGJ1
ZmZlcls0XSA9PSAnRycgJiYgYnVmZmVyWzVdID09ICdNJyAmJiBidWZmZXJbNl0gPT0gJ1QnKSB7
CisgICAgICAgICAgICAgICAgYXV0byBzaWduQ2hhcmFjdGVyID0gYnVmZmVyWzddOworICAgICAg
ICAgICAgICAgIC8vIE5vdCBpbmNsdWRpbmcgMHgyMjEyIHNpbmNlIGl0IGlzIEFTQ0lJU2lnbi4K
KyAgICAgICAgICAgICAgICBpZiAoc2lnbkNoYXJhY3RlciA9PSAnKycgfHwgc2lnbkNoYXJhY3Rl
ciA9PSAnLScpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRXRjL0dNVCswMSBpcyBVVEMtMDE6
MDAuIFRoaXMgc2lnbiBpcyBpbnRlbnRpb25hbGx5IGludmVydGVkLgorICAgICAgICAgICAgICAg
ICAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Uel9kYXRhYmFzZSNBcmVhCisg
ICAgICAgICAgICAgICAgICAgIGludDY0X3QgZmFjdG9yID0gc2lnbkNoYXJhY3RlciA9PSAnKycg
PyAtMSA6IDE7CisgICAgICAgICAgICAgICAgICAgIGludDY0X3QgaG91ciA9IDA7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gZmlyc3RIb3VyQ2hhcmFjdGVyID0gYnVmZmVyWzhdOworICAgICAg
ICAgICAgICAgICAgICBpZiAoZmlyc3RIb3VyQ2hhcmFjdGVyID49ICcwJyAmJiBmaXJzdEhvdXJD
aGFyYWN0ZXIgPD0gJzInKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHNlY29uZEhv
dXJDaGFyYWN0ZXIgPSBidWZmZXJbOV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNB
U0NJSURpZ2l0KHNlY29uZEhvdXJDaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaG91ciA9IChzZWNvbmRIb3VyQ2hhcmFjdGVyIC0gJzAnKSArIDEwICogKGZpcnN0SG91
ckNoYXJhY3RlciAtICcwJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvdXIg
PCAyNCAmJiBidWZmZXJbMTBdID09ICddJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBidWZmZXIuYWR2YW5jZUJ5KDExKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5zUGVySG91ciAqIGhvdXIgKiBmYWN0b3I7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IEZBTExUSFJPVUdIOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIC8vIFRaTGVhZGlu
Z0NoYXIgOgorICAgICAgICAvLyAgICAgQWxwaGEKKyAgICAgICAgLy8gICAgIC4KKyAgICAgICAg
Ly8gICAgIF8KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVFpDaGFyIDoKKyAgICAgICAgLy8gICAg
IEFscGhhCisgICAgICAgIC8vICAgICAuCisgICAgICAgIC8vICAgICAtCisgICAgICAgIC8vICAg
ICBfCisgICAgICAgIC8vCisgICAgICAgIC8vIFRpbWVab25lSUFOQU5hbWVDb21wb25lbnQgOgor
ICAgICAgICAvLyAgICAgVFpMZWFkaW5nQ2hhciBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNo
YXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBU
WkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0
XSBUWkNoYXJbb3B0XSBidXQgbm90IG9uZSBvZiAuIG9yIC4uCisgICAgICAgIC8vCisgICAgICAg
IC8vIFRpbWVab25lSUFOQU5hbWUgOgorICAgICAgICAvLyAgICAgVGltZVpvbmVJQU5BTmFtZUNv
bXBvbmVudAorICAgICAgICAvLyAgICAgVGltZVpvbmVJQU5BTmFtZSAvIFRpbWVab25lSUFOQU5h
bWVDb21wb25lbnQKKworICAgICAgICB1bnNpZ25lZCBuYW1lTGVuZ3RoID0gMDsKKyAgICAgICAg
eworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICAgICAgZm9yICg7IGlu
ZGV4IDwgYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpOyArK2luZGV4KSB7CisgICAgICAgICAgICAg
ICAgYXV0byBjaGFyYWN0ZXIgPSBidWZmZXJbaW5kZXhdOworICAgICAgICAgICAgICAgIGlmIChj
aGFyYWN0ZXIgPT0gJ10nKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBpZiAoIWlzQVNDSUlBbHBoYShjaGFyYWN0ZXIpICYmIGNoYXJhY3RlciAhPSAnLicgJiYg
Y2hhcmFjdGVyICE9ICdfJyAmJiBjaGFyYWN0ZXIgIT0gJy0nICYmIGNoYXJhY3RlciAhPSAnLycp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgICAgICBuYW1lTGVuZ3RoID0gaW5kZXg7CisgICAgICAgIH0KKworICAg
ICAgICBhdXRvIGlzVmFsaWRDb21wb25lbnQgPSBbJl0odW5zaWduZWQgc3RhcnQsIHVuc2lnbmVk
IGVuZCkgeworICAgICAgICAgICAgdW5zaWduZWQgY29tcG9uZW50TGVuZ3RoID0gZW5kIC0gc3Rh
cnQ7CisgICAgICAgICAgICBpZiAoIWNvbXBvbmVudExlbmd0aCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoY29tcG9uZW50TGVuZ3RoID4gMTQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKGNvbXBvbmVudExlbmd0
aCA9PSAxICYmIGJ1ZmZlcltzdGFydF0gPT0gJy4nKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGlmIChjb21wb25lbnRMZW5ndGggPT0gMiAmJiBidWZmZXJbc3Rh
cnRdID09ICcuJyAmJiBidWZmZXJbc3RhcnQgKyAxXSA9PSAnLicpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH07CisKKyAg
ICAgICAgdW5zaWduZWQgY3VycmVudE5hbWVDb21wb25lbnRTdGFydEluZGV4ID0gMDsKKyAgICAg
ICAgYm9vbCBpc0xlYWRpbmdDaGFyYWN0ZXJJbk5hbWVDb21wb25lbnQgPSB0cnVlOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBuYW1lTGVuZ3RoOyArK2luZGV4KSB7
CisgICAgICAgICAgICBhdXRvIGNoYXJhY3RlciA9IGJ1ZmZlcltpbmRleF07CisgICAgICAgICAg
ICBpZiAoaXNMZWFkaW5nQ2hhcmFjdGVySW5OYW1lQ29tcG9uZW50KSB7CisgICAgICAgICAgICAg
ICAgaWYgKCEoaXNBU0NJSUFscGhhKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09ICcuJyB8fCBj
aGFyYWN0ZXIgPT0gJ18nKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgICAgICAgICAgICAgIGN1cnJlbnROYW1lQ29tcG9uZW50U3RhcnRJbmRleCA9IGlu
ZGV4OworICAgICAgICAgICAgICAgIGlzTGVhZGluZ0NoYXJhY3RlckluTmFtZUNvbXBvbmVudCA9
IGZhbHNlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoY2hhcmFjdGVyID09ICcvJykgeworICAgICAgICAgICAgICAgIGlmICghaXNW
YWxpZENvbXBvbmVudChjdXJyZW50TmFtZUNvbXBvbmVudFN0YXJ0SW5kZXgsIGluZGV4KSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBp
c0xlYWRpbmdDaGFyYWN0ZXJJbk5hbWVDb21wb25lbnQgPSB0cnVlOworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIShpc0FTQ0lJQWxw
aGEoY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT0gJy4nIHx8IGNoYXJhY3RlciA9PSAnXycgfHwg
Y2hhcmFjdGVyID09ICctJykpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgfQorICAgICAgICBpZiAoaXNMZWFkaW5nQ2hhcmFjdGVySW5OYW1lQ29tcG9uZW50
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCFpc1ZhbGlk
Q29tcG9uZW50KGN1cnJlbnROYW1lQ29tcG9uZW50U3RhcnRJbmRleCwgbmFtZUxlbmd0aCkpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIFZlY3RvcjxMQ2hhcj4g
cmVzdWx0OworICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuYW1lTGVuZ3Ro
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbmFtZUxlbmd0aDsg
KytpbmRleCkKKyAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoYnVmZmVyW2luZGV4
XSk7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlQnkobmFtZUxlbmd0aCk7CisKKyAgICAgICAgaWYg
KGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgaWYgKCpidWZmZXIgIT0gJ10nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0
KTsKKyAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgor
Ym9vbCBjYW5CZVRpbWVab25lKGNvbnN0IFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlw
ZT4mIGJ1ZmZlciwgQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit7CisgICAgc3dpdGNoIChjaGFy
YWN0ZXIpIHsKKyAgICAvLyBVVENEZXNpZ25hdG9yCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVVUQ0Rlc2lnbmF0b3IKKyAgICBjYXNlICd6JzoKKyAgICBj
YXNlICdaJzoKKyAgICAvLyBUaW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICAvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVVVENPZmZzZXRTaWduCisgICAg
Y2FzZSAnKyc6CisgICAgY2FzZSAnLSc6CisgICAgY2FzZSAweDIyMTI6CisgICAgLy8gVGltZVpv
bmVCcmFja2V0ZWRBbm5vdGF0aW9uCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRl
bXBvcmFsLyNwcm9kLVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbgorICAgIGNhc2UgJ1snOiB7
CisgICAgICAgIC8vIFdlIHNob3VsZCByZWplY3QgY2FsZW5kYXIgZXh0ZW5zaW9uIGNhc2UuCisg
ICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1DYWxlbmRh
cgorICAgICAgICAvLyBDYWxlbmRhciA6CisgICAgICAgIC8vICAgICBbdS1jYT0gQ2FsZW5kYXJO
YW1lXQorICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpID49IDYgJiYgYnVmZmVy
WzFdID09ICd1JyAmJiBidWZmZXJbMl0gPT0gJy0nICYmIGJ1ZmZlclszXSA9PSAnYycgJiYgYnVm
ZmVyWzRdID09ICdhJyAmJiBidWZmZXJbNV0gPT0gJz0nKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KK3N0ZDo6b3B0aW9uYWw8VGltZVpvbmVSZWNvcmQ+IHBhcnNlVGltZVpvbmUoU3RyaW5nUGFy
c2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQoreworICAgIGlmIChidWZmZXIuYXRF
bmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzd2l0Y2ggKCpidWZmZXIp
IHsKKyAgICAvLyBVVENEZXNpZ25hdG9yCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNwcm9kLVVUQ0Rlc2lnbmF0b3IKKyAgICBjYXNlICd6JzoKKyAgICBjYXNlICda
JzogeworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBpZiAoIWJ1ZmZlci5hdEVu
ZCgpICYmICpidWZmZXIgPT0gJ1snKSB7CisgICAgICAgICAgICBhdXRvIHRpbWVab25lID0gcGFy
c2VUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24oYnVmZmVyKTsKKyAgICAgICAgICAgIGlmICgh
dGltZVpvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBUaW1lWm9uZVJlY29yZCB7IHRydWUsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZSh0
aW1lWm9uZS52YWx1ZSgpKSB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiBUaW1lWm9uZVJl
Y29yZCB7IHRydWUsIHN0ZDo6bnVsbG9wdCwgeyB9IH07CisgICAgfQorICAgIC8vIFRpbWVab25l
VVRDT2Zmc2V0U2lnbgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
cHJvZC1UaW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICBjYXNlICcrJzoKKyAgICBjYXNlICctJzoK
KyAgICBjYXNlIDB4MjIxMjogeworICAgICAgICBhdXRvIG9mZnNldCA9IHBhcnNlVGltZVpvbmVO
dW1lcmljVVRDT2Zmc2V0KGJ1ZmZlcik7CisgICAgICAgIGlmICghb2Zmc2V0KQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSAmJiAq
YnVmZmVyID09ICdbJykgeworICAgICAgICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpv
bmVCcmFja2V0ZWRBbm5vdGF0aW9uKGJ1ZmZlcik7CisgICAgICAgICAgICBpZiAoIXRpbWVab25l
KQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gVGltZVpvbmVSZWNvcmQgeyBmYWxzZSwgb2Zmc2V0LnZhbHVlKCksIFdURk1vdmUodGltZVpv
bmUudmFsdWUoKSkgfTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gVGltZVpvbmVSZWNvcmQg
eyBmYWxzZSwgb2Zmc2V0LnZhbHVlKCksIHsgfSB9OworICAgIH0KKyAgICAvLyBUaW1lWm9uZUJy
YWNrZXRlZEFubm90YXRpb24KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3Byb2QtVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uCisgICAgY2FzZSAnWyc6IHsKKyAg
ICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uKGJ1
ZmZlcik7CisgICAgICAgIGlmICghdGltZVpvbmUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gVGltZVpvbmVSZWNvcmQgeyBmYWxzZSwgc3RkOjpudWxs
b3B0LCBXVEZNb3ZlKHRpbWVab25lLnZhbHVlKCkpIH07CisgICAgfQorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3Rk
OjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBwYXJzZVRpbWUoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jcHJvZC1UaW1lCisgICAgLy8gVGltZSA6CisgICAgLy8gICAgIFRpbWVT
cGVjIFRpbWVab25lW29wdF0KKyAgICBhdXRvIHBsYWluVGltZSA9IHBhcnNlVGltZVNwZWMoYnVm
ZmVyLCBTZWNvbmQ2ME1vZGU6OkFjY2VwdCk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICBy
ZXR1cm4gc3RkOjp0dXBsZSB7IHBsYWluVGltZS52YWx1ZSgpLCBzdGQ6Om51bGxvcHQgfTsKKyAg
ICBpZiAoY2FuQmVUaW1lWm9uZShidWZmZXIsICpidWZmZXIpKSB7CisgICAgICAgIGF1dG8gdGlt
ZVpvbmUgPSBwYXJzZVRpbWVab25lKGJ1ZmZlcik7CisgICAgICAgIGlmICghdGltZVpvbmUpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjp0dXBs
ZSB7IHBsYWluVGltZS52YWx1ZSgpLCB0aW1lWm9uZSB9OworICAgIH0KKyAgICByZXR1cm4gc3Rk
Ojp0dXBsZSB7IHBsYWluVGltZS52YWx1ZSgpLCBzdGQ6Om51bGxvcHQgfTsKK30KKworLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaXNvZGF5c2lubW9u
dGgKK2lubGluZSB1bnNpZ25lZCBkYXlzSW5Nb250aChpbnQzMl90IHllYXIsIHVuc2lnbmVkIG1v
bnRoKQoreworICAgIHN3aXRjaCAobW9udGgpIHsKKyAgICBjYXNlIDE6CisgICAgY2FzZSAzOgor
ICAgIGNhc2UgNToKKyAgICBjYXNlIDc6CisgICAgY2FzZSA4OgorICAgIGNhc2UgMTA6CisgICAg
Y2FzZSAxMjoKKyAgICAgICAgcmV0dXJuIDMxOworICAgIGNhc2UgNDoKKyAgICBjYXNlIDY6Cisg
ICAgY2FzZSA5OgorICAgIGNhc2UgMTE6CisgICAgICAgIHJldHVybiAzMDsKKyAgICBjYXNlIDI6
CisgICAgICAgIGlmIChpc0xlYXBZZWFyKHllYXIpKQorICAgICAgICAgICAgcmV0dXJuIDI5Owor
ICAgICAgICByZXR1cm4gMjg7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxQbGFpbkRhdGU+IHBhcnNlRGF0
ZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAgLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLURhdGUKKyAgICAvLyBEYXRl
IDoKKyAgICAvLyAgICAgRGF0ZVllYXIgLSBEYXRlTW9udGggLSBEYXRlRGF5CisgICAgLy8gICAg
IERhdGVZZWFyIERhdGVNb250aCBEYXRlRGF5CisgICAgLy8KKyAgICAvLyBEYXRlWWVhciA6Cisg
ICAgLy8gICAgIERhdGVGb3VyRGlnaXRZZWFyCisgICAgLy8gICAgIERhdGVFeHRlbmRlZFllYXIK
KyAgICAvLworICAgIC8vIERhdGVGb3VyRGlnaXRZZWFyIDoKKyAgICAvLyAgICAgRGlnaXQgRGln
aXQgRGlnaXQgRGlnaXQKKyAgICAvLworICAgIC8vIERhdGVFeHRlbmRlZFllYXIgOgorICAgIC8v
ICAgICBTaWduIERpZ2l0IERpZ2l0IERpZ2l0IERpZ2l0IERpZ2l0IERpZ2l0CisgICAgLy8KKyAg
ICAvLyBEYXRlTW9udGggOgorICAgIC8vICAgICAwIE5vbnplcm9EaWdpdAorICAgIC8vICAgICAx
MAorICAgIC8vICAgICAxMQorICAgIC8vICAgICAxMgorICAgIC8vCisgICAgLy8gRGF0ZURheSA6
CisgICAgLy8gICAgIDAgTm9uemVyb0RpZ2l0CisgICAgLy8gICAgIDEgRGlnaXQKKyAgICAvLyAg
ICAgMiBEaWdpdAorICAgIC8vICAgICAzMAorICAgIC8vICAgICAzMQorCisgICAgaWYgKGJ1ZmZl
ci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYm9vbCBzaXhE
aWdpdHNZZWFyID0gZmFsc2U7CisgICAgaW50IHllYXJGYWN0b3IgPSAxOworICAgIGlmICgqYnVm
ZmVyID09ICcrJykgeworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBzaXhEaWdp
dHNZZWFyID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKCpidWZmZXIgPT0gJy0nIHx8ICpidWZmZXIg
PT0gMHgyMjEyKSB7CisgICAgICAgIHllYXJGYWN0b3IgPSAtMTsKKyAgICAgICAgYnVmZmVyLmFk
dmFuY2UoKTsKKyAgICAgICAgc2l4RGlnaXRzWWVhciA9IHRydWU7CisgICAgfSBlbHNlIGlmICgh
aXNBU0NJSURpZ2l0KCpidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgaW50MzJfdCB5ZWFyID0gMDsKKyAgICBpZiAoc2l4RGlnaXRzWWVhcikgeworICAgICAgICBp
ZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgNikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IDY7ICsr
aW5kZXgpIHsKKyAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KGJ1ZmZlcltpbmRleF0pKQor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICAgICAg
eWVhciA9IHBhcnNlRGVjaW1hbEludDMyKGJ1ZmZlci5wb3NpdGlvbigpLCA2KSAqIHllYXJGYWN0
b3I7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlQnkoNik7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDQpCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCA0OyAr
K2luZGV4KSB7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChidWZmZXJbaW5kZXhdKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgICAg
IHllYXIgPSBwYXJzZURlY2ltYWxJbnQzMihidWZmZXIucG9zaXRpb24oKSwgNCk7CisgICAgICAg
IGJ1ZmZlci5hZHZhbmNlQnkoNCk7CisgICAgfQorCisgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYm9vbCBzcGxpdEJ5SHlwaGVuID0g
ZmFsc2U7CisgICAgaWYgKCpidWZmZXIgPT0gJy0nKSB7CisgICAgICAgIHNwbGl0QnlIeXBoZW4g
PSB0cnVlOworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBpZiAoYnVmZmVyLmxl
bmd0aFJlbWFpbmluZygpIDwgNSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDQpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKyAgICAvLyBXZSBlbnN1cmVk
IHRoYXQgYnVmZmVyIGhhcyBlbm91Z2ggbGVuZ3RoIGZvciBtb250aCBhbmQgZGF5LiBXZSBkbyBu
b3QgbmVlZCB0byBjaGVjayBsZW5ndGguCisKKyAgICB1bnNpZ25lZCBtb250aCA9IDA7CisgICAg
YXV0byBmaXJzdE1vbnRoQ2hhcmFjdGVyID0gKmJ1ZmZlcjsKKyAgICBpZiAoZmlyc3RNb250aENo
YXJhY3RlciA9PSAnMCcgfHwgZmlyc3RNb250aENoYXJhY3RlciA9PSAnMScpIHsKKyAgICAgICAg
YnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgYXV0byBzZWNvbmRNb250aENoYXJhY3RlciA9ICpi
dWZmZXI7CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KHNlY29uZE1vbnRoQ2hhcmFjdGVyKSkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIG1vbnRoID0gKHNlY29u
ZE1vbnRoQ2hhcmFjdGVyIC0gJzAnKSArIDEwICogKGZpcnN0TW9udGhDaGFyYWN0ZXIgLSAnMCcp
OworICAgICAgICBpZiAoIW1vbnRoIHx8IG1vbnRoID4gMTIpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgIH0gZWxzZQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKHNwbGl0QnlIeXBoZW4pIHsKKyAg
ICAgICAgaWYgKCpidWZmZXIgPT0gJy0nKQorICAgICAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBkYXkgPSAwOworICAgIGF1dG8gZmlyc3REYXlDaGFyYWN0ZXIgPSAqYnVm
ZmVyOworICAgIGlmIChmaXJzdERheUNoYXJhY3RlciA+PSAnMCcgJiYgZmlyc3REYXlDaGFyYWN0
ZXIgPD0gJzMnKSB7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIGF1dG8gc2Vj
b25kRGF5Q2hhcmFjdGVyID0gKmJ1ZmZlcjsKKyAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc2Vj
b25kRGF5Q2hhcmFjdGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgIGRheSA9IChzZWNvbmREYXlDaGFyYWN0ZXIgLSAnMCcpICsgMTAgKiAoZmlyc3REYXlDaGFy
YWN0ZXIgLSAnMCcpOworICAgICAgICBpZiAoIWRheSB8fCBkYXkgPiBkYXlzSW5Nb250aCh5ZWFy
LCBtb250aCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBidWZm
ZXIuYWR2YW5jZSgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIFBsYWluRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRh
dGUsIHN0ZDo6b3B0aW9uYWw8UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29y
ZD4+PiBwYXJzZURhdGVUaW1lKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1
ZmZlcikKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2Qt
RGF0ZVRpbWUKKyAgICAvLyBEYXRlVGltZSA6CisgICAgLy8gICAgIERhdGUgVGltZVNwZWNTZXBh
cmF0b3Jbb3B0XSBUaW1lWm9uZVtvcHRdCisgICAgLy8KKyAgICAvLyBUaW1lU3BlY1NlcGFyYXRv
ciA6CisgICAgLy8gICAgIERhdGVUaW1lU2VwYXJhdG9yIFRpbWVTcGVjCisgICAgYXV0byBwbGFp
bkRhdGUgPSBwYXJzZURhdGUoYnVmZmVyKTsKKyAgICBpZiAoIXBsYWluRGF0ZSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgIHJl
dHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5EYXRlLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0IH07CisKKyAgICBpZiAoKmJ1ZmZlciA9PSAnICcgfHwgKmJ1ZmZlciA9PSAnVCcgfHwg
KmJ1ZmZlciA9PSAndCcpIHsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgYXV0
byBwbGFpblRpbWVBbmRUaW1lWm9uZSA9IHBhcnNlVGltZShidWZmZXIpOworICAgICAgICBpZiAo
IXBsYWluVGltZUFuZFRpbWVab25lKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgYXV0byBbcGxhaW5UaW1lLCB0aW1lWm9uZV0gPSBwbGFpblRpbWVBbmRUaW1lWm9u
ZS52YWx1ZSgpOworICAgICAgICByZXR1cm4gc3RkOjp0dXBsZSB7IHBsYWluRGF0ZS52YWx1ZSgp
LCBwbGFpblRpbWUsIHRpbWVab25lIH07CisgICAgfQorCisgICAgaWYgKGNhbkJlVGltZVpvbmUo
YnVmZmVyLCAqYnVmZmVyKSkgeworICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VUaW1lWm9u
ZShidWZmZXIpOworICAgICAgICBpZiAoIXRpbWVab25lKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpbkRhdGUudmFsdWUo
KSwgc3RkOjpudWxsb3B0LCB0aW1lWm9uZSB9OworICAgIH0KKworICAgIHJldHVybiBzdGQ6OnR1
cGxlIHsgcGxhaW5EYXRlLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07Cit9
CisKK3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpblRpbWUsIHN0ZDo6b3B0aW9uYWw8VGlt
ZVpvbmVSZWNvcmQ+Pj4gcGFyc2VUaW1lKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHJldHVy
biByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gc3Rk
OjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJl
Y29yZD4+PiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VUaW1lKGJ1ZmZlcik7CisgICAg
ICAgIGlmICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pOworfQorCitzdGQ6Om9wdGlvbmFsPHN0
ZDo6dHVwbGU8UGxhaW5EYXRlLCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4sIHN0ZDo6b3B0aW9u
YWw8VGltZVpvbmVSZWNvcmQ+Pj4gcGFyc2VEYXRlVGltZShTdHJpbmdWaWV3IHN0cmluZykKK3sK
KyAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZm
ZXIpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9uYWw8
UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiB7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gcGFyc2VEYXRlVGltZShidWZmZXIpOworICAgICAgICBpZiAoIWJ1ZmZlci5h
dEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9KTsKIH0KIApAQCAtMzgyLDEzICs4OTIsMTkgQEAgU3RyaW5nIGZvcm1h
dFRpbWVab25lT2Zmc2V0U3RyaW5nKGludDY0X3Qgb2Zmc2V0KQogICAgIGlmIChuYW5vc2Vjb25k
cykgewogICAgICAgICAvLyBTaW5jZSBuc1BlclNlY29uZCBpcyAxMDAwMDAwMDAwLCBzdHJpbmdp
ZmllZCBuYW5vc2Vjb25kcyB0YWtlcyBhdCBtb3N0IDkgY2hhcmFjdGVycyAoOTk5OTk5OTk5KS4K
ICAgICAgICAgYXV0byBmcmFjdGlvbiA9IFdURjo6bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0
b3I8TENoYXIsIDk+PihuYW5vc2Vjb25kcyk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsK
ICAgICAgICAgdW5zaWduZWQgcGFkZGluZ0xlbmd0aCA9IDkgLSBmcmFjdGlvbi5zaXplKCk7Ci0g
ICAgICAgIGZvciAoOyBpbmRleCA8IGZyYWN0aW9uLnNpemUoKTsgKytpbmRleCkgewotICAgICAg
ICAgICAgaWYgKGZyYWN0aW9uW2luZGV4XSA9PSAnMCcpCisgICAgICAgIHVuc2lnbmVkIGluZGV4
ID0gZnJhY3Rpb24uc2l6ZSgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2YWxp
ZExlbmd0aDsKKyAgICAgICAgd2hpbGUgKGluZGV4LS0pIHsKKyAgICAgICAgICAgIGlmIChmcmFj
dGlvbltpbmRleF0gIT0gJzAnKSB7CisgICAgICAgICAgICAgICAgdmFsaWRMZW5ndGggPSBpbmRl
eCArIDE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgZnJhY3Rpb24ucmVzaXplKGluZGV4KTsKKyAgICAgICAgaWYgKHZhbGlkTGVuZ3Ro
KQorICAgICAgICAgICAgZnJhY3Rpb24ucmVzaXplKHZhbGlkTGVuZ3RoLnZhbHVlKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBmcmFjdGlvbi5jbGVhcigpOwogICAgICAgICByZXR1cm4g
bWFrZVN0cmluZyhuZWdhdGl2ZSA/ICctJyA6ICcrJywgcGFkKCcwJywgMiwgaG91cnMpLCAnOics
IHBhZCgnMCcsIDIsIG1pbnV0ZXMpLCAnOicsIHBhZCgnMCcsIDIsIHNlY29uZHMpLCAnLicsIHBh
ZCgnMCcsIHBhZGRpbmdMZW5ndGgsIGVtcHR5U3RyaW5nKCkpLCBmcmFjdGlvbik7CiAgICAgfQog
ICAgIGlmIChzZWNvbmRzKQpAQCAtMzk2LDUgKzkxMiw1OCBAQCBTdHJpbmcgZm9ybWF0VGltZVpv
bmVPZmZzZXRTdHJpbmcoaW50NjRfdCBvZmZzZXQpCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcobmVn
YXRpdmUgPyAnLScgOiAnKycsIHBhZCgnMCcsIDIsIGhvdXJzKSwgJzonLCBwYWQoJzAnLCAyLCBt
aW51dGVzKSk7CiB9CiAKK1N0cmluZyB0ZW1wb3JhbFRpbWVUb1N0cmluZyhQbGFpblRpbWUgcGxh
aW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbikKK3sKKyAg
ICBhdXRvIFtwcmVjaXNpb25UeXBlLCBwcmVjaXNpb25WYWx1ZV0gPSBwcmVjaXNpb247CisgICAg
QVNTRVJUKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpBdXRvIHx8IHByZWNpc2lvblZhbHVl
IDwgMTApOworICAgIGlmIChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6TWludXRlKQorICAg
ICAgICByZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBwbGFpblRpbWUuaG91cigpKSwgJzon
LCBwYWQoJzAnLCAyLCBwbGFpblRpbWUubWludXRlKCkpKTsKKworICAgIGludDY0X3QgZnJhY3Rp
b25OYW5vc2Vjb25kcyA9IHN0YXRpY19jYXN0PGludDY0X3Q+KHBsYWluVGltZS5taWxsaXNlY29u
ZCgpKSAqIG5zUGVyTWlsbGlzZWNvbmQgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihwbGFpblRpbWUu
bWljcm9zZWNvbmQoKSkgKiBuc1Blck1pY3Jvc2Vjb25kICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
cGxhaW5UaW1lLm5hbm9zZWNvbmQoKSk7CisgICAgaWYgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lz
aW9uOjpBdXRvKSB7CisgICAgICAgIGlmICghZnJhY3Rpb25OYW5vc2Vjb25kcykKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOics
IHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5U
aW1lLnNlY29uZCgpKSk7CisgICAgICAgIGF1dG8gZnJhY3Rpb24gPSBXVEY6Om51bWJlclRvU3Ry
aW5nVW5zaWduZWQ8VmVjdG9yPExDaGFyLCA5Pj4oZnJhY3Rpb25OYW5vc2Vjb25kcyk7CisgICAg
ICAgIHVuc2lnbmVkIHBhZGRpbmdMZW5ndGggPSA5IC0gZnJhY3Rpb24uc2l6ZSgpOworICAgICAg
ICB1bnNpZ25lZCBpbmRleCA9IGZyYWN0aW9uLnNpemUoKTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gdmFsaWRMZW5ndGg7CisgICAgICAgIHdoaWxlIChpbmRleC0tKSB7CisgICAg
ICAgICAgICBpZiAoZnJhY3Rpb25baW5kZXhdICE9ICcwJykgeworICAgICAgICAgICAgICAgIHZh
bGlkTGVuZ3RoID0gaW5kZXggKyAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGlmICh2YWxpZExlbmd0aCkKKyAgICAgICAgICAgIGZy
YWN0aW9uLnJlc2l6ZSh2YWxpZExlbmd0aC52YWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZnJhY3Rpb24uY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcw
JywgMiwgcGxhaW5UaW1lLmhvdXIoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLm1pbnV0
ZSgpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUuc2Vjb25kKCkpLCAnLicsIHBhZCgnMCcs
IHBhZGRpbmdMZW5ndGgsIGVtcHR5U3RyaW5nKCkpLCBmcmFjdGlvbik7CisgICAgfQorICAgIGlm
ICghcHJlY2lzaW9uVmFsdWUpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIs
IHBsYWluVGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSks
ICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLnNlY29uZCgpKSk7CisgICAgYXV0byBmcmFjdGlv
biA9IFdURjo6bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TENoYXIsIDk+PihmcmFjdGlv
bk5hbm9zZWNvbmRzKTsKKyAgICB1bnNpZ25lZCBwYWRkaW5nTGVuZ3RoID0gOSAtIGZyYWN0aW9u
LnNpemUoKTsKKyAgICBwYWRkaW5nTGVuZ3RoID0gc3RkOjptaW4ocGFkZGluZ0xlbmd0aCwgcHJl
Y2lzaW9uVmFsdWUpOworICAgIHByZWNpc2lvblZhbHVlIC09IHBhZGRpbmdMZW5ndGg7CisgICAg
ZnJhY3Rpb24ucmVzaXplKHByZWNpc2lvblZhbHVlKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhw
YWQoJzAnLCAyLCBwbGFpblRpbWUuaG91cigpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUu
bWludXRlKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5zZWNvbmQoKSksICcuJywgcGFk
KCcwJywgcGFkZGluZ0xlbmd0aCwgZW1wdHlTdHJpbmcoKSksIGZyYWN0aW9uKTsKK30KKworLy8g
SXNWYWxpZER1cmF0aW9uICggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51
dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcywgbmFub3NlY29uZHMgKQor
Ly8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaXN2YWxp
ZGR1cmF0aW9uCitib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYgZHVyYXRpb24p
Cit7CisgICAgaW50IHNpZ24gPSAwOworICAgIGZvciAoYXV0byB2YWx1ZSA6IGR1cmF0aW9uKSB7
CisgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkgfHwgKHZhbHVlIDwgMCAmJiBzaWdu
ID4gMCkgfHwgKHZhbHVlID4gMCAmJiBzaWduIDwgMCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgaWYgKCFzaWduICYmIHZhbHVlKQorICAgICAgICAgICAgc2lnbiA9IHZh
bHVlID4gMCA/IDEgOiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSVNPODYwMQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JU084NjAxLmgKaW5kZXggNjc2ODlkMWMyNDVhZmVlMmFjMjY5NTljMjk3MGRkNDk2
M2FlMzAwMi4uNjk1MzgzYzgyM2QxZGI5MDA2ZTgyMmI5MGYyYzJjNGM0ZDYxODZjZiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4K
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1LDMyICsyNiwxNDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiBuYW1lc3BhY2UgSVNPODYwMSB7CiAKLXN0cnVjdCBEdXJhdGlvbiB7CitjbGFzcyBE
dXJhdGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoRHVyYXRpb24pOworcHVibGlj
OgogICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gc3RkOjphcnJheTxkb3VibGUsIG51bWJlck9m
VGVtcG9yYWxVbml0cz46OmNvbnN0X2l0ZXJhdG9yOwogCisgICAgRHVyYXRpb24oKSA9IGRlZmF1
bHQ7CisgICAgRHVyYXRpb24oZG91YmxlIHllYXJzLCBkb3VibGUgbW9udGhzLCBkb3VibGUgd2Vl
a3MsIGRvdWJsZSBkYXlzLCBkb3VibGUgaG91cnMsIGRvdWJsZSBtaW51dGVzLCBkb3VibGUgc2Vj
b25kcywgZG91YmxlIG1pbGxpc2Vjb25kcywgZG91YmxlIG1pY3Jvc2Vjb25kcywgZG91YmxlIG5h
bm9zZWNvbmRzKQorICAgICAgICA6IG1fZGF0YSB7CisgICAgICAgICAgICB5ZWFycywKKyAgICAg
ICAgICAgIG1vbnRocywKKyAgICAgICAgICAgIHdlZWtzLAorICAgICAgICAgICAgZGF5cywKKyAg
ICAgICAgICAgIGhvdXJzLAorICAgICAgICAgICAgbWludXRlcywKKyAgICAgICAgICAgIHNlY29u
ZHMsCisgICAgICAgICAgICBtaWxsaXNlY29uZHMsCisgICAgICAgICAgICBtaWNyb3NlY29uZHMs
CisgICAgICAgICAgICBuYW5vc2Vjb25kcywKKyAgICAgICAgfQorICAgIHsgfQorCiAjZGVmaW5l
IEpTQ19ERUZJTkVfSVNPODYwMV9EVVJBVElPTl9GSUVMRChuYW1lLCBjYXBpdGFsaXplZE5hbWUp
IFwKLSAgICBkb3VibGUgbmFtZSMjcygpIGNvbnN0IHsgcmV0dXJuIGRhdGFbc3RhdGljX2Nhc3Q8
dWludDhfdD4oVGVtcG9yYWxVbml0OjpjYXBpdGFsaXplZE5hbWUpXTsgfSBcCi0gICAgdm9pZCBz
ZXQjI2NhcGl0YWxpemVkTmFtZSMjcyhkb3VibGUgdmFsdWUpIHsgZGF0YVtzdGF0aWNfY2FzdDx1
aW50OF90PihUZW1wb3JhbFVuaXQ6OmNhcGl0YWxpemVkTmFtZSldID0gdmFsdWU7IH0KKyAgICBk
b3VibGUgbmFtZSMjcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVtzdGF0aWNfY2FzdDx1aW50OF90
PihUZW1wb3JhbFVuaXQ6OmNhcGl0YWxpemVkTmFtZSldOyB9IFwKKyAgICB2b2lkIHNldCMjY2Fw
aXRhbGl6ZWROYW1lIyNzKGRvdWJsZSB2YWx1ZSkgeyBtX2RhdGFbc3RhdGljX2Nhc3Q8dWludDhf
dD4oVGVtcG9yYWxVbml0OjpjYXBpdGFsaXplZE5hbWUpXSA9IHZhbHVlOyB9CiAgICAgSlNDX1RF
TVBPUkFMX1VOSVRTKEpTQ19ERUZJTkVfSVNPODYwMV9EVVJBVElPTl9GSUVMRCk7CiAjdW5kZWYg
SlNDX0RFRklORV9JU084NjAxX0RVUkFUSU9OX0ZJRUxECiAKLSAgICBkb3VibGUmIG9wZXJhdG9y
W10oc2l6ZV90IGkpIHsgcmV0dXJuIGRhdGFbaV07IH0KLSAgICBjb25zdCBkb3VibGUmIG9wZXJh
dG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGRhdGFbaV07IH0KLSAgICBjb25zdF9pdGVy
YXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGRhdGEuYmVnaW4oKTsgfQotICAgIGNvbnN0X2l0
ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEuZW5kKCk7IH0KLSAgICB2b2lkIGNsZWFy
KCkgeyBkYXRhLmZpbGwoMCk7IH0KKyAgICBkb3VibGUmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsg
cmV0dXJuIG1fZGF0YVtpXTsgfQorICAgIGNvbnN0IGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3Qg
aSkgY29uc3QgeyByZXR1cm4gbV9kYXRhW2ldOyB9CisgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4o
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuYmVnaW4oKTsgfQorICAgIGNvbnN0X2l0ZXJhdG9yIGVu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5lbmQoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1f
ZGF0YS5maWxsKDApOyB9CisKKyAgICBEdXJhdGlvbiBvcGVyYXRvci0oKSBjb25zdAorICAgIHsK
KyAgICAgICAgRHVyYXRpb24gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgZm9yIChhdXRvJiB2YWx1
ZSA6IHJlc3VsdC5tX2RhdGEpCisgICAgICAgICAgICB2YWx1ZSA9IC12YWx1ZTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjphcnJheTxkb3VibGUs
IG51bWJlck9mVGVtcG9yYWxVbml0cz4gbV9kYXRhIHsgfTsKK307CisKK2NsYXNzIFBsYWluVGlt
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoUGxhaW5UaW1lKTsKK3B1YmxpYzoKKyAg
ICBjb25zdGV4cHIgUGxhaW5UaW1lKCkKKyAgICAgICAgOiBtX2hvdXIoMCkKKyAgICAgICAgLCBt
X21pbnV0ZSgwKQorICAgICAgICAsIG1fc2Vjb25kKDApCisgICAgICAgICwgbV9taWxsaXNlY29u
ZCgwKQorICAgICAgICAsIG1fbWljcm9zZWNvbmQoMCkKKyAgICAgICAgLCBtX25hbm9zZWNvbmQo
MCkKKyAgICB7CisgICAgfQorCisgICAgUGxhaW5UaW1lKHVuc2lnbmVkIGhvdXIsIHVuc2lnbmVk
IG1pbnV0ZSwgdW5zaWduZWQgc2Vjb25kLCB1bnNpZ25lZCBtaWxsaXNlY29uZCwgdW5zaWduZWQg
bWljcm9zZWNvbmQsIHVuc2lnbmVkIG5hbm9zZWNvbmQpCisgICAgICAgIDogbV9ob3VyKGhvdXIp
CisgICAgICAgICwgbV9taW51dGUobWludXRlKQorICAgICAgICAsIG1fc2Vjb25kKHNlY29uZCkK
KyAgICAgICAgLCBtX21pbGxpc2Vjb25kKG1pbGxpc2Vjb25kKQorICAgICAgICAsIG1fbWljcm9z
ZWNvbmQobWljcm9zZWNvbmQpCisgICAgICAgICwgbV9uYW5vc2Vjb25kKG5hbm9zZWNvbmQpCisg
ICAgeyB9CisKKyNkZWZpbmUgSlNDX0RFRklORV9JU084NjAxX1BMQUlOX1RJTUVfRklFTEQobmFt
ZSwgY2FwaXRhbGl6ZWROYW1lKSBcCisgICAgdW5zaWduZWQgbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fIyNuYW1lOyB9CisgICAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVfVU5JVFMoSlNDX0RFRklO
RV9JU084NjAxX1BMQUlOX1RJTUVfRklFTEQpOworI3VuZGVmIEpTQ19ERUZJTkVfSVNPODYwMV9E
VVJBVElPTl9GSUVMRAorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShQbGFpblRpbWUgbGhz
LCBQbGFpblRpbWUgcmhzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxocy5ob3VyKCkgPT0gcmhz
LmhvdXIoKQorICAgICAgICAgICAgJiYgbGhzLm1pbnV0ZSgpID09IHJocy5taW51dGUoKQorICAg
ICAgICAgICAgJiYgbGhzLnNlY29uZCgpID09IHJocy5zZWNvbmQoKQorICAgICAgICAgICAgJiYg
bGhzLm1pbGxpc2Vjb25kKCkgPT0gcmhzLm1pbGxpc2Vjb25kKCkKKyAgICAgICAgICAgICYmIGxo
cy5taWNyb3NlY29uZCgpID09IHJocy5taWNyb3NlY29uZCgpCisgICAgICAgICAgICAmJiBsaHMu
bmFub3NlY29uZCgpID09IHJocy5uYW5vc2Vjb25kKCk7CisgICAgfQogCi0gICAgc3RkOjphcnJh
eTxkb3VibGUsIG51bWJlck9mVGVtcG9yYWxVbml0cz4gZGF0YSB7IH07Citwcml2YXRlOgorICAg
IHVpbnQ4X3QgbV9ob3VyIHsgMCB9OworICAgIHVpbnQ4X3QgbV9taW51dGUgeyAwIH07CisgICAg
dWludDhfdCBtX3NlY29uZCB7IDAgfTsKKyAgICB1aW50MzJfdCBtX21pbGxpc2Vjb25kIDogMTA7
CisgICAgdWludDMyX3QgbV9taWNyb3NlY29uZCA6IDEwOworICAgIHVpbnQzMl90IG1fbmFub3Nl
Y29uZCA6IDEwOwogfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFBsYWluVGltZSkgPT0gc2l6ZW9m
KHVpbnQ2NF90KSk7CiAKKy8vIE5vdGUgdGhhdCBQbGFpbkRhdGUgZG9lcyBub3QgaW5jbHVkZSB3
ZWVrIHVuaXQuCisvLyB5ZWFyIGNhbiBiZSBuZWdhdGl2ZS4gQW5kIG1vbnRoIGFuZCBkYXkgc3Rh
cnRzIHdpdGggMS4KK2NsYXNzIFBsYWluRGF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQoUGxhaW5EYXRlKTsKK3B1YmxpYzoKKyAgICBQbGFpbkRhdGUoKSA9IGRlZmF1bHQ7CisgICAg
UGxhaW5EYXRlKGludDMyX3QgeWVhciwgdW5zaWduZWQgbW9udGgsIHVuc2lnbmVkIGRheSkKKyAg
ICAgICAgOiBtX3llYXIoeWVhcikKKyAgICAgICAgLCBtX21vbnRoKG1vbnRoKQorICAgICAgICAs
IG1fZGF5KGRheSkKKyAgICB7CisgICAgfQorCisgICAgaW50MzJfdCB5ZWFyKCkgY29uc3QgeyBy
ZXR1cm4gbV95ZWFyOyB9CisgICAgdWludDhfdCBtb250aCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9u
dGg7IH0KKyAgICB1aW50OF90IGRheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF5OyB9CisKK3ByaXZh
dGU6CisgICAgaW50MzJfdCBtX3llYXIgeyAwIH07CisgICAgdWludDhfdCBtX21vbnRoIHsgMSB9
OworICAgIHVpbnQ4X3QgbV9kYXkgeyAxIH07Cit9OworCit1c2luZyBUaW1lWm9uZSA9IFZhcmlh
bnQ8VGltZVpvbmVJRCwgaW50NjRfdD47CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBhcnNldGVtcG9yYWx0aW1lem9uZXN0cmluZworLy8gUmVj
b3JkIHsgW1taXV0sIFtbT2Zmc2V0U3RyaW5nXV0sIFtbTmFtZV1dIH0KK3N0cnVjdCBUaW1lWm9u
ZVJlY29yZCB7CisgICAgYm9vbCBtX3ogeyBmYWxzZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8aW50
NjRfdD4gbV9vZmZzZXQ7CisgICAgVmFyaWFudDxWZWN0b3I8TENoYXI+LCBpbnQ2NF90PiBtX25h
bWVPck9mZnNldDsKK307CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
c3VwLWlzdmFsaWR0aW1lem9uZW5hbWUKK3N0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRGb3JU
aW1lWm9uZU5hbWUoU3RyaW5nVmlldyk7CiBzdGQ6Om9wdGlvbmFsPER1cmF0aW9uPiBwYXJzZUR1
cmF0aW9uKFN0cmluZ1ZpZXcpOwogc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25l
TnVtZXJpY1VUQ09mZnNldChTdHJpbmdWaWV3KTsKK2VudW0gY2xhc3MgVmFsaWRhdGVUaW1lWm9u
ZUlEIHsgWWVzLCBObyB9Oworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3Rk
OjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBwYXJzZVRpbWUoU3RyaW5nVmlldyk7CitzdGQ6
Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5EYXRlLCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4s
IHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVSZWNvcmQ+Pj4gcGFyc2VEYXRlVGltZShTdHJpbmdWaWV3
KTsKIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNldFN0cmluZyhpbnQ2NF90KTsKK1N0cmluZyB0
ZW1wb3JhbFRpbWVUb1N0cmluZyhQbGFpblRpbWUsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNp
Z25lZD4gcHJlY2lzaW9uKTsKKworYm9vbCBpc1ZhbGlkRHVyYXRpb24oY29uc3QgRHVyYXRpb24m
KTsKIAogfSAvLyBuYW1lc3BhY2UgSVNPODYwMQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDhkOGU5NmU3NzU1
ZDU4YWI4NDJlMzYwY2ZhZmIxOWQwMGZlMjYyNzAuLjc5NzU5YmM1ZmE0NGZlMjk3NzI2MDVmNTZh
NWNhOWIwODk1NjMxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuY3BwCkBAIC0xODM5LDYgKzE4MzksMjMgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGlu
dGxBdmFpbGFibGVUaW1lWm9uZXMoKQogICAgIHJldHVybiBhdmFpbGFibGVUaW1lWm9uZXM7CiB9
CiAKK1RpbWVab25lSUQgdXRjVGltZVpvbmVJRFN0b3JhZ2UgeyBzdGQ6Om51bWVyaWNfbGltaXRz
PFRpbWVab25lSUQ+OjptYXgoKSB9OworVGltZVpvbmVJRCB1dGNUaW1lWm9uZUlEU2xvdygpCit7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOworICAgIHN0ZDo6Y2Fs
bF9vbmNlKGluaXRpYWxpemVPbmNlLCBbJl0geworICAgICAgICBjb25zdCBhdXRvJiB0aW1lWm9u
ZXMgPSBpbnRsQXZhaWxhYmxlVGltZVpvbmVzKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5k
ZXggPSAwOyBpbmRleCA8IHRpbWVab25lcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAg
IGlmICh0aW1lWm9uZXNbaW5kZXhdID09ICJVVEMiX3MpIHsKKyAgICAgICAgICAgICAgICB1dGNU
aW1lWm9uZUlEU3RvcmFnZSA9IGluZGV4OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0pOworICAgIHJldHVybiB1dGNUaW1lWm9uZUlEU3RvcmFnZTsKK30KKwogLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZW51bWVyYXRpb24vI3NlYy1hdmFpbGFibGV0aW1l
em9uZXMKIHN0YXRpYyBKU0FycmF5KiBhdmFpbGFibGVUaW1lWm9uZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuaAppbmRleCA5NmQyMTg1NWM5Y2E2ZjNlMzE5NmI3NGVhMDJkMGVkNTNkMzljMTMwLi5iM2Ux
NWQzMGJhOTNiNWIyMDViNTczZTA4OWViYmJmMzljZTIxMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC0xMTcsNiArMTE3LDE2IEBAIGlubGluZSBD
YWxlbmRhcklEIGlzbzg2MDFDYWxlbmRhcklEKCkKIHVzaW5nIFRpbWVab25lSUQgPSB1bnNpZ25l
ZDsKIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlVGltZVpvbmVzKCk7CiAKK2V4
dGVybiBUaW1lWm9uZUlEIHV0Y1RpbWVab25lSURTdG9yYWdlOworVGltZVpvbmVJRCB1dGNUaW1l
Wm9uZUlEU2xvdygpOworaW5saW5lIENhbGVuZGFySUQgdXRjVGltZVpvbmVJRCgpCit7CisgICAg
dW5zaWduZWQgdmFsdWUgPSB1dGNUaW1lWm9uZUlEU3RvcmFnZTsKKyAgICBpZiAodmFsdWUgPT0g
c3RkOjpudW1lcmljX2xpbWl0czxUaW1lWm9uZUlEPjo6bWF4KCkpCisgICAgICAgIHJldHVybiB1
dGNUaW1lWm9uZUlEU2xvdygpOworICAgIHJldHVybiB2YWx1ZTsKK30KKwogVHJpU3RhdGUgaW50
bEJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVy
dHlOYW1lKTsKIFN0cmluZyBpbnRsU3RyaW5nT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSwgc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNo
YXIqPiB2YWx1ZXMsIGNvbnN0IGNoYXIqIG5vdEZvdW5kLCBjb25zdCBjaGFyKiBmYWxsYmFjayk7
CiB1bnNpZ25lZCBpbnRsTnVtYmVyT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9w
dGlvbnMsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQgbWF4aW11bSwg
dW5zaWduZWQgZmFsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGIyZmRmNDY0MzZlODc3NjA0OTA2NDhhZmQwMTQxYzgy
MjM2MTQ5NTEuLjZkYTQ1ODgzNDFhMDE2ZTkxYWI5MTM2OTAzNmYwYzk2ZGE0MTRmYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAg
LTIwNiw2ICsyMDYsOCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKICNpbmNsdWRl
ICJUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgogI2luY2x1
ZGUgIlRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJWTVRyYXBzSW5saW5l
cy5oIgpAQCAtMTIzMiw2ICsxMjM0LDEzIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBs
b3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAg
ICAgICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGdsb2JhbE9iamVjdCwgZHVyYXRpb25Qcm90b3R5cGUpKTsKICAgICAgICAgICAgIH0p
OwogCisgICAgICAgIG1fcGxhaW5UaW1lU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgICAg
IFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpOworICAgICAgICAgICAgICAgIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
KiBwbGFpblRpbWVQcm90b3R5cGUgPSBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3JlYXRl
KGluaXQudm0sIGdsb2JhbE9iamVjdCwgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICBpbml0LnNldChUZW1wb3JhbFBsYWluVGltZTo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgcGxhaW5UaW1lUHJvdG90eXBl
KSk7CisgICAgICAgICAgICB9KTsKKwogICAgICAgICBtX3RpbWVab25lU3RydWN0dXJlLmluaXRM
YXRlcigKICAgICAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0
KSB7CiAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpAQCAtMjExOSw2ICsyMTI4LDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9y
JiB2aXNpdG9yKQogCiAgICAgdGhpc09iamVjdC0+bV9jYWxlbmRhclN0cnVjdHVyZS52aXNpdCh2
aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2R1cmF0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOworICAgIHRoaXNPYmplY3QtPm1fcGxhaW5UaW1lU3RydWN0dXJlLnZpc2l0KHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPm1fdGltZVpvbmVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxHZXR0ZXJGdW5jdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBk
ZWIzM2RiZDEwMzA4M2ExOGY0MGJhN2FkYzU2OTUyNjAxNDk3ZDI5Li4xMjhiMzk5MTBkZDgwNTdm
N2FhYmI1OTc3N2NhNjgwZTlkZjYxODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTMyNiw2ICszMjYsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKIAogICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGVuZGFyU3RydWN0dXJlOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2R1cmF0aW9uU3Ry
dWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3Bs
YWluVGltZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVj
dHVyZT4gbV90aW1lWm9uZVN0cnVjdHVyZTsKIAogICAgIFdyaXRlQmFycmllcjxOdWxsR2V0dGVy
RnVuY3Rpb24+IG1fbnVsbEdldHRlckZ1bmN0aW9uOwpAQCAtODc2LDYgKzg3Nyw3IEBAIGNsYXNz
IEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogCiAg
ICAgU3RydWN0dXJlKiBjYWxlbmRhclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fY2FsZW5kYXJTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBkdXJhdGlvblN0cnVjdHVyZSgpIHsg
cmV0dXJuIG1fZHVyYXRpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBw
bGFpblRpbWVTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsYWluVGltZVN0cnVjdHVyZS5nZXQodGhp
cyk7IH0KICAgICBTdHJ1Y3R1cmUqIHRpbWVab25lU3RydWN0dXJlKCkgeyByZXR1cm4gbV90aW1l
Wm9uZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3Bw
CmluZGV4IGEwZmFhM2ZmY2QwNDQ0NzcyYzQxYTRjYjczNTZhMmQ2ODY3MGE2OWMuLjY1MzBkZDAx
ZWI2N2M1M2NkOGU5ZTMwODg5OTEwNTY2ZThjYjU3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9y
LmNwcApAQCAtNzMsNiArNzMsNyBAQCB2b2lkIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbENhbGVuZGFyUHJvdG90eQogewogICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiQ2FsZW5kYXIiX3MsIFByb3BlcnR5QWRkaXRpb25N
b2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgdGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHRlbXBv
cmFsQ2FsZW5kYXJQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oY29uc3RydWN0VGVtcG9yYWxDYWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKaW5kZXggMGRhMjRhNTI1NTdlYmNkZTU4ZjM1
ZGUxOGQ3NmMyZTcyYjYyNmY4ZC4uMWMxMDA1ODcyMjFlMzJjNzYzZDQzYmU3NjgyMWYwYmZlZWIz
ZWE0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxE
dXJhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxE
dXJhdGlvbi5jcHAKQEAgLTcyLDIyICs3Miw2IEBAIHZvaWQgVGVtcG9yYWxEdXJhdGlvbjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiB9
CiAKLS8vIElzVmFsaWREdXJhdGlvbiAoIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3Vy
cywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzLCBtaWNyb3NlY29uZHMsIG5hbm9zZWNv
bmRzICkKLS8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFs
LWlzdmFsaWRkdXJhdGlvbgotc3RhdGljIGJvb2wgaXNWYWxpZER1cmF0aW9uKGNvbnN0IFRlbXBv
cmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyYgc3ViZHVyYXRpb25zKQotewotICAgIGludCBzaWdu
ID0gMDsKLSAgICBmb3IgKGF1dG8gdmFsdWUgOiBzdWJkdXJhdGlvbnMpIHsKLSAgICAgICAgaWYg
KCFzdGQ6OmlzZmluaXRlKHZhbHVlKSB8fCAodmFsdWUgPCAwICYmIHNpZ24gPiAwKSB8fCAodmFs
dWUgPiAwICYmIHNpZ24gPCAwKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICBpZiAoIXNpZ24gJiYgdmFsdWUpCi0gICAgICAgICAgICBzaWduID0gdmFsdWUgPiAwID8gMSA6
IC0xOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCiAvLyBDcmVhdGVUZW1wb3JhbER1
cmF0aW9uICggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNv
bmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcywgbmFub3NlY29uZHMgWyAsIG5ld1Rhcmdl
dCBdICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFs
LWNyZWF0ZXRlbXBvcmFsZHVyYXRpb24KIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRp
b246OnRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3ViZHVy
YXRpb25zJiYgc3ViZHVyYXRpb25zLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTk1LDcgKzc5
LDcgQEAgVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxp
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
aWYgKCFpc1ZhbGlkRHVyYXRpb24oc3ViZHVyYXRpb25zKSkgeworICAgIGlmICghSVNPODYwMTo6
aXNWYWxpZER1cmF0aW9uKHN1YmR1cmF0aW9ucykpIHsKICAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3Qg
YmUgZmluaXRlIGFuZCBvZiBjb25zaXN0ZW50IHNpZ24iX3MpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KQEAgLTEwNSwxNyArODksMTcgQEAgVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxE
dXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIAog
Ly8gVG9UZW1wb3JhbER1cmF0aW9uUmVjb3JkICggdGVtcG9yYWxEdXJhdGlvbkxpa2UgKQogLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG90ZW1wb3Jh
bGR1cmF0aW9ucmVjb3JkCi1UZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMgVGVtcG9yYWxE
dXJhdGlvbjo6ZnJvbU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
dCogZHVyYXRpb25MaWtlKQorVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zIFRlbXBvcmFs
RHVyYXRpb246OmZyb21Ob25EdXJhdGlvblZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgZHVyYXRpb25MaWtlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBB
U1NFUlQoIWR1cmF0aW9uTGlrZS0+aW5oZXJpdHM8VGVtcG9yYWxEdXJhdGlvbj4odm0pKTsKKyAg
ICBBU1NFUlQoIWR1cmF0aW9uTGlrZS5pbmhlcml0czxUZW1wb3JhbER1cmF0aW9uPih2bSkpOwog
CiAgICAgU3ViZHVyYXRpb25zIHJlc3VsdDsKICAgICBhdXRvIGhhc1JlbGV2YW50UHJvcGVydHkg
PSBmYWxzZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mVGVtcG9yYWxVbml0
czsgaSsrKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBkdXJhdGlvbkxpa2UtPmdldChnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSh2bSwgaSkpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
ZHVyYXRpb25MaWtlLmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSh2bSwgaSkpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGlmICh2YWx1
ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xNTIsNyArMTM2LDcgQEAgVGVtcG9yYWxEdXJhdGlvbiog
VGVtcG9yYWxEdXJhdGlvbjo6dG9EdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1YKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4oaXRlbVZhbHVl
KTsKIAogICAgIGlmIChpdGVtVmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICBhdXRvIHN1YmR1
cmF0aW9ucyA9IGZyb21PYmplY3QoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChpdGVtVmFsdWUpKTsK
KyAgICAgICAgYXV0byBzdWJkdXJhdGlvbnMgPSBmcm9tTm9uRHVyYXRpb25WYWx1ZShnbG9iYWxP
YmplY3QsIGl0ZW1WYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOwogCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgVGVtcG9yYWxEdXJh
dGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIFdURk1vdmUoc3ViZHVyYXRpb25z
KSkpOwpAQCAtMTcwLDYgKzE1NCwxNiBAQCBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0
aW9uOjp0b0R1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVgogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgVGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxp
ZChnbG9iYWxPYmplY3QsIFdURk1vdmUocGFyc2VkU3ViZHVyYXRpb25zLnZhbHVlKCkpKSk7CiB9
CiAKK1RlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjp0b0R1
cmF0aW9uUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGVtcG9y
YWxEdXJhdGlvbkxpa2UpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisg
ICAgaWYgKHRlbXBvcmFsRHVyYXRpb25MaWtlLmluaGVyaXRzPFRlbXBvcmFsRHVyYXRpb24+KHZt
KSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4odGVtcG9yYWxEdXJh
dGlvbkxpa2UpLT5zdWJkdXJhdGlvbnMoKTsKKworICAgIHJldHVybiBmcm9tTm9uRHVyYXRpb25W
YWx1ZShnbG9iYWxPYmplY3QsIHRlbXBvcmFsRHVyYXRpb25MaWtlKTsKK30KKwogVGVtcG9yYWxE
dXJhdGlvbiogVGVtcG9yYWxEdXJhdGlvbjo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CkBAIC01MzAsNyArNTI0LDEwIEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAKICAgICBQ
cmVjaXNpb25EYXRhIGRhdGEgPSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKGdsb2JhbE9iamVjdCwg
b3B0aW9ucyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBBU1NF
UlQoZGF0YS51bml0ID49IFRlbXBvcmFsVW5pdDo6U2Vjb25kKTsKKyAgICBpZiAoZGF0YS51bml0
IDwgVGVtcG9yYWxVbml0OjpTZWNvbmQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgbXVzdCBub3QgYmUgXCJtaW51dGVcIiJfcyk7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQogCiAgICAgYXV0byByb3VuZGluZ01vZGUgPSBp
bnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0
eU5hbWVzLT5yb3VuZGluZ01vZGUsCiAgICAgICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdNb2Rl
OjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5jIl9z
LCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6
SGFsZkV4cGFuZCB9IH0sCkBAIC01MzgsNyArNTM1LDcgQEAgU3RyaW5nIFRlbXBvcmFsRHVyYXRp
b246OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9u
c1YKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgLy8gTm8gbmVl
ZCB0byBtYWtlIGEgbmV3IG9iamVjdCBpZiB3ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRz
LgotICAgIGlmICghZGF0YS5wcmVjaXNpb24gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9k
ZTo6VHJ1bmMpCisgICAgaWYgKHN0ZDo6Z2V0PDA+KGRhdGEucHJlY2lzaW9uKSA9PSBQcmVjaXNp
b246OkF1dG8gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9kZTo6VHJ1bmMpCiAgICAgICAg
IHJldHVybiB0b1N0cmluZygpOwogCiAgICAgU3ViZHVyYXRpb25zIG5ld1N1YmR1cmF0aW9ucyA9
IG1fc3ViZHVyYXRpb25zOwpAQCAtNTQ4LDkgKzU0NSwxMCBAQCBTdHJpbmcgVGVtcG9yYWxEdXJh
dGlvbjo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRp
b25zVgogCiAvLyBUZW1wb3JhbER1cmF0aW9uVG9TdHJpbmcgKCB5ZWFycywgbW9udGhzLCB3ZWVr
cywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNv
bmRzLCBuYW5vc2Vjb25kcywgcHJlY2lzaW9uICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRlbXBvcmFsZHVyYXRpb250b3N0cmluZwotU3RyaW5n
IFRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKGNvbnN0IFRlbXBvcmFsRHVyYXRpb246OlN1YmR1
cmF0aW9ucyYgc3ViZHVyYXRpb25zLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjaXNpb24p
CitTdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoY29uc3QgVGVtcG9yYWxEdXJhdGlv
bjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNp
Z25lZD4gcHJlY2lzaW9uKQogewotICAgIEFTU0VSVCghcHJlY2lzaW9uIHx8IHByZWNpc2lvbi52
YWx1ZSgpIDwgMTApOworICAgIGF1dG8gW3ByZWNpc2lvblR5cGUsIHByZWNpc2lvblZhbHVlXSA9
IHByZWNpc2lvbjsKKyAgICBBU1NFUlQocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8g
fHwgcHJlY2lzaW9uVmFsdWUgPCAxMCk7CiAKICAgICBhdXRvIGJhbGFuY2VkTWljcm9zZWNvbmRz
ID0gc3ViZHVyYXRpb25zLm1pY3Jvc2Vjb25kcygpICsgc3RkOjp0cnVuYyhzdWJkdXJhdGlvbnMu
bmFub3NlY29uZHMoKSAvIDEwMDApOwogICAgIGF1dG8gYmFsYW5jZWROYW5vc2Vjb25kcyA9IHN0
ZDo6Zm1vZChzdWJkdXJhdGlvbnMubmFub3NlY29uZHMoKSwgMTAwMCk7CkBAIC01OTcsMTAgKzU5
NSwxMCBAQCBTdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoY29uc3QgVGVtcG9yYWxE
dXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdAogICAgICAgICBidWlsZGVyLmFwcGVuZChm
b3JtYXRJbnRlZ2VyKGJhbGFuY2VkU2Vjb25kcykpOwogCiAgICAgICAgIGF1dG8gZnJhY3Rpb24g
PSBzdGQ6OmFicyhiYWxhbmNlZE1pbGxpc2Vjb25kcykgKiAxZTYgKyBzdGQ6OmFicyhiYWxhbmNl
ZE1pY3Jvc2Vjb25kcykgKiAxZTMgKyBzdGQ6OmFicyhiYWxhbmNlZE5hbm9zZWNvbmRzKTsKLSAg
ICAgICAgaWYgKCghcHJlY2lzaW9uICYmIGZyYWN0aW9uKSB8fCAocHJlY2lzaW9uICYmIHByZWNp
c2lvbi52YWx1ZSgpKSkgeworICAgICAgICBpZiAoKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9u
OjpBdXRvICYmIGZyYWN0aW9uKSB8fCAocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkZpeGVk
ICYmIHByZWNpc2lvblZhbHVlKSkgewogICAgICAgICAgICAgYXV0byBwYWRkZWQgPSBtYWtlU3Ry
aW5nKCcuJywgcGFkKCcwJywgOSwgZnJhY3Rpb24pKTsKLSAgICAgICAgICAgIGlmIChwcmVjaXNp
b24pCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhwYWRkZWQpLmxl
ZnQocGFkZGVkLmxlbmd0aCgpIC0gKDkgLSBwcmVjaXNpb24udmFsdWUoKSkpKTsKKyAgICAgICAg
ICAgIGlmIChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6Rml4ZWQpCisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhwYWRkZWQpLmxlZnQocGFkZGVkLmxlbmd0aCgp
IC0gKDkgLSBwcmVjaXNpb25WYWx1ZSkpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIGF1dG8gbGVuZ3RoV2l0aG91dFRyYWlsaW5nWmVyb2VzID0gcGFkZGVkLmxlbmd0aCgp
OwogICAgICAgICAgICAgICAgIHdoaWxlIChwYWRkZWRbbGVuZ3RoV2l0aG91dFRyYWlsaW5nWmVy
b2VzIC0gMV0gPT0gJzAnKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbi5oCmluZGV4IDU5MjA0ZGM5NTM3YWFmNzYwMWUwZThkMTU3MDU2YmRhMTlh
ZjczNTUuLmJjNDM4MzMzYzU0MDUxZDJmMWRiNTU0ZTNiMzQ5ZGU1YTRhOWE0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKQEAgLTY2
LDcgKzY2LDE1IEBAIGNsYXNzIFRlbXBvcmFsRHVyYXRpb24gZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgU3ViZHVyYXRpb25zIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBvcHRpb25zKSBjb25zdDsKICAgICBkb3VibGUgdG90YWwoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIG9wdGlvbnMpIGNvbnN0OwogICAgIFN0cmluZyB0b1N0cmluZyhKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7Ci0gICAgU3RyaW5nIHRvU3RyaW5nKHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHByZWNpc2lvbiA9IHN0ZDo6bnVsbG9wdCkgY29uc3QgeyByZXR1cm4g
dG9TdHJpbmcobV9zdWJkdXJhdGlvbnMsIHByZWNpc2lvbik7IH0KKyAgICBTdHJpbmcgdG9TdHJp
bmcoc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24gPSB7IFByZWNpc2lv
bjo6QXV0bywgMCB9KSBjb25zdCB7IHJldHVybiB0b1N0cmluZyhtX3N1YmR1cmF0aW9ucywgcHJl
Y2lzaW9uKTsgfQorCisgICAgY29uc3QgU3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMoKSBjb25z
dCB7IHJldHVybiBtX3N1YmR1cmF0aW9uczsgfQorCisgICAgc3RhdGljIFN1YmR1cmF0aW9ucyB0
b0R1cmF0aW9uUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBzdGF0aWMg
aW50IHNpZ24oY29uc3QgU3ViZHVyYXRpb25zJik7CisgICAgc3RhdGljIGRvdWJsZSByb3VuZChT
dWJkdXJhdGlvbnMmLCBkb3VibGUgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9k
ZSk7CisgICAgc3RhdGljIHZvaWQgYmFsYW5jZShTdWJkdXJhdGlvbnMmLCBUZW1wb3JhbFVuaXQg
bGFyZ2VzdFVuaXQpOwogCiBwcml2YXRlOgogICAgIFRlbXBvcmFsRHVyYXRpb24oVk0mLCBTdHJ1
Y3R1cmUqLCBTdWJkdXJhdGlvbnMmJik7CkBAIC03NCwxMiArODIsOSBAQCBjbGFzcyBUZW1wb3Jh
bER1cmF0aW9uIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdWJk
dXJhdGlvbnM+IHBhcnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsKLSAg
ICBzdGF0aWMgU3ViZHVyYXRpb25zIGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCopOworICAgIHN0YXRpYyBTdWJkdXJhdGlvbnMgZnJvbU5vbkR1cmF0aW9uVmFsdWUoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKIAotICAgIHN0YXRpYyBpbnQgc2lnbihjb25zdCBTdWJkdXJh
dGlvbnMmKTsKLSAgICBzdGF0aWMgdm9pZCBiYWxhbmNlKFN1YmR1cmF0aW9ucyYsIFRlbXBvcmFs
VW5pdCBsYXJnZXN0VW5pdCk7Ci0gICAgc3RhdGljIGRvdWJsZSByb3VuZChTdWJkdXJhdGlvbnMm
LCBkb3VibGUgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSk7Ci0gICAgc3Rh
dGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTdWJkdXJhdGlvbnMmLCBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBwcmVjaXNpb24pOworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU3Vi
ZHVyYXRpb25zJiwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24pOwog
CiAgICAgVGVtcG9yYWxVbml0IGxhcmdlc3RTdWJkdXJhdGlvbigpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKaW5kZXggYjBhN2VlZTRj
NGEwMTM2MGJhM2NmYTVhZDVlNWE0N2I5NGI2NzMzYS4uN2MwZmVjNTM5MTNlOGM1ZDY5ZDVkNjNl
YmFhN2ZmZDkxZGZjOGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxOb3cuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsTm93LmNwcApAQCAtNzcsNyArNzcsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxOb3dGdW5jVGltZVpvbmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAogICAgIFN0cmluZyB0aW1lWm9uZVN0
cmluZyA9IHZtLmRhdGVDYWNoZS5kZWZhdWx0VGltZVpvbmUoKTsKLSAgICBzdGQ6Om9wdGlvbmFs
PFRpbWVab25lSUQ+IGlkZW50aWZpZXIgPSBUZW1wb3JhbFRpbWVab25lOjppZEZvclRpbWVab25l
TmFtZSh0aW1lWm9uZVN0cmluZyk7CisgICAgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZGVu
dGlmaWVyID0gSVNPODYwMTo6aWRGb3JUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcpOwogICAg
IGlmICghaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3Jh
bFRpbWVab25lOjpjcmVhdGVGcm9tVVRDT2Zmc2V0KHZtLCBnbG9iYWxPYmplY3QtPnRpbWVab25l
U3RydWN0dXJlKCksIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsVGlt
ZVpvbmU6OmNyZWF0ZUZyb21JRCh2bSwgZ2xvYmFsT2JqZWN0LT50aW1lWm9uZVN0cnVjdHVyZSgp
LCBpZGVudGlmaWVyLnZhbHVlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRleCBiMjRlM2E5ZTlkYTIyMDI2YzJhM2JmZGIyOGJh
ZjdjZWUzZDNlZjk3Li44ZTM3ZDdjZmYzNWY5ODllM2VlZmFiNDA5MzU1ODBhZTBiNGRkZWRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3Bw
CkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRl
bXBvcmFsTm93LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxUaW1lWm9uZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZVByb3Rv
dHlwZS5oIgogCkBAIC02MSw2ICs2MywxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVEdXJhdGlv
bkNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gVGVtcG9y
YWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVu
Y3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlKj4oZ2xv
YmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkp
OwogfQogCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVQbGFpblRpbWVDb25zdHJ1Y3RvcihWTSYgdm0s
IEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgVGVtcG9yYWxPYmplY3QqIHRlbXBvcmFsT2JqZWN0
ID0ganNDYXN0PFRlbXBvcmFsT2JqZWN0Kj4ob2JqZWN0KTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gdGVtcG9yYWxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgcmV0
dXJuIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCktPnN0b3JlZFByb3Rv
dHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVRpbWVab25lQ29uc3Ry
dWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIFRlbXBvcmFsT2JqZWN0KiB0
ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CkBAIC03OSw2
ICs4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICBDYWxlbmRhciAgICAgICBjcmVhdGVDYWxlbmRh
ckNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgRHVyYXRpb24g
ICAgICAgY3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNh
bGxiYWNrCiAgIE5vdyAgICAgICAgICAgIGNyZWF0ZU5vd09iamVjdCAgICAgICAgICAgICAgICAg
RG9udEVudW18UHJvcGVydHlDYWxsYmFjaworICBQbGFpblRpbWUgICAgICBjcmVhdGVQbGFpblRp
bWVDb25zdHJ1Y3RvciAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgVGltZVpvbmUg
ICAgICAgY3JlYXRlVGltZVpvbmVDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNh
bGxiYWNrCiBAZW5kCiAqLwpAQCAtMjQyLDE5ICsyNTIsMjEgQEAgUHJlY2lzaW9uRGF0YSBzZWNv
bmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KiBvcHQKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBzbWFsbGVzdFVuaXQgPSB0ZW1w
b3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZ
ZWFyLCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5p
dDo6RGF5LCBUZW1wb3JhbFVuaXQ6OkhvdXIsIFRlbXBvcmFsVW5pdDo6TWludXRlIH0pOworICAg
IGF1dG8gc21hbGxlc3RVbml0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB7IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9y
YWxVbml0OjpXZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSwgVGVtcG9yYWxVbml0OjpIb3VyIH0pOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoc21hbGxlc3RV
bml0KSB7CiAgICAgICAgIHN3aXRjaCAoc21hbGxlc3RVbml0LnZhbHVlKCkpIHsKKyAgICAgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZToKKyAgICAgICAgICAgIHJldHVybiB7IHsgUHJlY2lz
aW9uOjpNaW51dGUsIDAgfSwgVGVtcG9yYWxVbml0OjpNaW51dGUsIDEgfTsKICAgICAgICAgY2Fz
ZSBUZW1wb3JhbFVuaXQ6OlNlY29uZDoKLSAgICAgICAgICAgIHJldHVybiB7IDAsIFRlbXBvcmFs
VW5pdDo6U2Vjb25kLCAxIH07CisgICAgICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4
ZWQsIDAgfSwgVGVtcG9yYWxVbml0OjpTZWNvbmQsIDEgfTsKICAgICAgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6Ok1pbGxpc2Vjb25kOgotICAgICAgICAgICAgcmV0dXJuIHsgMywgVGVtcG9yYWxVbml0
OjpNaWxsaXNlY29uZCwgMSB9OworICAgICAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZp
eGVkLCAzIH0sIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQsIDEgfTsKICAgICAgICAgY2FzZSBU
ZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOgotICAgICAgICAgICAgcmV0dXJuIHsgNiwgVGVtcG9y
YWxVbml0OjpNaWNyb3NlY29uZCwgMSB9OworICAgICAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNp
b246OkZpeGVkLCA2IH0sIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQsIDEgfTsKICAgICAgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6Ci0gICAgICAgICAgICByZXR1cm4geyA5LCBU
ZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsgUHJl
Y2lzaW9uOjpGaXhlZCwgOSB9LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfTsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMjY1LDIwICsyNzcsMjcgQEAgUHJlY2lzaW9uRGF0
YSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
T2JqZWN0KiBvcHQKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAg
aWYgKCFwcmVjaXNpb24pCi0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgVGVtcG9yYWxV
bml0OjpOYW5vc2Vjb25kLCAxIH07CisgICAgICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpBdXRv
LCAwIH0sIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9OworCisgICAgYXV0byBwb3cxMFVu
c2lnbmVkID0gW10odW5zaWduZWQgbikgLT4gdW5zaWduZWQgeworICAgICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSAxOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgKytpKQorICAg
ICAgICAgICAgcmVzdWx0ICo9IDEwOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH07CiAK
ICAgICB1bnNpZ25lZCBkaWdpdHMgPSBwcmVjaXNpb24udmFsdWUoKTsKICAgICBpZiAoIWRpZ2l0
cykKLSAgICAgICAgcmV0dXJuIHsgMCwgVGVtcG9yYWxVbml0OjpTZWNvbmQsIDEgfTsKKyAgICAg
ICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCAwIH0sIFRlbXBvcmFsVW5pdDo6U2Vjb25k
LCAxIH07CiAKICAgICBpZiAoZGlnaXRzIDw9IDMpCi0gICAgICAgIHJldHVybiB7IGRpZ2l0cywg
VGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZCwgc3RkOjpwb3coMTAsIDMgLSBkaWdpdHMpIH07Cisg
ICAgICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgZGlnaXRzIH0sIFRlbXBvcmFsVW5p
dDo6TWlsbGlzZWNvbmQsIHBvdzEwVW5zaWduZWQoMyAtIGRpZ2l0cykgfTsKIAogICAgIGlmIChk
aWdpdHMgPD0gNikKLSAgICAgICAgcmV0dXJuIHsgZGlnaXRzLCBUZW1wb3JhbFVuaXQ6Ok1pY3Jv
c2Vjb25kLCBzdGQ6OnBvdygxMCwgNiAtIGRpZ2l0cykgfTsKKyAgICAgICAgcmV0dXJuIHsgeyBQ
cmVjaXNpb246OkZpeGVkLCBkaWdpdHMgfSwgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZCwgcG93
MTBVbnNpZ25lZCg2IC0gZGlnaXRzKSB9OwogCiAgICAgQVNTRVJUKGRpZ2l0cyA8PSA5KTsKLSAg
ICByZXR1cm4geyBkaWdpdHMsIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgc3RkOjpwb3coMTAs
IDkgLSBkaWdpdHMpIH07CisgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCBkaWdpdHMg
fSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCBwb3cxMFVuc2lnbmVkKDkgLSBkaWdpdHMpIH07
CiB9CiAKIC8vIE1heGltdW1UZW1wb3JhbER1cmF0aW9uUm91bmRpbmdJbmNyZW1lbnQgKCB1bml0
ICkKQEAgLTM0Miw0ICszNjEsMTEgQEAgZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZG91
YmxlIHgsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK1RlbXBvcmFsT3ZlcmZsb3cgdG9UZW1wb3JhbE92
ZXJmbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zKQor
eworICAgIHJldHVybiBpbnRsT3B0aW9uPFRlbXBvcmFsT3ZlcmZsb3c+KGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgZ2xvYmFsT2JqZWN0LT52bSgpLnByb3BlcnR5TmFtZXMtPm92ZXJmbG93LAorICAg
ICAgICB7IHsgImNvbnN0cmFpbiJfcywgVGVtcG9yYWxPdmVyZmxvdzo6Q29uc3RyYWluIH0sIHsg
InJlamVjdCJfcywgVGVtcG9yYWxPdmVyZmxvdzo6UmVqZWN0IH0gfSwKKyAgICAgICAgIm92ZXJm
bG93IG11c3QgYmUgZWl0aGVyIFwiY29uc3RyYWluXCIgb3IgXCJyZWplY3RcIiJfcywgVGVtcG9y
YWxPdmVyZmxvdzo6Q29uc3RyYWluKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAppbmRleCA3MjQzYzli
YTU4NDMyNjJkMmQwY2JiODE5MzNmNGNkZDEzMDhmYjQ4Li44OWExNTZlOGMxNWI4MTI1YzIwNDQx
MGJlZTA0ZGI3YWVkMmJhMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsT2JqZWN0LmgKQEAgLTIxLDE0ICsyMSwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCi0jZGVmaW5lIEpTQ19URU1QT1JBTF9VTklUUyhtYWNybykgXAotICAgIG1hY3Jv
KHllYXIsIFllYXIpIFwKLSAgICBtYWNybyhtb250aCwgTW9udGgpIFwKLSAgICBtYWNybyh3ZWVr
LCBXZWVrKSBcCi0gICAgbWFjcm8oZGF5LCBEYXkpIFwKKyNkZWZpbmUgSlNDX1RFTVBPUkFMX1BM
QUlOX1RJTUVfVU5JVFMobWFjcm8pIFwKICAgICBtYWNybyhob3VyLCBIb3VyKSBcCiAgICAgbWFj
cm8obWludXRlLCBNaW51dGUpIFwKICAgICBtYWNybyhzZWNvbmQsIFNlY29uZCkgXApAQCAtMzYs
NiArMzMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8obWljcm9zZWNvbmQsIE1pY3Jv
c2Vjb25kKSBcCiAgICAgbWFjcm8obmFub3NlY29uZCwgTmFub3NlY29uZCkgXAogCisKKyNkZWZp
bmUgSlNDX1RFTVBPUkFMX1VOSVRTKG1hY3JvKSBcCisgICAgbWFjcm8oeWVhciwgWWVhcikgXAor
ICAgIG1hY3JvKG1vbnRoLCBNb250aCkgXAorICAgIG1hY3JvKHdlZWssIFdlZWspIFwKKyAgICBt
YWNybyhkYXksIERheSkgXAorICAgIEpTQ19URU1QT1JBTF9QTEFJTl9USU1FX1VOSVRTKG1hY3Jv
KSBcCisKKwogZW51bSBjbGFzcyBUZW1wb3JhbFVuaXQgOiB1aW50OF90IHsKICNkZWZpbmUgSlND
X0RFRklORV9URU1QT1JBTF9VTklUX0VOVU0obmFtZSwgY2FwaXRhbGl6ZWROYW1lKSBjYXBpdGFs
aXplZE5hbWUsCiAgICAgSlNDX1RFTVBPUkFMX1VOSVRTKEpTQ19ERUZJTkVfVEVNUE9SQUxfVU5J
VF9FTlVNKQpAQCAtNDMsNiArNDksNyBAQCBlbnVtIGNsYXNzIFRlbXBvcmFsVW5pdCA6IHVpbnQ4
X3QgewogfTsKICNkZWZpbmUgSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRTKG5hbWUsIGNhcGl0YWxp
emVkTmFtZSkgKyAxCiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mVGVtcG9yYWxV
bml0cyA9IDAgSlNDX1RFTVBPUkFMX1VOSVRTKEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUyk7Citz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0cyA9
IDAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVfVU5JVFMoSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRT
KTsKICN1bmRlZiBKU0NfQ09VTlRfVEVNUE9SQUxfVU5JVFMKIAogY2xhc3MgVGVtcG9yYWxPYmpl
Y3QgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CkBAIC03NCwxMCArODEsMTYgQEAg
ZW51bSBjbGFzcyBSb3VuZGluZ01vZGUgOiB1aW50OF90IHsKICAgICBIYWxmRXhwYW5kCiB9Owog
CitlbnVtIGNsYXNzIFByZWNpc2lvbiB7CisgICAgTWludXRlLAorICAgIEZpeGVkLAorICAgIEF1
dG8sCit9OworCiBzdHJ1Y3QgUHJlY2lzaW9uRGF0YSB7Ci0gICAgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gcHJlY2lzaW9uOworICAgIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJl
Y2lzaW9uOwogICAgIFRlbXBvcmFsVW5pdCB1bml0OwotICAgIGRvdWJsZSBpbmNyZW1lbnQ7Cisg
ICAgdW5zaWduZWQgaW5jcmVtZW50OwogfTsKIAogc3RkOjpvcHRpb25hbDxUZW1wb3JhbFVuaXQ+
IHRlbXBvcmFsVW5pdFR5cGUoU3RyaW5nVmlldyk7CkBAIC04OSw0ICsxMDIsMTEgQEAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQpOwog
ZG91YmxlIHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCogb3B0aW9ucywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRpdmlkZW5kLCBib29sIGluY2x1c2l2
ZSk7CiBkb3VibGUgcm91bmROdW1iZXJUb0luY3JlbWVudChkb3VibGUsIGRvdWJsZSBpbmNyZW1l
bnQsIFJvdW5kaW5nTW9kZSk7CiAKK2VudW0gY2xhc3MgVGVtcG9yYWxPdmVyZmxvdyA6IHVpbnQ4
X3QgeworICAgIENvbnN0cmFpbiwKKyAgICBSZWplY3QsCit9OworCitUZW1wb3JhbE92ZXJmbG93
IHRvVGVtcG9yYWxPdmVyZmxvdyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxYzRiN2JiNGRhM2JhNzdjOTYyYmYzNGU4
ZDRjZmEwN2MwNmMyM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKQEAgLTAsMCArMSw2NzQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKKworI2luY2x1ZGUgIkFic3RyYWN0
U2xvdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJMYXp5UHJvcGVydHlJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlZNVHJhcHNJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxQbGFpblRpbWU6OnNfaW5m
byA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoVGVtcG9yYWxQbGFpblRpbWUpIH07CisKK1RlbXBvcmFsUGxhaW5UaW1lKiBU
ZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElT
Tzg2MDE6OlBsYWluVGltZSYmIHBsYWluVGltZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZT4odm0uaGVhcCkpIFRlbXBv
cmFsUGxhaW5UaW1lKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUocGxhaW5UaW1lKSk7CisgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0
dXJlKiBUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitUZW1wb3JhbFBsYWluVGlt
ZTo6VGVtcG9yYWxQbGFpblRpbWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYw
MTo6UGxhaW5UaW1lJiYgcGxhaW5UaW1lKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAg
ICwgbV9wbGFpblRpbWUoV1RGTW92ZShwbGFpblRpbWUpKQoreworfQorCit2b2lkIFRlbXBvcmFs
UGxhaW5UaW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgbV9jYWxl
bmRhci5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBhdXRvJiBpbml0KSB7CisgICAgICAg
ICAgICBWTSYgdm0gPSBpbml0LnZtOworICAgICAgICAgICAgYXV0byogcGxhaW5UaW1lID0ganND
YXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBhdXRvKiBn
bG9iYWxPYmplY3QgPSBwbGFpblRpbWUtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgICAgICAgICBh
dXRvKiBjYWxlbmRhciA9IFRlbXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5jYWxlbmRhclN0cnVjdHVyZSgpLCBpc284NjAxQ2FsZW5kYXJJRCgpKTsKKyAgICAgICAgICAg
IGluaXQuc2V0KGNhbGVuZGFyKTsKKyAgICAgICAgfSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFZpc2l0b3I+Cit2b2lkIFRlbXBvcmFsUGxhaW5UaW1lOjp2aXNpdENoaWxkcmVuSW1wbChKU0Nl
bGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihj
ZWxsLCB2aXNpdG9yKTsKKworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxQ
bGFpblRpbWUqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyLnZpc2l0KHZpc2l0
b3IpOworfQorCitERUZJTkVfVklTSVRfQ0hJTERSRU4oVGVtcG9yYWxQbGFpblRpbWUpOworCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlk
dGltZQorc3RhdGljIElTTzg2MDE6OlBsYWluVGltZSB0b1BsYWluVGltZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBJU084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBkb3VibGUgaG91ciA9IGR1cmF0aW9uLmhvdXJzKCk7CisgICAg
ZG91YmxlIG1pbnV0ZSA9IGR1cmF0aW9uLm1pbnV0ZXMoKTsKKyAgICBkb3VibGUgc2Vjb25kID0g
ZHVyYXRpb24uc2Vjb25kcygpOworICAgIGRvdWJsZSBtaWxsaXNlY29uZCA9IGR1cmF0aW9uLm1p
bGxpc2Vjb25kcygpOworICAgIGRvdWJsZSBtaWNyb3NlY29uZCA9IGR1cmF0aW9uLm1pY3Jvc2Vj
b25kcygpOworICAgIGRvdWJsZSBuYW5vc2Vjb25kID0gZHVyYXRpb24ubmFub3NlY29uZHMoKTsK
KyAgICBpZiAoIShob3VyID49IDAgJiYgaG91ciA8PSAyMykpIHsKKyAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJob3VyIGlzIG91dCBvZiByYW5nZSJfcyk7Cisg
ICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKG1pbnV0ZSA+PSAwICYmIG1pbnV0
ZSA8PSA1OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJtaW51dGUgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisgICAgaWYgKCEoc2Vjb25kID49IDAgJiYgc2Vjb25kIDw9IDU5KSkgeworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNlY29uZCBpcyBvdXQgb2YgcmFuZ2Ui
X3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBpZiAoIShtaWxsaXNlY29uZCA+
PSAwICYmIG1pbGxpc2Vjb25kIDw9IDk5OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJtaWxsaXNlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBpZiAoIShtaWNyb3NlY29uZCA+PSAwICYmIG1p
Y3Jvc2Vjb25kIDw9IDk5OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJtaWNyb3NlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKyAgICBpZiAoIShuYW5vc2Vjb25kID49IDAgJiYgbmFub3NlY29uZCA8
PSA5OTkpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
bmFub3NlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAg
IH0KKyAgICByZXR1cm4gSVNPODYwMTo6UGxhaW5UaW1lIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGhvdXIpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWludXRlKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNlY29uZCksCisgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtaWxsaXNlY29uZCksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtaWNyb3NlY29uZCksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihuYW5vc2Vjb25k
KQorICAgIH07Cit9CisKKy8vIENyZWF0ZVRlbXBvcmFsUGxhaW5UaW1lICggeWVhcnMsIG1vbnRo
cywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1p
Y3Jvc2Vjb25kcywgbmFub3NlY29uZHMgWyAsIG5ld1RhcmdldCBdICkKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWNyZWF0ZXRlbXBvcmFscGxhaW5U
aW1lCitUZW1wb3JhbFBsYWluVGltZSogVGVtcG9yYWxQbGFpblRpbWU6OnRyeUNyZWF0ZUlmVmFs
aWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElT
Tzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRpb24pCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8gcGxhaW5UaW1lID0gdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGR1cmF0
aW9uKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVy
biBUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUocGxhaW5U
aW1lKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRl
bXBvcmFsLWJhbGFuY2V0aW1lCitzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gYmFsYW5jZVRpbWUo
ZG91YmxlIGhvdXIsIGRvdWJsZSBtaW51dGUsIGRvdWJsZSBzZWNvbmQsIGRvdWJsZSBtaWxsaXNl
Y29uZCwgZG91YmxlIG1pY3Jvc2Vjb25kLCBkb3VibGUgbmFub3NlY29uZCkKK3sKKyAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC10ZW1wb3JhbC9pc3N1ZXMvMTgwNAorICAg
IG1pbnV0ZSA9IDYwICogaG91ciArIG1pbnV0ZTsKKyAgICBzZWNvbmQgPSA2MCAqIG1pbnV0ZSAr
IHNlY29uZDsKKyAgICBtaWxsaXNlY29uZCA9IDEwMDAgKiBzZWNvbmQgKyBtaWxsaXNlY29uZDsK
KyAgICBtaWNyb3NlY29uZCA9IDEwMDAgKiBtaWxsaXNlY29uZCArIG1pY3Jvc2Vjb25kOworICAg
IG5hbm9zZWNvbmQgPSAxMDAwICogbWljcm9zZWNvbmQgKyBuYW5vc2Vjb25kOworCisgICAgbWlj
cm9zZWNvbmQgPSBzdGQ6OnRydW5jKG5hbm9zZWNvbmQgLyAxMDAwKTsKKyAgICBuYW5vc2Vjb25k
ID0gc3RkOjpmbW9kKG5hbm9zZWNvbmQsIDEwMDApOworICAgIG1pbGxpc2Vjb25kID0gc3RkOjp0
cnVuYyhtaWNyb3NlY29uZCAvIDEwMDApOworICAgIG1pY3Jvc2Vjb25kID0gc3RkOjpmbW9kKG1p
Y3Jvc2Vjb25kLCAxMDAwKTsKKyAgICBzZWNvbmQgPSBzdGQ6OnRydW5jKG1pbGxpc2Vjb25kIC8g
MTAwMCk7CisgICAgbWlsbGlzZWNvbmQgPSBzdGQ6OmZtb2QobWlsbGlzZWNvbmQsIDEwMDApOwor
ICAgIG1pbnV0ZSA9IHN0ZDo6dHJ1bmMoc2Vjb25kIC8gNjApOworICAgIHNlY29uZCA9IHN0ZDo6
Zm1vZChzZWNvbmQsIDYwKTsKKyAgICBob3VyID0gc3RkOjp0cnVuYyhtaW51dGUgLyA2MCk7Cisg
ICAgbWludXRlID0gc3RkOjpmbW9kKG1pbnV0ZSwgNjApOworICAgIGRvdWJsZSBkYXlzID0gc3Rk
Ojp0cnVuYyhob3VyIC8gMjQpOworICAgIGhvdXIgPSBzdGQ6OmZtb2QoaG91ciwgMjQpOworICAg
IHJldHVybiBJU084NjAxOjpEdXJhdGlvbigwLCAwLCAwLCBkYXlzLCBob3VyLCBtaW51dGUsIHNl
Y29uZCwgbWlsbGlzZWNvbmQsIG1pY3Jvc2Vjb25kLCBuYW5vc2Vjb25kKTsKK30KKworLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcm91bmR0aW1lCitz
dGF0aWMgSVNPODYwMTo6RHVyYXRpb24gcm91bmRUaW1lKElTTzg2MDE6OlBsYWluVGltZSBwbGFp
blRpbWUsIGRvdWJsZSBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUg
cm91bmRpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGF5TGVuZ3RoTnMpCit7CisgICAg
YXV0byBmcmFjdGlvbmFsU2Vjb25kID0gW10oSVNPODYwMTo6UGxhaW5UaW1lIHBsYWluVGltZSkg
LT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIHBsYWluVGltZS5zZWNvbmQoKSArIHBsYWluVGlt
ZS5taWxsaXNlY29uZCgpICogMWUtMyArIHBsYWluVGltZS5taWNyb3NlY29uZCgpICogMWUtNiAr
IHBsYWluVGltZS5uYW5vc2Vjb25kKCkgKiAxZS05OworICAgIH07CisKKyAgICBkb3VibGUgcXVh
bnRpdHkgPSAwOworICAgIHN3aXRjaCAodW5pdCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpE
YXk6IHsKKyAgICAgICAgZG91YmxlIGxlbmd0aCA9IGRheUxlbmd0aE5zLnZhbHVlX29yKDguNjQg
KiAxZSsxMyk7CisgICAgICAgIHF1YW50aXR5ID0gKCgoKHBsYWluVGltZS5ob3VyKCkgKiA2MC4w
ICsgcGxhaW5UaW1lLm1pbnV0ZSgpKSAqIDYwLjAgKyBwbGFpblRpbWUuc2Vjb25kKCkpICogMTAw
MC4wICsgcGxhaW5UaW1lLm1pbGxpc2Vjb25kKCkpICogMTAwMC4wICsgcGxhaW5UaW1lLm5hbm9z
ZWNvbmQoKSkgLyBsZW5ndGg7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0lu
Y3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOworICAgICAgICByZXR1
cm4gSVNPODYwMTo6RHVyYXRpb24oMCwgMCwgMCwgcmVzdWx0LCAwLCAwLCAwLCAwLCAwLCAwKTsK
KyAgICB9CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OkhvdXI6IHsKKyAgICAgICAgcXVhbnRpdHkg
PSAoZnJhY3Rpb25hbFNlY29uZChwbGFpblRpbWUpIC8gNjAuMCArIHBsYWluVGltZS5taW51dGUo
KSkgLyA2MC4wICsgcGxhaW5UaW1lLmhvdXIoKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3Vu
ZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7Cisg
ICAgICAgIHJldHVybiBiYWxhbmNlVGltZShyZXN1bHQsIDAsIDAsIDAsIDAsIDApOworICAgIH0K
KyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWludXRlOiB7CisgICAgICAgIHF1YW50aXR5ID0gZnJh
Y3Rpb25hbFNlY29uZChwbGFpblRpbWUpIC8gNjAuMCArIHBsYWluVGltZS5taW51dGUoKTsKKyAg
ICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNy
ZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVybiBiYWxhbmNlVGltZShwbGFpblRp
bWUuaG91cigpLCByZXN1bHQsIDAsIDAsIDAsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFs
VW5pdDo6U2Vjb25kOiB7CisgICAgICAgIHF1YW50aXR5ID0gZnJhY3Rpb25hbFNlY29uZChwbGFp
blRpbWUpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVh
bnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VU
aW1lKHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5taW51dGUoKSwgcmVzdWx0LCAwLCAwLCAw
KTsKKyAgICB9CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kOiB7CisgICAgICAg
IHF1YW50aXR5ID0gcGxhaW5UaW1lLm1pbGxpc2Vjb25kKCkgKyBwbGFpblRpbWUubWljcm9zZWNv
bmQoKSAqIDFlLTMgKyBwbGFpblRpbWUubmFub3NlY29uZCgpICogMWUtNjsKKyAgICAgICAgYXV0
byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJv
dW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVybiBiYWxhbmNlVGltZShwbGFpblRpbWUuaG91cigp
LCBwbGFpblRpbWUubWludXRlKCksIHBsYWluVGltZS5zZWNvbmQoKSwgcmVzdWx0LCAwLCAwKTsK
KyAgICB9CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiB7CisgICAgICAgIHF1
YW50aXR5ID0gcGxhaW5UaW1lLm1pY3Jvc2Vjb25kKCkgKyBwbGFpblRpbWUubmFub3NlY29uZCgp
ICogMWUtMzsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1
YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVybiBiYWxhbmNl
VGltZShwbGFpblRpbWUuaG91cigpLCBwbGFpblRpbWUubWludXRlKCksIHBsYWluVGltZS5zZWNv
bmQoKSwgcGxhaW5UaW1lLm1pbGxpc2Vjb25kKCksIHJlc3VsdCwgMCk7CisgICAgfQorICAgIGNh
c2UgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kOiB7CisgICAgICAgIHF1YW50aXR5ID0gcGxhaW5U
aW1lLm5hbm9zZWNvbmQoKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5j
cmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVy
biBiYWxhbmNlVGltZShwbGFpblRpbWUuaG91cigpLCBwbGFpblRpbWUubWludXRlKCksIHBsYWlu
VGltZS5zZWNvbmQoKSwgcGxhaW5UaW1lLm1pbGxpc2Vjb25kKCksIHBsYWluVGltZS5taWNyb3Nl
Y29uZCgpLCByZXN1bHQpOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK0lTTzg2MDE6
OlBsYWluVGltZSBUZW1wb3JhbFBsYWluVGltZTo6cm91bmQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFs
T2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBhdXRvIHNtYWxsZXN0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCB7IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwg
VGVtcG9yYWxVbml0OjpXZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSB9KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGlmICghc21hbGxlc3QpIHsKKyAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3Qgcm91bmQgd2l0aG91dCBh
IHNtYWxsZXN0VW5pdCBvcHRpb24iX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAg
ICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFsdWUoKTsKKworICAgIGF1
dG8gcm91bmRpbmdNb2RlID0gaW50bE9wdGlvbjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdNb2RlLAorICAgICAgICB7IHsgImNl
aWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2VpbCB9LCB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpG
bG9vciB9LCB7ICJ0cnVuYyJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5k
Il9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSB9LAorICAgICAgICAicm91bmRpbmdNb2Rl
IG11c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBcImZsb29yXCIsIFwidHJ1bmNcIiwgb3IgXCJoYWxm
RXhwYW5kXCIiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gaW5jcmVtZW50ID0gdGVtcG9yYWxSb3Vu
ZGluZ0luY3JlbWVudChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIG1heGltdW1Sb3VuZGluZ0luY3Jl
bWVudChzbWFsbGVzdFVuaXQpLCBmYWxzZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGF1dG8gZHVyYXRpb24gPSByb3VuZFRpbWUobV9wbGFpblRpbWUsIGlu
Y3JlbWVudCwgc21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUsIHN0ZDo6bnVsbG9wdCk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0b1BsYWluVGltZShnbG9iYWxPYmplY3QsIFdURk1v
dmUoZHVyYXRpb24pKSk7Cit9CisKK1N0cmluZyBUZW1wb3JhbFBsYWluVGltZTo6dG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdl
dE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJl
dHVybiB0b1N0cmluZygpOworCisgICAgUHJlY2lzaW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0cmlu
Z1ByZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91
bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5k
aW5nTW9kZSwKKyAgICAgICAgeyB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAi
Zmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9k
ZTo6VHJ1bmMgfSwgeyAiaGFsZkV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0g
fSwKKyAgICAgICAgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9v
clwiLCBcInRydW5jXCIsIG9yIFwiaGFsZkV4cGFuZFwiIl9zLCBSb3VuZGluZ01vZGU6OlRydW5j
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgLy8gTm8gbmVl
ZCB0byBtYWtlIGEgbmV3IG9iamVjdCBpZiB3ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRz
LgorICAgIGlmIChzdGQ6OmdldDwwPihkYXRhLnByZWNpc2lvbikgPT0gUHJlY2lzaW9uOjpBdXRv
ICYmIHJvdW5kaW5nTW9kZSA9PSBSb3VuZGluZ01vZGU6OlRydW5jKQorICAgICAgICByZXR1cm4g
dG9TdHJpbmcoKTsKKworICAgIGF1dG8gZHVyYXRpb24gPSByb3VuZFRpbWUobV9wbGFpblRpbWUs
IGRhdGEuaW5jcmVtZW50LCBkYXRhLnVuaXQsIHJvdW5kaW5nTW9kZSwgc3RkOjpudWxsb3B0KTsK
KyAgICBhdXRvIHBsYWluVGltZSA9IHRvUGxhaW5UaW1lKGdsb2JhbE9iamVjdCwgV1RGTW92ZShk
dXJhdGlvbikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBy
ZXR1cm4gSVNPODYwMTo6dGVtcG9yYWxUaW1lVG9TdHJpbmcocGxhaW5UaW1lLCBkYXRhLnByZWNp
c2lvbik7Cit9CisKKworc3RhdGljIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUoVk0mIHZtLCB1
bnNpZ25lZCBpbmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlRlbXBvcmFsVW5p
dHMpOworICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8VGVtcG9yYWxVbml0PihpbmRleCkpIHsKKyNk
ZWZpbmUgSlNDX1RFTVBPUkFMX0RVUkFUSU9OX1BST1BFUlRZX05BTUUobmFtZSwgY2FwaXRhbGl6
ZWROYW1lKSBjYXNlIFRlbXBvcmFsVW5pdDo6Y2FwaXRhbGl6ZWROYW1lOiByZXR1cm4gdm0ucHJv
cGVydHlOYW1lcy0+bmFtZTsKKyAgICAgICAgSlNDX1RFTVBPUkFMX1VOSVRTKEpTQ19URU1QT1JB
TF9EVVJBVElPTl9QUk9QRVJUWV9OQU1FKQorI3VuZGVmIEpTQ19URU1QT1JBTF9EVVJBVElPTl9Q
Uk9QRVJUWV9OQU1FCisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIHRvVGVtcG9yYWxUaW1lUmVjb3JkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0ZW1wb3JhbFRpbWVMaWtlKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiB7IH07
CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZUZW1wb3JhbFBs
YWluVGltZVVuaXRzOyArK2luZGV4KSB7CisgICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uSW5kZXgg
PSBpbmRleCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZW1wb3JhbFVuaXQ6OkhvdXIpOworICAg
ICAgICBhdXRvIG5hbWUgPSBwcm9wZXJ0eU5hbWUodm0sIGR1cmF0aW9uSW5kZXgpOworICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgbmFt
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAgICAg
Ly8gV2UgYXJlIHRocm93aW5nIGFuIGVycm9yIGhlcmUsIGJ1dCBwcm9iYWJseSB0aGlzIGlzIGEg
c3BlYyBidWcuCisgICAgICAgIC8vIFRyYWNrZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkv
cHJvcG9zYWwtdGVtcG9yYWwvaXNzdWVzLzE4MDMuCisgICAgICAgIGlmICh2YWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBtYWtlU3RyaW5nKCciJywgU3RyaW5nVmlldyhuYW1lLnVpZCgpKSwgIlwiIGZpZWxkIGlzIG1p
c3NpbmciX3MpKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKworICAgICAg
ICBkb3VibGUgaW50ZWdlciA9IHZhbHVlLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgaWYg
KCFzdGQ6OmlzZmluaXRlKGludGVnZXIpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZSBwcm9wZXJ0aWVzIG11c3Qg
YmUgZmluaXRlIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAg
ICAgZHVyYXRpb25bZHVyYXRpb25JbmRleF0gPSBpbnRlZ2VyOworICAgIH0KKyAgICByZXR1cm4g
ZHVyYXRpb247Cit9CisKK3N0YXRpYyBzdGQ6OmFycmF5PHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwg
bnVtYmVyT2ZUZW1wb3JhbFBsYWluVGltZVVuaXRzPiB0b1BhcnRpYWxUaW1lKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0ZW1wb3JhbFRpbWVMaWtlKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBib29sIGhhc0FueUZpZWxkcyA9IGZhbHNlOworICAgIHN0ZDo6
YXJyYXk8c3RkOjpvcHRpb25hbDxkb3VibGU+LCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5p
dHM+IHBhcnRpYWxUaW1lIHsgfTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHM7ICsraW5kZXgpIHsKKyAgICAgICAgdW5z
aWduZWQgZHVyYXRpb25JbmRleCA9IGluZGV4ICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRlbXBv
cmFsVW5pdDo6SG91cik7CisgICAgICAgIGF1dG8gbmFtZSA9IHByb3BlcnR5TmFtZSh2bSwgZHVy
YXRpb25JbmRleCk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSB0ZW1wb3JhbFRpbWVMaWtlLT5n
ZXQoZ2xvYmFsT2JqZWN0LCBuYW1lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgICAgICBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAg
ICAgIGhhc0FueUZpZWxkcyA9IHRydWU7CisgICAgICAgICAgICBkb3VibGUgZG91YmxlVmFsdWUg
PSB2YWx1ZS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgaWYgKCFzdGQ6Omlz
ZmluaXRlKGRvdWJsZVZhbHVlKSkgeworICAgICAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAidG9QYXJ0aWFsVGltZSBwcm9wZXJ0aWVzIG11c3QgYmUgZmlu
aXRlIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcGFydGlhbFRpbWVbaW5kZXhdID0gZG91YmxlVmFsdWU7CisgICAgICAgIH0KKyAg
ICB9CisgICAgaWYgKCFoYXNBbnlGaWVsZHMpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInRvUGFydGlhbFRpbWUgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBy
b3BlcnR5Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgcmV0dXJuIHBhcnRp
YWxUaW1lOworfQorCitzdGF0aWMgSVNPODYwMTo6UGxhaW5UaW1lIGNvbnN0cmFpbnRUaW1lKElT
Tzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRpb24pCit7CisgICAgYXV0byBjb25zdHJhaW5Ub1Jhbmdl
ID0gW10oZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVtKSAt
PiB1bnNpZ25lZCB7CisgICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bWlu
PGRvdWJsZT4oc3RkOjptYXg8ZG91YmxlPih2YWx1ZSwgbWluaW11bSksIG1heGltdW0pKTsKKyAg
ICB9OworICAgIHJldHVybiBJU084NjAxOjpQbGFpblRpbWUoCisgICAgICAgIGNvbnN0cmFpblRv
UmFuZ2UoZHVyYXRpb24uaG91cnMoKSwgMCwgMjMpLAorICAgICAgICBjb25zdHJhaW5Ub1Jhbmdl
KGR1cmF0aW9uLm1pbnV0ZXMoKSwgMCwgNTkpLAorICAgICAgICBjb25zdHJhaW5Ub1JhbmdlKGR1
cmF0aW9uLnNlY29uZHMoKSwgMCwgNTkpLAorICAgICAgICBjb25zdHJhaW5Ub1JhbmdlKGR1cmF0
aW9uLm1pbGxpc2Vjb25kcygpLCAwLCAxMDAwKSwKKyAgICAgICAgY29uc3RyYWluVG9SYW5nZShk
dXJhdGlvbi5taWNyb3NlY29uZHMoKSwgMCwgMTAwMCksCisgICAgICAgIGNvbnN0cmFpblRvUmFu
Z2UoZHVyYXRpb24ubmFub3NlY29uZHMoKSwgMCwgMTAwMCkpOworfQorCitzdGF0aWMgSVNPODYw
MTo6UGxhaW5UaW1lIHJlZ3VsYXRlVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJ
U084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uLCBUZW1wb3JhbE92ZXJmbG93IG92ZXJmbG93KQor
eworICAgIHN3aXRjaCAob3ZlcmZsb3cpIHsKKyAgICBjYXNlIFRlbXBvcmFsT3ZlcmZsb3c6OkNv
bnN0cmFpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRUaW1lKFdURk1vdmUoZHVyYXRpb24p
KTsKKyAgICBjYXNlIFRlbXBvcmFsT3ZlcmZsb3c6OlJlamVjdDoKKyAgICAgICAgcmV0dXJuIHRv
UGxhaW5UaW1lKGdsb2JhbE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbikpOworICAgIH0KKyAgICBy
ZXR1cm4geyB9OworfQorCitzdGF0aWMgSlNPYmplY3QqIHRvVGVtcG9yYWxDYWxlbmRhcldpdGhJ
U09EZWZhdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGVtcG9yYWxD
YWxlbmRhckxpa2UpCit7CisgICAgaWYgKHRlbXBvcmFsQ2FsZW5kYXJMaWtlLmlzVW5kZWZpbmVk
KCkpCisgICAgICAgIHJldHVybiBUZW1wb3JhbENhbGVuZGFyOjpjcmVhdGUoZ2xvYmFsT2JqZWN0
LT52bSgpLCBnbG9iYWxPYmplY3QtPmNhbGVuZGFyU3RydWN0dXJlKCksIGlzbzg2MDFDYWxlbmRh
cklEKCkpOworICAgIHJldHVybiBUZW1wb3JhbENhbGVuZGFyOjpmcm9tKGdsb2JhbE9iamVjdCwg
dGVtcG9yYWxDYWxlbmRhckxpa2UpOworfQorCitzdGF0aWMgSlNPYmplY3QqIGdldFRlbXBvcmFs
Q2FsZW5kYXJXaXRoSVNPRGVmYXVsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGl0ZW1WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGl0ZW1WYWx1
ZS5pbmhlcml0czxUZW1wb3JhbFBsYWluVGltZT4odm0pKQorICAgICAgICByZXR1cm4ganNDYXN0
PFRlbXBvcmFsUGxhaW5UaW1lKj4oaXRlbVZhbHVlKS0+Y2FsZW5kYXIoKTsKKworICAgIEpTVmFs
dWUgY2FsZW5kYXIgPSBpdGVtVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+Y2FsZW5kYXIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0b1RlbXBvcmFsQ2FsZW5kYXJXaXRoSVNPRGVmYXVs
dChnbG9iYWxPYmplY3QsIGNhbGVuZGFyKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvdGVtcG9yYWx0aW1lCitUZW1wb3JhbFBsYWlu
VGltZSogVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBpdGVtVmFsdWUsIHN0ZDo6b3B0aW9uYWw8VGVtcG9yYWxPdmVyZmxvdz4gb3Zl
cmZsb3dWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBvdmVyZmxvdyA9
IG92ZXJmbG93VmFsdWUudmFsdWVfb3IoVGVtcG9yYWxPdmVyZmxvdzo6Q29uc3RyYWluKTsKKwor
ICAgIGlmIChpdGVtVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICBpZiAoaXRlbVZhbHVlLmlu
aGVyaXRzPFRlbXBvcmFsUGxhaW5UaW1lPih2bSkpCisgICAgICAgICAgICByZXR1cm4ganNDYXN0
PFRlbXBvcmFsUGxhaW5UaW1lKj4oaXRlbVZhbHVlKTsKKyAgICAgICAgSlNPYmplY3QqIGNhbGVu
ZGFyID0gZ2V0VGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KGdsb2JhbE9iamVjdCwgaXRl
bVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAg
ICAgSlNTdHJpbmcqIGNhbGVuZGFyU3RyaW5nID0gY2FsZW5kYXItPnRvU3RyaW5nKGdsb2JhbE9i
amVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAg
IFN0cmluZyBjYWxlbmRhcldURlN0cmluZyA9IGNhbGVuZGFyU3RyaW5nLT52YWx1ZShnbG9iYWxP
YmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAg
ICBpZiAoY2FsZW5kYXJXVEZTdHJpbmcgIT0gImlzbzg2MDEiX3MpIHsKKyAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiY2FsZW5kYXIgaXMgbm90IGlzbzg2
MDEiX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBhdXRv
IGR1cmF0aW9uID0gdG9UZW1wb3JhbFRpbWVSZWNvcmQoZ2xvYmFsT2JqZWN0LCBqc0Nhc3Q8SlNP
YmplY3QqPihpdGVtVmFsdWUpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKyAgICAgICAgYXV0byBwbGFpblRpbWUgPSByZWd1bGF0ZVRpbWUoZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGR1cmF0aW9uKSwgb3ZlcmZsb3cpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworICAgICAgICByZXR1cm4gVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShwbGFpblRp
bWUpKTsKKyAgICB9CisKKyAgICBhdXRvIHN0cmluZyA9IGl0ZW1WYWx1ZS50b1dURlN0cmluZyhn
bG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBhdXRvIHRpbWUgPSBJU084NjAxOjpwYXJzZVRpbWUoc3RyaW5nKTsKKyAgICBpZiAodGltZSkg
eworICAgICAgICBhdXRvIFtwbGFpblRpbWUsIHRpbWVab25lT3B0aW9uYWxdID0gdGltZS52YWx1
ZSgpOworICAgICAgICByZXR1cm4gVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShwbGFpblRpbWUpKTsKKyAgICB9
CisKKyAgICBhdXRvIGRhdGVUaW1lID0gSVNPODYwMTo6cGFyc2VEYXRlVGltZShzdHJpbmcpOwor
ICAgIGlmIChkYXRlVGltZSkgeworICAgICAgICBhdXRvIFtwbGFpbkRhdGUsIHBsYWluVGltZU9w
dGlvbmFsLCB0aW1lWm9uZU9wdGlvbmFsXSA9IGRhdGVUaW1lLnZhbHVlKCk7CisgICAgICAgIGlm
IChwbGFpblRpbWVPcHRpb25hbCkKKyAgICAgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGlt
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3Zl
KHBsYWluVGltZU9wdGlvbmFsLnZhbHVlKCkpKTsKKyAgICB9CisKKyAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgdGltZSBzdHJpbmciX3MpOworICAgIHJl
dHVybiB7IH07Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2Vj
LXRlbXBvcmFsLWNvbXBhcmV0ZW1wb3JhbHRpbWUKK2ludDMyX3QgVGVtcG9yYWxQbGFpblRpbWU6
OmNvbXBhcmUoVGVtcG9yYWxQbGFpblRpbWUqIHBsYWluVGltZTEsIFRlbXBvcmFsUGxhaW5UaW1l
KiBwbGFpblRpbWUyKQoreworICAgIElTTzg2MDE6OlBsYWluVGltZSB0MSA9IHBsYWluVGltZTEt
PnBsYWluVGltZSgpOworICAgIElTTzg2MDE6OlBsYWluVGltZSB0MiA9IHBsYWluVGltZTItPnBs
YWluVGltZSgpOworICAgIGlmICh0MS5ob3VyKCkgPiB0Mi5ob3VyKCkpCisgICAgICAgIHJldHVy
biAxOworICAgIGlmICh0MS5ob3VyKCkgPCB0Mi5ob3VyKCkpCisgICAgICAgIHJldHVybiAtMTsK
KyAgICBpZiAodDEubWludXRlKCkgPiB0Mi5taW51dGUoKSkKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgaWYgKHQxLm1pbnV0ZSgpIDwgdDIubWludXRlKCkpCisgICAgICAgIHJldHVybiAtMTsKKyAg
ICBpZiAodDEuc2Vjb25kKCkgPiB0Mi5zZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAg
aWYgKHQxLnNlY29uZCgpIDwgdDIuc2Vjb25kKCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBp
ZiAodDEubWlsbGlzZWNvbmQoKSA+IHQyLm1pbGxpc2Vjb25kKCkpCisgICAgICAgIHJldHVybiAx
OworICAgIGlmICh0MS5taWxsaXNlY29uZCgpIDwgdDIubWlsbGlzZWNvbmQoKSkKKyAgICAgICAg
cmV0dXJuIC0xOworICAgIGlmICh0MS5taWNyb3NlY29uZCgpID4gdDIubWljcm9zZWNvbmQoKSkK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKHQxLm1pY3Jvc2Vjb25kKCkgPCB0Mi5taWNyb3Nl
Y29uZCgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHQxLm5hbm9zZWNvbmQoKSA+IHQy
Lm5hbm9zZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKHQxLm5hbm9zZWNvbmQo
KSA8IHQyLm5hbm9zZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiAwOwor
fQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10
b2xpbWl0ZWR0ZW1wb3JhbGR1cmF0aW9uCitzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gdG9MaW1p
dGVkVGVtcG9yYWxEdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHRlbXBvcmFsRHVyYXRpb25MaWtlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0
PiBkaXNhbGxvd2VkRmllbGRzKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJU084NjAx
OjpEdXJhdGlvbiBkdXJhdGlvbjsKKyAgICBpZiAoIXRlbXBvcmFsRHVyYXRpb25MaWtlLmlzT2Jq
ZWN0KCkpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHRlbXBvcmFsRHVyYXRpb25MaWtlLnRv
V1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgICAgIGF1dG8gZHVyYXRpb25PcHRpb25hbCA9IElTTzg2MDE6OnBhcnNl
RHVyYXRpb24oc3RyaW5nKTsKKyAgICAgICAgaWYgKCFkdXJhdGlvbk9wdGlvbmFsKSB7CisgICAg
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvdWxkIG5vdCBw
YXJzZSBEdXJhdGlvbiBzdHJpbmciX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgfQorICAgICAgICBkdXJhdGlvbiA9IGR1cmF0aW9uT3B0aW9uYWwudmFsdWUoKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBkdXJhdGlvbiA9IFRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb25S
ZWNvcmQoZ2xvYmFsT2JqZWN0LCB0ZW1wb3JhbER1cmF0aW9uTGlrZSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgfQorCisgICAgaWYgKCFJU084NjAxOjpp
c1ZhbGlkRHVyYXRpb24oZHVyYXRpb24pKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGZp
bml0ZSBhbmQgb2YgY29uc2lzdGVudCBzaWduIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZUZW1wb3Jh
bFVuaXRzOyBpbmRleCsrKSB7CisgICAgICAgIGlmIChkdXJhdGlvbltpbmRleF0pIHsKKyAgICAg
ICAgICAgIGlmIChkaXNhbGxvd2VkRmllbGRzLnNpemUoKSAmJiBzdGQ6OmZpbmQoZGlzYWxsb3dl
ZEZpZWxkcy5iZWdpbigpLCBkaXNhbGxvd2VkRmllbGRzLmVuZCgpLCBzdGF0aWNfY2FzdDxUZW1w
b3JhbFVuaXQ+KGluZGV4KSkgIT0gZGlzYWxsb3dlZEZpZWxkcy5lbmQoKSkgeworICAgICAgICAg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRHVyYXRpb24gcHJv
cGVydGllcyBpbmNsdWRlIGRpc2FsbG93ZWQgZmllbGQiX3MpOworICAgICAgICAgICAgICAgIHJl
dHVybiB7IH07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
ZHVyYXRpb247Cit9CisKK3N0YXRpYyBJU084NjAxOjpEdXJhdGlvbiBhZGRUaW1lKGNvbnN0IElT
Tzg2MDE6OlBsYWluVGltZSYgcGxhaW5UaW1lLCBjb25zdCBJU084NjAxOjpEdXJhdGlvbiYgZHVy
YXRpb24pCit7CisgICAgcmV0dXJuIGJhbGFuY2VUaW1lKAorICAgICAgICBwbGFpblRpbWUuaG91
cigpICsgZHVyYXRpb24uaG91cnMoKSwKKyAgICAgICAgcGxhaW5UaW1lLm1pbnV0ZSgpICsgZHVy
YXRpb24ubWludXRlcygpLAorICAgICAgICBwbGFpblRpbWUuc2Vjb25kKCkgKyBkdXJhdGlvbi5z
ZWNvbmRzKCksCisgICAgICAgIHBsYWluVGltZS5taWxsaXNlY29uZCgpICsgZHVyYXRpb24ubWls
bGlzZWNvbmRzKCksCisgICAgICAgIHBsYWluVGltZS5taWNyb3NlY29uZCgpICsgZHVyYXRpb24u
bWljcm9zZWNvbmRzKCksCisgICAgICAgIHBsYWluVGltZS5uYW5vc2Vjb25kKCkgKyBkdXJhdGlv
bi5uYW5vc2Vjb25kcygpKTsKK30KKworSVNPODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5U
aW1lOjphZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0ZW1wb3JhbER1
cmF0aW9uTGlrZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBkdXJh
dGlvbiA9IHRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCB0ZW1wb3JhbER1
cmF0aW9uTGlrZSwgeyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0b1BsYWluVGltZShnbG9iYWxPYmplY3Qs
IGFkZFRpbWUobV9wbGFpblRpbWUsIGR1cmF0aW9uKSkpOworfQorCitJU084NjAxOjpQbGFpblRp
bWUgVGVtcG9yYWxQbGFpblRpbWU6OnN1YnRyYWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdGVtcG9yYWxEdXJhdGlvbkxpa2UpIGNvbnN0Cit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGF1dG8gZHVyYXRpb24gPSB0b0xpbWl0ZWRUZW1wb3JhbER1cmF0aW9uKGds
b2JhbE9iamVjdCwgdGVtcG9yYWxEdXJhdGlvbkxpa2UsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9Q
bGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBhZGRUaW1lKG1fcGxhaW5UaW1lLCAtZHVyYXRpb24pKSk7
Cit9CisKK0lTTzg2MDE6OlBsYWluVGltZSBUZW1wb3JhbFBsYWluVGltZTo6d2l0aChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGVtcG9yYWxUaW1lTGlrZSwgSlNWYWx1
ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICh0
ZW1wb3JhbFRpbWVMaWtlLT5pbmhlcml0czxUZW1wb3JhbFBsYWluVGltZT4odm0pKSB7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBvYmplY3Qg
bXVzdCBub3QgY2FycnkgY2FsZW5kYXIiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0K
KworICAgIEpTVmFsdWUgY2FsZW5kYXJQcm9wZXJ0eSA9IHRlbXBvcmFsVGltZUxpa2UtPmdldChn
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGVuZGFyKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGlmICghY2FsZW5kYXJQcm9wZXJ0eS5pc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJh
cmd1bWVudCBvYmplY3QgbXVzdCBub3QgY2FycnkgY2FsZW5kYXIiX3MpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKworICAgIEpTVmFsdWUgdGltZVpvbmVQcm9wZXJ0eSA9IHRlbXBvcmFs
VGltZUxpa2UtPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnRpbWVab25lKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGlmICghdGltZVpvbmVQ
cm9wZXJ0eS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJhcmd1bWVudCBvYmplY3QgbXVzdCBub3QgY2FycnkgdGltZSB6b25lIl9z
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBhdXRvIFtob3VyT3B0aW9uYWws
IG1pbnV0ZU9wdGlvbmFsLCBzZWNvbmRPcHRpb25hbCwgbWlsbGlzZWNvbmRPcHRpb25hbCwgbWlj
cm9zZWNvbmRPcHRpb25hbCwgbmFub3NlY29uZE9wdGlvbmFsXSA9IHRvUGFydGlhbFRpbWUoZ2xv
YmFsT2JqZWN0LCB0ZW1wb3JhbFRpbWVMaWtlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVj
dChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIFRlbXBvcmFsT3ZlcmZsb3cgb3ZlcmZsb3cgPSB0b1RlbXBvcmFs
T3ZlcmZsb3coZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24geyB9OworICAg
IGR1cmF0aW9uLnNldEhvdXJzKGhvdXJPcHRpb25hbC52YWx1ZV9vcihob3VyKCkpKTsKKyAgICBk
dXJhdGlvbi5zZXRNaW51dGVzKG1pbnV0ZU9wdGlvbmFsLnZhbHVlX29yKG1pbnV0ZSgpKSk7Cisg
ICAgZHVyYXRpb24uc2V0U2Vjb25kcyhzZWNvbmRPcHRpb25hbC52YWx1ZV9vcihzZWNvbmQoKSkp
OworICAgIGR1cmF0aW9uLnNldE1pbGxpc2Vjb25kcyhtaWxsaXNlY29uZE9wdGlvbmFsLnZhbHVl
X29yKG1pbGxpc2Vjb25kKCkpKTsKKyAgICBkdXJhdGlvbi5zZXRNaWNyb3NlY29uZHMobWljcm9z
ZWNvbmRPcHRpb25hbC52YWx1ZV9vcihtaWNyb3NlY29uZCgpKSk7CisgICAgZHVyYXRpb24uc2V0
TmFub3NlY29uZHMobmFub3NlY29uZE9wdGlvbmFsLnZhbHVlX29yKG5hbm9zZWNvbmQoKSkpOwor
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZWd1bGF0ZVRpbWUoZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGR1cmF0aW9uKSwgb3ZlcmZsb3cpKTsKK30KKworc3RhdGljIElTTzg2MDE6OkR1
cmF0aW9uIGRpZmZlcmVuY2VUaW1lKElTTzg2MDE6OlBsYWluVGltZSB0aW1lMSwgSVNPODYwMTo6
UGxhaW5UaW1lIHRpbWUyKQoreworICAgIGRvdWJsZSBob3VycyA9IHN0YXRpY19jYXN0PGRvdWJs
ZT4odGltZTIuaG91cigpKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTEuaG91cigpKTsKKyAg
ICBkb3VibGUgbWludXRlcyA9IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTIubWludXRlKCkpIC0g
c3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMS5taW51dGUoKSk7CisgICAgZG91YmxlIHNlY29uZHMg
PSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUyLnNlY29uZCgpKSAtIHN0YXRpY19jYXN0PGRvdWJs
ZT4odGltZTEuc2Vjb25kKCkpOworICAgIGRvdWJsZSBtaWxsaXNlY29uZHMgPSBzdGF0aWNfY2Fz
dDxkb3VibGU+KHRpbWUyLm1pbGxpc2Vjb25kKCkpIC0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1l
MS5taWxsaXNlY29uZCgpKTsKKyAgICBkb3VibGUgbWljcm9zZWNvbmRzID0gc3RhdGljX2Nhc3Q8
ZG91YmxlPih0aW1lMi5taWNyb3NlY29uZCgpKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTEu
bWljcm9zZWNvbmQoKSk7CisgICAgZG91YmxlIG5hbm9zZWNvbmRzID0gc3RhdGljX2Nhc3Q8ZG91
YmxlPih0aW1lMi5uYW5vc2Vjb25kKCkpIC0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMS5uYW5v
c2Vjb25kKCkpOworICAgIHJldHVybiBiYWxhbmNlVGltZShob3VycywgbWludXRlcywgc2Vjb25k
cywgbWlsbGlzZWNvbmRzLCBtaWNyb3NlY29uZHMsIG5hbm9zZWNvbmRzKTsKK30KKworc3RhdGlj
IHN0ZDo6dHVwbGU8VGVtcG9yYWxVbml0LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSwgZG91
YmxlPiBleHRyYWN0RGlmZmVyZW5jZU9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpT
T2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRp
b25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBh
dXRvIHNtYWxsZXN0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCB7IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0
OjpXZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworICAgIFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1
ZV9vcihUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQpOworCisgICAgYXV0byBsYXJnZXN0ID0gdGVt
cG9yYWxMYXJnZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZ
ZWFyLCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5p
dDo6RGF5IH0sIFRlbXBvcmFsVW5pdDo6SG91cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQgPSBsYXJnZXN0LnZhbHVl
X29yKFRlbXBvcmFsVW5pdDo6SG91cik7CisKKyAgICBpZiAoc21hbGxlc3RVbml0IDwgbGFyZ2Vz
dFVuaXQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJz
bWFsbGVzdFVuaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2VzdFVuaXQiX3MpOworICAgICAg
ICByZXR1cm4geyB9OworICAgIH0KKworICAgIGF1dG8gcm91bmRpbmdNb2RlID0gaW50bE9wdGlv
bjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+
cm91bmRpbmdNb2RlLAorICAgICAgICB7IHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2VpbCB9
LCB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7ICJ0cnVuYyJfcywgUm91bmRp
bmdNb2RlOjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBh
bmQgfSB9LAorICAgICAgICAicm91bmRpbmdNb2RlIG11c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBc
ImZsb29yXCIsIFwidHJ1bmNcIiwgb3IgXCJoYWxmRXhwYW5kXCIiX3MsIFJvdW5kaW5nTW9kZTo6
VHJ1bmMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRv
IGluY3JlbWVudCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoc21hbGxlc3RVbml0KSwgZmFsc2UpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4geyBzbWFsbGVz
dFVuaXQsIGxhcmdlc3RVbml0LCByb3VuZGluZ01vZGUsIGluY3JlbWVudCB9OworfQorCitJU084
NjAxOjpEdXJhdGlvbiBUZW1wb3JhbFBsYWluVGltZTo6dW50aWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVtcG9yYWxQbGFpblRpbWUqIG90aGVyLCBKU1ZhbHVlIG9wdGlvbnNWYWx1
ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBbc21hbGxlc3RVbml0
LCBsYXJnZXN0VW5pdCwgcm91bmRpbmdNb2RlLCBpbmNyZW1lbnRdID0gZXh0cmFjdERpZmZlcmVu
Y2VPcHRpb25zKGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byByZXN1bHQgPSBkaWZmZXJlbmNlVGltZShw
bGFpblRpbWUoKSwgb3RoZXItPnBsYWluVGltZSgpKTsKKyAgICByZXN1bHQuc2V0WWVhcnMoMCk7
CisgICAgcmVzdWx0LnNldE1vbnRocygwKTsKKyAgICByZXN1bHQuc2V0V2Vla3MoMCk7CisgICAg
cmVzdWx0LnNldERheXMoMCk7CisgICAgVGVtcG9yYWxEdXJhdGlvbjo6cm91bmQocmVzdWx0LCBp
bmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlKTsKKyAgICBUZW1wb3JhbER1cmF0
aW9uOjpiYWxhbmNlKHJlc3VsdCwgbGFyZ2VzdFVuaXQpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK0lTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFsUGxhaW5UaW1lOjpzaW5jZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZW1wb3JhbFBsYWluVGltZSogb3RoZXIsIEpTVmFsdWUgb3B0
aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIFtzbWFs
bGVzdFVuaXQsIGxhcmdlc3RVbml0LCByb3VuZGluZ01vZGUsIGluY3JlbWVudF0gPSBleHRyYWN0
RGlmZmVyZW5jZU9wdGlvbnMoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IGRpZmZlcmVu
Y2VUaW1lKG90aGVyLT5wbGFpblRpbWUoKSwgcGxhaW5UaW1lKCkpOworICAgIHJlc3VsdCA9IC1y
ZXN1bHQ7CisgICAgcmVzdWx0LnNldFllYXJzKDApOworICAgIHJlc3VsdC5zZXRNb250aHMoMCk7
CisgICAgcmVzdWx0LnNldFdlZWtzKDApOworICAgIHJlc3VsdC5zZXREYXlzKDApOworICAgIFRl
bXBvcmFsRHVyYXRpb246OnJvdW5kKHJlc3VsdCwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJv
dW5kaW5nTW9kZSk7CisgICAgcmVzdWx0ID0gLXJlc3VsdDsKKyAgICByZXN1bHQuc2V0RGF5cygw
KTsKKyAgICBUZW1wb3JhbER1cmF0aW9uOjpiYWxhbmNlKHJlc3VsdCwgbGFyZ2VzdFVuaXQpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDk5NzAwMGQ4ZTA4ZDI4NDZlZjJkYzAzNjVhOTkxMzQxZjdkYzNiZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmgKQEAg
LTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSVNPODYwMS5oIgorI2luY2x1ZGUgIkxh
enlQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lIGZpbmFsIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0Owor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+Cisg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAg
ICByZXR1cm4gdm0udGVtcG9yYWxQbGFpblRpbWVTcGFjZTxtb2RlPigpOworICAgIH0KKworICAg
IHN0YXRpYyBUZW1wb3JhbFBsYWluVGltZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSVNPODYw
MTo6UGxhaW5UaW1lJiYpOworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluVGltZSogdHJ5Q3JlYXRl
SWZWYWxpZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIElTTzg2MDE6OkR1cmF0aW9uJiYp
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgVGVtcG9y
YWxQbGFpblRpbWUqIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBzdGQ6Om9wdGlvbmFs
PFRlbXBvcmFsT3ZlcmZsb3c+KTsKKyAgICBzdGF0aWMgaW50MzJfdCBjb21wYXJlKFRlbXBvcmFs
UGxhaW5UaW1lKiwgVGVtcG9yYWxQbGFpblRpbWUqKTsKKworICAgIFRlbXBvcmFsQ2FsZW5kYXIq
IGNhbGVuZGFyKCkgeyByZXR1cm4gbV9jYWxlbmRhci5nZXQodGhpcyk7IH0KKyAgICBJU084NjAx
OjpQbGFpblRpbWUgcGxhaW5UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGFpblRpbWU7IH0KKwor
I2RlZmluZSBKU0NfREVGSU5FX1RFTVBPUkFMX1BMQUlOX1RJTUVfRklFTEQobmFtZSwgY2FwaXRh
bGl6ZWROYW1lKSBcCisgICAgdW5zaWduZWQgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5U
aW1lLm5hbWUoKTsgfQorICAgIEpTQ19URU1QT1JBTF9QTEFJTl9USU1FX1VOSVRTKEpTQ19ERUZJ
TkVfVEVNUE9SQUxfUExBSU5fVElNRV9GSUVMRCk7CisjdW5kZWYgSlNDX0RFRklORV9URU1QT1JB
TF9QTEFJTl9USU1FX0ZJRUxECisKKyAgICBJU084NjAxOjpQbGFpblRpbWUgd2l0aChKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0KiB0ZW1wb3JhbFRpbWVMaWtlLCBKU1ZhbHVlIG9wdGlvbnMpIGNv
bnN0OworICAgIElTTzg2MDE6OlBsYWluVGltZSBhZGQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KSBjb25zdDsKKyAgICBJU084NjAxOjpQbGFpblRpbWUgc3VidHJhY3QoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKSBjb25zdDsKKyAgICBJU084NjAxOjpQbGFpblRpbWUgcm91bmQoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgU3RyaW5nIHRvU3RyaW5n
KHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uID0geyBQcmVjaXNpb246
OkF1dG8sIDAgfSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBJU084NjAxOjp0ZW1wb3Jh
bFRpbWVUb1N0cmluZyhtX3BsYWluVGltZSwgcHJlY2lzaW9uKTsKKyAgICB9CisKKyAgICBJU084
NjAxOjpEdXJhdGlvbiB1bnRpbChKU0dsb2JhbE9iamVjdCosIFRlbXBvcmFsUGxhaW5UaW1lKiwg
SlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBJU084NjAxOjpEdXJhdGlvbiBzaW5jZShKU0ds
b2JhbE9iamVjdCosIFRlbXBvcmFsUGxhaW5UaW1lKiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsK
KworICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxQ
bGFpblRpbWUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpQbGFpblRpbWUmJik7CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJU084NjAxOjpQbGFpblRpbWU+IHBhcnNl
KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICBzdGF0aWMgSVNPODYw
MTo6UGxhaW5UaW1lIGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOworCisg
ICAgVGVtcG9yYWxVbml0IGxhcmdlc3RTdWJwbGFpblRpbWUoKSBjb25zdDsKKworICAgIElTTzg2
MDE6OlBsYWluVGltZSBtX3BsYWluVGltZTsKKyAgICBMYXp5UHJvcGVydHk8VGVtcG9yYWxQbGFp
blRpbWUsIFRlbXBvcmFsQ2FsZW5kYXI+IG1fY2FsZW5kYXI7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
UGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY0NjkwOTg2OTUy
MmZkMTgxOGRjY2I1ZWRkOGFjNGQwZDNlMWZlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCkBA
IC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJUZW1w
b3JhbFBsYWluVGltZS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVD
VElCTEUoVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jRnJvbSk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVj
dG9yRnVuY0NvbXBhcmUpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBv
cmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNf
aW5mbywgJnRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JUYWJsZSwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKSB9OworCisvKiBTb3Vy
Y2UgZm9yIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiB0ZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yVGFibGUKKyAgZnJvbSAgICAgICAgICAgICB0ZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yRnVuY0Zyb20gICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQorICBjb21wYXJlICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jQ29t
cGFyZSAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCitAZW5kCisqLworCitUZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yKiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUq
IHBsYWluVGltZVByb3RvdHlwZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I+KHZtLmhlYXAp
KSBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0
cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcGxhaW5UaW1lUHJvdG90eXBlKTsKKyAgICByZXR1
cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oY2FsbFRlbXBvcmFsUGxhaW5UaW1lKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsUGxhaW5UaW1lKTsKKworVGVtcG9yYWxQbGFpblRp
bWVDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsVGVtcG9yYWxQ
bGFpblRpbWUsIGNvbnN0cnVjdFRlbXBvcmFsUGxhaW5UaW1lKQoreworfQorCit2b2lkIFRlbXBv
cmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGUqIHBsYWluVGltZVByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgMCwgIlBsYWluVGltZSJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwbGFpblRpbWVQcm90b3R5cGUsIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwbGFpblRpbWVQcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxQ
bGFpblRpbWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQg
PSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJVQ1RVUkUodm0sIHBsYWluVGltZVN0cnVjdHVyZSwg
bmV3VGFyZ2V0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiB7IH07Cisg
ICAgYXV0byBjb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50
KCksIG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0cyk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgdW5zaWduZWQgZHVyYXRpb25JbmRleCA9
IGkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVGVtcG9yYWxVbml0OjpIb3VyKTsKKyAgICAgICAg
ZHVyYXRpb25bZHVyYXRpb25JbmRleF0gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
LnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGR1cmF0aW9u
W2R1cmF0aW9uSW5kZXhdKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lIHByb3BlcnRpZXMgbXVzdCBi
ZSBmaW5pdGUiX3MpOworICAgIH0KKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgV1RGTW92ZShkdXJhdGlvbikpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihjYWxsVGVtcG9yYWxQbGFpblRpbWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQbGFpblRpbWUiKSk7Cit9CisKKy8vIGh0
dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5m
cm9tCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ckZ1bmNGcm9tLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9
IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgx
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFRlbXBvcmFs
T3ZlcmZsb3cgb3ZlcmZsb3cgPSB0b1RlbXBvcmFsT3ZlcmZsb3coZ2xvYmFsT2JqZWN0LCBvcHRp
b25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1
ZSBpdGVtVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworCisgICAgaWYgKGl0ZW1WYWx1
ZS5pbmhlcml0czxUZW1wb3JhbFBsYWluVGltZT4odm0pKQorICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBqc0Nhc3Q8VGVtcG9yYWxQbGFp
blRpbWUqPihpdGVtVmFsdWUpLT5wbGFpblRpbWUoKSkpKTsKKworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKGdsb2Jh
bE9iamVjdCwgaXRlbVZhbHVlLCBvdmVyZmxvdykpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLmNvbXBhcmUKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yRnVuY0NvbXBh
cmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIG9uZSA9IFRlbXBvcmFsUGxhaW5U
aW1lOjpmcm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc3RkOjpudWxs
b3B0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byog
dHdvID0gVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpLCBzdGQ6Om51bGxvcHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKFRlbXBvcmFsUGxh
aW5UaW1lOjpjb21wYXJlKG9uZSwgdHdvKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxh
aW5UaW1lQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmE5MzY1ZTE1MGQ1Mzk4NjVhZjVlZjMy
MzE2MWNlYmRjMWYwNWY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOworCitjbGFzcyBUZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVi
bGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0aW9uOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhh
c1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRpbWVDb25z
dHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAg
IFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUqKTsKK307CitT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM2MGY3NDVmMmE3MDJkNzgwNTNjYjIzYzJjMDZm
NGU2Njg4ODE3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDM4OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgorCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZUZ1bmNBZGQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jU3VidHJhY3QpOworc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jV2l0
aCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZUZ1bmNVbnRpbCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNTaW5jZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNSb3VuZCk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNF
cXVhbHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGVGdW5jR2V0SVNPRmllbGRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1Rv
SlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNWYWx1ZU9mKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVy
SG91cik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZUdldHRlck1pbnV0ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlclNlY29uZCk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbGxp
c2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJOYW5vc2Vjb25kKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
R2V0dGVyQ2FsZW5kYXIpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVtcG9yYWwuUGxhaW5UaW1lIiwgJkJh
c2U6OnNfaW5mbywgJnBsYWluVGltZVByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9y
IFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gcGxhaW5UaW1lUHJvdG90
eXBlVGFibGUKKyAgYWRkICAgICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1
bmNBZGQgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzdWJ0cmFjdCAgICAg
ICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1N1YnRyYWN0ICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgIHdpdGggICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGVGdW5jV2l0aCAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdW50aWwg
ICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNVbnRpbCAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzaW5jZSAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1NpbmNlICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisg
IHJvdW5kICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jUm91bmQgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZXF1YWxzICAgICAgICAgICB0ZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZUZ1bmNFcXVhbHMgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQorICBnZXRJU09GaWVsZHMgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0dl
dElTT0ZpZWxkcyAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHRvU3RyaW5nICAgICAgICAg
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDAKKyAgdG9KU09OICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZUZ1bmNUb0pTT04gICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b0xvY2FsZVN0
cmluZyAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvTG9jYWxlU3RyaW5nICAgICBE
b250RW51bXxGdW5jdGlvbiAwCisgIHZhbHVlT2YgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGVGdW5jVmFsdWVPZiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgaG91
ciAgICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlckhvdXIgICAgICAg
ICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgbWludXRlICAgICAgICAg
ICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbnV0ZSAgICAgICAgICAgRG9udEVu
dW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgc2Vjb25kICAgICAgICAgICB0ZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZUdldHRlclNlY29uZCAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8
Q3VzdG9tQWNjZXNzb3IKKyAgbWlsbGlzZWNvbmQgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZUdldHRlck1pbGxpc2Vjb25kICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNz
b3IKKyAgbWljcm9zZWNvbmQgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1p
Y3Jvc2Vjb25kICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgbmFub3Nl
Y29uZCAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck5hbm9zZWNvbmQgICAg
ICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgY2FsZW5kYXIgICAgICAgICB0
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlckNhbGVuZGFyICAgICAgICAgRG9udEVudW18
UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKK0BlbmQKKyovCisKK1RlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlKiBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0
byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGU+KHZtLmhlYXApKSBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3Qp
OworICAgIHJldHVybiBwcm90b3R5cGU7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6
OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQor
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFp
bnRpbWUucHJvdG90eXBlLmFkZAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlRnVuY0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byog
cGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5w
cm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsK
KworICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT5hZGQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsK
K30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwu
cGxhaW50aW1lLnByb3RvdHlwZS5zdWJ0cmFjdAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1N1YnRyYWN0LCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1l
Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuUGxhaW5UaW1lLnByb3RvdHlwZS5zdWJ0cmFjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHBsYWluVGltZS0+c3VidHJh
Y3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1w
b3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVy
ZSgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS53aXRoCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jV2l0aCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxU
ZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAo
IXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUud2l0aCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBKU1ZhbHVlIHRlbXBvcmFsVGlt
ZUxpa2UgID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXRlbXBvcmFsVGltZUxp
a2UuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5
cGUud2l0aCBtdXN0IGJlIGFuIG9iamVjdCJfcyk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHBsYWlu
VGltZS0+d2l0aChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHRlbXBvcmFsVGltZUxpa2UpLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkp
KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwucGxhaW50aW1lLnByb3RvdHlwZS51bnRpbAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1VudGlsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwu
UGxhaW5UaW1lLnByb3RvdHlwZS51bnRpbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBs
YWluVGltZSJfcyk7CisKKyAgICBhdXRvKiBvdGhlciA9IFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9t
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc3RkOjpudWxsb3B0KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byByZXN1bHQgPSBw
bGFpblRpbWUtPnVudGlsKGdsb2JhbE9iamVjdCwgb3RoZXIsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKHJlc3VsdCksIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUo
KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1w
b3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLnNpbmNlCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jU2luY2UsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5QbGFpblRpbWUucHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEg
cGxhaW5UaW1lIl9zKTsKKworICAgIGF1dG8qIG90aGVyID0gVGVtcG9yYWxQbGFpblRpbWU6OmZy
b20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51bGxvcHQpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHJlc3VsdCA9
IHBsYWluVGltZS0+c2luY2UoZ2xvYmFsT2JqZWN0LCBvdGhlciwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9i
YWxPYmplY3QsIFdURk1vdmUocmVzdWx0KSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVy
ZSgpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRl
bXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUucm91bmQKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGlt
ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLlBsYWluVGltZS5wcm90b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBwbGFpblRpbWUiX3MpOworCisgICAgYXV0byBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKKyAgICBpZiAob3B0aW9ucy5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS5yb3VuZCByZXF1aXJlcyBhbiBvcHRpb25zIGFyZ3VtZW50Il9zKTsKKworICAgIGF1
dG8gcm91bmRlZCA9IHBsYWluVGltZS0+cm91bmQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWlu
VGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJvdW5kZWQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUu
ZXF1YWxzCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVGdW5jRXF1YWxzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUg
PSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5l
cXVhbHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAg
YXV0byogb3RoZXIgPSBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCksIHN0ZDo6bnVsbG9wdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHBs
YWluVGltZS0+cGxhaW5UaW1lKCkgPT0gb3RoZXItPnBsYWluVGltZSgpKSk7Cit9CisKKy8vIGh0
dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5w
cm90b3R5cGUuZ2V0aXNvZmllbGRzCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGVGdW5jR2V0SVNPRmllbGRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwu
UGxhaW5UaW1lLnByb3RvdHlwZS5lcXVhbHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBw
bGFpblRpbWUiX3MpOworCisgICAgSlNPYmplY3QqIGZpZWxkcyA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgZmllbGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNhbGVuZGFyLCBwbGFpblRpbWUtPmNhbGVuZGFyKCkpOworICAgIGZpZWxkcy0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc29Ib3VyLCBqc051bWJlcihwbGFpblRpbWUt
PmhvdXIoKSkpOworICAgIGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5p
c29NaWNyb3NlY29uZCwganNOdW1iZXIocGxhaW5UaW1lLT5taWNyb3NlY29uZCgpKSk7CisgICAg
ZmllbGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzb01pbGxpc2Vjb25kLCBq
c051bWJlcihwbGFpblRpbWUtPm1pbGxpc2Vjb25kKCkpKTsKKyAgICBmaWVsZHMtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNvTWludXRlLCBqc051bWJlcihwbGFpblRpbWUtPm1p
bnV0ZSgpKSk7CisgICAgZmllbGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlz
b05hbm9zZWNvbmQsIGpzTnVtYmVyKHBsYWluVGltZS0+bmFub3NlY29uZCgpKSk7CisgICAgZmll
bGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzb1NlY29uZCwganNOdW1iZXIo
cGxhaW5UaW1lLT5zZWNvbmQoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZmllbGRz
KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwucGxhaW50aW1lLnByb3RvdHlwZS50b3N0cmluZworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5U
aW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcGxhaW5UaW1lLT50b1N0cmluZyhnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLnRvanNv
bgorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVu
Y1RvSlNPTiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudG9KU09O
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHBsYWluVGltZS0+dG9TdHJpbmcoKSkpOwor
fQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5w
bGFpbnRpbWUucHJvdG90eXBlLnRvbG9jYWxlc3RyaW5nCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFp
blRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcodm0sIHBsYWluVGltZS0+dG9TdHJpbmcoKSkpOworfQorCisvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUu
cHJvdG90eXBlLnZhbHVlb2YKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZUZ1bmNWYWx1ZU9mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90
eXBlLnZhbHVlT2YgbXVzdCBub3QgYmUgY2FsbGVkLiBUbyBjb21wYXJlIFBsYWluVGltZSB2YWx1
ZXMsIHVzZSBUZW1wb3JhbC5QbGFpblRpbWUuY29tcGFyZSJfcyk7Cit9CisKK0pTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlckhvdXIsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9
IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlw
ZS5ob3VyIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5ob3VyKCkpKTsKK30K
KworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0
dGVyTWludXRlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBs
YWluVGltZS5wcm90b3R5cGUubWludXRlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxh
aW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5U
aW1lLT5taW51dGUoKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGVHZXR0ZXJTZWNvbmQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICgh
cGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5zZWNvbmQgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihwbGFpblRpbWUtPnNlY29uZCgpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbGxpc2Vjb25kLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRp
bWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90
b3R5cGUubWlsbGlzZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUi
X3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm1p
bGxpc2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
ICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWNyb3NlY29uZCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+bWljcm9zZWNvbmQoKSkpOworfQorCitK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJO
YW5vc2Vjb25kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBs
YWluVGltZS5wcm90b3R5cGUubmFub3NlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBs
YWluVGltZS0+bmFub3NlY29uZCgpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlckNhbGVuZGFyLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
KyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuY2FsZW5kYXIg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShwbGFpblRpbWUtPmNhbGVuZGFyKCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlYTIyOWE3YmQ1MTk0YmI0
NjE2ZmE0NzJjMmZhZDYxNGQzYWU1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUsIEJhc2UpOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6Cisg
ICAgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxUaW1lWm9uZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRp
bWVab25lLmNwcAppbmRleCA5Nzg0YzNkMTc0OTk2OTE1MGIzZWQ2ZTY4NmQ1Y2E4OTY5ZTJiMmQy
Li43NjU5YjA1ODJjY2QyOTVlOGQxYmE1ZjM4ZWViZDQxNDcxODYxNzJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmNwcApAQCAtNTcs
MTcgKzU3LDYgQEAgVGVtcG9yYWxUaW1lWm9uZTo6VGVtcG9yYWxUaW1lWm9uZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBUaW1lWm9uZSB0aW1lWm8KIHsKIH0KIAotLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzdXAtaXN2YWxpZHRpbWV6b25lbmFtZQotc3RkOjpv
cHRpb25hbDxUaW1lWm9uZUlEPiBUZW1wb3JhbFRpbWVab25lOjppZEZvclRpbWVab25lTmFtZShT
dHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBjb25zdCBhdXRvJiB0aW1lWm9uZXMgPSBpbnRsQXZh
aWxhYmxlVGltZVpvbmVzKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwg
dGltZVpvbmVzLnNpemUoKTsgKytpbmRleCkgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZSh0aW1lWm9uZXNbaW5kZXhdLCBzdHJpbmcpKQotICAgICAgICAgICAgcmV0dXJuIGlu
ZGV4OwotICAgIH0KLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCiAvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1wYXJzZXRlbXBvcmFsdGltZVpv
bmVzdHJpbmcKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGVtcG9yYWxUaW1l
Wm9uZVN0cmluZyhTdHJpbmdWaWV3KQogewpAQCAtMTEwLDcgKzk5LDcgQEAgSlNPYmplY3QqIFRl
bXBvcmFsVGltZVpvbmU6OmZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB0aW1lWm9uZUwKICAgICBpZiAodXRjT2Zmc2V0KQogICAgICAgICByZXR1cm4gVGVtcG9yYWxU
aW1lWm9uZTo6Y3JlYXRlRnJvbVVUQ09mZnNldCh2bSwgZ2xvYmFsT2JqZWN0LT50aW1lWm9uZVN0
cnVjdHVyZSgpLCB1dGNPZmZzZXQudmFsdWUoKSk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFRpbWVa
b25lSUQ+IGlkZW50aWZpZXIgPSBpZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7Cisg
ICAgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZGVudGlmaWVyID0gSVNPODYwMTo6aWRGb3JU
aW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcpOwogICAgIGlmIChpZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbUlEKHZtLCBnbG9iYWxPYmplY3Qt
PnRpbWVab25lU3RydWN0dXJlKCksIGlkZW50aWZpZXIudmFsdWUoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaAppbmRleCBiYzI4MTUz
YjdmZDI1YmI3NjVlMjUwNmZkOTZmYTc2YjVlNTEwYWRiLi5lNTc5ZWEzYTYzZjYyMWZkZjQzMjYx
MTMyOTc0OWJmM2M0NzQ2YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFRpbWVab25lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiSVNPODYwMS5oIgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CkBAIC00NywxMCArNDgsOSBA
QCBjbGFzcyBUZW1wb3JhbFRpbWVab25lIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgdXNpbmcgVGltZVpvbmUgPSBWYXJpYW50PFRp
bWVab25lSUQsIGludDY0X3Q+OwotICAgIFRpbWVab25lIHRpbWVab25lKCkgY29uc3QgeyByZXR1
cm4gbV90aW1lWm9uZTsgfQorICAgIHVzaW5nIFRpbWVab25lID0gSVNPODYwMTo6VGltZVpvbmU7
CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZEZvclRpbWVab25lTmFt
ZShTdHJpbmdWaWV3KTsKKyAgICBUaW1lWm9uZSB0aW1lWm9uZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGltZVpvbmU7IH0KIAogICAgIHN0YXRpYyBKU09iamVjdCogZnJvbShKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcAppbmRleCA5OTMzNjVhYjMzMmY4
ZmZhZDg3NTg4MDAwODEwY2QzMGVkZGE2MWQ3Li42ZDIzZThmMDU5ZGM3OWJjZmEyOWQ5YzY1YTA1
ZWVlODNiM2E1Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAKQEAgLTc0LDYgKzc0LDcg
QEAgdm9pZCBUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgVGVtcG9yYWxUaW1lWm9uZVByb3RvdHkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgMCwgIlRpbWVab25lIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVy
ZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICB0ZW1wb3JhbFRpbWVab25lUHJvdG90eXBl
LT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFs
VGltZVpvbmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC05Miw3ICs5Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1
Y3RUZW1wb3JhbFRpbWVab25lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgaWYg
KHV0Y09mZnNldCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFRpbWVa
b25lOjpjcmVhdGVGcm9tVVRDT2Zmc2V0KHZtLCBzdHJ1Y3R1cmUsIHV0Y09mZnNldC52YWx1ZSgp
KSk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkZW50aWZpZXIgPSBUZW1wb3Jh
bFRpbWVab25lOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7CisgICAgc3RkOjpv
cHRpb25hbDxUaW1lWm9uZUlEPiBpZGVudGlmaWVyID0gSVNPODYwMTo6aWRGb3JUaW1lWm9uZU5h
bWUodGltZVpvbmVTdHJpbmcpOwogICAgIGlmICghaWRlbnRpZmllcikgewogICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIFVU
QyBvZmZzZXQgc3RyaW5nIG9yIFRpbWVab25lIGlkZW50aWZpZXIiX3MpOwogICAgICAgICByZXR1
cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDAyZjE4OTdiMGYz
OTE4NTYwYjUwNTMxOWQ2ZTQ2MWJkYjVkNzEwZGQuLjE1ZGRiMmFmYWU1MjM3NzdhZTkwNjZiMzFi
MGQ3MTA1NDZiN2Q4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTE2
NCw2ICsxNjQsNyBAQAogI2luY2x1ZGUgIlN5bWJvbE9iamVjdC5oIgogI2luY2x1ZGUgIlRlbXBv
cmFsQ2FsZW5kYXIuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxQbGFpblRpbWUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAjaW5j
bHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCkBA
IC0xNTg4LDYgKzE1ODksOCBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coc3ltYm9sU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cAogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBTeW1ib2xPYmplY3QpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxDYWxlbmRhcikKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbER1cmF0aW9uU3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsRHVyYXRpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxQbGFpblRpbWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgVGVtcG9yYWxQbGFpblRpbWUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBUZW1wb3JhbFRpbWVab25lKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHVpbnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50OEFycmF5
KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFy
cmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhDbGFtcGVkQXJyYXkpCkBA
IC0xNjIyLDcgKzE2MjUsNiBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRsUmVsYXRpdgogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSwgaW50
bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21lbnRJdGVyYXRvcikK
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudGVyU3Bh
Y2UsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxTZWdtZW50ZXIpCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRzU3BhY2UsIGlu
dGxTZWdtZW50c0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21lbnRzKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxEdXJhdGlvbikKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNUb1dhc21JQ0Nh
bGxlZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1RvV2FzbUlDQ2FsbGVlKQogRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2Nr
U3BhY2UsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCmluZGV4IDFlNzI1Y2UzNzQ4NzNlMDA3ZDFiMDNmNTQ5NTZjNTAyMzA0YzZiMzcuLjdhNThi
Mjc5ZTY3MGE4NDAzZDFmMzk0MTIzNTdkNWU3NzExM2Y1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaApAQCAtMTk1LDYgKzE5NSw3IEBAIGNsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazsKIGNsYXNzIFZpcnR1YWxSZWdpc3RlcjsKIGNsYXNzIFZNRW50cnlTY29wZTsK
IGNsYXNzIFRlbXBvcmFsQ2FsZW5kYXI7CitjbGFzcyBUZW1wb3JhbFBsYWluVGltZTsKIGNsYXNz
IFRlbXBvcmFsVGltZVpvbmU7CiBjbGFzcyBUb3BMZXZlbEdsb2JhbE9iamVjdFNjb3BlOwogY2xh
c3MgVHlwZVByb2ZpbGVyOwpAQCAtNTk1LDYgKzU5Niw4IEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xPYmplY3RTcGFj
ZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
dGVtcG9yYWxDYWxlbmRhclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIodGVtcG9yYWxEdXJhdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIodGVtcG9yYWxQbGFpblRpbWVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsVGltZVpvbmVTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4QXJyYXlTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UpCkBAIC02MjAs
NyArNjIzLDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBw
dWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50ZXJTcGFjZSkKICAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50c1NwYWNlKQotICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxEdXJhdGlvblNwYWNlKQogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nUGFyc2luZ0J1ZmZlci5oCmluZGV4IGYwYTg0Zjc1N2UzZWZlN2IwYTdkYWNhZWYwNTZm
YmI4YWI5NDI1NDcuLjUyYTliYWRiZTA3M2NjNTYwNDVlNDZiM2U5OWRiMDI3N2FhYjFlMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oCkBAIC02MSw5ICs2MSw5
IEBAIGNsYXNzIFN0cmluZ1BhcnNpbmdCdWZmZXIgZmluYWwgewogCiAgICAgY29uc3RleHByIHVu
c2lnbmVkIGxlbmd0aFJlbWFpbmluZygpIGNvbnN0IHsgcmV0dXJuIG1fZW5kIC0gbV9wb3NpdGlv
bjsgfQogCi0gICAgU3RyaW5nVmlldyBzdHJpbmdWaWV3T2ZDaGFyYWN0ZXJzUmVtYWluaW5nKCkg
eyByZXR1cm4geyBtX3Bvc2l0aW9uLCBsZW5ndGhSZW1haW5pbmcoKSB9OyB9CisgICAgU3RyaW5n
VmlldyBzdHJpbmdWaWV3T2ZDaGFyYWN0ZXJzUmVtYWluaW5nKCkgY29uc3QgeyByZXR1cm4geyBt
X3Bvc2l0aW9uLCBsZW5ndGhSZW1haW5pbmcoKSB9OyB9CiAKLSAgICBDaGFyYWN0ZXJUeXBlIG9w
ZXJhdG9yW10odW5zaWduZWQgaSkKKyAgICBDaGFyYWN0ZXJUeXBlIG9wZXJhdG9yW10odW5zaWdu
ZWQgaSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpIDwgbGVuZ3RoUmVtYWluaW5nKCkp
OwogICAgICAgICByZXR1cm4gbV9wb3NpdGlvbltpXTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzIyMzY2YTg2ODM0NTZmMGE0YjFkYTc4
ZjliOTI2MTdlYjAwMWUyNi4uMDM4OWFmM2I1YmMyYTE1YWM3NzJmNGExZmM0MGIyODgyNTllMzEw
MiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNiBAQAorMjAyMS0wOS0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5QbGFpblRpbWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTg5MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3Rl
bXBvcmFsLWNhbGVuZGFyLmpzOgorICAgICAgICAqIHN0cmVzcy90ZW1wb3JhbC1kdXJhdGlvbi5q
czoKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtcGxhaW50aW1lLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZEJl
LlN0cmluZy5UZW1wb3JhbC5QbGFpblRpbWUuZnJvbSk6CisgICAgICAgIChsZXQudGltZS5UZW1w
b3JhbC5QbGFpblRpbWUuZnJvbS5zaG91bGRCZSk6CisgICAgICAgIChsZXQudGV4dC5vZi5mYWls
dXJlcy5zaG91bGRUaHJvdyk6CisgICAgICAgIChwcmludCk6CisgICAgICAgIChzaG91bGRCZS5U
ZW1wb3JhbC5QbGFpblRpbWUuZnJvbSk6CisgICAgICAgIChuZXcuVGVtcG9yYWwuUGxhaW5UaW1l
LnZhbHVlT2YpOgorICAgICAgICAoc2hvdWxkQmUuU3RyaW5nLnRpbWUudW50aWwuVGVtcG9yYWwu
UGxhaW5UaW1lLmZyb20pOgorICAgICAgICAqIHN0cmVzcy90ZW1wb3JhbC10aW1lem9uZS5qczoK
KyAgICAgICAgKGxldC50ZXh0Lm9mLmZhaWx1cmVzLnNob3VsZFRocm93KTogRGVsZXRlZC4KKyAg
ICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTA5LTAzICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gTWFrZSBFbnVtZXJhdG9yTmV4
dFVwZGF0ZUluZGV4QW5kTW9kZSBjbG9iYmVyaXppbmcgcnVsZSBwcmVjaXNlCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1jYWxlbmRhci5qcyBiL0pTVGVzdHMvc3RyZXNzL3Rl
bXBvcmFsLWNhbGVuZGFyLmpzCmluZGV4IGVmMGFjMTExYTViOGI3M2MzYTAxNzVkYWE3NzkzNmMw
ODlhZmNmNDQuLjM1MDk3MWNlM2NhMGNkMTM5NTE5Njk4ODRiZDQ1YjE2YjE5Y2IzOWQgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzCkBAIC0xOCw2ICsxOCwxMyBAQCBmdW5jdGlvbiBz
aG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKICAgICAgICAgc2hvdWxkQmUo
U3RyaW5nKGVycm9yKSwgbWVzc2FnZSk7CiB9CiAKK3Nob3VsZEJlKFRlbXBvcmFsLkNhbGVuZGFy
IGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworc2hvdWxkQmUoVGVtcG9yYWwuQ2FsZW5kYXIu
bGVuZ3RoLCAwKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVt
cG9yYWwuQ2FsZW5kYXIsICdwcm90b3R5cGUnKS53cml0YWJsZSwgZmFsc2UpOworc2hvdWxkQmUo
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5DYWxlbmRhciwgJ3Byb3Rv
dHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoVGVtcG9yYWwuQ2FsZW5kYXIsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUs
IGZhbHNlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLkNhbGVuZGFyLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciwgVGVtcG9yYWwuQ2FsZW5kYXIpOworCiB7CiAgICAgbGV0IGNhbGVuZGFyID0gbmV3IFRlbXBv
cmFsLkNhbGVuZGFyKCJpc284NjAxIik7CiAgICAgc2hvdWxkQmUoY2FsZW5kYXIuaWQsIGBpc284
NjAxYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1kdXJhdGlvbi5qcyBi
L0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWR1cmF0aW9uLmpzCmluZGV4IGY2NTIyNzBhMDgyOGVm
NGY5OWY5NGI0YzM2NWJiN2M4ZWM4MTM4OTcuLmYyNzk3ODFmYWM2NWM3OWQ5MGE3N2RlMjQyYWMx
YzBmY2IwMDk2MmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWR1cmF0aW9u
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWR1cmF0aW9uLmpzCkBAIC0yNyw2ICsy
Nyw3IEBAIGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgewogc2hvdWxkQmUo
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5EdXJhdGlvbiwgJ3Byb3Rv
dHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKIHNob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoVGVtcG9yYWwuRHVyYXRpb24sICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUs
IGZhbHNlKTsKIHNob3VsZFRocm93KCgpID0+IFRlbXBvcmFsLkR1cmF0aW9uKCksIFR5cGVFcnJv
cik7CitzaG91bGRCZShUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3IsIFRl
bXBvcmFsLkR1cmF0aW9uKTsKIAogc2hvdWxkQmUobmV3IFRlbXBvcmFsLkR1cmF0aW9uKCkgaW5z
dGFuY2VvZiBUZW1wb3JhbC5EdXJhdGlvbiwgdHJ1ZSk7CiB7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy90ZW1wb3JhbC1wbGFpbnRpbWUuanMgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1w
bGFpbnRpbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc5OGRhODRlNjMwZWVhMDU0NzkzOWU1MGQ5ZTlmNDY4
Y2IxNjgzMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXBsYWlu
dGltZS5qcwpAQCAtMCwwICsxLDM1NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVRlbXBv
cmFsPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQg
JHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhy
b3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAgaWYg
KG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVycm9yKSwg
bWVzc2FnZSk7Cit9CisKK3Nob3VsZEJlKFRlbXBvcmFsLlBsYWluVGltZSBpbnN0YW5jZW9mIEZ1
bmN0aW9uLCB0cnVlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLlBsYWluVGltZS5sZW5ndGgsIDApOwor
c2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5QbGFpblRp
bWUsICdwcm90b3R5cGUnKS53cml0YWJsZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5QbGFpblRpbWUsICdwcm90b3R5cGUnKS5lbnVt
ZXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KFRlbXBvcmFsLlBsYWluVGltZSwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSwgZmFsc2UpOwor
c2hvdWxkQmUoVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgVGVtcG9y
YWwuUGxhaW5UaW1lKTsKKworeworICAgIGxldCB0aW1lID0gbmV3IFRlbXBvcmFsLlBsYWluVGlt
ZSgwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAw
MDowMTowMi4wMDMwMDQwMDVgKTsKKyAgICBzaG91bGRCZSh0aW1lLmhvdXIsIDApOworICAgIHNo
b3VsZEJlKHRpbWUubWludXRlLCAxKTsKKyAgICBzaG91bGRCZSh0aW1lLnNlY29uZCwgMik7Cisg
ICAgc2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwgMyk7CisgICAgc2hvdWxkQmUodGltZS5taWNy
b3NlY29uZCwgNCk7CisgICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCA1KTsKK30KKworewor
ICAgIGxldCB0aW1lID0gbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCAwKTsK
KyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAwMDowMDowMGApOworICAgIHNob3VsZEJlKHRp
bWUuaG91ciwgMCk7CisgICAgc2hvdWxkQmUodGltZS5taW51dGUsIDApOworICAgIHNob3VsZEJl
KHRpbWUuc2Vjb25kLCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCAwKTsKKyAg
ICBzaG91bGRCZSh0aW1lLm1pY3Jvc2Vjb25kLCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLm5hbm9z
ZWNvbmQsIDApOworfQorCit7CisgICAgbGV0IHRpbWUgPSBuZXcgVGVtcG9yYWwuUGxhaW5UaW1l
KDIzLCA1OSwgNTksIDk5OSwgOTk5LCA5OTkpOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lKSwg
YDIzOjU5OjU5Ljk5OTk5OTk5OWApOworICAgIHNob3VsZEJlKHRpbWUuaG91ciwgMjMpOworICAg
IHNob3VsZEJlKHRpbWUubWludXRlLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5zZWNvbmQsIDU5
KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJlKHRp
bWUubWljcm9zZWNvbmQsIDk5OSk7CisgICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCA5OTkp
OworfQorCit7CisgICAgbGV0IHRpbWUgPSBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDIzLCA1OSwg
NTksIDk5OSwgOTk5LCA5OTkpOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lKSwgYDIzOjU5OjU5
Ljk5OTk5OTk5OWApOworICAgIHNob3VsZEJlKHRpbWUuaG91ciwgMjMpOworICAgIHNob3VsZEJl
KHRpbWUubWludXRlLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5zZWNvbmQsIDU5KTsKKyAgICBz
aG91bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJlKHRpbWUubWljcm9z
ZWNvbmQsIDk5OSk7CisgICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCA5OTkpOworfQorCit7
CisgICAgLy8gV2UgYWNjZXB0IDYwIHNlY29uZHMsIGJ1dCBpbnRlcnByZXQgaXQgYXMgNTkgc2Vj
b25kcy4KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1w
b3JhbC1wYXJzZWlzb2RhdGV0aW1lIHN0ZXAgMTMKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBs
YWluVGltZS5mcm9tKCIyMzo1OTo2MC45OTk5OTk5OTkiKTsKKyAgICBzaG91bGRCZShTdHJpbmco
dGltZSksIGAyMzo1OTo1OS45OTk5OTk5OTlgKTsKKyAgICBzaG91bGRCZSh0aW1lLmhvdXIsIDIz
KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgNTkpOworICAgIHNob3VsZEJlKHRpbWUuc2Vj
b25kLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwgOTk5KTsKKyAgICBzaG91
bGRCZSh0aW1lLm1pY3Jvc2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJlKHRpbWUubmFub3NlY29u
ZCwgOTk5KTsKK30KKworeworICAgIC8vIFdlIGFjY2VwdCA2MCBzZWNvbmRzLCBidXQgaW50ZXJw
cmV0IGl0IGFzIDU5IHNlY29uZHMuCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRl
bXBvcmFsLyNzZWMtdGVtcG9yYWwtcGFyc2Vpc29kYXRldGltZSBzdGVwIDEzCisgICAgbGV0IHRp
bWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgiMjAyMS0wOS0wNFQyMzoxNDoyNi4xMDAyMDAz
MDAiKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAyMzoxNDoyNi4xMDAyMDAzYCk7Cisg
ICAgc2hvdWxkQmUodGltZS5ob3VyLCAyMyk7CisgICAgc2hvdWxkQmUodGltZS5taW51dGUsIDE0
KTsKKyAgICBzaG91bGRCZSh0aW1lLnNlY29uZCwgMjYpOworICAgIHNob3VsZEJlKHRpbWUubWls
bGlzZWNvbmQsIDEwMCk7CisgICAgc2hvdWxkQmUodGltZS5taWNyb3NlY29uZCwgMjAwKTsKKyAg
ICBzaG91bGRCZSh0aW1lLm5hbm9zZWNvbmQsIDMwMCk7Cit9CisKK3Nob3VsZEJlKFN0cmluZyhU
ZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDMnKSksIGAwMzowMDowMGApOworc2hvdWxkQmUoU3Ry
aW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMzE0JykpLCBgMDM6MTQ6MDBgKTsKK3Nob3Vs
ZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDMxNDE1JykpLCBgMDM6MTQ6MTVg
KTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDM6MTQnKSksIGAw
MzoxNDowMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMzox
NDoxNScpKSwgYDAzOjE0OjE1YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1l
LmZyb20oJzAzOjI0OjMwJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3Jh
bC5QbGFpblRpbWUuZnJvbSgnMjAyMC0wMScpKSwgYDIwOjIwOjAwYCk7IC8vIC0wMSBVVEMgb2Zm
c2V0CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAxLTAxJykpLCBg
MDE6MDA6MDBgKTsgLy8gLTAxIFVUQyBvZmZzZXQKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5Q
bGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCcpKSwgYDAzOjI0OjMwYCk7CitzaG91
bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDd0MDM6MjQ6MzAn
KSksIGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9t
KCcxOTk1LTEyLTA3IDAzOjI0OjMwJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhU
ZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMFonKSksIGAwMzoyNDoz
MGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3
VDAzOjI0OjMwKzIwOjIwOjU5JykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1w
b3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMC0yMDoyMDo1OScpKSwgYDAz
OjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUt
MTItMDdUMDM6MjQ6MzBcdTIyMTIyMDoyMDo1OScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShT
dHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMTAnKSks
IGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcx
OTk1LTEyLTA3VDAzOjI0OjMwKzEwMjAnKSksIGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5n
KFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzEwMjAzMCcpKSwg
YDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5
OTUtMTItMDdUMDM6MjQ6MzArMTA6MjA6MzAuMDUnKSksIGAwMzoyNDozMGApOworc2hvdWxkQmUo
U3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzEwOjIw
OjMwLjEyMzQ1Njc4OScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwu
UGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbRXVyb3BlL0JydXNzZWxz
XScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZy
b20oJzE5OTUtMTItMDcgMDM6MjQ6MzArMDE6MDBbRXVyb3BlL0JydXNzZWxzXScpKSwgYDAzOjI0
OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTIt
MDdUMDM6MjQ6MzArMDE6MDBbVU5LTk9XTl0nKSksIGAwMzoyNDozMGApOyAvLyBUaW1lWm9uZSBl
cnJvciBzaG91bGQgYmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRp
bWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFsuaGV5XScpKSwgYDAzOjI0OjMwYCk7
IC8vIFRpbWVab25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRl
bXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW19dJykpLCBg
MDM6MjQ6MzBgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRC
ZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6
MDBbXy1dJykpLCBgMDM6MjQ6MzBgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9y
ZWQuCitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdU
MDM6MjQ6MzArMDE6MDBbXy9fXScpKSwgYDAzOjI0OjMwYCk7IC8vIFRpbWVab25lIGVycm9yIHNo
b3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9t
KCcxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW18tLi9fLS5dJykpLCBgMDM6MjQ6MzBgKTsgLy8g
VGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRCZShTdHJpbmcoVGVtcG9y
YWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbXy4uL18uLl0nKSks
IGAwMzoyNDozMGApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQgYmUgaWdub3JlZC4KK3Nob3Vs
ZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCsw
MTowMFtfLi9fLl0nKSksIGAwMzoyNDozMGApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQgYmUg
aWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0x
Mi0wN1QwMzoyNDozMCswMTowMFtFdGMvR01UKzIwXScpKSwgYDAzOjI0OjMwYCk7IC8vIFRpbWVa
b25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBs
YWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW0V0Yy9HTVQtMjBdJykpLCBg
MDM6MjQ6MzBgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRC
ZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDcgMDM6MjQ6MzArMDE6
MDBbKzAxXScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5U
aW1lLmZyb20oJzE5OTUtMTItMDcgMDM6MjQ6MzArMDE6MDBbKzAxOjAwXScpKSwgYDAzOjI0OjMw
YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDcg
MDM6MjQ6MzArMDE6MDBbKzAxOjAwOjAwXScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJp
bmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDcgMDM6MjQ6MzArMDE6MDBbKzAx
OjAwOjAwLjEyM10nKSksIGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBs
YWluVGltZS5mcm9tKCcxOTk1LTEyLTA3IDAzOjI0OjMwKzAxOjAwWyswMTowMDowMC4xMjM0NV0n
KSksIGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9t
KCcxOTk1LTEyLTA3IDAzOjI0OjMwKzAxOjAwWyswMTowMDowMC4xMjM0NTY3OF0nKSksIGAwMzoy
NDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEy
LTA3IDAzOjI0OjMwKzAxOjAwWyswMTowMDowMC4xMjM0NTY3ODldJykpLCBgMDM6MjQ6MzBgKTsK
K3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wNyAwMzoy
NDozMCswMTowMFstMDE6MDBdJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1w
b3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wNyAwMzoyNDozMCswMTowMFtcdTIyMTIwMTow
MF0nKSksIGAwMzoyNDozMGApOworeworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1l
LmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbRXVyb3BlL0JydXNzZWxzXScpCisgICAg
c2hvdWxkQmUodGltZSA9PT0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20odGltZSksIGZhbHNlKTsK
K30KK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsKKyAgICAgIGhv
dXI6IDE5LAorICAgICAgbWludXRlOiAzOSwKKyAgICAgIHNlY29uZDogOSwKKyAgICAgIG1pbGxp
c2Vjb25kOiA2OCwKKyAgICAgIG1pY3Jvc2Vjb25kOiAzNDYsCisgICAgICBuYW5vc2Vjb25kOiAy
MDUKKyAgICB9KTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAxOTozOTowOS4wNjgzNDYy
MDVgKTsKKworICAgIC8vIFRoaXMgaXMgc3BlYyBidWcuIEN1cnJlbnRseSB0aGlzIHRocm93cyBh
biBlcnJvci4gQnV0IHBvc3NpYmx5IHRoaXMgc2hvdWxkIG5vdCB0aHJvdyBhbiBlcnJvci4KKyAg
ICAvLyBUcmFja2VkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXRlbXBvcmFs
L2lzc3Vlcy8xODAzLgorICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgVGVtcG9yYWwu
UGxhaW5UaW1lLmZyb20oeyBob3VyOiAxOSwgbWludXRlOiAzOSwgc2Vjb25kOiA5IH0pOworICAg
IH0sIFR5cGVFcnJvcik7Cit9Cit7CisgICAgLy8gRGlmZmVyZW50IG92ZXJmbG93IG1vZGVzCisg
ICAgc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsgaG91cjogMTUsIG1p
bnV0ZTogNjAsIHNlY29uZDogMCwgbWlsbGlzZWNvbmQ6IDAsIG1pY3Jvc2Vjb25kOiAwLCBuYW5v
c2Vjb25kOiAwIH0sIHsgb3ZlcmZsb3c6ICdjb25zdHJhaW4nIH0pKSwgYDE1OjU5OjAwYCk7Cisg
ICAgc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsgaG91cjogMTUsIG1p
bnV0ZTogLTEsIHNlY29uZDogMCwgbWlsbGlzZWNvbmQ6IDAsIG1pY3Jvc2Vjb25kOiAwLCBuYW5v
c2Vjb25kOiAwIH0sIHsgb3ZlcmZsb3c6ICdjb25zdHJhaW4nIH0pKSwgYDE1OjAwOjAwYCk7Cit9
CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oeyBob3Vy
OiAxNSwgbWludXRlOiA2MCwgc2Vjb25kOiAwLCBtaWxsaXNlY29uZDogMCwgbWljcm9zZWNvbmQ6
IDAsIG5hbm9zZWNvbmQ6IDAgfSwgeyBvdmVyZmxvdzogJ3JlamVjdCcgfSk7Cit9LCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh7
IGhvdXI6IDE1LCBtaW51dGU6IC0xLCBzZWNvbmQ6IDAsIG1pbGxpc2Vjb25kOiAwLCBtaWNyb3Nl
Y29uZDogMCwgbmFub3NlY29uZDogMCB9LCB7IG92ZXJmbG93OiAncmVqZWN0JyB9KTsKK30sIFJh
bmdlRXJyb3IpOworCitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUo
LTEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBs
YWluVGltZSgyNSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVt
cG9yYWwuUGxhaW5UaW1lKDI0KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7
IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMzApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZShJbmZpbml0eSk7IH0sIFJhbmdlRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKC1JbmZpbml0eSk7
IH0sIFJhbmdlRXJyb3IpOworCitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFp
blRpbWUoMCwgLTEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRl
bXBvcmFsLlBsYWluVGltZSgwLCA2MCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDYxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgNzcpOyB9LCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAxMDAp
OyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgwLCBJbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBu
ZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIC1JbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworCitz
aG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgLTEpOyB9LCBS
YW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgw
LCAwLCA2MCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9y
YWwuUGxhaW5UaW1lKDAsIDAsIDYxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgNzcpOyB9LCBSYW5nZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAxMDApOyB9LCBS
YW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgw
LCAwLCBJbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcg
VGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIC1JbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworCitz
aG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgLTEpOyB9
LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGlt
ZSgwLCAwLCAwLCAxMDAwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5l
dyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMTAwMSk7IH0sIFJhbmdlRXJyb3IpOworc2hv
dWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDUwMDAwKTsg
fSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRp
bWUoMCwgMCwgMCwgOTk5OTk5OTk5OSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIEluZmluaXR5KTsgfSwgUmFuZ2VF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwg
MCwgLUluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3
IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAtMSk7IH0sIFJhbmdlRXJyb3IpOworc2hv
dWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDEwMDAp
OyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgwLCAwLCAwLCAwLCAxMDAxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgNTAwMDApOyB9LCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAw
LCAwLCA5OTk5OTk5OTk5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5l
dyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgSW5maW5pdHkpOyB9LCBSYW5nZUVycm9y
KTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAw
LCAtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcg
VGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDAsIC0xKTsgfSwgUmFuZ2VFcnJvcik7Citz
aG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwg
MTAwMCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwu
UGxhaW5UaW1lKDAsIDAsIDAsIDAsIDAsIDEwMDEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRo
cm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCA1MDAwMCk7
IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5U
aW1lKDAsIDAsIDAsIDAsIDAsIDk5OTk5OTk5OTkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRo
cm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCBJbmZpbml0
eSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxh
aW5UaW1lKDAsIDAsIDAsIDAsIDAsIC1JbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworCitsZXQg
ZmFpbHVyZXMgPSBbCisgICAgIiIsCisgICAgIjIwMjAtMDEtMDEiLAorICAgICIyMzo1OTo2MS45
OTk5OTk5OTkiLAorICAgICIxOTk1LTEyLTA3VDAzOjI0OjMwKzIwOjIwOjYwIiwKKyAgICAiMTk5
NS0xMi0wN1QwMzoyNDozMCsyMDoyMDUwIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCs6IiwK
KyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCsyOjUwIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDoz
MCswMTowMFsvXSIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbLy8vXSIsCisgICAg
IjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbSGV5L0hlbGxvIiwKKyAgICAiMTk5NS0xMi0wN1Qw
MzoyNDozMCswMTowMFtdIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtIZXkvXSIs
CisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbLi5dIiwKKyAgICAiMTk5NS0xMi0wN1Qw
MzoyNDozMCswMTowMFsuXSIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbLi8uXSIs
CisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbLi4vLi5dIiwKKyAgICAiMTk5NS0xMi0w
N1QwMzoyNDozMCswMTowMFstSGV5L0hlbGxvXSIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzAr
MDE6MDBbLV0iLAorICAgICIxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwWy0vX10iLAorICAgICIx
OTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW18vLV0iLAorICAgICIxOTk1LTEyLTA3VDAzOjI0OjMw
KzAxOjAwW0NvY29hQ2FwcHVjY2lub01hdGNoYV0iLAorICAgICIxOTk1LTEyLTA3VDAzOjI0OjMw
KzAxOjAwW0V0Yy9HTVQrNTBdIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtFdGMv
R01UKzBdIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtFdGMvR01UMF0iLAorICAg
ICIxOTk1LTEyLTA3VDAzOjI0OjMwKzEwOjIwOjMwLjAxMjM0NTY3ODkiLAorICAgICIxOTk1LTEy
LTA3IDAzOjI0OjMwKzAxOjAwW0V0Yy9HTVRcdTIyMTIwMV0iLAorICAgICIxOTk1LTEyLTA3IDAz
OjI0OjMwKzAxOjAwWyswMjowMDowMC4wMTIzNDU2Nzg5XSIsCisgICAgIjE5OTUtMTItMDcgMDM6
MjQ6MzArMDE6MDBbMDI6MDA6MDAuMTIzNDU2Nzg5XSIsCisgICAgIjE5OTUtMTItMDcgMDM6MjQ6
MzArMDE6MDBbMDI6MDAwMC4xMjM0NTY3ODldIiwKKyAgICAiMTk5NS0xMi0wNyAwMzoyNDozMCsw
MTowMFswMjAwOjAwLjEyMzQ1Njc4OV0iLAorICAgICIxOTk1LTEyLTA3IDAzOjI0OjMwKzAxOjAw
WzAyOjAwOjYwLjEyMzQ1Njc4OV0iLAorXTsKKworZm9yIChsZXQgdGV4dCBvZiBmYWlsdXJlcykg
eworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgcHJpbnQoU3RyaW5nKFRlbXBvcmFs
LlBsYWluVGltZS5mcm9tKHRleHQpKSk7CisgICAgfSwgUmFuZ2VFcnJvcik7Cit9CisKK3sKKyAg
ICBsZXQgb25lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAzOjI0Jyk7CisgICAgbGV0IHR3
byA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMToyNCcpOworICAgIGxldCB0aHJlZSA9IFRl
bXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMToyNDowNScpOworICAgIGxldCBzb3J0ZWQgPSBbb25l
LCB0d28sIHRocmVlXS5zb3J0KFRlbXBvcmFsLlBsYWluVGltZS5jb21wYXJlKTsKKyAgICBzaG91
bGRCZShzb3J0ZWQuam9pbignICcpLCBgMDE6MjQ6MDAgMDE6MjQ6MDUgMDM6MjQ6MDBgKTsKK30K
Kworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCIyMDozNCIpLmNhbGVu
ZGFyKSwgYGlzbzg2MDFgKTsKK3Nob3VsZEJlKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCIyMDoz
NCIpLmNhbGVuZGFyIGluc3RhbmNlb2YgVGVtcG9yYWwuQ2FsZW5kYXIsIHRydWUpOworeworICAg
IGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oIjIwOjM0Iik7CisgICAgc2hvdWxk
QmUodGltZS5jYWxlbmRhciwgdGltZS5jYWxlbmRhcik7Cit9CisKK3sKKyAgICBsZXQgdGltZSA9
IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYyMDUnKTsKKyAgICBzaG91
bGRCZShTdHJpbmcodGltZS5yb3VuZCh7IHNtYWxsZXN0VW5pdDogJ2hvdXInIH0pKSwgYDIwOjAw
OjAwYCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUucm91bmQoeyByb3VuZGluZ0luY3JlbWVu
dDogMzAsIHNtYWxsZXN0VW5pdDogJ21pbnV0ZScgfSkpLCBgMTk6MzA6MDBgKTsKKyAgICBzaG91
bGRCZShTdHJpbmcodGltZS5yb3VuZCh7IHJvdW5kaW5nSW5jcmVtZW50OiAzMCwgc21hbGxlc3RV
bml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlOiAnY2VpbCcgfSkpLCBgMjA6MDA6MDBgKTsKK30K
K3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgz
NDYyMDUnKTsKKyAgICBsZXQgb3RoZXIgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMjA6MTM6
MjAuOTcxMzk4MDk5Jyk7CisgICAgc2hvdWxkQmUodGltZS5lcXVhbHMob3RoZXIpLCBmYWxzZSk7
CisgICAgc2hvdWxkQmUodGltZS5lcXVhbHModGltZSksIHRydWUpOworfQoreworICAgIGxldCB0
aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OjM5OjA5LjA2ODM0NjIwNScpOworICAg
IHNob3VsZEJlKHRpbWUudG9TdHJpbmcoKSwgYDE5OjM5OjA5LjA2ODM0NjIwNWApOworCisgICAg
c2hvdWxkQmUodGltZS50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ21pbnV0ZScgfSksIGAxOToz
OWApOworICAgIHNob3VsZEJlKHRpbWUudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRz
OiAwIH0pLCBgMTk6Mzk6MDlgKTsKKyAgICBzaG91bGRCZSh0aW1lLnRvU3RyaW5nKHsgZnJhY3Rp
b25hbFNlY29uZERpZ2l0czogNCB9KSwgYDE5OjM5OjA5LjA2ODNgKTsKKyAgICBzaG91bGRCZSh0
aW1lLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogNSwgcm91bmRpbmdNb2RlOiAn
aGFsZkV4cGFuZCcgfSksIGAxOTozOTowOS4wNjgzNWApOworICAgIHNob3VsZEJlKFRlbXBvcmFs
LlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wMDAwMDAyMDUnKS50b1N0cmluZyh7IGZyYWN0aW9u
YWxTZWNvbmREaWdpdHM6IDQgfSksIGAxOTozOTowOS4wMDAwYCk7Cit9Cit7CisgICAgY29uc3Qg
d29ya0JyZWFrID0geworICAgICAgdHlwZTogJ21hbmRhdG9yeScsCisgICAgICBuYW1lOiAnTHVu
Y2gnLAorICAgICAgc3RhcnRUaW1lOiBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDEyKSwKKyAgICAg
IGVuZFRpbWU6IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMTMpCisgICAgfTsKKyAgICBjb25zdCBz
dHIgPSBKU09OLnN0cmluZ2lmeSh3b3JrQnJlYWspOworICAgIHNob3VsZEJlKHN0ciwgYHsidHlw
ZSI6Im1hbmRhdG9yeSIsIm5hbWUiOiJMdW5jaCIsInN0YXJ0VGltZSI6IjEyOjAwOjAwIiwiZW5k
VGltZSI6IjEzOjAwOjAwIn1gKTsKKyAgICBmdW5jdGlvbiByZXZpdmVyKGtleSwgdmFsdWUpIHsK
KyAgICAgIGlmIChrZXkuZW5kc1dpdGgoJ1RpbWUnKSkgcmV0dXJuIFRlbXBvcmFsLlBsYWluVGlt
ZS5mcm9tKHZhbHVlKTsKKyAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgbGV0IG9iamVj
dCA9IEpTT04ucGFyc2Uoc3RyLCByZXZpdmVyKTsKKyAgICBzaG91bGRCZShvYmplY3Quc3RhcnRU
aW1lIGluc3RhbmNlb2YgVGVtcG9yYWwuUGxhaW5UaW1lLCB0cnVlKTsKKyAgICBzaG91bGRCZShT
dHJpbmcob2JqZWN0LnN0YXJ0VGltZSksIGAxMjowMDowMGApOworICAgIHNob3VsZEJlKG9iamVj
dC5lbmRUaW1lIGluc3RhbmNlb2YgVGVtcG9yYWwuUGxhaW5UaW1lLCB0cnVlKTsKKyAgICBzaG91
bGRCZShTdHJpbmcob2JqZWN0LmVuZFRpbWUpLCBgMTM6MDA6MDBgKTsKK30KK3Nob3VsZFRocm93
KCgpID0+IHsKKyAgICBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDEyKS52YWx1ZU9mKCk7Cit9LCBU
eXBlRXJyb3IpOworeworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5
OjM5OjA5LjA2ODM0NjIwNScpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRpbWUuZ2V0
SVNPRmllbGRzKCkpLCBgeyJjYWxlbmRhciI6Imlzbzg2MDEiLCJpc29Ib3VyIjoxOSwiaXNvTWlj
cm9zZWNvbmQiOjM0NiwiaXNvTWlsbGlzZWNvbmQiOjY4LCJpc29NaW51dGUiOjM5LCJpc29OYW5v
c2Vjb25kIjoyMDUsImlzb1NlY29uZCI6OX1gKTsKK30KK3sKKyAgICBsZXQgbWF4ID0gMSAqKiA1
MzsKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgz
NDYyMDUnKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZS5hZGQoeyBtaW51dGVzOiA1LCBuYW5v
c2Vjb25kczogODAwIH0pKSwgYDE5OjQ0OjA5LjA2ODM0NzAwNWApOworICAgIHRpbWUgPSBUZW1w
b3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgc2hvdWxkQmUo
U3RyaW5nKHRpbWUuYWRkKHsgaG91cnM6IG1heCwgbWludXRlczogbWF4LCBzZWNvbmRzOiBtYXgs
IG1pbGxpc2Vjb25kczogbWF4LCBtaWNyb3NlY29uZHM6IG1heCwgbmFub3NlY29uZHM6IG1heCB9
KSksIGAyMDo0MDoxMC4wNjkzNDcyMDZgKTsKK30KK3sKKyAgICBsZXQgbWF4ID0gMSAqKiA1MzsK
KyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYy
MDUnKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZS5zdWJ0cmFjdCh7IG1pbnV0ZXM6IDUsIG5h
bm9zZWNvbmRzOiA4MDAgfSkpLCBgMTk6MzQ6MDkuMDY4MzQ1NDA1YCk7CisgICAgdGltZSA9IFRl
bXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYyMDUnKTsKKyAgICBzaG91bGRC
ZShTdHJpbmcodGltZS5zdWJ0cmFjdCh7IGhvdXJzOiBtYXgsIG1pbnV0ZXM6IG1heCwgc2Vjb25k
czogbWF4LCBtaWxsaXNlY29uZHM6IG1heCwgbWljcm9zZWNvbmRzOiBtYXgsIG5hbm9zZWNvbmRz
OiBtYXggfSkpLCBgMTg6Mzg6MDguMDY3MzQ1MjA0YCk7Cit9Cit7CisgICAgbGV0IHRpbWUgPSBU
ZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgc2hvdWxk
QmUoU3RyaW5nKHRpbWUuYWRkKHsgaG91cnM6IDEgfSkud2l0aCh7CisgICAgICBtaW51dGU6IDAs
CisgICAgICBzZWNvbmQ6IDAsCisgICAgICBtaWxsaXNlY29uZDogMCwKKyAgICAgIG1pY3Jvc2Vj
b25kOiAwLAorICAgICAgbmFub3NlY29uZDogMAorICAgIH0pKSwgYDIwOjAwOjAwYCk7Cit9Cit7
CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMjA6MTM6MjAuOTcxMzk4
MDk5Jyk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUudW50aWwoVGVtcG9yYWwuUGxhaW5UaW1l
LmZyb20oJzIyOjM5OjA5LjA2ODM0NjIwNScpKSksIGBQVDJIMjVNNDguMDk2OTQ4MTA2U2ApOwor
ICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnVudGlsKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcx
OTozOTowOS4wNjgzNDYyMDUnKSkpLCBgLVBUMzRNMTEuOTAzMDUxODk0U2ApOworICAgIHNob3Vs
ZEJlKFN0cmluZyh0aW1lLnVudGlsKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcyMjozOTowOS4w
NjgzNDYyMDUnKSwgeyBzbWFsbGVzdFVuaXQ6ICdzZWNvbmQnIH0pKSwgYFBUMkgyNU00OFNgKTsK
K30KK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcyMDoxMzoyMC45
NzEzOTgwOTknKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZS5zaW5jZShUZW1wb3JhbC5QbGFp
blRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1JykpKSwgYFBUMzRNMTEuOTAzMDUxODk0U2Ap
OworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnNpbmNlKFRlbXBvcmFsLlBsYWluVGltZS5mcm9t
KCcyMjozOTowOS4wNjgzNDYyMDUnKSkpLCBgLVBUMkgyNU00OC4wOTY5NDgxMDZTYCk7Cit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC10aW1lem9uZS5qcyBiL0pTVGVzdHMv
c3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzCmluZGV4IGQ4OGY4Yzg4N2U4NDRhZTJmMDMwOWVh
ZjE1MWVjYTIyMDE0NDE5NTYuLmY0ODE1OTY2MmZiNzlmOWE2MWM5MTdiOTJkYjAyZjEwODcyMTNh
Y2UgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzCkBAIC0xOCw2ICsxOCwxMyBAQCBm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKICAgICAgICAg
c2hvdWxkQmUoU3RyaW5nKGVycm9yKSwgbWVzc2FnZSk7CiB9CiAKK3Nob3VsZEJlKFRlbXBvcmFs
LlRpbWVab25lIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworc2hvdWxkQmUoVGVtcG9yYWwu
VGltZVpvbmUubGVuZ3RoLCAwKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoVGVtcG9yYWwuVGltZVpvbmUsICdwcm90b3R5cGUnKS53cml0YWJsZSwgZmFsc2UpOwor
c2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5UaW1lWm9u
ZSwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuVGltZVpvbmUsICdwcm90b3R5cGUnKS5jb25m
aWd1cmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLlRpbWVab25lLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciwgVGVtcG9yYWwuVGltZVpvbmUpOworCiBsZXQgZmFpbHVyZXMgPSBbCiAgICAg
IiIsCiAgICAgIisiLApAQCAtMjYsOSArMzMsMjIgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVu
YywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CiAgICAgIisyNCIsCiAgICAgIisyMzoiLAogICAgICIy
MDowMCIsCisgICAgIisyOjAwIiwKKyAgICAiKzMyOjAwIiwKKyAgICAiKzIzOjAwMSIsCisgICAg
IisyMzo5OSIsCisgICAgIisyMzo5OTAiLAorICAgICIrMjM6NTk6OTkiLAorICAgICIrMjM6NTk6
MDAxIiwKKyAgICAiKzIzOjU5Ojk5OSIsCisgICAgIisyMzo1OTo1OS4iLAorICAgICIrMjM6NTk6
NTksIiwKKyAgICAiKzIzOjU5OjU5YSIsCisgICAgIisyMzo1OTo1OS5hIiwKICAgICAiKzIwOjAw
MDAiLAogICAgICIrMjA6NjAiLAogICAgICIrMjA6NTk6IiwKKyAgICAiKzIwOjU5OjYwIiwKICAg
ICAiMjA1OTowMCIsCiAgICAgIisyMDU5OjAwIiwKICAgICAiKzIwOjU5MDAiLApAQCAtNTIsNiAr
NzIsMTAgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7
CiBzaG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTAwMDAiKS5p
ZCwgYC0wMTo1OTozMC4xMjM0NWApOwogc2hvdWxkQmUobmV3IFRlbXBvcmFsLlRpbWVab25lKCIt
MDE6NTk6MzAuMDAwMDAwMDAxIikuaWQsIGAtMDE6NTk6MzAuMDAwMDAwMDAxYCk7CiBzaG91bGRC
ZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTY3ODkiKS5pZCwgYC0wMTo1
OTozMC4xMjM0NTY3ODlgKTsKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5
OjMwLjAwMTAwMjAwMyIpLmlkLCBgLTAxOjU5OjMwLjAwMTAwMjAwM2ApOworc2hvdWxkQmUobmV3
IFRlbXBvcmFsLlRpbWVab25lKCItMDE6NTk6MzAuMDAwMDAwMDAwIikuaWQsIGAtMDE6NTk6MzBg
KTsKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjAwLjAwMDAwMDAwMCIp
LmlkLCBgLTAxOjU5YCk7CitzaG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTowMDow
MC4wMDAwMDAwMDAiKS5pZCwgYC0wMTowMGApOwogCiBsZXQgdHogPSBuZXcgVGVtcG9yYWwuVGlt
ZVpvbmUoIi0wMTo1OTozMC4xMjM0NTY3ODkiKQogc2hvdWxkQmUodHouaWQsIFN0cmluZyh0eikp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCmluZGV4IDEwNWZkZjQyNTM5NjUzNzI4NWE3MTc4MDI1MDlmOGRlMjkw
ZmFiNmMuLmE2YzhhMTFkZWJlM2RiNTdmMTFlMDUxZDljN2Q2NjgyZGYwNTJlMTIgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29u
ZmlnLnlhbWwKQEAgLTI3LDcgKzI3LDggQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL1BsYWluRGF0ZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5EYXRl
VGltZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5Nb250aERheQotICAgIC0g
dGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lCisgICAgLSB0ZXN0L2J1aWx0LWlucy9U
ZW1wb3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL3RvUGxhaW5EYXRlVGltZQorICAgIC0gdGVzdC9i
dWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWUKICAg
ICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluWWVhck1vbnRoCiAgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9UaW1lWm9uZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
Wm9uZWREYXRlVGltZQo=
</data>
<flag name="commit-queue"
          id="460639"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437448</attachid>
            <date>2021-09-06 20:50:27 -0700</date>
            <delta_ts>2021-09-07 10:19:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229892-20210906205026.patch</filename>
            <type>text/plain</type>
            <size>168677</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ZTM5NDE1YzNmNmI3NTVlOTY3YjE3MTMzYjU5ZTY5ZWM1NjNkOWNjLi5jNWY1OTliNjIzZjA5ZmQy
ZjRjMjBiZjgzYjM5YTJjOWYxMWNhYTRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxMzkgQEAKKzIwMjEtMDktMDYgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuUGxhaW5UaW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4OTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxl
bWVudHMgVGVtcG9yYWwuUGxhaW5UaW1lWzFdLiBUaGlzIGlzIHRpbWUgcmVwcmVzZW50YXRpb24g
d2hpY2ggaXMgbm90IGFzc29jaWF0ZWQgdG8KKyAgICAgICAgY2FsZW5kYXJzIGFuZCB0aW1lem9u
ZXMuIFRoaXMgaXMgdHVwbGUgb2YgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBt
aWNyb3NlY29uZCwgYW5kIG5hbm9zZWNvbmQuCisKKyAgICAgICAgMS4gV2UgYWRkIGZ1bGwtZmxl
ZGdlZCBJU084NjAxIERhdGVUaW1lIC8gVGltZSBwYXJzZXIsIHNvIHRoYXQgVGVtcG9yYWwuUGxh
aW5UaW1lLmZyb20gY2FuIGV4dHJhY3QKKyAgICAgICAgICAgdGltZSBhcyBzcGVjaWZpZWQuCisK
KyAgICAgICAgMi4gSVNPODYwMTo6UGxhaW5UaW1lIGlzIHVzZWQgZm9yIGFscmVhZHktdmFsaWRh
dGVkIFBsYWluVGltZSBkYXRhLiBXaGVuIHBlcmZvcm1pbmcgYXJpdGhtZXRpY3MsIHdlIGZpcnN0
CisgICAgICAgICAgIGRvIHRoYXQgaW4gSVNPODYwMTo6RHVyYXRpb24sIGFuZCB0aGVuIHdlIHZh
bGlkYXRlIGFuZCBjb252ZXJ0IGl0IHRvIFBsYWluVGltZS4KKworICAgICAgICBbMV06IGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBsYWludGltZS1vYmpl
Y3RzCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSVNPODYwMS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2MDE6OmlkRm9yVGltZVpv
bmVOYW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lU3BlYyk6CisgICAgICAg
IChKU0M6OklTTzg2MDE6OnBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24pOgorICAgICAg
ICAoSlNDOjpJU084NjAxOjpjYW5CZVRpbWVab25lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
cGFyc2VUaW1lWm9uZSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlVGltZSk6CisgICAg
ICAgIChKU0M6OklTTzg2MDE6OmRheXNJbk1vbnRoKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
cGFyc2VEYXRlKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VEYXRlVGltZSk6CisgICAg
ICAgIChKU0M6OklTTzg2MDE6OmZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKToKKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6dGVtcG9yYWxUaW1lVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpJU084
NjAxOjppc1ZhbGlkRHVyYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6RHVyYXRpb24pOgorICAgICAgICAoSlNDOjpJ
U084NjAxOjpEdXJhdGlvbjo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1
cmF0aW9uOjpvcGVyYXRvcltdIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRp
b246OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246OmVuZCBj
b25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpjbGVhcik6CisgICAgICAg
IChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpvcGVyYXRvci0gY29uc3QpOgorICAgICAgICAoSlND
OjpJU084NjAxOjpQbGFpblRpbWU6OlBsYWluVGltZSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6
OlBsYWluVGltZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OlBsYWluRGF0
ZTo6UGxhaW5EYXRlKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRlOjp5ZWFyIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRlOjptb250aCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OklTTzg2MDE6OlBsYWluRGF0ZTo6ZGF5IGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjp1dGNUaW1lWm9uZUlEU2xvdyk6
CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OnV0Y1RpbWVa
b25lSUQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cGxhaW5UaW1lU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1
cmF0aW9uOjpmcm9tTm9uRHVyYXRpb25WYWx1ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVy
YXRpb246OnRvRHVyYXRpb24pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b0R1
cmF0aW9uUmVjb3JkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcg
Y29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyk6CisgICAg
ICAgIChKU0M6OmlzVmFsaWREdXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlRlbXBv
cmFsRHVyYXRpb246OmZyb21PYmplY3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxOb3cuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVQbGFpblRpbWVDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OnNlY29uZHNTdHJpbmdQcmVjaXNpb24pOgorICAgICAgICAo
SlNDOjp0b1RlbXBvcmFsT3ZlcmZsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxQbGFpblRpbWU6OlRlbXBvcmFsUGxhaW5UaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQ
bGFpblRpbWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRp
bWU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKEpTQzo6dG9QbGFpblRpbWUpOgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dHJ5Q3JlYXRlSWZWYWxpZCk6CisgICAgICAg
IChKU0M6OmJhbGFuY2VUaW1lKToKKyAgICAgICAgKEpTQzo6cm91bmRUaW1lKToKKyAgICAgICAg
KEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6OnJvdW5kIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxQbGFpblRpbWU6OnRvU3RyaW5nIGNvbnN0KToKKyAgICAgICAgKEpTQzo6cHJvcGVydHlO
YW1lKToKKyAgICAgICAgKEpTQzo6dG9UZW1wb3JhbFRpbWVSZWNvcmQpOgorICAgICAgICAoSlND
Ojp0b1BhcnRpYWxUaW1lKToKKyAgICAgICAgKEpTQzo6Y29uc3RyYWludFRpbWUpOgorICAgICAg
ICAoSlNDOjpyZWd1bGF0ZVRpbWUpOgorICAgICAgICAoSlNDOjp0b1RlbXBvcmFsQ2FsZW5kYXJX
aXRoSVNPRGVmYXVsdCk6CisgICAgICAgIChKU0M6OmdldFRlbXBvcmFsQ2FsZW5kYXJXaXRoSVNP
RGVmYXVsdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKToKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWU6OmNvbXBhcmUpOgorICAgICAgICAoSlNDOjp0b0xp
bWl0ZWRUZW1wb3JhbER1cmF0aW9uKToKKyAgICAgICAgKEpTQzo6YWRkVGltZSk6CisgICAgICAg
IChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjphZGQgY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1w
b3JhbFBsYWluVGltZTo6c3VidHJhY3QgY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBs
YWluVGltZTo6d2l0aCBjb25zdCk6CisgICAgICAgIChKU0M6OmRpZmZlcmVuY2VUaW1lKToKKyAg
ICAgICAgKEpTQzo6ZXh0cmFjdERpZmZlcmVuY2VPcHRpb25zKToKKyAgICAgICAgKEpTQzo6VGVt
cG9yYWxQbGFpblRpbWU6OnVudGlsIGNvbnN0KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFp
blRpbWU6OnNpbmNlIGNvbnN0KToKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1l
Lmg6IEFkZGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ci5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9y
OjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpj
cmVhdGVTdHJ1Y3R1cmUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVj
dG9yOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpK
U0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvci5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFRpbWVab25lLmguCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZS5jcHA6IEFkZGVkLgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZTo6Y3JlYXRlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSk6CisgICAgICAgIChKU0M6OlRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6
OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZS5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRp
bWVab25lLmguCisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmNwcDoKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZTo6ZnJvbSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFs
VGltZVpvbmU6OmlkRm9yVGltZVpvbmVOYW1lKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1l
L1RlbXBvcmFsVGltZVpvbmUuaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmVD
b25zdHJ1Y3Rvci5jcHA6CisgICAgICAgIChKU0M6OlRlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rv
cjo6ZmluaXNoQ3JlYXRpb24pOgorICAgICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04pOgorICAgICAgICAqIHJ1bnRpbWUvVk0uY3BwOgorICAgICAgICAqIHJ1bnRpbWUvVk0uaDoK
KwogMjAyMS0wOS0wMyAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAg
ICAgIFtKU0NdIE1ha2UgRW51bWVyYXRvck5leHRVcGRhdGVJbmRleEFuZE1vZGUgY2xvYmJlcml6
aW5nIHJ1bGUgcHJlY2lzZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV1RGL0NoYW5nZUxvZwppbmRleCAwNzlkYjgyZThkMWU2NDhkMjZkMGM2NjQyY2IyOTMwNjBh
ZjlmZjNlLi5iYWU5YTM0NmM1YWIwNzI5MmU2MDVhOThlODEwYzFmZGNlNWIxNmFlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDEyIEBACisyMDIxLTA5LTA2ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5j
b20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLlBsYWluVGltZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODkyCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJp
bmdQYXJzaW5nQnVmZmVyLmg6CisKIDIwMjEtMDktMDMgIEJhc3VrZSBTdXp1a2kgIDxiYXN1a2Uu
c3V6dWtpQHNvbnkuY29tPgogCiAgICAgICAgIFVzZSBVU0UoU1lTVEVNX01BTExPQykgbWFjcm8g
aW4gYWxsIGNhc2VzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggZWNhMDgz
MTRiNjQ0NTljNzhjYTAzODY0MjgxNTM3Zjg1MThkYmVlMC4uMzhjYjg0ZGEwNTZlMmI2YTZjMTNl
ZDlmOGQ3MDUxOGVhZjA4OTU4ZSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dApA
QCAtMTEzLDYgKzExMyw4IEBAIHNldChKYXZhU2NyaXB0Q29yZV9PQkpFQ1RfTFVUX1NPVVJDRVMK
ICAgICBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9U
ZW1wb3JhbE5vdy5jcHAKICAgICBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorICAgIHJ1bnRp
bWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKKyAgICBydW50aW1lL1RlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlLmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0
cnVjdG9yLmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKIApk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLWlucHV0Lnhj
ZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNm
aWxlbGlzdAppbmRleCBjZTVmNjI4OGFhYTI3Y2I3ODE3YmVhZTE0NDM3NmVhMjhhZmFlNjNmLi4y
ODg1YjUxMDE3Y2MxYWUzZDg5MmVmM2M1ZjI3YTRiMTIzNzUzODQyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMtaW5wdXQueGNmaWxlbGlzdApAQCAt
MTc1LDYgKzE3NSw4IEBAICQoUFJPSkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbkNv
bnN0cnVjdG9yLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJv
dG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKICQoUFJP
SkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCiskKFBST0pFQ1RfRElSKS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcAogJChQUk9KRUNUX0RJUikvcnVudGlt
ZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1l
L1RlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS91Y2QvQ2FzZUZv
bGRpbmcudHh0CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKaW5kZXggMWIwNTVjOTIyYzA5NGE1OTU4NDI2MDg0MWRjZWRm
Y2FhNzM3NjUwMy4uMmFkMjEzMWM1ODY2OWJkMDU3NWM3YWY0MGE2YzQyN2E1OTRmNWMzZSAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1vdXRwdXQu
eGNmaWxlbGlzdApAQCAtNzIsNiArNzIsOCBAQCAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZl
ZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9yLgogJChC
VUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFs
RHVyYXRpb25Qcm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291
cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbE5vdy5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsT2JqZWN0Lmx1dC5oCisk
KEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaAorJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2
ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5o
CiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVt
cG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVy
aXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5sdXQu
aAogJChCVUlMVF9QUk9EVUNUU19ESVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1Vu
aWNvZGVQYXR0ZXJuVGFibGVzLmgKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9E
ZXJpdmVkU291cmNlcy5tYWtlIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2Vz
Lm1ha2UKaW5kZXggODgxOTI3ZTE3YmRhMjM4ZDdkYWNlZjFkNmViNWMzYzNiNzQ4YjM3Ny4uZWNi
Y2U2N2Y3OGMwMDM0YzE2NmY1MGQ1ODkyYTZmMDhjNWRhNDBkNiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKQEAgLTE5Nyw2ICsxOTcsOCBAQCBPQkpFQ1RfTFVU
X0hFQURFUlMgPSBcCiAgICAgVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5sdXQuaCBcCiAgICAg
VGVtcG9yYWxOb3cubHV0LmggXAogICAgIFRlbXBvcmFsT2JqZWN0Lmx1dC5oIFwKKyAgICBUZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oIFwKKyAgICBUZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZS5sdXQuaCBcCiAgICAgVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmx1dC5oIFwK
ICAgICBUZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmx1dC5oIFwKICAgICBXZWJBc3NlbWJseUNv
bXBpbGVFcnJvckNvbnN0cnVjdG9yLmx1dC5oIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9Tb3VyY2VzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dApp
bmRleCAzMjhmOTJmNWIyZmIyMDVjODM4NzgyMjQxOWE1MDg0ZTBmYTFmN2NhLi44NDZlOWVlNzVm
ZWQwNTQ3NTU2YzRiZmQ0YTI2MWQ4MGQ1OWFmYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvU291cmNlcy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMu
dHh0CkBAIC0xMDE5LDYgKzEwMTksOSBAQCBydW50aW1lL1RlbXBvcmFsRHVyYXRpb25Db25zdHJ1
Y3Rvci5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAKIHJ1bnRpbWUv
VGVtcG9yYWxOb3cuY3BwCiBydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAorcnVudGltZS9UZW1w
b3JhbFBsYWluVGltZS5jcHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5j
cHAKK3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCiBydW50aW1lL1RlbXBv
cmFsVGltZVpvbmUuY3BwCiBydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAK
IHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCmluZGV4IDcxNGFhMmZlYjIy
NGZhNThmMjdlZDU1NTFiNjdjOWYzMjY1Y2JkMjcuLjQwYzE1OWU4ZDdjNTQwNDlmZDk4YzhhNjY2
OGE2NGE4ZGY0ZWEzNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0NvbW1vbklkZW50aWZpZXJzLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
Q29tbW9uSWRlbnRpZmllcnMuaApAQCAtMTQ5LDYgKzE0OSwxMiBAQAogICAgIG1hY3JvKGluZGlj
ZXMpIFwKICAgICBtYWNybyhpbmZlcnJlZE5hbWUpIFwKICAgICBtYWNybyhpbnB1dCkgXAorICAg
IG1hY3JvKGlzb0hvdXIpIFwKKyAgICBtYWNybyhpc29NaWNyb3NlY29uZCkgXAorICAgIG1hY3Jv
KGlzb01pbGxpc2Vjb25kKSBcCisgICAgbWFjcm8oaXNvTWludXRlKSBcCisgICAgbWFjcm8oaXNv
TmFub3NlY29uZCkgXAorICAgIG1hY3JvKGlzb1NlY29uZCkgXAogICAgIG1hY3JvKGluc3RydWN0
aW9uQ291bnQpIFwKICAgICBtYWNybyhpc0FycmF5KSBcCiAgICAgbWFjcm8oaXNFbmFibGVkKSBc
CkBAIC0xNjksNyArMTc1LDkgQEAKICAgICBtYWNybyhtYXhpbXVtRnJhY3Rpb25EaWdpdHMpIFwK
ICAgICBtYWNybyhtYXhpbXVtU2lnbmlmaWNhbnREaWdpdHMpIFwKICAgICBtYWNybyhtZXNzYWdl
KSBcCisgICAgbWFjcm8obWljcm9zZWNvbmQpIFwKICAgICBtYWNybyhtaWNyb3NlY29uZHMpIFwK
KyAgICBtYWNybyhtaWxsaXNlY29uZCkgXAogICAgIG1hY3JvKG1pbGxpc2Vjb25kcykgXAogICAg
IG1hY3JvKG1pbmltdW1GcmFjdGlvbkRpZ2l0cykgXAogICAgIG1hY3JvKG1pbmltdW1JbnRlZ2Vy
RGlnaXRzKSBcCkBAIC0xODEsNiArMTg5LDcgQEAKICAgICBtYWNybyhtb250aHMpIFwKICAgICBt
YWNybyhtdWx0aWxpbmUpIFwKICAgICBtYWNybyhuYW1lKSBcCisgICAgbWFjcm8obmFub3NlY29u
ZCkgXAogICAgIG1hY3JvKG5hbm9zZWNvbmRzKSBcCiAgICAgbWFjcm8obmV4dCkgXAogICAgIG1h
Y3JvKG5vdykgXApAQCAtMTk0LDYgKzIwMyw3IEBACiAgICAgbWFjcm8ob3JpZ2luKSBcCiAgICAg
bWFjcm8ob3NyRXhpdFNpdGVzKSBcCiAgICAgbWFjcm8ob3NyRXhpdHMpIFwKKyAgICBtYWNybyhv
dmVyZmxvdykgXAogICAgIG1hY3JvKHBhcnNlKSBcCiAgICAgbWFjcm8ocGFyc2VJbnQpIFwKICAg
ICBtYWNybyhwYXJzZUZsb2F0KSBcCkBAIC0yNDUsNiArMjU1LDcgQEAKICAgICBtYWNybyh1c2Fn
ZSkgXAogICAgIG1hY3JvKHZhbHVlKSBcCiAgICAgbWFjcm8odmFsdWVPZikgXAorICAgIG1hY3Jv
KHdlZWspIFwKICAgICBtYWNybyh3ZWVrZGF5KSBcCiAgICAgbWFjcm8od2Vla3MpIFwKICAgICBt
YWNybyh3cml0YWJsZSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSVNPODYwMS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNw
cAppbmRleCA5ZTQyYWZjMTMzYzA3ZTNmYjkxYjg5Nzc1NmUzYTE1NTEyM2FmOTM3Li5jMmE5ZTNj
ZmRiMzJlNDBiMTBkN2E0MjM2YzNkNjE5MjhjNDlhNmMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JU084NjAxLmNwcApAQCAtMSw1ICsxLDYgQEAKIC8qCiAgKiBDb3B5cmlnaHQg
KEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4KKyAqIENvcHlyaWdo
dCAoQykgMjAyMSBBcHBsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAg
LTI2LDcgKzI3LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJU084NjAxLmgi
CiAKKyNpbmNsdWRlICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiUGFyc2VJbnQuaCIKKyNpbmNs
dWRlIDx3dGYvRGF0ZU1hdGguaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVm
ZmVyLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMzgsNiArNDEsMTYgQEAgc3RhdGljIGNvbnN0
ZXhwciBpbnQ2NF90IG5zUGVyU2Vjb25kID0gMTAwMExMICogMTAwMCAqIDEwMDA7CiBzdGF0aWMg
Y29uc3RleHByIGludDY0X3QgbnNQZXJNaWxsaXNlY29uZCA9IDEwMDBMTCAqIDEwMDA7CiBzdGF0
aWMgY29uc3RleHByIGludDY0X3QgbnNQZXJNaWNyb3NlY29uZCA9IDEwMDBMTDsKIAorc3RkOjpv
cHRpb25hbDxUaW1lWm9uZUlEPiBpZEZvclRpbWVab25lTmFtZShTdHJpbmdWaWV3IHN0cmluZykK
K3sKKyAgICBjb25zdCBhdXRvJiB0aW1lWm9uZXMgPSBpbnRsQXZhaWxhYmxlVGltZVpvbmVzKCk7
CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdGltZVpvbmVzLnNpemUoKTsg
KytpbmRleCkgeworICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FTQ0lJQ2FzZSh0aW1lWm9uZXNb
aW5kZXhdLCBzdHJpbmcpKQorICAgICAgICAgICAgcmV0dXJuIGluZGV4OworICAgIH0KKyAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworfQorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyVHlwZT4KIGlu
dDMyX3QgcGFyc2VEZWNpbWFsSW50MzIoY29uc3QgQ2hhclR5cGUqIGNoYXJhY3RlcnMsIHVuc2ln
bmVkIGxlbmd0aCkKIHsKQEAgLTI0MywzMiArMjU2LDI2IEBAIHN0ZDo6b3B0aW9uYWw8RHVyYXRp
b24+IHBhcnNlRHVyYXRpb24oU3RyaW5nVmlldyBzdHJpbmcpCiAgICAgfSk7CiB9CiAKKworZW51
bSBjbGFzcyBTZWNvbmQ2ME1vZGUgeyBBY2NlcHQsIFJlamVjdCB9OwogdGVtcGxhdGU8dHlwZW5h
bWUgQ2hhcmFjdGVyVHlwZT4KLXN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGlt
ZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4m
IGJ1ZmZlcikKK3N0YXRpYyBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4gcGFyc2VUaW1lU3BlYyhT
dHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIsIFNlY29uZDYwTW9kZSBz
ZWNvbmQ2ME1vZGUpCiB7Ci0gICAgLy8gVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0IDoKLSAgICAv
LyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91cgotICAgIC8v
ICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpv
bmVVVENPZmZzZXRNaW51dGUKLSAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVa
b25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZQotICAgIC8vICAgICBUaW1l
Wm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZz
ZXRNaW51dGUgOiBUaW1lWm9uZVVUQ09mZnNldFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0
aW9uW29wdF0KLSAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zm
c2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZSBUaW1lWm9uZVVUQ09mZnNldFNlY29uZFtv
cHRdCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVT
cGVjCisgICAgLy8gVGltZVNwZWMgOgorICAgIC8vICAgICBUaW1lSG91cgorICAgIC8vICAgICBU
aW1lSG91ciA6IFRpbWVNaW51dGUKKyAgICAvLyAgICAgVGltZUhvdXIgVGltZU1pbnV0ZQorICAg
IC8vICAgICBUaW1lSG91ciA6IFRpbWVNaW51dGUgOiBUaW1lU2Vjb25kIFRpbWVGcmFjdGlvbltv
cHRdCisgICAgLy8gICAgIFRpbWVIb3VyIFRpbWVNaW51dGUgVGltZVNlY29uZCBUaW1lRnJhY3Rp
b25bb3B0XQogICAgIC8vCi0gICAgLy8gIE1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVzIGFyZSDC
sTIzOjU5OjU5Ljk5OTk5OTk5OSA9IMKxODYzOTk5OTk5OTk5OTlucywgd2hpY2ggY2FuIGJlIHJl
cHJlc2VudGVkIGJ5IGludDY0X3QgLyBkb3VibGUncyBpbnRlZ2VyIHBhcnQuCi0KLSAgICAvLyBz
aWduIGFuZCBob3VyLgotICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCAzKQotICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIC8vICBUaW1lU2Vjb25kIGNhbiBiZSA2MC4g
QW5kIGlmIGl0IGlzIDYwLCB3ZSBpbnRlcnByZXQgaXQgYXMgNTkuCisgICAgLy8gIGh0dHBzOi8v
dGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBhcnNlaXNvZGF0ZXRpbWUK
IAotICAgIGludDY0X3QgZmFjdG9yID0gMTsKLSAgICBpZiAoKmJ1ZmZlciA9PSAnKycpCi0gICAg
ICAgIGJ1ZmZlci5hZHZhbmNlKCk7Ci0gICAgZWxzZSBpZiAoKmJ1ZmZlciA9PSAnLScgfHwgKmJ1
ZmZlciA9PSAweDIyMTIpIHsKLSAgICAgICAgZmFjdG9yID0gLTE7Ci0gICAgICAgIGJ1ZmZlci5h
ZHZhbmNlKCk7Ci0gICAgfSBlbHNlCisgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8
IDIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpbnQ2NF90IGhvdXIgPSAw
OworICAgIHVuc2lnbmVkIGhvdXIgPSAwOwogICAgIEFTU0VSVChidWZmZXIubGVuZ3RoUmVtYWlu
aW5nKCkgPj0gMik7CiAgICAgYXV0byBmaXJzdEhvdXJDaGFyYWN0ZXIgPSAqYnVmZmVyOwogICAg
IGlmIChmaXJzdEhvdXJDaGFyYWN0ZXIgPj0gJzAnICYmIGZpcnN0SG91ckNoYXJhY3RlciA8PSAn
MicpIHsKQEAgLTI4NCwxNSArMjkxLDE2IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+
IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAg
ICAgIHJldHVybiAobnNQZXJIb3VyICogaG91cikgKiBmYWN0b3I7CisgICAgICAgIHJldHVybiBQ
bGFpblRpbWUoaG91ciwgMCwgMCwgMCwgMCwgMCk7CiAKICAgICBib29sIHNwbGl0QnlDb2xvbiA9
IGZhbHNlOwogICAgIGlmICgqYnVmZmVyID09ICc6JykgewotICAgICAgICBidWZmZXIuYWR2YW5j
ZSgpOwogICAgICAgICBzcGxpdEJ5Q29sb24gPSB0cnVlOwotICAgIH0KKyAgICAgICAgYnVmZmVy
LmFkdmFuY2UoKTsKKyAgICB9IGVsc2UgaWYgKCEoKmJ1ZmZlciA+PSAnMCcgJiYgKmJ1ZmZlciA8
PSAnNScpKQorICAgICAgICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIDAsIDAsIDAsIDAsIDApOwog
Ci0gICAgaW50NjRfdCBtaW51dGUgPSAwOworICAgIHVuc2lnbmVkIG1pbnV0ZSA9IDA7CiAgICAg
aWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CiAgICAgYXV0byBmaXJzdE1pbnV0ZUNoYXJhY3RlciA9ICpidWZmZXI7CkBAIC0zMDgs
MTYgKzMxNiwxNyBAQCBzdGF0aWMgc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25l
TnVtZXJpY1VUQ09mZnNldChTdHJpbmdQYXJzaW5nQnVmZmVyPAogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gKG5z
UGVySG91ciAqIGhvdXIgKyBuc1Blck1pbnV0ZSAqIG1pbnV0ZSkgKiBmYWN0b3I7CisgICAgICAg
IHJldHVybiBQbGFpblRpbWUoaG91ciwgbWludXRlLCAwLCAwLCAwLCAwKTsKIAogICAgIGlmIChz
cGxpdEJ5Q29sb24pIHsKICAgICAgICAgaWYgKCpidWZmZXIgPT0gJzonKQogICAgICAgICAgICAg
YnVmZmVyLmFkdmFuY2UoKTsKICAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKLSAgICB9CisgICAgICAgICAgICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0
ZSwgMCwgMCwgMCwgMCk7CisgICAgfSBlbHNlIGlmICghKCpidWZmZXIgPj0gJzAnICYmIChzZWNv
bmQ2ME1vZGUgPT0gU2Vjb25kNjBNb2RlOjpBY2NlcHQgPyAoKmJ1ZmZlciA8PSAnNicpIDogKCpi
dWZmZXIgPD0gJzUnKSkpKQorICAgICAgICByZXR1cm4gUGxhaW5UaW1lKGhvdXIsIG1pbnV0ZSwg
MCwgMCwgMCwgMCk7CiAKLSAgICBpbnQ2NF90IHNlY29uZCA9IDA7CisgICAgdW5zaWduZWQgc2Vj
b25kID0gMDsKICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgMikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGZpcnN0U2Vjb25kQ2hhcmFjdGVyID0gKmJ1
ZmZlcjsKQEAgLTMyNywzNCArMzM2LDg0IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+
IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiAgICAg
ICAgIGlmICghaXNBU0NJSURpZ2l0KHNlY29uZFNlY29uZENoYXJhY3RlcikpCiAgICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgICAgICBzZWNvbmQgPSAoc2Vjb25kU2Vjb25kQ2hh
cmFjdGVyIC0gJzAnKSArIDEwICogKGZpcnN0U2Vjb25kQ2hhcmFjdGVyIC0gJzAnKTsKLSAgICAg
ICAgQVNTRVJUKG1pbnV0ZSA8IDYwKTsKKyAgICAgICAgQVNTRVJUKHNlY29uZCA8IDYwKTsKKyAg
ICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICB9IGVsc2UgaWYgKHNlY29uZDYwTW9kZSA9PSBT
ZWNvbmQ2ME1vZGU6OkFjY2VwdCAmJiBmaXJzdFNlY29uZENoYXJhY3RlciA9PSAnNicpIHsKKyAg
ICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgYXV0byBzZWNvbmRTZWNvbmRDaGFyYWN0
ZXIgPSAqYnVmZmVyOworICAgICAgICBpZiAoc2Vjb25kU2Vjb25kQ2hhcmFjdGVyICE9ICcwJykK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHNlY29uZCA9IDU5Owog
ICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwogICAgIH0gZWxzZQogICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OwogCiAgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQotICAgICAgICByZXR1cm4gKG5z
UGVySG91ciAqIGhvdXIgKyBuc1Blck1pbnV0ZSAqIG1pbnV0ZSArIG5zUGVyU2Vjb25kICogc2Vj
b25kKSAqIGZhY3RvcjsKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIHNl
Y29uZCwgMCwgMCwgMCk7CiAKICAgICBpZiAoKmJ1ZmZlciAhPSAnLicgJiYgKmJ1ZmZlciAhPSAn
LCcpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBQbGFpblRp
bWUoaG91ciwgbWludXRlLCBzZWNvbmQsIDAsIDAsIDApOwogICAgIGJ1ZmZlci5hZHZhbmNlKCk7
CiAKICAgICB1bnNpZ25lZCBkaWdpdHMgPSAwOwotICAgIHdoaWxlIChkaWdpdHMgPCBidWZmZXIu
bGVuZ3RoUmVtYWluaW5nKCkgJiYgaXNBU0NJSURpZ2l0KGJ1ZmZlcltkaWdpdHNdKSkKLSAgICAg
ICAgZGlnaXRzKys7Ci0gICAgaWYgKCFkaWdpdHMgfHwgZGlnaXRzID4gOSkKKyAgICB1bnNpZ25l
ZCBtYXhDb3VudCA9IHN0ZDo6bWluPHVuc2lnbmVkPihidWZmZXIubGVuZ3RoUmVtYWluaW5nKCks
IDkpOworICAgIGZvciAoOyBkaWdpdHMgPCBtYXhDb3VudDsgKytkaWdpdHMpIHsKKyAgICAgICAg
aWYgKCFpc0FTQ0lJRGlnaXQoYnVmZmVyW2RpZ2l0c10pKQorICAgICAgICAgICAgYnJlYWs7Cisg
ICAgfQorICAgIGlmICghZGlnaXRzKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCiAg
ICAgVmVjdG9yPExDaGFyLCA5PiBwYWRkZWQoOSwgJzAnKTsKICAgICBmb3IgKHVuc2lnbmVkIGkg
PSAwOyBpIDwgZGlnaXRzOyArK2kpCiAgICAgICAgIHBhZGRlZFtpXSA9IGJ1ZmZlcltpXTsKICAg
ICBidWZmZXIuYWR2YW5jZUJ5KGRpZ2l0cyk7Ci0gICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKwor
ICAgIHVuc2lnbmVkIG1pbGxpc2Vjb25kID0gcGFyc2VEZWNpbWFsSW50MzIocGFkZGVkLmRhdGEo
KSwgMyk7CisgICAgdW5zaWduZWQgbWljcm9zZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQzMihwYWRk
ZWQuZGF0YSgpICsgMywgMyk7CisgICAgdW5zaWduZWQgbmFub3NlY29uZCA9IHBhcnNlRGVjaW1h
bEludDMyKHBhZGRlZC5kYXRhKCkgKyA2LCAzKTsKKworICAgIHJldHVybiBQbGFpblRpbWUoaG91
ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBtaWNyb3NlY29uZCwgbmFub3NlY29uZCk7
Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGF0aWMgc3RkOjpvcHRp
b25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChTdHJpbmdQYXJzaW5n
QnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAgLy8gVGltZVpvbmVOdW1lcmlj
VVRDT2Zmc2V0IDoKKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRTaWduIFRpbWVab25lVVRD
T2Zmc2V0SG91cgorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENP
ZmZzZXRIb3VyIDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUKKyAgICAvLyAgICAgVGltZVpvbmVV
VENPZmZzZXRTaWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0
ZQorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3Vy
IDogVGltZVpvbmVVVENPZmZzZXRNaW51dGUgOiBUaW1lWm9uZVVUQ09mZnNldFNlY29uZCBUaW1l
Wm9uZVVUQ09mZnNldEZyYWN0aW9uW29wdF0KKyAgICAvLyAgICAgVGltZVpvbmVVVENPZmZzZXRT
aWduIFRpbWVab25lVVRDT2Zmc2V0SG91ciBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZSBUaW1lWm9u
ZVVUQ09mZnNldFNlY29uZCBUaW1lWm9uZVVUQ09mZnNldEZyYWN0aW9uW29wdF0KKyAgICAvLwor
ICAgIC8vICBUaGlzIGlzIHRoZSBzYW1lIHRvCisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0
U2lnbiBUaW1lU3BlYworICAgIC8vCisgICAgLy8gIE1heGltdW0gYW5kIG1pbmltdW0gdmFsdWVz
IGFyZSDCsTIzOjU5OjU5Ljk5OTk5OTk5OSA9IMKxODYzOTk5OTk5OTk5OTlucywgd2hpY2ggY2Fu
IGJlIHJlcHJlc2VudGVkIGJ5IGludDY0X3QgLyBkb3VibGUncyBpbnRlZ2VyIHBhcnQuCisKKyAg
ICAvLyBzaWduIGFuZCBob3VyLgorICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCAz
KQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogCi0gICAgaW50NjRfdCBtaWxsaXNlY29u
ZCA9IHBhcnNlRGVjaW1hbEludDMyKHBhZGRlZC5kYXRhKCksIDMpOwotICAgIGludDY0X3QgbWlj
cm9zZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQzMihwYWRkZWQuZGF0YSgpICsgMywgMyk7Ci0gICAg
aW50NjRfdCBuYW5vc2Vjb25kID0gcGFyc2VEZWNpbWFsSW50MzIocGFkZGVkLmRhdGEoKSArIDYs
IDMpOworICAgIGludDY0X3QgZmFjdG9yID0gMTsKKyAgICBpZiAoKmJ1ZmZlciA9PSAnKycpCisg
ICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgZWxzZSBpZiAoKmJ1ZmZlciA9PSAnLScgfHwg
KmJ1ZmZlciA9PSAweDIyMTIpIHsKKyAgICAgICAgZmFjdG9yID0gLTE7CisgICAgICAgIGJ1ZmZl
ci5hZHZhbmNlKCk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBhdXRvIHBsYWluVGltZSA9IHBhcnNlVGltZVNwZWMoYnVmZmVyLCBTZWNvbmQ2ME1vZGU6
OlJlamVjdCk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxv
cHQ7CisKKyAgICBpbnQ2NF90IGhvdXIgPSBwbGFpblRpbWUtPmhvdXIoKTsKKyAgICBpbnQ2NF90
IG1pbnV0ZSA9IHBsYWluVGltZS0+bWludXRlKCk7CisgICAgaW50NjRfdCBzZWNvbmQgPSBwbGFp
blRpbWUtPnNlY29uZCgpOworICAgIGludDY0X3QgbWlsbGlzZWNvbmQgPSBwbGFpblRpbWUtPm1p
bGxpc2Vjb25kKCk7CisgICAgaW50NjRfdCBtaWNyb3NlY29uZCA9IHBsYWluVGltZS0+bWljcm9z
ZWNvbmQoKTsKKyAgICBpbnQ2NF90IG5hbm9zZWNvbmQgPSBwbGFpblRpbWUtPm5hbm9zZWNvbmQo
KTsKIAogICAgIHJldHVybiAobnNQZXJIb3VyICogaG91ciArIG5zUGVyTWludXRlICogbWludXRl
ICsgbnNQZXJTZWNvbmQgKiBzZWNvbmQgKyBuc1Blck1pbGxpc2Vjb25kICogbWlsbGlzZWNvbmQg
KyBuc1Blck1pY3Jvc2Vjb25kICogbWljcm9zZWNvbmQgKyBuYW5vc2Vjb25kKSAqIGZhY3RvcjsK
IH0KQEAgLTM2Miw3ICs0MjEsNDU4IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBh
cnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiBzdGQ6Om9w
dGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1ZpZXcg
c3RyaW5nKQogewogICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBb
XShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxpbnQ2NF90PiB7Ci0gICAgICAgIHJldHVy
biBwYXJzZVRpbWVab25lTnVtZXJpY1VUQ09mZnNldChidWZmZXIpOworICAgICAgICBhdXRvIHJl
c3VsdCA9IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KGJ1ZmZlcik7CisgICAgICAgIGlm
ICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pOworfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFy
YWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxWYXJpYW50PFZlY3RvcjxMQ2hhcj4sIGludDY0X3Q+
PiBwYXJzZVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbihTdHJpbmdQYXJzaW5nQnVmZmVyPENo
YXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNwcm9kLVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbgorICAgIC8vIFRpbWVa
b25lQnJhY2tldGVkQW5ub3RhdGlvbiA6CisgICAgLy8gICAgIFsgVGltZVpvbmVCcmFja2V0ZWRO
YW1lIF0KKyAgICAvLworICAgIC8vIFRpbWVab25lQnJhY2tldGVkTmFtZSA6CisgICAgLy8gICAg
IFRpbWVab25lSUFOQU5hbWUKKyAgICAvLyAgICAgRXRjL0dNVCBBU0NJSVNpZ24gSG91cgorICAg
IC8vICAgICBUaW1lWm9uZVVUQ09mZnNldE5hbWUKKworICAgIGlmIChidWZmZXIubGVuZ3RoUmVt
YWluaW5nKCkgPCAzKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKCpi
dWZmZXIgIT0gJ1snKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGJ1ZmZlci5h
ZHZhbmNlKCk7CisKKyAgICBzd2l0Y2ggKCpidWZmZXIpIHsKKyAgICBjYXNlICcrJzoKKyAgICBj
YXNlICctJzoKKyAgICBjYXNlIDB4MjIxMjogeworICAgICAgICAvLyBUaW1lWm9uZVVUQ09mZnNl
dE5hbWUgaXMgdGhlIHNhbWUgdG8gVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0LgorICAgICAgICBh
dXRvIG9mZnNldCA9IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KGJ1ZmZlcik7CisgICAg
ICAgIGlmICghb2Zmc2V0KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgaWYgKCpidWZmZXIgIT0gJ10nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVs
bG9wdDsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgcmV0dXJuIG9mZnNldC52
YWx1ZSgpOworICAgIH0KKyAgICBjYXNlICdFJzogeworICAgICAgICAvLyAiRXRjL0dNVCsyMCIg
YW5kICJdIiA9PiBsZW5ndGggaXMgMTEuCisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWlu
aW5nKCkgPj0gMTEpIHsKKyAgICAgICAgICAgIGlmIChidWZmZXJbMF0gPT0gJ0UnICYmIGJ1ZmZl
clsxXSA9PSAndCcgJiYgYnVmZmVyWzJdID09ICdjJyAmJiBidWZmZXJbM10gPT0gJy8nICYmIGJ1
ZmZlcls0XSA9PSAnRycgJiYgYnVmZmVyWzVdID09ICdNJyAmJiBidWZmZXJbNl0gPT0gJ1QnKSB7
CisgICAgICAgICAgICAgICAgYXV0byBzaWduQ2hhcmFjdGVyID0gYnVmZmVyWzddOworICAgICAg
ICAgICAgICAgIC8vIE5vdCBpbmNsdWRpbmcgMHgyMjEyIHNpbmNlIGl0IGlzIEFTQ0lJU2lnbi4K
KyAgICAgICAgICAgICAgICBpZiAoc2lnbkNoYXJhY3RlciA9PSAnKycgfHwgc2lnbkNoYXJhY3Rl
ciA9PSAnLScpIHsKKyAgICAgICAgICAgICAgICAgICAgLy8gRXRjL0dNVCswMSBpcyBVVEMtMDE6
MDAuIFRoaXMgc2lnbiBpcyBpbnRlbnRpb25hbGx5IGludmVydGVkLgorICAgICAgICAgICAgICAg
ICAgICAvLyBodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9Uel9kYXRhYmFzZSNBcmVhCisg
ICAgICAgICAgICAgICAgICAgIGludDY0X3QgZmFjdG9yID0gc2lnbkNoYXJhY3RlciA9PSAnKycg
PyAtMSA6IDE7CisgICAgICAgICAgICAgICAgICAgIGludDY0X3QgaG91ciA9IDA7CisgICAgICAg
ICAgICAgICAgICAgIGF1dG8gZmlyc3RIb3VyQ2hhcmFjdGVyID0gYnVmZmVyWzhdOworICAgICAg
ICAgICAgICAgICAgICBpZiAoZmlyc3RIb3VyQ2hhcmFjdGVyID49ICcwJyAmJiBmaXJzdEhvdXJD
aGFyYWN0ZXIgPD0gJzInKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBhdXRvIHNlY29uZEhv
dXJDaGFyYWN0ZXIgPSBidWZmZXJbOV07CisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXNB
U0NJSURpZ2l0KHNlY29uZEhvdXJDaGFyYWN0ZXIpKSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaG91ciA9IChzZWNvbmRIb3VyQ2hhcmFjdGVyIC0gJzAnKSArIDEwICogKGZpcnN0SG91
ckNoYXJhY3RlciAtICcwJyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGhvdXIg
PCAyNCAmJiBidWZmZXJbMTBdID09ICddJykgeworICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBidWZmZXIuYWR2YW5jZUJ5KDExKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuIG5zUGVySG91ciAqIGhvdXIgKiBmYWN0b3I7CisgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg
ICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IEZBTExUSFJPVUdIOworICAgIH0KKyAgICBkZWZhdWx0OiB7CisgICAgICAgIC8vIFRaTGVhZGlu
Z0NoYXIgOgorICAgICAgICAvLyAgICAgQWxwaGEKKyAgICAgICAgLy8gICAgIC4KKyAgICAgICAg
Ly8gICAgIF8KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVFpDaGFyIDoKKyAgICAgICAgLy8gICAg
IEFscGhhCisgICAgICAgIC8vICAgICAuCisgICAgICAgIC8vICAgICAtCisgICAgICAgIC8vICAg
ICBfCisgICAgICAgIC8vCisgICAgICAgIC8vIFRpbWVab25lSUFOQU5hbWVDb21wb25lbnQgOgor
ICAgICAgICAvLyAgICAgVFpMZWFkaW5nQ2hhciBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNo
YXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBU
WkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0XSBUWkNoYXJbb3B0
XSBUWkNoYXJbb3B0XSBidXQgbm90IG9uZSBvZiAuIG9yIC4uCisgICAgICAgIC8vCisgICAgICAg
IC8vIFRpbWVab25lSUFOQU5hbWUgOgorICAgICAgICAvLyAgICAgVGltZVpvbmVJQU5BTmFtZUNv
bXBvbmVudAorICAgICAgICAvLyAgICAgVGltZVpvbmVJQU5BTmFtZSAvIFRpbWVab25lSUFOQU5h
bWVDb21wb25lbnQKKworICAgICAgICB1bnNpZ25lZCBuYW1lTGVuZ3RoID0gMDsKKyAgICAgICAg
eworICAgICAgICAgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgICAgICAgICAgZm9yICg7IGlu
ZGV4IDwgYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpOyArK2luZGV4KSB7CisgICAgICAgICAgICAg
ICAgYXV0byBjaGFyYWN0ZXIgPSBidWZmZXJbaW5kZXhdOworICAgICAgICAgICAgICAgIGlmIChj
aGFyYWN0ZXIgPT0gJ10nKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
ICAgICBpZiAoIWlzQVNDSUlBbHBoYShjaGFyYWN0ZXIpICYmIGNoYXJhY3RlciAhPSAnLicgJiYg
Y2hhcmFjdGVyICE9ICdfJyAmJiBjaGFyYWN0ZXIgIT0gJy0nICYmIGNoYXJhY3RlciAhPSAnLycp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICB9
CisgICAgICAgICAgICBpZiAoIWluZGV4KQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51
bGxvcHQ7CisgICAgICAgICAgICBuYW1lTGVuZ3RoID0gaW5kZXg7CisgICAgICAgIH0KKworICAg
ICAgICBhdXRvIGlzVmFsaWRDb21wb25lbnQgPSBbJl0odW5zaWduZWQgc3RhcnQsIHVuc2lnbmVk
IGVuZCkgeworICAgICAgICAgICAgdW5zaWduZWQgY29tcG9uZW50TGVuZ3RoID0gZW5kIC0gc3Rh
cnQ7CisgICAgICAgICAgICBpZiAoIWNvbXBvbmVudExlbmd0aCkKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAoY29tcG9uZW50TGVuZ3RoID4gMTQpCisgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKGNvbXBvbmVudExlbmd0
aCA9PSAxICYmIGJ1ZmZlcltzdGFydF0gPT0gJy4nKQorICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKyAgICAgICAgICAgIGlmIChjb21wb25lbnRMZW5ndGggPT0gMiAmJiBidWZmZXJbc3Rh
cnRdID09ICcuJyAmJiBidWZmZXJbc3RhcnQgKyAxXSA9PSAnLicpCisgICAgICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgIH07CisKKyAg
ICAgICAgdW5zaWduZWQgY3VycmVudE5hbWVDb21wb25lbnRTdGFydEluZGV4ID0gMDsKKyAgICAg
ICAgYm9vbCBpc0xlYWRpbmdDaGFyYWN0ZXJJbk5hbWVDb21wb25lbnQgPSB0cnVlOworICAgICAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBuYW1lTGVuZ3RoOyArK2luZGV4KSB7
CisgICAgICAgICAgICBhdXRvIGNoYXJhY3RlciA9IGJ1ZmZlcltpbmRleF07CisgICAgICAgICAg
ICBpZiAoaXNMZWFkaW5nQ2hhcmFjdGVySW5OYW1lQ29tcG9uZW50KSB7CisgICAgICAgICAgICAg
ICAgaWYgKCEoaXNBU0NJSUFscGhhKGNoYXJhY3RlcikgfHwgY2hhcmFjdGVyID09ICcuJyB8fCBj
aGFyYWN0ZXIgPT0gJ18nKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9w
dDsKKworICAgICAgICAgICAgICAgIGN1cnJlbnROYW1lQ29tcG9uZW50U3RhcnRJbmRleCA9IGlu
ZGV4OworICAgICAgICAgICAgICAgIGlzTGVhZGluZ0NoYXJhY3RlckluTmFtZUNvbXBvbmVudCA9
IGZhbHNlOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAg
ICAgICAgICBpZiAoY2hhcmFjdGVyID09ICcvJykgeworICAgICAgICAgICAgICAgIGlmICghaXNW
YWxpZENvbXBvbmVudChjdXJyZW50TmFtZUNvbXBvbmVudFN0YXJ0SW5kZXgsIGluZGV4KSkKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgICAgICBp
c0xlYWRpbmdDaGFyYWN0ZXJJbk5hbWVDb21wb25lbnQgPSB0cnVlOworICAgICAgICAgICAgICAg
IGNvbnRpbnVlOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAoIShpc0FTQ0lJQWxw
aGEoY2hhcmFjdGVyKSB8fCBjaGFyYWN0ZXIgPT0gJy4nIHx8IGNoYXJhY3RlciA9PSAnXycgfHwg
Y2hhcmFjdGVyID09ICctJykpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgfQorICAgICAgICBpZiAoaXNMZWFkaW5nQ2hhcmFjdGVySW5OYW1lQ29tcG9uZW50
KQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCFpc1ZhbGlk
Q29tcG9uZW50KGN1cnJlbnROYW1lQ29tcG9uZW50U3RhcnRJbmRleCwgbmFtZUxlbmd0aCkpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgIFZlY3RvcjxMQ2hhcj4g
cmVzdWx0OworICAgICAgICByZXN1bHQucmVzZXJ2ZUluaXRpYWxDYXBhY2l0eShuYW1lTGVuZ3Ro
KTsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbmFtZUxlbmd0aDsg
KytpbmRleCkKKyAgICAgICAgICAgIHJlc3VsdC51bmNoZWNrZWRBcHBlbmQoYnVmZmVyW2luZGV4
XSk7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlQnkobmFtZUxlbmd0aCk7CisKKyAgICAgICAgaWYg
KGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgaWYgKCpidWZmZXIgIT0gJ10nKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgcmV0dXJuIFdURk1vdmUocmVzdWx0
KTsKKyAgICB9CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgor
Ym9vbCBjYW5CZVRpbWVab25lKGNvbnN0IFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlw
ZT4mIGJ1ZmZlciwgQ2hhcmFjdGVyVHlwZSBjaGFyYWN0ZXIpCit7CisgICAgc3dpdGNoIChjaGFy
YWN0ZXIpIHsKKyAgICAvLyBVVENEZXNpZ25hdG9yCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVVUQ0Rlc2lnbmF0b3IKKyAgICBjYXNlICd6JzoKKyAgICBj
YXNlICdaJzoKKyAgICAvLyBUaW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICAvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVVVENPZmZzZXRTaWduCisgICAg
Y2FzZSAnKyc6CisgICAgY2FzZSAnLSc6CisgICAgY2FzZSAweDIyMTI6CisgICAgLy8gVGltZVpv
bmVCcmFja2V0ZWRBbm5vdGF0aW9uCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRl
bXBvcmFsLyNwcm9kLVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbgorICAgIGNhc2UgJ1snOiB7
CisgICAgICAgIC8vIFdlIHNob3VsZCByZWplY3QgY2FsZW5kYXIgZXh0ZW5zaW9uIGNhc2UuCisg
ICAgICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1DYWxlbmRh
cgorICAgICAgICAvLyBDYWxlbmRhciA6CisgICAgICAgIC8vICAgICBbdS1jYT0gQ2FsZW5kYXJO
YW1lXQorICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpID49IDYgJiYgYnVmZmVy
WzFdID09ICd1JyAmJiBidWZmZXJbMl0gPT0gJy0nICYmIGJ1ZmZlclszXSA9PSAnYycgJiYgYnVm
ZmVyWzRdID09ICdhJyAmJiBidWZmZXJbNV0gPT0gJz0nKQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgICAg
cmV0dXJuIGZhbHNlOworICAgIH0KK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlw
ZT4KK3N0ZDo6b3B0aW9uYWw8VGltZVpvbmVSZWNvcmQ+IHBhcnNlVGltZVpvbmUoU3RyaW5nUGFy
c2luZ0J1ZmZlcjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQoreworICAgIGlmIChidWZmZXIuYXRF
bmQoKSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBzd2l0Y2ggKCpidWZmZXIp
IHsKKyAgICAvLyBVVENEZXNpZ25hdG9yCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNwcm9kLVVUQ0Rlc2lnbmF0b3IKKyAgICBjYXNlICd6JzoKKyAgICBjYXNlICda
JzogeworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBpZiAoIWJ1ZmZlci5hdEVu
ZCgpICYmICpidWZmZXIgPT0gJ1snKSB7CisgICAgICAgICAgICBhdXRvIHRpbWVab25lID0gcGFy
c2VUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24oYnVmZmVyKTsKKyAgICAgICAgICAgIGlmICgh
dGltZVpvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
ICAgIHJldHVybiBUaW1lWm9uZVJlY29yZCB7IHRydWUsIHN0ZDo6bnVsbG9wdCwgV1RGTW92ZSh0
aW1lWm9uZS52YWx1ZSgpKSB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiBUaW1lWm9uZVJl
Y29yZCB7IHRydWUsIHN0ZDo6bnVsbG9wdCwgeyB9IH07CisgICAgfQorICAgIC8vIFRpbWVab25l
VVRDT2Zmc2V0U2lnbgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
cHJvZC1UaW1lWm9uZVVUQ09mZnNldFNpZ24KKyAgICBjYXNlICcrJzoKKyAgICBjYXNlICctJzoK
KyAgICBjYXNlIDB4MjIxMjogeworICAgICAgICBhdXRvIG9mZnNldCA9IHBhcnNlVGltZVpvbmVO
dW1lcmljVVRDT2Zmc2V0KGJ1ZmZlcik7CisgICAgICAgIGlmICghb2Zmc2V0KQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSAmJiAq
YnVmZmVyID09ICdbJykgeworICAgICAgICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpv
bmVCcmFja2V0ZWRBbm5vdGF0aW9uKGJ1ZmZlcik7CisgICAgICAgICAgICBpZiAoIXRpbWVab25l
KQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgICAgICByZXR1
cm4gVGltZVpvbmVSZWNvcmQgeyBmYWxzZSwgb2Zmc2V0LnZhbHVlKCksIFdURk1vdmUodGltZVpv
bmUudmFsdWUoKSkgfTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gVGltZVpvbmVSZWNvcmQg
eyBmYWxzZSwgb2Zmc2V0LnZhbHVlKCksIHsgfSB9OworICAgIH0KKyAgICAvLyBUaW1lWm9uZUJy
YWNrZXRlZEFubm90YXRpb24KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3Byb2QtVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uCisgICAgY2FzZSAnWyc6IHsKKyAg
ICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uKGJ1
ZmZlcik7CisgICAgICAgIGlmICghdGltZVpvbmUpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICByZXR1cm4gVGltZVpvbmVSZWNvcmQgeyBmYWxzZSwgc3RkOjpudWxs
b3B0LCBXVEZNb3ZlKHRpbWVab25lLnZhbHVlKCkpIH07CisgICAgfQorICAgIGRlZmF1bHQ6Cisg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3Rk
OjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBwYXJzZVRpbWUoU3RyaW5nUGFyc2luZ0J1ZmZl
cjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jcHJvZC1UaW1lCisgICAgLy8gVGltZSA6CisgICAgLy8gICAgIFRpbWVT
cGVjIFRpbWVab25lW29wdF0KKyAgICBhdXRvIHBsYWluVGltZSA9IHBhcnNlVGltZVNwZWMoYnVm
ZmVyLCBTZWNvbmQ2ME1vZGU6OkFjY2VwdCk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICBy
ZXR1cm4gc3RkOjp0dXBsZSB7IHBsYWluVGltZS52YWx1ZSgpLCBzdGQ6Om51bGxvcHQgfTsKKyAg
ICBpZiAoY2FuQmVUaW1lWm9uZShidWZmZXIsICpidWZmZXIpKSB7CisgICAgICAgIGF1dG8gdGlt
ZVpvbmUgPSBwYXJzZVRpbWVab25lKGJ1ZmZlcik7CisgICAgICAgIGlmICghdGltZVpvbmUpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjp0dXBs
ZSB7IHBsYWluVGltZS52YWx1ZSgpLCB0aW1lWm9uZSB9OworICAgIH0KKyAgICByZXR1cm4gc3Rk
Ojp0dXBsZSB7IHBsYWluVGltZS52YWx1ZSgpLCBzdGQ6Om51bGxvcHQgfTsKK30KKworLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaXNvZGF5c2lubW9u
dGgKK2lubGluZSB1bnNpZ25lZCBkYXlzSW5Nb250aChpbnQzMl90IHllYXIsIHVuc2lnbmVkIG1v
bnRoKQoreworICAgIHN3aXRjaCAobW9udGgpIHsKKyAgICBjYXNlIDE6CisgICAgY2FzZSAzOgor
ICAgIGNhc2UgNToKKyAgICBjYXNlIDc6CisgICAgY2FzZSA4OgorICAgIGNhc2UgMTA6CisgICAg
Y2FzZSAxMjoKKyAgICAgICAgcmV0dXJuIDMxOworICAgIGNhc2UgNDoKKyAgICBjYXNlIDY6Cisg
ICAgY2FzZSA5OgorICAgIGNhc2UgMTE6CisgICAgICAgIHJldHVybiAzMDsKKyAgICBjYXNlIDI6
CisgICAgICAgIGlmIChpc0xlYXBZZWFyKHllYXIpKQorICAgICAgICAgICAgcmV0dXJuIDI5Owor
ICAgICAgICByZXR1cm4gMjg7CisgICAgfQorICAgIHJldHVybiAwOworfQorCit0ZW1wbGF0ZTx0
eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxQbGFpbkRhdGU+IHBhcnNlRGF0
ZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAgLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLURhdGUKKyAgICAvLyBEYXRl
IDoKKyAgICAvLyAgICAgRGF0ZVllYXIgLSBEYXRlTW9udGggLSBEYXRlRGF5CisgICAgLy8gICAg
IERhdGVZZWFyIERhdGVNb250aCBEYXRlRGF5CisgICAgLy8KKyAgICAvLyBEYXRlWWVhciA6Cisg
ICAgLy8gICAgIERhdGVGb3VyRGlnaXRZZWFyCisgICAgLy8gICAgIERhdGVFeHRlbmRlZFllYXIK
KyAgICAvLworICAgIC8vIERhdGVGb3VyRGlnaXRZZWFyIDoKKyAgICAvLyAgICAgRGlnaXQgRGln
aXQgRGlnaXQgRGlnaXQKKyAgICAvLworICAgIC8vIERhdGVFeHRlbmRlZFllYXIgOgorICAgIC8v
ICAgICBTaWduIERpZ2l0IERpZ2l0IERpZ2l0IERpZ2l0IERpZ2l0IERpZ2l0CisgICAgLy8KKyAg
ICAvLyBEYXRlTW9udGggOgorICAgIC8vICAgICAwIE5vbnplcm9EaWdpdAorICAgIC8vICAgICAx
MAorICAgIC8vICAgICAxMQorICAgIC8vICAgICAxMgorICAgIC8vCisgICAgLy8gRGF0ZURheSA6
CisgICAgLy8gICAgIDAgTm9uemVyb0RpZ2l0CisgICAgLy8gICAgIDEgRGlnaXQKKyAgICAvLyAg
ICAgMiBEaWdpdAorICAgIC8vICAgICAzMAorICAgIC8vICAgICAzMQorCisgICAgaWYgKGJ1ZmZl
ci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYm9vbCBzaXhE
aWdpdHNZZWFyID0gZmFsc2U7CisgICAgaW50IHllYXJGYWN0b3IgPSAxOworICAgIGlmICgqYnVm
ZmVyID09ICcrJykgeworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBzaXhEaWdp
dHNZZWFyID0gdHJ1ZTsKKyAgICB9IGVsc2UgaWYgKCpidWZmZXIgPT0gJy0nIHx8ICpidWZmZXIg
PT0gMHgyMjEyKSB7CisgICAgICAgIHllYXJGYWN0b3IgPSAtMTsKKyAgICAgICAgYnVmZmVyLmFk
dmFuY2UoKTsKKyAgICAgICAgc2l4RGlnaXRzWWVhciA9IHRydWU7CisgICAgfSBlbHNlIGlmICgh
aXNBU0NJSURpZ2l0KCpidWZmZXIpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisg
ICAgaW50MzJfdCB5ZWFyID0gMDsKKyAgICBpZiAoc2l4RGlnaXRzWWVhcikgeworICAgICAgICBp
ZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgNikKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IDY7ICsr
aW5kZXgpIHsKKyAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KGJ1ZmZlcltpbmRleF0pKQor
ICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIH0KKyAgICAgICAg
eWVhciA9IHBhcnNlRGVjaW1hbEludDMyKGJ1ZmZlci5wb3NpdGlvbigpLCA2KSAqIHllYXJGYWN0
b3I7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlQnkoNik7CisgICAgfSBlbHNlIHsKKyAgICAgICAg
aWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDQpCisgICAgICAgICAgICByZXR1cm4gc3Rk
OjpudWxsb3B0OworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCA0OyAr
K2luZGV4KSB7CisgICAgICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChidWZmZXJbaW5kZXhdKSkK
KyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgICAg
IHllYXIgPSBwYXJzZURlY2ltYWxJbnQzMihidWZmZXIucG9zaXRpb24oKSwgNCk7CisgICAgICAg
IGJ1ZmZlci5hZHZhbmNlQnkoNCk7CisgICAgfQorCisgICAgaWYgKGJ1ZmZlci5hdEVuZCgpKQor
ICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgYm9vbCBzcGxpdEJ5SHlwaGVuID0g
ZmFsc2U7CisgICAgaWYgKCpidWZmZXIgPT0gJy0nKSB7CisgICAgICAgIHNwbGl0QnlIeXBoZW4g
PSB0cnVlOworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBpZiAoYnVmZmVyLmxl
bmd0aFJlbWFpbmluZygpIDwgNSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cisg
ICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDQpCisg
ICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIH0KKyAgICAvLyBXZSBlbnN1cmVk
IHRoYXQgYnVmZmVyIGhhcyBlbm91Z2ggbGVuZ3RoIGZvciBtb250aCBhbmQgZGF5LiBXZSBkbyBu
b3QgbmVlZCB0byBjaGVjayBsZW5ndGguCisKKyAgICB1bnNpZ25lZCBtb250aCA9IDA7CisgICAg
YXV0byBmaXJzdE1vbnRoQ2hhcmFjdGVyID0gKmJ1ZmZlcjsKKyAgICBpZiAoZmlyc3RNb250aENo
YXJhY3RlciA9PSAnMCcgfHwgZmlyc3RNb250aENoYXJhY3RlciA9PSAnMScpIHsKKyAgICAgICAg
YnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgYXV0byBzZWNvbmRNb250aENoYXJhY3RlciA9ICpi
dWZmZXI7CisgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KHNlY29uZE1vbnRoQ2hhcmFjdGVyKSkK
KyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIG1vbnRoID0gKHNlY29u
ZE1vbnRoQ2hhcmFjdGVyIC0gJzAnKSArIDEwICogKGZpcnN0TW9udGhDaGFyYWN0ZXIgLSAnMCcp
OworICAgICAgICBpZiAoIW1vbnRoIHx8IG1vbnRoID4gMTIpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgIH0gZWxzZQorICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworCisgICAgaWYgKHNwbGl0QnlIeXBoZW4pIHsKKyAg
ICAgICAgaWYgKCpidWZmZXIgPT0gJy0nKQorICAgICAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsK
KyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9CisK
KyAgICB1bnNpZ25lZCBkYXkgPSAwOworICAgIGF1dG8gZmlyc3REYXlDaGFyYWN0ZXIgPSAqYnVm
ZmVyOworICAgIGlmIChmaXJzdERheUNoYXJhY3RlciA+PSAnMCcgJiYgZmlyc3REYXlDaGFyYWN0
ZXIgPD0gJzMnKSB7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIGF1dG8gc2Vj
b25kRGF5Q2hhcmFjdGVyID0gKmJ1ZmZlcjsKKyAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc2Vj
b25kRGF5Q2hhcmFjdGVyKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgIGRheSA9IChzZWNvbmREYXlDaGFyYWN0ZXIgLSAnMCcpICsgMTAgKiAoZmlyc3REYXlDaGFy
YWN0ZXIgLSAnMCcpOworICAgICAgICBpZiAoIWRheSB8fCBkYXkgPiBkYXlzSW5Nb250aCh5ZWFy
LCBtb250aCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBidWZm
ZXIuYWR2YW5jZSgpOworICAgIH0gZWxzZQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
CisgICAgcmV0dXJuIFBsYWluRGF0ZSh5ZWFyLCBtb250aCwgZGF5KTsKK30KKwordGVtcGxhdGU8
dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRh
dGUsIHN0ZDo6b3B0aW9uYWw8UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29y
ZD4+PiBwYXJzZURhdGVUaW1lKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1
ZmZlcikKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2Qt
RGF0ZVRpbWUKKyAgICAvLyBEYXRlVGltZSA6CisgICAgLy8gICAgIERhdGUgVGltZVNwZWNTZXBh
cmF0b3Jbb3B0XSBUaW1lWm9uZVtvcHRdCisgICAgLy8KKyAgICAvLyBUaW1lU3BlY1NlcGFyYXRv
ciA6CisgICAgLy8gICAgIERhdGVUaW1lU2VwYXJhdG9yIFRpbWVTcGVjCisgICAgYXV0byBwbGFp
bkRhdGUgPSBwYXJzZURhdGUoYnVmZmVyKTsKKyAgICBpZiAoIXBsYWluRGF0ZSkKKyAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgIHJl
dHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5EYXRlLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpu
dWxsb3B0IH07CisKKyAgICBpZiAoKmJ1ZmZlciA9PSAnICcgfHwgKmJ1ZmZlciA9PSAnVCcgfHwg
KmJ1ZmZlciA9PSAndCcpIHsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICAgICAgYXV0
byBwbGFpblRpbWVBbmRUaW1lWm9uZSA9IHBhcnNlVGltZShidWZmZXIpOworICAgICAgICBpZiAo
IXBsYWluVGltZUFuZFRpbWVab25lKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgYXV0byBbcGxhaW5UaW1lLCB0aW1lWm9uZV0gPSBwbGFpblRpbWVBbmRUaW1lWm9u
ZS52YWx1ZSgpOworICAgICAgICByZXR1cm4gc3RkOjp0dXBsZSB7IHBsYWluRGF0ZS52YWx1ZSgp
LCBwbGFpblRpbWUsIHRpbWVab25lIH07CisgICAgfQorCisgICAgaWYgKGNhbkJlVGltZVpvbmUo
YnVmZmVyLCAqYnVmZmVyKSkgeworICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VUaW1lWm9u
ZShidWZmZXIpOworICAgICAgICBpZiAoIXRpbWVab25lKQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpbkRhdGUudmFsdWUo
KSwgc3RkOjpudWxsb3B0LCB0aW1lWm9uZSB9OworICAgIH0KKworICAgIHJldHVybiBzdGQ6OnR1
cGxlIHsgcGxhaW5EYXRlLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCwgc3RkOjpudWxsb3B0IH07Cit9
CisKK3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpblRpbWUsIHN0ZDo6b3B0aW9uYWw8VGlt
ZVpvbmVSZWNvcmQ+Pj4gcGFyc2VUaW1lKFN0cmluZ1ZpZXcgc3RyaW5nKQoreworICAgIHJldHVy
biByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5nLCBbXShhdXRvIGJ1ZmZlcikgLT4gc3Rk
OjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJl
Y29yZD4+PiB7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VUaW1lKGJ1ZmZlcik7CisgICAg
ICAgIGlmICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0
OworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0pOworfQorCitzdGQ6Om9wdGlvbmFsPHN0
ZDo6dHVwbGU8UGxhaW5EYXRlLCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4sIHN0ZDo6b3B0aW9u
YWw8VGltZVpvbmVSZWNvcmQ+Pj4gcGFyc2VEYXRlVGltZShTdHJpbmdWaWV3IHN0cmluZykKK3sK
KyAgICByZXR1cm4gcmVhZENoYXJhY3RlcnNGb3JQYXJzaW5nKHN0cmluZywgW10oYXV0byBidWZm
ZXIpIC0+IHN0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9uYWw8
UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiB7CisgICAgICAgIGF1
dG8gcmVzdWx0ID0gcGFyc2VEYXRlVGltZShidWZmZXIpOworICAgICAgICBpZiAoIWJ1ZmZlci5h
dEVuZCgpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgcmV0dXJu
IHJlc3VsdDsKICAgICB9KTsKIH0KIApAQCAtMzgyLDEzICs4OTIsMTkgQEAgU3RyaW5nIGZvcm1h
dFRpbWVab25lT2Zmc2V0U3RyaW5nKGludDY0X3Qgb2Zmc2V0KQogICAgIGlmIChuYW5vc2Vjb25k
cykgewogICAgICAgICAvLyBTaW5jZSBuc1BlclNlY29uZCBpcyAxMDAwMDAwMDAwLCBzdHJpbmdp
ZmllZCBuYW5vc2Vjb25kcyB0YWtlcyBhdCBtb3N0IDkgY2hhcmFjdGVycyAoOTk5OTk5OTk5KS4K
ICAgICAgICAgYXV0byBmcmFjdGlvbiA9IFdURjo6bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0
b3I8TENoYXIsIDk+PihuYW5vc2Vjb25kcyk7Ci0gICAgICAgIHVuc2lnbmVkIGluZGV4ID0gMDsK
ICAgICAgICAgdW5zaWduZWQgcGFkZGluZ0xlbmd0aCA9IDkgLSBmcmFjdGlvbi5zaXplKCk7Ci0g
ICAgICAgIGZvciAoOyBpbmRleCA8IGZyYWN0aW9uLnNpemUoKTsgKytpbmRleCkgewotICAgICAg
ICAgICAgaWYgKGZyYWN0aW9uW2luZGV4XSA9PSAnMCcpCisgICAgICAgIHVuc2lnbmVkIGluZGV4
ID0gZnJhY3Rpb24uc2l6ZSgpOworICAgICAgICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2YWxp
ZExlbmd0aDsKKyAgICAgICAgd2hpbGUgKGluZGV4LS0pIHsKKyAgICAgICAgICAgIGlmIChmcmFj
dGlvbltpbmRleF0gIT0gJzAnKSB7CisgICAgICAgICAgICAgICAgdmFsaWRMZW5ndGggPSBpbmRl
eCArIDE7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9CiAgICAgICAgIH0K
LSAgICAgICAgZnJhY3Rpb24ucmVzaXplKGluZGV4KTsKKyAgICAgICAgaWYgKHZhbGlkTGVuZ3Ro
KQorICAgICAgICAgICAgZnJhY3Rpb24ucmVzaXplKHZhbGlkTGVuZ3RoLnZhbHVlKCkpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBmcmFjdGlvbi5jbGVhcigpOwogICAgICAgICByZXR1cm4g
bWFrZVN0cmluZyhuZWdhdGl2ZSA/ICctJyA6ICcrJywgcGFkKCcwJywgMiwgaG91cnMpLCAnOics
IHBhZCgnMCcsIDIsIG1pbnV0ZXMpLCAnOicsIHBhZCgnMCcsIDIsIHNlY29uZHMpLCAnLicsIHBh
ZCgnMCcsIHBhZGRpbmdMZW5ndGgsIGVtcHR5U3RyaW5nKCkpLCBmcmFjdGlvbik7CiAgICAgfQog
ICAgIGlmIChzZWNvbmRzKQpAQCAtMzk2LDUgKzkxMiw1OCBAQCBTdHJpbmcgZm9ybWF0VGltZVpv
bmVPZmZzZXRTdHJpbmcoaW50NjRfdCBvZmZzZXQpCiAgICAgcmV0dXJuIG1ha2VTdHJpbmcobmVn
YXRpdmUgPyAnLScgOiAnKycsIHBhZCgnMCcsIDIsIGhvdXJzKSwgJzonLCBwYWQoJzAnLCAyLCBt
aW51dGVzKSk7CiB9CiAKK1N0cmluZyB0ZW1wb3JhbFRpbWVUb1N0cmluZyhQbGFpblRpbWUgcGxh
aW5UaW1lLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lvbikKK3sKKyAg
ICBhdXRvIFtwcmVjaXNpb25UeXBlLCBwcmVjaXNpb25WYWx1ZV0gPSBwcmVjaXNpb247CisgICAg
QVNTRVJUKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpBdXRvIHx8IHByZWNpc2lvblZhbHVl
IDwgMTApOworICAgIGlmIChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6TWludXRlKQorICAg
ICAgICByZXR1cm4gbWFrZVN0cmluZyhwYWQoJzAnLCAyLCBwbGFpblRpbWUuaG91cigpKSwgJzon
LCBwYWQoJzAnLCAyLCBwbGFpblRpbWUubWludXRlKCkpKTsKKworICAgIGludDY0X3QgZnJhY3Rp
b25OYW5vc2Vjb25kcyA9IHN0YXRpY19jYXN0PGludDY0X3Q+KHBsYWluVGltZS5taWxsaXNlY29u
ZCgpKSAqIG5zUGVyTWlsbGlzZWNvbmQgKyBzdGF0aWNfY2FzdDxpbnQ2NF90PihwbGFpblRpbWUu
bWljcm9zZWNvbmQoKSkgKiBuc1Blck1pY3Jvc2Vjb25kICsgc3RhdGljX2Nhc3Q8aW50NjRfdD4o
cGxhaW5UaW1lLm5hbm9zZWNvbmQoKSk7CisgICAgaWYgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lz
aW9uOjpBdXRvKSB7CisgICAgICAgIGlmICghZnJhY3Rpb25OYW5vc2Vjb25kcykKKyAgICAgICAg
ICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOics
IHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5U
aW1lLnNlY29uZCgpKSk7CisgICAgICAgIGF1dG8gZnJhY3Rpb24gPSBXVEY6Om51bWJlclRvU3Ry
aW5nVW5zaWduZWQ8VmVjdG9yPExDaGFyLCA5Pj4oZnJhY3Rpb25OYW5vc2Vjb25kcyk7CisgICAg
ICAgIHVuc2lnbmVkIHBhZGRpbmdMZW5ndGggPSA5IC0gZnJhY3Rpb24uc2l6ZSgpOworICAgICAg
ICB1bnNpZ25lZCBpbmRleCA9IGZyYWN0aW9uLnNpemUoKTsKKyAgICAgICAgc3RkOjpvcHRpb25h
bDx1bnNpZ25lZD4gdmFsaWRMZW5ndGg7CisgICAgICAgIHdoaWxlIChpbmRleC0tKSB7CisgICAg
ICAgICAgICBpZiAoZnJhY3Rpb25baW5kZXhdICE9ICcwJykgeworICAgICAgICAgICAgICAgIHZh
bGlkTGVuZ3RoID0gaW5kZXggKyAxOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgfQorICAgICAgICB9CisgICAgICAgIGlmICh2YWxpZExlbmd0aCkKKyAgICAgICAgICAgIGZy
YWN0aW9uLnJlc2l6ZSh2YWxpZExlbmd0aC52YWx1ZSgpKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgZnJhY3Rpb24uY2xlYXIoKTsKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcw
JywgMiwgcGxhaW5UaW1lLmhvdXIoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLm1pbnV0
ZSgpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUuc2Vjb25kKCkpLCAnLicsIHBhZCgnMCcs
IHBhZGRpbmdMZW5ndGgsIGVtcHR5U3RyaW5nKCkpLCBmcmFjdGlvbik7CisgICAgfQorICAgIGlm
ICghcHJlY2lzaW9uVmFsdWUpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIs
IHBsYWluVGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSks
ICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLnNlY29uZCgpKSk7CisgICAgYXV0byBmcmFjdGlv
biA9IFdURjo6bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TENoYXIsIDk+PihmcmFjdGlv
bk5hbm9zZWNvbmRzKTsKKyAgICB1bnNpZ25lZCBwYWRkaW5nTGVuZ3RoID0gOSAtIGZyYWN0aW9u
LnNpemUoKTsKKyAgICBwYWRkaW5nTGVuZ3RoID0gc3RkOjptaW4ocGFkZGluZ0xlbmd0aCwgcHJl
Y2lzaW9uVmFsdWUpOworICAgIHByZWNpc2lvblZhbHVlIC09IHBhZGRpbmdMZW5ndGg7CisgICAg
ZnJhY3Rpb24ucmVzaXplKHByZWNpc2lvblZhbHVlKTsKKyAgICByZXR1cm4gbWFrZVN0cmluZyhw
YWQoJzAnLCAyLCBwbGFpblRpbWUuaG91cigpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUu
bWludXRlKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5zZWNvbmQoKSksICcuJywgcGFk
KCcwJywgcGFkZGluZ0xlbmd0aCwgZW1wdHlTdHJpbmcoKSksIGZyYWN0aW9uKTsKK30KKworLy8g
SXNWYWxpZER1cmF0aW9uICggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51
dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcywgbmFub3NlY29uZHMgKQor
Ly8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtaXN2YWxp
ZGR1cmF0aW9uCitib29sIGlzVmFsaWREdXJhdGlvbihjb25zdCBEdXJhdGlvbiYgZHVyYXRpb24p
Cit7CisgICAgaW50IHNpZ24gPSAwOworICAgIGZvciAoYXV0byB2YWx1ZSA6IGR1cmF0aW9uKSB7
CisgICAgICAgIGlmICghc3RkOjppc2Zpbml0ZSh2YWx1ZSkgfHwgKHZhbHVlIDwgMCAmJiBzaWdu
ID4gMCkgfHwgKHZhbHVlID4gMCAmJiBzaWduIDwgMCkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgaWYgKCFzaWduICYmIHZhbHVlKQorICAgICAgICAgICAgc2lnbiA9IHZh
bHVlID4gMCA/IDEgOiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgSVNPODYwMQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAxLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9JU084NjAxLmgKaW5kZXggNjc2ODlkMWMyNDVhZmVlMmFjMjY5NTljMjk3MGRkNDk2
M2FlMzAwMi4uOGJmMGZlYjU4YmMyMjM2YTA0NmZkMDI0YmNhNTg0MGExNTllZWQwYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaApAQCAtMSw1ICsxLDYgQEAKIC8qCiAg
KiBDb3B5cmlnaHQgKEMpIDIwMjEgU29ueSBJbnRlcmFjdGl2ZSBFbnRlcnRhaW5tZW50IEluYy4K
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCiAgKgogICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CiAgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKQEAgLTI1LDMyICsyNiwxNDggQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRl
ICJJbnRsT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3QuaCIKIAogbmFtZXNwYWNl
IEpTQyB7CiBuYW1lc3BhY2UgSVNPODYwMSB7CiAKLXN0cnVjdCBEdXJhdGlvbiB7CitjbGFzcyBE
dXJhdGlvbiB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoRHVyYXRpb24pOworcHVibGlj
OgogICAgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gc3RkOjphcnJheTxkb3VibGUsIG51bWJlck9m
VGVtcG9yYWxVbml0cz46OmNvbnN0X2l0ZXJhdG9yOwogCisgICAgRHVyYXRpb24oKSA9IGRlZmF1
bHQ7CisgICAgRHVyYXRpb24oZG91YmxlIHllYXJzLCBkb3VibGUgbW9udGhzLCBkb3VibGUgd2Vl
a3MsIGRvdWJsZSBkYXlzLCBkb3VibGUgaG91cnMsIGRvdWJsZSBtaW51dGVzLCBkb3VibGUgc2Vj
b25kcywgZG91YmxlIG1pbGxpc2Vjb25kcywgZG91YmxlIG1pY3Jvc2Vjb25kcywgZG91YmxlIG5h
bm9zZWNvbmRzKQorICAgICAgICA6IG1fZGF0YSB7CisgICAgICAgICAgICB5ZWFycywKKyAgICAg
ICAgICAgIG1vbnRocywKKyAgICAgICAgICAgIHdlZWtzLAorICAgICAgICAgICAgZGF5cywKKyAg
ICAgICAgICAgIGhvdXJzLAorICAgICAgICAgICAgbWludXRlcywKKyAgICAgICAgICAgIHNlY29u
ZHMsCisgICAgICAgICAgICBtaWxsaXNlY29uZHMsCisgICAgICAgICAgICBtaWNyb3NlY29uZHMs
CisgICAgICAgICAgICBuYW5vc2Vjb25kcywKKyAgICAgICAgfQorICAgIHsgfQorCiAjZGVmaW5l
IEpTQ19ERUZJTkVfSVNPODYwMV9EVVJBVElPTl9GSUVMRChuYW1lLCBjYXBpdGFsaXplZE5hbWUp
IFwKLSAgICBkb3VibGUgbmFtZSMjcygpIGNvbnN0IHsgcmV0dXJuIGRhdGFbc3RhdGljX2Nhc3Q8
dWludDhfdD4oVGVtcG9yYWxVbml0OjpjYXBpdGFsaXplZE5hbWUpXTsgfSBcCi0gICAgdm9pZCBz
ZXQjI2NhcGl0YWxpemVkTmFtZSMjcyhkb3VibGUgdmFsdWUpIHsgZGF0YVtzdGF0aWNfY2FzdDx1
aW50OF90PihUZW1wb3JhbFVuaXQ6OmNhcGl0YWxpemVkTmFtZSldID0gdmFsdWU7IH0KKyAgICBk
b3VibGUgbmFtZSMjcygpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YVtzdGF0aWNfY2FzdDx1aW50OF90
PihUZW1wb3JhbFVuaXQ6OmNhcGl0YWxpemVkTmFtZSldOyB9IFwKKyAgICB2b2lkIHNldCMjY2Fw
aXRhbGl6ZWROYW1lIyNzKGRvdWJsZSB2YWx1ZSkgeyBtX2RhdGFbc3RhdGljX2Nhc3Q8dWludDhf
dD4oVGVtcG9yYWxVbml0OjpjYXBpdGFsaXplZE5hbWUpXSA9IHZhbHVlOyB9CiAgICAgSlNDX1RF
TVBPUkFMX1VOSVRTKEpTQ19ERUZJTkVfSVNPODYwMV9EVVJBVElPTl9GSUVMRCk7CiAjdW5kZWYg
SlNDX0RFRklORV9JU084NjAxX0RVUkFUSU9OX0ZJRUxECiAKLSAgICBkb3VibGUmIG9wZXJhdG9y
W10oc2l6ZV90IGkpIHsgcmV0dXJuIGRhdGFbaV07IH0KLSAgICBjb25zdCBkb3VibGUmIG9wZXJh
dG9yW10oc2l6ZV90IGkpIGNvbnN0IHsgcmV0dXJuIGRhdGFbaV07IH0KLSAgICBjb25zdF9pdGVy
YXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIGRhdGEuYmVnaW4oKTsgfQotICAgIGNvbnN0X2l0
ZXJhdG9yIGVuZCgpIGNvbnN0IHsgcmV0dXJuIGRhdGEuZW5kKCk7IH0KLSAgICB2b2lkIGNsZWFy
KCkgeyBkYXRhLmZpbGwoMCk7IH0KKyAgICBkb3VibGUmIG9wZXJhdG9yW10oc2l6ZV90IGkpIHsg
cmV0dXJuIG1fZGF0YVtpXTsgfQorICAgIGNvbnN0IGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3Qg
aSkgY29uc3QgeyByZXR1cm4gbV9kYXRhW2ldOyB9CisgICAgY29uc3RfaXRlcmF0b3IgYmVnaW4o
KSBjb25zdCB7IHJldHVybiBtX2RhdGEuYmVnaW4oKTsgfQorICAgIGNvbnN0X2l0ZXJhdG9yIGVu
ZCgpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5lbmQoKTsgfQorICAgIHZvaWQgY2xlYXIoKSB7IG1f
ZGF0YS5maWxsKDApOyB9CisKKyAgICBEdXJhdGlvbiBvcGVyYXRvci0oKSBjb25zdAorICAgIHsK
KyAgICAgICAgRHVyYXRpb24gcmVzdWx0KCp0aGlzKTsKKyAgICAgICAgZm9yIChhdXRvJiB2YWx1
ZSA6IHJlc3VsdC5tX2RhdGEpCisgICAgICAgICAgICB2YWx1ZSA9IC12YWx1ZTsKKyAgICAgICAg
cmV0dXJuIHJlc3VsdDsKKyAgICB9CisKK3ByaXZhdGU6CisgICAgc3RkOjphcnJheTxkb3VibGUs
IG51bWJlck9mVGVtcG9yYWxVbml0cz4gbV9kYXRhIHsgfTsKK307CisKK2NsYXNzIFBsYWluVGlt
ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQoUGxhaW5UaW1lKTsKK3B1YmxpYzoKKyAg
ICBjb25zdGV4cHIgUGxhaW5UaW1lKCkKKyAgICAgICAgOiBtX2hvdXIoMCkKKyAgICAgICAgLCBt
X21pbnV0ZSgwKQorICAgICAgICAsIG1fc2Vjb25kKDApCisgICAgICAgICwgbV9taWxsaXNlY29u
ZCgwKQorICAgICAgICAsIG1fbWljcm9zZWNvbmQoMCkKKyAgICAgICAgLCBtX25hbm9zZWNvbmQo
MCkKKyAgICB7CisgICAgfQorCisgICAgUGxhaW5UaW1lKHVuc2lnbmVkIGhvdXIsIHVuc2lnbmVk
IG1pbnV0ZSwgdW5zaWduZWQgc2Vjb25kLCB1bnNpZ25lZCBtaWxsaXNlY29uZCwgdW5zaWduZWQg
bWljcm9zZWNvbmQsIHVuc2lnbmVkIG5hbm9zZWNvbmQpCisgICAgICAgIDogbV9ob3VyKGhvdXIp
CisgICAgICAgICwgbV9taW51dGUobWludXRlKQorICAgICAgICAsIG1fc2Vjb25kKHNlY29uZCkK
KyAgICAgICAgLCBtX21pbGxpc2Vjb25kKG1pbGxpc2Vjb25kKQorICAgICAgICAsIG1fbWljcm9z
ZWNvbmQobWljcm9zZWNvbmQpCisgICAgICAgICwgbV9uYW5vc2Vjb25kKG5hbm9zZWNvbmQpCisg
ICAgeyB9CisKKyNkZWZpbmUgSlNDX0RFRklORV9JU084NjAxX1BMQUlOX1RJTUVfRklFTEQobmFt
ZSwgY2FwaXRhbGl6ZWROYW1lKSBcCisgICAgdW5zaWduZWQgbmFtZSgpIGNvbnN0IHsgcmV0dXJu
IG1fIyNuYW1lOyB9CisgICAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVfVU5JVFMoSlNDX0RFRklO
RV9JU084NjAxX1BMQUlOX1RJTUVfRklFTEQpOworI3VuZGVmIEpTQ19ERUZJTkVfSVNPODYwMV9E
VVJBVElPTl9GSUVMRAorCisgICAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShQbGFpblRpbWUgbGhz
LCBQbGFpblRpbWUgcmhzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGxocy5ob3VyKCkgPT0gcmhz
LmhvdXIoKQorICAgICAgICAgICAgJiYgbGhzLm1pbnV0ZSgpID09IHJocy5taW51dGUoKQorICAg
ICAgICAgICAgJiYgbGhzLnNlY29uZCgpID09IHJocy5zZWNvbmQoKQorICAgICAgICAgICAgJiYg
bGhzLm1pbGxpc2Vjb25kKCkgPT0gcmhzLm1pbGxpc2Vjb25kKCkKKyAgICAgICAgICAgICYmIGxo
cy5taWNyb3NlY29uZCgpID09IHJocy5taWNyb3NlY29uZCgpCisgICAgICAgICAgICAmJiBsaHMu
bmFub3NlY29uZCgpID09IHJocy5uYW5vc2Vjb25kKCk7CisgICAgfQogCi0gICAgc3RkOjphcnJh
eTxkb3VibGUsIG51bWJlck9mVGVtcG9yYWxVbml0cz4gZGF0YSB7IH07Citwcml2YXRlOgorICAg
IHVpbnQ4X3QgbV9ob3VyIHsgMCB9OworICAgIHVpbnQ4X3QgbV9taW51dGUgeyAwIH07CisgICAg
dWludDhfdCBtX3NlY29uZCB7IDAgfTsKKyAgICB1aW50MzJfdCBtX21pbGxpc2Vjb25kIDogMTA7
CisgICAgdWludDMyX3QgbV9taWNyb3NlY29uZCA6IDEwOworICAgIHVpbnQzMl90IG1fbmFub3Nl
Y29uZCA6IDEwOwogfTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFBsYWluVGltZSkgPD0gc2l6ZW9m
KHVpbnQ2NF90KSk7CiAKKy8vIE5vdGUgdGhhdCBQbGFpbkRhdGUgZG9lcyBub3QgaW5jbHVkZSB3
ZWVrIHVuaXQuCisvLyB5ZWFyIGNhbiBiZSBuZWdhdGl2ZS4gQW5kIG1vbnRoIGFuZCBkYXkgc3Rh
cnRzIHdpdGggMS4KK2NsYXNzIFBsYWluRGF0ZSB7CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FU
RUQoUGxhaW5EYXRlKTsKK3B1YmxpYzoKKyAgICBQbGFpbkRhdGUoKSA9IGRlZmF1bHQ7CisgICAg
UGxhaW5EYXRlKGludDMyX3QgeWVhciwgdW5zaWduZWQgbW9udGgsIHVuc2lnbmVkIGRheSkKKyAg
ICAgICAgOiBtX3llYXIoeWVhcikKKyAgICAgICAgLCBtX21vbnRoKG1vbnRoKQorICAgICAgICAs
IG1fZGF5KGRheSkKKyAgICB7CisgICAgfQorCisgICAgaW50MzJfdCB5ZWFyKCkgY29uc3QgeyBy
ZXR1cm4gbV95ZWFyOyB9CisgICAgdWludDhfdCBtb250aCgpIGNvbnN0IHsgcmV0dXJuIG1fbW9u
dGg7IH0KKyAgICB1aW50OF90IGRheSgpIGNvbnN0IHsgcmV0dXJuIG1fZGF5OyB9CisKK3ByaXZh
dGU6CisgICAgaW50MzJfdCBtX3llYXIgeyAwIH07CisgICAgdWludDhfdCBtX21vbnRoIHsgMSB9
OworICAgIHVpbnQ4X3QgbV9kYXkgeyAxIH07Cit9OworCit1c2luZyBUaW1lWm9uZSA9IFZhcmlh
bnQ8VGltZVpvbmVJRCwgaW50NjRfdD47CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBhcnNldGVtcG9yYWx0aW1lem9uZXN0cmluZworLy8gUmVj
b3JkIHsgW1taXV0sIFtbT2Zmc2V0U3RyaW5nXV0sIFtbTmFtZV1dIH0KK3N0cnVjdCBUaW1lWm9u
ZVJlY29yZCB7CisgICAgYm9vbCBtX3ogeyBmYWxzZSB9OworICAgIHN0ZDo6b3B0aW9uYWw8aW50
NjRfdD4gbV9vZmZzZXQ7CisgICAgVmFyaWFudDxWZWN0b3I8TENoYXI+LCBpbnQ2NF90PiBtX25h
bWVPck9mZnNldDsKK307CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
c3VwLWlzdmFsaWR0aW1lem9uZW5hbWUKK3N0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRGb3JU
aW1lWm9uZU5hbWUoU3RyaW5nVmlldyk7CiBzdGQ6Om9wdGlvbmFsPER1cmF0aW9uPiBwYXJzZUR1
cmF0aW9uKFN0cmluZ1ZpZXcpOwogc3RkOjpvcHRpb25hbDxpbnQ2NF90PiBwYXJzZVRpbWVab25l
TnVtZXJpY1VUQ09mZnNldChTdHJpbmdWaWV3KTsKK2VudW0gY2xhc3MgVmFsaWRhdGVUaW1lWm9u
ZUlEIHsgWWVzLCBObyB9Oworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3Rk
OjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBwYXJzZVRpbWUoU3RyaW5nVmlldyk7CitzdGQ6
Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5EYXRlLCBzdGQ6Om9wdGlvbmFsPFBsYWluVGltZT4s
IHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVSZWNvcmQ+Pj4gcGFyc2VEYXRlVGltZShTdHJpbmdWaWV3
KTsKIFN0cmluZyBmb3JtYXRUaW1lWm9uZU9mZnNldFN0cmluZyhpbnQ2NF90KTsKK1N0cmluZyB0
ZW1wb3JhbFRpbWVUb1N0cmluZyhQbGFpblRpbWUsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNp
Z25lZD4gcHJlY2lzaW9uKTsKKworYm9vbCBpc1ZhbGlkRHVyYXRpb24oY29uc3QgRHVyYXRpb24m
KTsKIAogfSAvLyBuYW1lc3BhY2UgSVNPODYwMQogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IDhkOGU5NmU3NzU1
ZDU4YWI4NDJlMzYwY2ZhZmIxOWQwMGZlMjYyNzAuLjc5NzU5YmM1ZmE0NGZlMjk3NzI2MDVmNTZh
NWNhOWIwODk1NjMxYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuY3BwCkBAIC0xODM5LDYgKzE4MzksMjMgQEAgY29uc3QgVmVjdG9yPFN0cmluZz4mIGlu
dGxBdmFpbGFibGVUaW1lWm9uZXMoKQogICAgIHJldHVybiBhdmFpbGFibGVUaW1lWm9uZXM7CiB9
CiAKK1RpbWVab25lSUQgdXRjVGltZVpvbmVJRFN0b3JhZ2UgeyBzdGQ6Om51bWVyaWNfbGltaXRz
PFRpbWVab25lSUQ+OjptYXgoKSB9OworVGltZVpvbmVJRCB1dGNUaW1lWm9uZUlEU2xvdygpCit7
CisgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIGluaXRpYWxpemVPbmNlOworICAgIHN0ZDo6Y2Fs
bF9vbmNlKGluaXRpYWxpemVPbmNlLCBbJl0geworICAgICAgICBjb25zdCBhdXRvJiB0aW1lWm9u
ZXMgPSBpbnRsQXZhaWxhYmxlVGltZVpvbmVzKCk7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5k
ZXggPSAwOyBpbmRleCA8IHRpbWVab25lcy5zaXplKCk7ICsraW5kZXgpIHsKKyAgICAgICAgICAg
IGlmICh0aW1lWm9uZXNbaW5kZXhdID09ICJVVEMiX3MpIHsKKyAgICAgICAgICAgICAgICB1dGNU
aW1lWm9uZUlEU3RvcmFnZSA9IGluZGV4OworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0pOworICAgIHJldHVybiB1dGNUaW1lWm9uZUlEU3RvcmFnZTsKK30KKwogLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLWludGwtZW51bWVyYXRpb24vI3NlYy1hdmFpbGFibGV0aW1l
em9uZXMKIHN0YXRpYyBKU0FycmF5KiBhdmFpbGFibGVUaW1lWm9uZXMoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuaAppbmRleCA5NmQyMTg1NWM5Y2E2ZjNlMzE5NmI3NGVhMDJkMGVkNTNkMzljMTMwLi5iM2Ux
NWQzMGJhOTNiNWIyMDViNTczZTA4OWViYmJmMzljZTIxMTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC0xMTcsNiArMTE3LDE2IEBAIGlubGluZSBD
YWxlbmRhcklEIGlzbzg2MDFDYWxlbmRhcklEKCkKIHVzaW5nIFRpbWVab25lSUQgPSB1bnNpZ25l
ZDsKIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBpbnRsQXZhaWxhYmxlVGltZVpvbmVzKCk7CiAKK2V4
dGVybiBUaW1lWm9uZUlEIHV0Y1RpbWVab25lSURTdG9yYWdlOworVGltZVpvbmVJRCB1dGNUaW1l
Wm9uZUlEU2xvdygpOworaW5saW5lIENhbGVuZGFySUQgdXRjVGltZVpvbmVJRCgpCit7CisgICAg
dW5zaWduZWQgdmFsdWUgPSB1dGNUaW1lWm9uZUlEU3RvcmFnZTsKKyAgICBpZiAodmFsdWUgPT0g
c3RkOjpudW1lcmljX2xpbWl0czxUaW1lWm9uZUlEPjo6bWF4KCkpCisgICAgICAgIHJldHVybiB1
dGNUaW1lWm9uZUlEU2xvdygpOworICAgIHJldHVybiB2YWx1ZTsKK30KKwogVHJpU3RhdGUgaW50
bEJvb2xlYW5PcHRpb24oSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVy
dHlOYW1lKTsKIFN0cmluZyBpbnRsU3RyaW5nT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqIG9wdGlvbnMsIFByb3BlcnR5TmFtZSwgc3RkOjppbml0aWFsaXplcl9saXN0PGNvbnN0IGNo
YXIqPiB2YWx1ZXMsIGNvbnN0IGNoYXIqIG5vdEZvdW5kLCBjb25zdCBjaGFyKiBmYWxsYmFjayk7
CiB1bnNpZ25lZCBpbnRsTnVtYmVyT3B0aW9uKEpTR2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqIG9w
dGlvbnMsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQgbWluaW11bSwgdW5zaWduZWQgbWF4aW11bSwg
dW5zaWduZWQgZmFsbGJhY2spOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IGIyZmRmNDY0MzZlODc3NjA0OTA2NDhhZmQwMTQxYzgy
MjM2MTQ5NTEuLjZkYTQ1ODgzNDFhMDE2ZTkxYWI5MTM2OTAzNmYwYzk2ZGE0MTRmYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKQEAg
LTIwNiw2ICsyMDYsOCBAQAogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb24uaCIKICNpbmNsdWRl
ICJUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxPYmplY3Qu
aCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZS5oIgogI2luY2x1
ZGUgIlRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJWTVRyYXBzSW5saW5l
cy5oIgpAQCAtMTIzMiw2ICsxMjM0LDEzIEBAIGNhcGl0YWxOYW1lICMjIENvbnN0cnVjdG9yKiBs
b3dlck5hbWUgIyMgQ29uc3RydWN0b3IgPSBmZWF0dXJlRmxhZyA/IGNhcGl0YWxOYW1lCiAgICAg
ICAgICAgICAgICAgaW5pdC5zZXQoVGVtcG9yYWxEdXJhdGlvbjo6Y3JlYXRlU3RydWN0dXJlKGlu
aXQudm0sIGdsb2JhbE9iamVjdCwgZHVyYXRpb25Qcm90b3R5cGUpKTsKICAgICAgICAgICAgIH0p
OwogCisgICAgICAgIG1fcGxhaW5UaW1lU3RydWN0dXJlLmluaXRMYXRlcigKKyAgICAgICAgICAg
IFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0KSB7CisgICAgICAgICAgICAg
ICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2FzdDxKU0dsb2JhbE9iamVjdCo+
KGluaXQub3duZXIpOworICAgICAgICAgICAgICAgIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
KiBwbGFpblRpbWVQcm90b3R5cGUgPSBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3JlYXRl
KGluaXQudm0sIGdsb2JhbE9iamVjdCwgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OmNyZWF0
ZVN0cnVjdHVyZShpbml0LnZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+b2JqZWN0UHJv
dG90eXBlKCkpKTsKKyAgICAgICAgICAgICAgICBpbml0LnNldChUZW1wb3JhbFBsYWluVGltZTo6
Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgcGxhaW5UaW1lUHJvdG90eXBl
KSk7CisgICAgICAgICAgICB9KTsKKwogICAgICAgICBtX3RpbWVab25lU3RydWN0dXJlLmluaXRM
YXRlcigKICAgICAgICAgICAgIFtdIChjb25zdCBJbml0aWFsaXplcjxTdHJ1Y3R1cmU+JiBpbml0
KSB7CiAgICAgICAgICAgICAgICAgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IGpzQ2Fz
dDxKU0dsb2JhbE9iamVjdCo+KGluaXQub3duZXIpOwpAQCAtMjExOSw2ICsyMTI4LDcgQEAgdm9p
ZCBKU0dsb2JhbE9iamVjdDo6dmlzaXRDaGlsZHJlbkltcGwoSlNDZWxsKiBjZWxsLCBWaXNpdG9y
JiB2aXNpdG9yKQogCiAgICAgdGhpc09iamVjdC0+bV9jYWxlbmRhclN0cnVjdHVyZS52aXNpdCh2
aXNpdG9yKTsKICAgICB0aGlzT2JqZWN0LT5tX2R1cmF0aW9uU3RydWN0dXJlLnZpc2l0KHZpc2l0
b3IpOworICAgIHRoaXNPYmplY3QtPm1fcGxhaW5UaW1lU3RydWN0dXJlLnZpc2l0KHZpc2l0b3Ip
OwogICAgIHRoaXNPYmplY3QtPm1fdGltZVpvbmVTdHJ1Y3R1cmUudmlzaXQodmlzaXRvcik7CiAK
ICAgICB2aXNpdG9yLmFwcGVuZCh0aGlzT2JqZWN0LT5tX251bGxHZXR0ZXJGdW5jdGlvbik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAppbmRleCBk
ZWIzM2RiZDEwMzA4M2ExOGY0MGJhN2FkYzU2OTUyNjAxNDk3ZDI5Li4xMjhiMzk5MTBkZDgwNTdm
N2FhYmI1OTc3N2NhNjgwZTlkZjYxODkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKQEAgLTMyNiw2ICszMjYsNyBAQCBjbGFzcyBKU0dsb2Jh
bE9iamVjdCA6IHB1YmxpYyBKU1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKIAogICAgIExhenlQ
cm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2NhbGVuZGFyU3RydWN0dXJlOwog
ICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX2R1cmF0aW9uU3Ry
dWN0dXJlOworICAgIExhenlQcm9wZXJ0eTxKU0dsb2JhbE9iamVjdCwgU3RydWN0dXJlPiBtX3Bs
YWluVGltZVN0cnVjdHVyZTsKICAgICBMYXp5UHJvcGVydHk8SlNHbG9iYWxPYmplY3QsIFN0cnVj
dHVyZT4gbV90aW1lWm9uZVN0cnVjdHVyZTsKIAogICAgIFdyaXRlQmFycmllcjxOdWxsR2V0dGVy
RnVuY3Rpb24+IG1fbnVsbEdldHRlckZ1bmN0aW9uOwpAQCAtODc2LDYgKzg3Nyw3IEBAIGNsYXNz
IEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewogCiAg
ICAgU3RydWN0dXJlKiBjYWxlbmRhclN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fY2FsZW5kYXJTdHJ1
Y3R1cmUuZ2V0KHRoaXMpOyB9CiAgICAgU3RydWN0dXJlKiBkdXJhdGlvblN0cnVjdHVyZSgpIHsg
cmV0dXJuIG1fZHVyYXRpb25TdHJ1Y3R1cmUuZ2V0KHRoaXMpOyB9CisgICAgU3RydWN0dXJlKiBw
bGFpblRpbWVTdHJ1Y3R1cmUoKSB7IHJldHVybiBtX3BsYWluVGltZVN0cnVjdHVyZS5nZXQodGhp
cyk7IH0KICAgICBTdHJ1Y3R1cmUqIHRpbWVab25lU3RydWN0dXJlKCkgeyByZXR1cm4gbV90aW1l
Wm9uZVN0cnVjdHVyZS5nZXQodGhpcyk7IH0KIAogICAgIEpTX0VYUE9SVF9QUklWQVRFIHZvaWQg
c2V0UmVtb3RlRGVidWdnaW5nRW5hYmxlZChib29sKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVuZGFyQ29uc3RydWN0b3IuY3Bw
CmluZGV4IGEwZmFhM2ZmY2QwNDQ0NzcyYzQxYTRjYjczNTZhMmQ2ODY3MGE2OWMuLjY1MzBkZDAx
ZWI2N2M1M2NkOGU5ZTMwODg5OTEwNTY2ZThjYjU3ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVjdG9y
LmNwcApAQCAtNzMsNiArNzMsNyBAQCB2b2lkIFRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6
ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbENhbGVuZGFyUHJvdG90eQogewogICAgIEJh
c2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiQ2FsZW5kYXIiX3MsIFByb3BlcnR5QWRkaXRpb25N
b2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGlyZWN0V2l0aG91dFRy
YW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgdGVtcG9yYWxDYWxlbmRh
clByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJvcGVydHlBdHRyaWJ1
dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkpOworICAgIHRlbXBv
cmFsQ2FsZW5kYXJQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04oY29uc3RydWN0VGVtcG9yYWxDYWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAKaW5kZXggMGRhMjRhNTI1NTdlYmNkZTU4ZjM1
ZGUxOGQ3NmMyZTcyYjYyNmY4ZC4uMWMxMDA1ODcyMjFlMzJjNzYzZDQzYmU3NjgyMWYwYmZlZWIz
ZWE0NyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxE
dXJhdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxE
dXJhdGlvbi5jcHAKQEAgLTcyLDIyICs3Miw2IEBAIHZvaWQgVGVtcG9yYWxEdXJhdGlvbjo6Zmlu
aXNoQ3JlYXRpb24oVk0mIHZtKQogICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CiB9
CiAKLS8vIElzVmFsaWREdXJhdGlvbiAoIHllYXJzLCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3Vy
cywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNvbmRzLCBtaWNyb3NlY29uZHMsIG5hbm9zZWNv
bmRzICkKLS8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFs
LWlzdmFsaWRkdXJhdGlvbgotc3RhdGljIGJvb2wgaXNWYWxpZER1cmF0aW9uKGNvbnN0IFRlbXBv
cmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyYgc3ViZHVyYXRpb25zKQotewotICAgIGludCBzaWdu
ID0gMDsKLSAgICBmb3IgKGF1dG8gdmFsdWUgOiBzdWJkdXJhdGlvbnMpIHsKLSAgICAgICAgaWYg
KCFzdGQ6OmlzZmluaXRlKHZhbHVlKSB8fCAodmFsdWUgPCAwICYmIHNpZ24gPiAwKSB8fCAodmFs
dWUgPiAwICYmIHNpZ24gPCAwKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAg
ICBpZiAoIXNpZ24gJiYgdmFsdWUpCi0gICAgICAgICAgICBzaWduID0gdmFsdWUgPiAwID8gMSA6
IC0xOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwotfQotCiAvLyBDcmVhdGVUZW1wb3JhbER1
cmF0aW9uICggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNv
bmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcywgbmFub3NlY29uZHMgWyAsIG5ld1Rhcmdl
dCBdICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFs
LWNyZWF0ZXRlbXBvcmFsZHVyYXRpb24KIFRlbXBvcmFsRHVyYXRpb24qIFRlbXBvcmFsRHVyYXRp
b246OnRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3ViZHVy
YXRpb25zJiYgc3ViZHVyYXRpb25zLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKQEAgLTk1LDcgKzc5
LDcgQEAgVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxp
ZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3Qt
PnZtKCk7CiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAg
aWYgKCFpc1ZhbGlkRHVyYXRpb24oc3ViZHVyYXRpb25zKSkgeworICAgIGlmICghSVNPODYwMTo6
aXNWYWxpZER1cmF0aW9uKHN1YmR1cmF0aW9ucykpIHsKICAgICAgICAgdGhyb3dSYW5nZUVycm9y
KGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3Qg
YmUgZmluaXRlIGFuZCBvZiBjb25zaXN0ZW50IHNpZ24iX3MpOwogICAgICAgICByZXR1cm4geyB9
OwogICAgIH0KQEAgLTEwNSwxNyArODksMTcgQEAgVGVtcG9yYWxEdXJhdGlvbiogVGVtcG9yYWxE
dXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKIAog
Ly8gVG9UZW1wb3JhbER1cmF0aW9uUmVjb3JkICggdGVtcG9yYWxEdXJhdGlvbkxpa2UgKQogLy8g
aHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG90ZW1wb3Jh
bGR1cmF0aW9ucmVjb3JkCi1UZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMgVGVtcG9yYWxE
dXJhdGlvbjo6ZnJvbU9iamVjdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVj
dCogZHVyYXRpb25MaWtlKQorVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zIFRlbXBvcmFs
RHVyYXRpb246OmZyb21Ob25EdXJhdGlvblZhbHVlKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgZHVyYXRpb25MaWtlKQogewogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBB
U1NFUlQoIWR1cmF0aW9uTGlrZS0+aW5oZXJpdHM8VGVtcG9yYWxEdXJhdGlvbj4odm0pKTsKKyAg
ICBBU1NFUlQoIWR1cmF0aW9uTGlrZS5pbmhlcml0czxUZW1wb3JhbER1cmF0aW9uPih2bSkpOwog
CiAgICAgU3ViZHVyYXRpb25zIHJlc3VsdDsKICAgICBhdXRvIGhhc1JlbGV2YW50UHJvcGVydHkg
PSBmYWxzZTsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG51bWJlck9mVGVtcG9yYWxVbml0
czsgaSsrKSB7Ci0gICAgICAgIEpTVmFsdWUgdmFsdWUgPSBkdXJhdGlvbkxpa2UtPmdldChnbG9i
YWxPYmplY3QsIHByb3BlcnR5TmFtZSh2bSwgaSkpOworICAgICAgICBKU1ZhbHVlIHZhbHVlID0g
ZHVyYXRpb25MaWtlLmdldChnbG9iYWxPYmplY3QsIHByb3BlcnR5TmFtZSh2bSwgaSkpOwogICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgICAgIGlmICh2YWx1
ZS5pc1VuZGVmaW5lZCgpKSB7CkBAIC0xNTIsNyArMTM2LDcgQEAgVGVtcG9yYWxEdXJhdGlvbiog
VGVtcG9yYWxEdXJhdGlvbjo6dG9EdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1YKICAgICAgICAgcmV0dXJuIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4oaXRlbVZhbHVl
KTsKIAogICAgIGlmIChpdGVtVmFsdWUuaXNPYmplY3QoKSkgewotICAgICAgICBhdXRvIHN1YmR1
cmF0aW9ucyA9IGZyb21PYmplY3QoZ2xvYmFsT2JqZWN0LCBhc09iamVjdChpdGVtVmFsdWUpKTsK
KyAgICAgICAgYXV0byBzdWJkdXJhdGlvbnMgPSBmcm9tTm9uRHVyYXRpb25WYWx1ZShnbG9iYWxP
YmplY3QsIGl0ZW1WYWx1ZSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51
bGxwdHIpOwogCiAgICAgICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgVGVtcG9yYWxEdXJh
dGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmplY3QsIFdURk1vdmUoc3ViZHVyYXRpb25z
KSkpOwpAQCAtMTcwLDYgKzE1NCwxNiBAQCBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0
aW9uOjp0b0R1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVgogICAgIFJF
TEVBU0VfQU5EX1JFVFVSTihzY29wZSwgVGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxp
ZChnbG9iYWxPYmplY3QsIFdURk1vdmUocGFyc2VkU3ViZHVyYXRpb25zLnZhbHVlKCkpKSk7CiB9
CiAKK1RlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0aW9ucyBUZW1wb3JhbER1cmF0aW9uOjp0b0R1
cmF0aW9uUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGVtcG9y
YWxEdXJhdGlvbkxpa2UpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworCisg
ICAgaWYgKHRlbXBvcmFsRHVyYXRpb25MaWtlLmluaGVyaXRzPFRlbXBvcmFsRHVyYXRpb24+KHZt
KSkKKyAgICAgICAgcmV0dXJuIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uKj4odGVtcG9yYWxEdXJh
dGlvbkxpa2UpLT5zdWJkdXJhdGlvbnMoKTsKKworICAgIHJldHVybiBmcm9tTm9uRHVyYXRpb25W
YWx1ZShnbG9iYWxPYmplY3QsIHRlbXBvcmFsRHVyYXRpb25MaWtlKTsKK30KKwogVGVtcG9yYWxE
dXJhdGlvbiogVGVtcG9yYWxEdXJhdGlvbjo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIGl0ZW1WYWx1ZSkKIHsKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZt
KCk7CkBAIC01MzAsNyArNTI0LDEwIEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmlu
ZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWCiAKICAgICBQ
cmVjaXNpb25EYXRhIGRhdGEgPSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKGdsb2JhbE9iamVjdCwg
b3B0aW9ucyk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKLSAgICBBU1NF
UlQoZGF0YS51bml0ID49IFRlbXBvcmFsVW5pdDo6U2Vjb25kKTsKKyAgICBpZiAoZGF0YS51bml0
IDwgVGVtcG9yYWxVbml0OjpTZWNvbmQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJzbWFsbGVzdFVuaXQgbXVzdCBub3QgYmUgXCJtaW51dGVcIiJfcyk7
CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQogCiAgICAgYXV0byByb3VuZGluZ01vZGUgPSBp
bnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRpb25zLCB2bS5wcm9wZXJ0
eU5hbWVzLT5yb3VuZGluZ01vZGUsCiAgICAgICAgIHsgeyAiY2VpbCJfcywgUm91bmRpbmdNb2Rl
OjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29yIH0sIHsgInRydW5jIl9z
LCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZFeHBhbmQiX3MsIFJvdW5kaW5nTW9kZTo6
SGFsZkV4cGFuZCB9IH0sCkBAIC01MzgsNyArNTM1LDcgQEAgU3RyaW5nIFRlbXBvcmFsRHVyYXRp
b246OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9u
c1YKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAgLy8gTm8gbmVl
ZCB0byBtYWtlIGEgbmV3IG9iamVjdCBpZiB3ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRz
LgotICAgIGlmICghZGF0YS5wcmVjaXNpb24gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9k
ZTo6VHJ1bmMpCisgICAgaWYgKHN0ZDo6Z2V0PDA+KGRhdGEucHJlY2lzaW9uKSA9PSBQcmVjaXNp
b246OkF1dG8gJiYgcm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9kZTo6VHJ1bmMpCiAgICAgICAg
IHJldHVybiB0b1N0cmluZygpOwogCiAgICAgU3ViZHVyYXRpb25zIG5ld1N1YmR1cmF0aW9ucyA9
IG1fc3ViZHVyYXRpb25zOwpAQCAtNTQ4LDkgKzU0NSwxMCBAQCBTdHJpbmcgVGVtcG9yYWxEdXJh
dGlvbjo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRp
b25zVgogCiAvLyBUZW1wb3JhbER1cmF0aW9uVG9TdHJpbmcgKCB5ZWFycywgbW9udGhzLCB3ZWVr
cywgZGF5cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNv
bmRzLCBuYW5vc2Vjb25kcywgcHJlY2lzaW9uICkKIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3Nh
bC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRlbXBvcmFsZHVyYXRpb250b3N0cmluZwotU3RyaW5n
IFRlbXBvcmFsRHVyYXRpb246OnRvU3RyaW5nKGNvbnN0IFRlbXBvcmFsRHVyYXRpb246OlN1YmR1
cmF0aW9ucyYgc3ViZHVyYXRpb25zLCBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjaXNpb24p
CitTdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoY29uc3QgVGVtcG9yYWxEdXJhdGlv
bjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNp
Z25lZD4gcHJlY2lzaW9uKQogewotICAgIEFTU0VSVCghcHJlY2lzaW9uIHx8IHByZWNpc2lvbi52
YWx1ZSgpIDwgMTApOworICAgIGF1dG8gW3ByZWNpc2lvblR5cGUsIHByZWNpc2lvblZhbHVlXSA9
IHByZWNpc2lvbjsKKyAgICBBU1NFUlQocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8g
fHwgcHJlY2lzaW9uVmFsdWUgPCAxMCk7CiAKICAgICBhdXRvIGJhbGFuY2VkTWljcm9zZWNvbmRz
ID0gc3ViZHVyYXRpb25zLm1pY3Jvc2Vjb25kcygpICsgc3RkOjp0cnVuYyhzdWJkdXJhdGlvbnMu
bmFub3NlY29uZHMoKSAvIDEwMDApOwogICAgIGF1dG8gYmFsYW5jZWROYW5vc2Vjb25kcyA9IHN0
ZDo6Zm1vZChzdWJkdXJhdGlvbnMubmFub3NlY29uZHMoKSwgMTAwMCk7CkBAIC01OTcsMTAgKzU5
NSwxMCBAQCBTdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoY29uc3QgVGVtcG9yYWxE
dXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdAogICAgICAgICBidWlsZGVyLmFwcGVuZChm
b3JtYXRJbnRlZ2VyKGJhbGFuY2VkU2Vjb25kcykpOwogCiAgICAgICAgIGF1dG8gZnJhY3Rpb24g
PSBzdGQ6OmFicyhiYWxhbmNlZE1pbGxpc2Vjb25kcykgKiAxZTYgKyBzdGQ6OmFicyhiYWxhbmNl
ZE1pY3Jvc2Vjb25kcykgKiAxZTMgKyBzdGQ6OmFicyhiYWxhbmNlZE5hbm9zZWNvbmRzKTsKLSAg
ICAgICAgaWYgKCghcHJlY2lzaW9uICYmIGZyYWN0aW9uKSB8fCAocHJlY2lzaW9uICYmIHByZWNp
c2lvbi52YWx1ZSgpKSkgeworICAgICAgICBpZiAoKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9u
OjpBdXRvICYmIGZyYWN0aW9uKSB8fCAocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkZpeGVk
ICYmIHByZWNpc2lvblZhbHVlKSkgewogICAgICAgICAgICAgYXV0byBwYWRkZWQgPSBtYWtlU3Ry
aW5nKCcuJywgcGFkKCcwJywgOSwgZnJhY3Rpb24pKTsKLSAgICAgICAgICAgIGlmIChwcmVjaXNp
b24pCi0gICAgICAgICAgICAgICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhwYWRkZWQpLmxl
ZnQocGFkZGVkLmxlbmd0aCgpIC0gKDkgLSBwcmVjaXNpb24udmFsdWUoKSkpKTsKKyAgICAgICAg
ICAgIGlmIChwcmVjaXNpb25UeXBlID09IFByZWNpc2lvbjo6Rml4ZWQpCisgICAgICAgICAgICAg
ICAgYnVpbGRlci5hcHBlbmQoU3RyaW5nVmlldyhwYWRkZWQpLmxlZnQocGFkZGVkLmxlbmd0aCgp
IC0gKDkgLSBwcmVjaXNpb25WYWx1ZSkpKTsKICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAg
ICAgICAgIGF1dG8gbGVuZ3RoV2l0aG91dFRyYWlsaW5nWmVyb2VzID0gcGFkZGVkLmxlbmd0aCgp
OwogICAgICAgICAgICAgICAgIHdoaWxlIChwYWRkZWRbbGVuZ3RoV2l0aG91dFRyYWlsaW5nWmVy
b2VzIC0gMV0gPT0gJzAnKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxEdXJhdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbi5oCmluZGV4IDU5MjA0ZGM5NTM3YWFmNzYwMWUwZThkMTU3MDU2YmRhMTlh
ZjczNTUuLmJjNDM4MzMzYzU0MDUxZDJmMWRiNTU0ZTNiMzQ5ZGU1YTRhOWE0NmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVyYXRpb24uaAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKQEAgLTY2
LDcgKzY2LDE1IEBAIGNsYXNzIFRlbXBvcmFsRHVyYXRpb24gZmluYWwgOiBwdWJsaWMgSlNOb25G
aW5hbE9iamVjdCB7CiAgICAgU3ViZHVyYXRpb25zIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNW
YWx1ZSBvcHRpb25zKSBjb25zdDsKICAgICBkb3VibGUgdG90YWwoSlNHbG9iYWxPYmplY3QqLCBK
U1ZhbHVlIG9wdGlvbnMpIGNvbnN0OwogICAgIFN0cmluZyB0b1N0cmluZyhKU0dsb2JhbE9iamVj
dCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7Ci0gICAgU3RyaW5nIHRvU3RyaW5nKHN0ZDo6b3B0
aW9uYWw8dW5zaWduZWQ+IHByZWNpc2lvbiA9IHN0ZDo6bnVsbG9wdCkgY29uc3QgeyByZXR1cm4g
dG9TdHJpbmcobV9zdWJkdXJhdGlvbnMsIHByZWNpc2lvbik7IH0KKyAgICBTdHJpbmcgdG9TdHJp
bmcoc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24gPSB7IFByZWNpc2lv
bjo6QXV0bywgMCB9KSBjb25zdCB7IHJldHVybiB0b1N0cmluZyhtX3N1YmR1cmF0aW9ucywgcHJl
Y2lzaW9uKTsgfQorCisgICAgY29uc3QgU3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMoKSBjb25z
dCB7IHJldHVybiBtX3N1YmR1cmF0aW9uczsgfQorCisgICAgc3RhdGljIFN1YmR1cmF0aW9ucyB0
b0R1cmF0aW9uUmVjb3JkKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBzdGF0aWMg
aW50IHNpZ24oY29uc3QgU3ViZHVyYXRpb25zJik7CisgICAgc3RhdGljIGRvdWJsZSByb3VuZChT
dWJkdXJhdGlvbnMmLCBkb3VibGUgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9k
ZSk7CisgICAgc3RhdGljIHZvaWQgYmFsYW5jZShTdWJkdXJhdGlvbnMmLCBUZW1wb3JhbFVuaXQg
bGFyZ2VzdFVuaXQpOwogCiBwcml2YXRlOgogICAgIFRlbXBvcmFsRHVyYXRpb24oVk0mLCBTdHJ1
Y3R1cmUqLCBTdWJkdXJhdGlvbnMmJik7CkBAIC03NCwxMiArODIsOSBAQCBjbGFzcyBUZW1wb3Jh
bER1cmF0aW9uIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3QgewogCiAgICAgdGVtcGxh
dGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KICAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxTdWJk
dXJhdGlvbnM+IHBhcnNlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsKLSAg
ICBzdGF0aWMgU3ViZHVyYXRpb25zIGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCopOworICAgIHN0YXRpYyBTdWJkdXJhdGlvbnMgZnJvbU5vbkR1cmF0aW9uVmFsdWUoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlKTsKIAotICAgIHN0YXRpYyBpbnQgc2lnbihjb25zdCBTdWJkdXJh
dGlvbnMmKTsKLSAgICBzdGF0aWMgdm9pZCBiYWxhbmNlKFN1YmR1cmF0aW9ucyYsIFRlbXBvcmFs
VW5pdCBsYXJnZXN0VW5pdCk7Ci0gICAgc3RhdGljIGRvdWJsZSByb3VuZChTdWJkdXJhdGlvbnMm
LCBkb3VibGUgaW5jcmVtZW50LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSk7Ci0gICAgc3Rh
dGljIFN0cmluZyB0b1N0cmluZyhjb25zdCBTdWJkdXJhdGlvbnMmLCBzdGQ6Om9wdGlvbmFsPHVu
c2lnbmVkPiBwcmVjaXNpb24pOworICAgIHN0YXRpYyBTdHJpbmcgdG9TdHJpbmcoY29uc3QgU3Vi
ZHVyYXRpb25zJiwgc3RkOjp0dXBsZTxQcmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24pOwog
CiAgICAgVGVtcG9yYWxVbml0IGxhcmdlc3RTdWJkdXJhdGlvbigpIGNvbnN0OwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKaW5kZXggYjBhN2VlZTRj
NGEwMTM2MGJhM2NmYTVhZDVlNWE0N2I5NGI2NzMzYS4uN2MwZmVjNTM5MTNlOGM1ZDY5ZDVkNjNl
YmFhN2ZmZDkxZGZjOGIxMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxOb3cuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsTm93LmNwcApAQCAtNzcsNyArNzcsNyBAQCBKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxOb3dGdW5jVGltZVpvbmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LAog
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKIAogICAgIFN0cmluZyB0aW1lWm9uZVN0
cmluZyA9IHZtLmRhdGVDYWNoZS5kZWZhdWx0VGltZVpvbmUoKTsKLSAgICBzdGQ6Om9wdGlvbmFs
PFRpbWVab25lSUQ+IGlkZW50aWZpZXIgPSBUZW1wb3JhbFRpbWVab25lOjppZEZvclRpbWVab25l
TmFtZSh0aW1lWm9uZVN0cmluZyk7CisgICAgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZGVu
dGlmaWVyID0gSVNPODYwMTo6aWRGb3JUaW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcpOwogICAg
IGlmICghaWRlbnRpZmllcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3Jh
bFRpbWVab25lOjpjcmVhdGVGcm9tVVRDT2Zmc2V0KHZtLCBnbG9iYWxPYmplY3QtPnRpbWVab25l
U3RydWN0dXJlKCksIDApKTsKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsVGlt
ZVpvbmU6OmNyZWF0ZUZyb21JRCh2bSwgZ2xvYmFsT2JqZWN0LT50aW1lWm9uZVN0cnVjdHVyZSgp
LCBpZGVudGlmaWVyLnZhbHVlKCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsT2JqZWN0LmNwcAppbmRleCBiMjRlM2E5ZTlkYTIyMDI2YzJhM2JmZGIyOGJh
ZjdjZWUzZDNlZjk3Li44ZTM3ZDdjZmYzNWY5ODllM2VlZmFiNDA5MzU1ODBhZTBiNGRkZWRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3Bw
CkBAIC0zMyw2ICszMyw4IEBACiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvbkNvbnN0cnVjdG9y
LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5oIgogI2luY2x1ZGUgIlRl
bXBvcmFsTm93LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oIgor
I2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgiCiAjaW5jbHVkZSAiVGVtcG9y
YWxUaW1lWm9uZUNvbnN0cnVjdG9yLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZVByb3Rv
dHlwZS5oIgogCkBAIC02MSw2ICs2MywxMyBAQCBzdGF0aWMgSlNWYWx1ZSBjcmVhdGVEdXJhdGlv
bkNvbnN0cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKICAgICByZXR1cm4gVGVtcG9y
YWxEdXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGUodm0sIFRlbXBvcmFsRHVyYXRpb25Db25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2JhbE9iamVjdC0+ZnVu
Y3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlKj4oZ2xv
YmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVyZSgpLT5zdG9yZWRQcm90b3R5cGVPYmplY3QoKSkp
OwogfQogCitzdGF0aWMgSlNWYWx1ZSBjcmVhdGVQbGFpblRpbWVDb25zdHJ1Y3RvcihWTSYgdm0s
IEpTT2JqZWN0KiBvYmplY3QpCit7CisgICAgVGVtcG9yYWxPYmplY3QqIHRlbXBvcmFsT2JqZWN0
ID0ganNDYXN0PFRlbXBvcmFsT2JqZWN0Kj4ob2JqZWN0KTsKKyAgICBKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0ID0gdGVtcG9yYWxPYmplY3QtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgcmV0
dXJuIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKHZtLCBnbG9iYWxPYmplY3QsIGdsb2Jh
bE9iamVjdC0+ZnVuY3Rpb25Qcm90b3R5cGUoKSksIGpzQ2FzdDxUZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZSo+KGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCktPnN0b3JlZFByb3Rv
dHlwZU9iamVjdCgpKSk7Cit9CisKIHN0YXRpYyBKU1ZhbHVlIGNyZWF0ZVRpbWVab25lQ29uc3Ry
dWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogewogICAgIFRlbXBvcmFsT2JqZWN0KiB0
ZW1wb3JhbE9iamVjdCA9IGpzQ2FzdDxUZW1wb3JhbE9iamVjdCo+KG9iamVjdCk7CkBAIC03OSw2
ICs4OCw3IEBAIG5hbWVzcGFjZSBKU0MgewogICBDYWxlbmRhciAgICAgICBjcmVhdGVDYWxlbmRh
ckNvbnN0cnVjdG9yICAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgRHVyYXRpb24g
ICAgICAgY3JlYXRlRHVyYXRpb25Db25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNh
bGxiYWNrCiAgIE5vdyAgICAgICAgICAgIGNyZWF0ZU5vd09iamVjdCAgICAgICAgICAgICAgICAg
RG9udEVudW18UHJvcGVydHlDYWxsYmFjaworICBQbGFpblRpbWUgICAgICBjcmVhdGVQbGFpblRp
bWVDb25zdHJ1Y3RvciAgICAgIERvbnRFbnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgVGltZVpvbmUg
ICAgICAgY3JlYXRlVGltZVpvbmVDb25zdHJ1Y3RvciAgICAgICBEb250RW51bXxQcm9wZXJ0eUNh
bGxiYWNrCiBAZW5kCiAqLwpAQCAtMjQyLDE5ICsyNTIsMjEgQEAgUHJlY2lzaW9uRGF0YSBzZWNv
bmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0
KiBvcHQKICAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CiAgICAgYXV0byBzY29wZSA9
IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogCi0gICAgYXV0byBzbWFsbGVzdFVuaXQgPSB0ZW1w
b3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZ
ZWFyLCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5p
dDo6RGF5LCBUZW1wb3JhbFVuaXQ6OkhvdXIsIFRlbXBvcmFsVW5pdDo6TWludXRlIH0pOworICAg
IGF1dG8gc21hbGxlc3RVbml0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBv
cHRpb25zLCB7IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9y
YWxVbml0OjpXZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSwgVGVtcG9yYWxVbml0OjpIb3VyIH0pOwog
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAgICBpZiAoc21hbGxlc3RV
bml0KSB7CiAgICAgICAgIHN3aXRjaCAoc21hbGxlc3RVbml0LnZhbHVlKCkpIHsKKyAgICAgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZToKKyAgICAgICAgICAgIHJldHVybiB7IHsgUHJlY2lz
aW9uOjpNaW51dGUsIDAgfSwgVGVtcG9yYWxVbml0OjpNaW51dGUsIDEgfTsKICAgICAgICAgY2Fz
ZSBUZW1wb3JhbFVuaXQ6OlNlY29uZDoKLSAgICAgICAgICAgIHJldHVybiB7IDAsIFRlbXBvcmFs
VW5pdDo6U2Vjb25kLCAxIH07CisgICAgICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4
ZWQsIDAgfSwgVGVtcG9yYWxVbml0OjpTZWNvbmQsIDEgfTsKICAgICAgICAgY2FzZSBUZW1wb3Jh
bFVuaXQ6Ok1pbGxpc2Vjb25kOgotICAgICAgICAgICAgcmV0dXJuIHsgMywgVGVtcG9yYWxVbml0
OjpNaWxsaXNlY29uZCwgMSB9OworICAgICAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZp
eGVkLCAzIH0sIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQsIDEgfTsKICAgICAgICAgY2FzZSBU
ZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOgotICAgICAgICAgICAgcmV0dXJuIHsgNiwgVGVtcG9y
YWxVbml0OjpNaWNyb3NlY29uZCwgMSB9OworICAgICAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNp
b246OkZpeGVkLCA2IH0sIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQsIDEgfTsKICAgICAgICAg
Y2FzZSBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6Ci0gICAgICAgICAgICByZXR1cm4geyA5LCBU
ZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsgUHJl
Y2lzaW9uOjpGaXhlZCwgOSB9LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfTsKICAgICAg
ICAgZGVmYXVsdDoKICAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAg
ICAgICAgICAgICByZXR1cm4geyB9OwpAQCAtMjY1LDIwICsyNzcsMjcgQEAgUHJlY2lzaW9uRGF0
YSBzZWNvbmRzU3RyaW5nUHJlY2lzaW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpT
T2JqZWN0KiBvcHQKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAg
aWYgKCFwcmVjaXNpb24pCi0gICAgICAgIHJldHVybiB7IHN0ZDo6bnVsbG9wdCwgVGVtcG9yYWxV
bml0OjpOYW5vc2Vjb25kLCAxIH07CisgICAgICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpBdXRv
LCAwIH0sIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9OworCisgICAgYXV0byBwb3cxMFVu
c2lnbmVkID0gW10odW5zaWduZWQgbikgLT4gdW5zaWduZWQgeworICAgICAgICB1bnNpZ25lZCBy
ZXN1bHQgPSAxOworICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbjsgKytpKQorICAg
ICAgICAgICAgcmVzdWx0ICo9IDEwOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH07CiAK
ICAgICB1bnNpZ25lZCBkaWdpdHMgPSBwcmVjaXNpb24udmFsdWUoKTsKICAgICBpZiAoIWRpZ2l0
cykKLSAgICAgICAgcmV0dXJuIHsgMCwgVGVtcG9yYWxVbml0OjpTZWNvbmQsIDEgfTsKKyAgICAg
ICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCAwIH0sIFRlbXBvcmFsVW5pdDo6U2Vjb25k
LCAxIH07CiAKICAgICBpZiAoZGlnaXRzIDw9IDMpCi0gICAgICAgIHJldHVybiB7IGRpZ2l0cywg
VGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZCwgc3RkOjpwb3coMTAsIDMgLSBkaWdpdHMpIH07Cisg
ICAgICAgIHJldHVybiB7IHsgUHJlY2lzaW9uOjpGaXhlZCwgZGlnaXRzIH0sIFRlbXBvcmFsVW5p
dDo6TWlsbGlzZWNvbmQsIHBvdzEwVW5zaWduZWQoMyAtIGRpZ2l0cykgfTsKIAogICAgIGlmIChk
aWdpdHMgPD0gNikKLSAgICAgICAgcmV0dXJuIHsgZGlnaXRzLCBUZW1wb3JhbFVuaXQ6Ok1pY3Jv
c2Vjb25kLCBzdGQ6OnBvdygxMCwgNiAtIGRpZ2l0cykgfTsKKyAgICAgICAgcmV0dXJuIHsgeyBQ
cmVjaXNpb246OkZpeGVkLCBkaWdpdHMgfSwgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZCwgcG93
MTBVbnNpZ25lZCg2IC0gZGlnaXRzKSB9OwogCiAgICAgQVNTRVJUKGRpZ2l0cyA8PSA5KTsKLSAg
ICByZXR1cm4geyBkaWdpdHMsIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgc3RkOjpwb3coMTAs
IDkgLSBkaWdpdHMpIH07CisgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCBkaWdpdHMg
fSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCBwb3cxMFVuc2lnbmVkKDkgLSBkaWdpdHMpIH07
CiB9CiAKIC8vIE1heGltdW1UZW1wb3JhbER1cmF0aW9uUm91bmRpbmdJbmNyZW1lbnQgKCB1bml0
ICkKQEAgLTM0Miw0ICszNjEsMTEgQEAgZG91YmxlIHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQoZG91
YmxlIHgsIGRvdWJsZSBpbmNyZW1lbnQsIFJvdW5kaW5nTW9kZSBtb2RlKQogICAgIFJFTEVBU0Vf
QVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKK1RlbXBvcmFsT3ZlcmZsb3cgdG9UZW1wb3JhbE92
ZXJmbG93KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiBvcHRpb25zKQor
eworICAgIHJldHVybiBpbnRsT3B0aW9uPFRlbXBvcmFsT3ZlcmZsb3c+KGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgZ2xvYmFsT2JqZWN0LT52bSgpLnByb3BlcnR5TmFtZXMtPm92ZXJmbG93LAorICAg
ICAgICB7IHsgImNvbnN0cmFpbiJfcywgVGVtcG9yYWxPdmVyZmxvdzo6Q29uc3RyYWluIH0sIHsg
InJlamVjdCJfcywgVGVtcG9yYWxPdmVyZmxvdzo6UmVqZWN0IH0gfSwKKyAgICAgICAgIm92ZXJm
bG93IG11c3QgYmUgZWl0aGVyIFwiY29uc3RyYWluXCIgb3IgXCJyZWplY3RcIiJfcywgVGVtcG9y
YWxPdmVyZmxvdzo6Q29uc3RyYWluKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaAppbmRleCA3MjQzYzli
YTU4NDMyNjJkMmQwY2JiODE5MzNmNGNkZDEzMDhmYjQ4Li44OWExNTZlOGMxNWI4MTI1YzIwNDQx
MGJlZTA0ZGI3YWVkMmJhMzgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbE9iamVjdC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1RlbXBvcmFsT2JqZWN0LmgKQEAgLTIxLDE0ICsyMSwxMSBAQAogI3ByYWdtYSBvbmNlCiAKICNp
bmNsdWRlICJKU09iamVjdC5oIgorI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CiAKIG5hbWVzcGFj
ZSBKU0MgewogCi0jZGVmaW5lIEpTQ19URU1QT1JBTF9VTklUUyhtYWNybykgXAotICAgIG1hY3Jv
KHllYXIsIFllYXIpIFwKLSAgICBtYWNybyhtb250aCwgTW9udGgpIFwKLSAgICBtYWNybyh3ZWVr
LCBXZWVrKSBcCi0gICAgbWFjcm8oZGF5LCBEYXkpIFwKKyNkZWZpbmUgSlNDX1RFTVBPUkFMX1BM
QUlOX1RJTUVfVU5JVFMobWFjcm8pIFwKICAgICBtYWNybyhob3VyLCBIb3VyKSBcCiAgICAgbWFj
cm8obWludXRlLCBNaW51dGUpIFwKICAgICBtYWNybyhzZWNvbmQsIFNlY29uZCkgXApAQCAtMzYs
NiArMzMsMTUgQEAgbmFtZXNwYWNlIEpTQyB7CiAgICAgbWFjcm8obWljcm9zZWNvbmQsIE1pY3Jv
c2Vjb25kKSBcCiAgICAgbWFjcm8obmFub3NlY29uZCwgTmFub3NlY29uZCkgXAogCisKKyNkZWZp
bmUgSlNDX1RFTVBPUkFMX1VOSVRTKG1hY3JvKSBcCisgICAgbWFjcm8oeWVhciwgWWVhcikgXAor
ICAgIG1hY3JvKG1vbnRoLCBNb250aCkgXAorICAgIG1hY3JvKHdlZWssIFdlZWspIFwKKyAgICBt
YWNybyhkYXksIERheSkgXAorICAgIEpTQ19URU1QT1JBTF9QTEFJTl9USU1FX1VOSVRTKG1hY3Jv
KSBcCisKKwogZW51bSBjbGFzcyBUZW1wb3JhbFVuaXQgOiB1aW50OF90IHsKICNkZWZpbmUgSlND
X0RFRklORV9URU1QT1JBTF9VTklUX0VOVU0obmFtZSwgY2FwaXRhbGl6ZWROYW1lKSBjYXBpdGFs
aXplZE5hbWUsCiAgICAgSlNDX1RFTVBPUkFMX1VOSVRTKEpTQ19ERUZJTkVfVEVNUE9SQUxfVU5J
VF9FTlVNKQpAQCAtNDMsNiArNDksNyBAQCBlbnVtIGNsYXNzIFRlbXBvcmFsVW5pdCA6IHVpbnQ4
X3QgewogfTsKICNkZWZpbmUgSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRTKG5hbWUsIGNhcGl0YWxp
emVkTmFtZSkgKyAxCiBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mVGVtcG9yYWxV
bml0cyA9IDAgSlNDX1RFTVBPUkFMX1VOSVRTKEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUyk7Citz
dGF0aWMgY29uc3RleHByIHVuc2lnbmVkIG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0cyA9
IDAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJTUVfVU5JVFMoSlNDX0NPVU5UX1RFTVBPUkFMX1VOSVRT
KTsKICN1bmRlZiBKU0NfQ09VTlRfVEVNUE9SQUxfVU5JVFMKIAogY2xhc3MgVGVtcG9yYWxPYmpl
Y3QgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CkBAIC03NCwxMCArODEsMTYgQEAg
ZW51bSBjbGFzcyBSb3VuZGluZ01vZGUgOiB1aW50OF90IHsKICAgICBIYWxmRXhwYW5kCiB9Owog
CitlbnVtIGNsYXNzIFByZWNpc2lvbiB7CisgICAgTWludXRlLAorICAgIEZpeGVkLAorICAgIEF1
dG8sCit9OworCiBzdHJ1Y3QgUHJlY2lzaW9uRGF0YSB7Ci0gICAgc3RkOjpvcHRpb25hbDx1bnNp
Z25lZD4gcHJlY2lzaW9uOworICAgIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJl
Y2lzaW9uOwogICAgIFRlbXBvcmFsVW5pdCB1bml0OwotICAgIGRvdWJsZSBpbmNyZW1lbnQ7Cisg
ICAgdW5zaWduZWQgaW5jcmVtZW50OwogfTsKIAogc3RkOjpvcHRpb25hbDxUZW1wb3JhbFVuaXQ+
IHRlbXBvcmFsVW5pdFR5cGUoU3RyaW5nVmlldyk7CkBAIC04OSw0ICsxMDIsMTEgQEAgc3RkOjpv
cHRpb25hbDxkb3VibGU+IG1heGltdW1Sb3VuZGluZ0luY3JlbWVudChUZW1wb3JhbFVuaXQpOwog
ZG91YmxlIHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoSlNHbG9iYWxPYmplY3QqLCBKU09iamVj
dCogb3B0aW9ucywgc3RkOjpvcHRpb25hbDxkb3VibGU+IGRpdmlkZW5kLCBib29sIGluY2x1c2l2
ZSk7CiBkb3VibGUgcm91bmROdW1iZXJUb0luY3JlbWVudChkb3VibGUsIGRvdWJsZSBpbmNyZW1l
bnQsIFJvdW5kaW5nTW9kZSk7CiAKK2VudW0gY2xhc3MgVGVtcG9yYWxPdmVyZmxvdyA6IHVpbnQ4
X3QgeworICAgIENvbnN0cmFpbiwKKyAgICBSZWplY3QsCit9OworCitUZW1wb3JhbE92ZXJmbG93
IHRvVGVtcG9yYWxPdmVyZmxvdyhKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0Kik7CisKIH0gLy8g
bmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVt
cG9yYWxQbGFpblRpbWUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjcxYzRiN2JiNGRhM2JhNzdjOTYyYmYzNGU4
ZDRjZmEwN2MwNmMyM2YKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKQEAgLTAsMCArMSw2NzQgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1
c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZp
Y2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRp
b25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11
c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJp
YnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRl
cmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdB
UkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElT
JycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JT
CisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisg
KiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJ
TElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQg
KElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAq
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKKworI2luY2x1ZGUgIkFic3RyYWN0
U2xvdFZpc2l0b3IuaCIKKyNpbmNsdWRlICJJbnRsT2JqZWN0SW5saW5lcy5oIgorI2luY2x1ZGUg
IkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJMYXp5UHJvcGVydHlJbmxpbmVzLmgiCisjaW5jbHVk
ZSAiVGVtcG9yYWxEdXJhdGlvbi5oIgorI2luY2x1ZGUgIlZNVHJhcHNJbmxpbmVzLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxQbGFpblRpbWU6OnNfaW5m
byA9IHsgIk9iamVjdCIsICZCYXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9N
RVRIT0RfVEFCTEUoVGVtcG9yYWxQbGFpblRpbWUpIH07CisKK1RlbXBvcmFsUGxhaW5UaW1lKiBU
ZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElT
Tzg2MDE6OlBsYWluVGltZSYmIHBsYWluVGltZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcg
KE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3JhbFBsYWluVGltZT4odm0uaGVhcCkpIFRlbXBv
cmFsUGxhaW5UaW1lKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUocGxhaW5UaW1lKSk7CisgICAgb2Jq
ZWN0LT5maW5pc2hDcmVhdGlvbih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0
dXJlKiBUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOworfQorCitUZW1wb3JhbFBsYWluVGlt
ZTo6VGVtcG9yYWxQbGFpblRpbWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYw
MTo6UGxhaW5UaW1lJiYgcGxhaW5UaW1lKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAg
ICwgbV9wbGFpblRpbWUoV1RGTW92ZShwbGFpblRpbWUpKQoreworfQorCit2b2lkIFRlbXBvcmFs
UGxhaW5UaW1lOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3Jl
YXRpb24odm0pOworICAgIEFTU0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgbV9jYWxl
bmRhci5pbml0TGF0ZXIoCisgICAgICAgIFtdIChjb25zdCBhdXRvJiBpbml0KSB7CisgICAgICAg
ICAgICBWTSYgdm0gPSBpbml0LnZtOworICAgICAgICAgICAgYXV0byogcGxhaW5UaW1lID0ganND
YXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBhdXRvKiBn
bG9iYWxPYmplY3QgPSBwbGFpblRpbWUtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgICAgICAgICBh
dXRvKiBjYWxlbmRhciA9IFRlbXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0
LT5jYWxlbmRhclN0cnVjdHVyZSgpLCBpc284NjAxQ2FsZW5kYXJJRCgpKTsKKyAgICAgICAgICAg
IGluaXQuc2V0KGNhbGVuZGFyKTsKKyAgICAgICAgfSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1l
IFZpc2l0b3I+Cit2b2lkIFRlbXBvcmFsUGxhaW5UaW1lOjp2aXNpdENoaWxkcmVuSW1wbChKU0Nl
bGwqIGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihj
ZWxsLCB2aXNpdG9yKTsKKworICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxQ
bGFpblRpbWUqPihjZWxsKTsKKyAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyLnZpc2l0KHZpc2l0
b3IpOworfQorCitERUZJTkVfVklTSVRfQ0hJTERSRU4oVGVtcG9yYWxQbGFpblRpbWUpOworCisv
LyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlk
dGltZQorc3RhdGljIElTTzg2MDE6OlBsYWluVGltZSB0b1BsYWluVGltZShKU0dsb2JhbE9iamVj
dCogZ2xvYmFsT2JqZWN0LCBJU084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBkb3VibGUgaG91ciA9IGR1cmF0aW9uLmhvdXJzKCk7CisgICAg
ZG91YmxlIG1pbnV0ZSA9IGR1cmF0aW9uLm1pbnV0ZXMoKTsKKyAgICBkb3VibGUgc2Vjb25kID0g
ZHVyYXRpb24uc2Vjb25kcygpOworICAgIGRvdWJsZSBtaWxsaXNlY29uZCA9IGR1cmF0aW9uLm1p
bGxpc2Vjb25kcygpOworICAgIGRvdWJsZSBtaWNyb3NlY29uZCA9IGR1cmF0aW9uLm1pY3Jvc2Vj
b25kcygpOworICAgIGRvdWJsZSBuYW5vc2Vjb25kID0gZHVyYXRpb24ubmFub3NlY29uZHMoKTsK
KyAgICBpZiAoIShob3VyID49IDAgJiYgaG91ciA8PSAyMykpIHsKKyAgICAgICAgdGhyb3dSYW5n
ZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJob3VyIGlzIG91dCBvZiByYW5nZSJfcyk7Cisg
ICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIGlmICghKG1pbnV0ZSA+PSAwICYmIG1pbnV0
ZSA8PSA1OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJtaW51dGUgaXMgb3V0IG9mIHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9
CisgICAgaWYgKCEoc2Vjb25kID49IDAgJiYgc2Vjb25kIDw9IDU5KSkgeworICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNlY29uZCBpcyBvdXQgb2YgcmFuZ2Ui
X3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBpZiAoIShtaWxsaXNlY29uZCA+
PSAwICYmIG1pbGxpc2Vjb25kIDw9IDk5OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJtaWxsaXNlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAg
ICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICBpZiAoIShtaWNyb3NlY29uZCA+PSAwICYmIG1p
Y3Jvc2Vjb25kIDw9IDk5OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJtaWNyb3NlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKyAgICBpZiAoIShuYW5vc2Vjb25kID49IDAgJiYgbmFub3NlY29uZCA8
PSA5OTkpKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAi
bmFub3NlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAg
IH0KKyAgICByZXR1cm4gSVNPODYwMTo6UGxhaW5UaW1lIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KGhvdXIpLAorICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWludXRlKSwK
KyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHNlY29uZCksCisgICAgICAgIHN0YXRpY19j
YXN0PHVuc2lnbmVkPihtaWxsaXNlY29uZCksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVk
PihtaWNyb3NlY29uZCksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihuYW5vc2Vjb25k
KQorICAgIH07Cit9CisKKy8vIENyZWF0ZVRlbXBvcmFsUGxhaW5UaW1lICggeWVhcnMsIG1vbnRo
cywgd2Vla3MsIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1p
Y3Jvc2Vjb25kcywgbmFub3NlY29uZHMgWyAsIG5ld1RhcmdldCBdICkKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLWNyZWF0ZXRlbXBvcmFscGxhaW5U
aW1lCitUZW1wb3JhbFBsYWluVGltZSogVGVtcG9yYWxQbGFpblRpbWU6OnRyeUNyZWF0ZUlmVmFs
aWQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElT
Tzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRpb24pCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0
LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAg
IGF1dG8gcGxhaW5UaW1lID0gdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGR1cmF0
aW9uKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVy
biBUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUocGxhaW5U
aW1lKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRl
bXBvcmFsLWJhbGFuY2V0aW1lCitzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gYmFsYW5jZVRpbWUo
ZG91YmxlIGhvdXIsIGRvdWJsZSBtaW51dGUsIGRvdWJsZSBzZWNvbmQsIGRvdWJsZSBtaWxsaXNl
Y29uZCwgZG91YmxlIG1pY3Jvc2Vjb25kLCBkb3VibGUgbmFub3NlY29uZCkKK3sKKyAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC10ZW1wb3JhbC9pc3N1ZXMvMTgwNAorICAg
IG1pbnV0ZSA9IDYwICogaG91ciArIG1pbnV0ZTsKKyAgICBzZWNvbmQgPSA2MCAqIG1pbnV0ZSAr
IHNlY29uZDsKKyAgICBtaWxsaXNlY29uZCA9IDEwMDAgKiBzZWNvbmQgKyBtaWxsaXNlY29uZDsK
KyAgICBtaWNyb3NlY29uZCA9IDEwMDAgKiBtaWxsaXNlY29uZCArIG1pY3Jvc2Vjb25kOworICAg
IG5hbm9zZWNvbmQgPSAxMDAwICogbWljcm9zZWNvbmQgKyBuYW5vc2Vjb25kOworCisgICAgbWlj
cm9zZWNvbmQgPSBzdGQ6OnRydW5jKG5hbm9zZWNvbmQgLyAxMDAwKTsKKyAgICBuYW5vc2Vjb25k
ID0gc3RkOjpmbW9kKG5hbm9zZWNvbmQsIDEwMDApOworICAgIG1pbGxpc2Vjb25kID0gc3RkOjp0
cnVuYyhtaWNyb3NlY29uZCAvIDEwMDApOworICAgIG1pY3Jvc2Vjb25kID0gc3RkOjpmbW9kKG1p
Y3Jvc2Vjb25kLCAxMDAwKTsKKyAgICBzZWNvbmQgPSBzdGQ6OnRydW5jKG1pbGxpc2Vjb25kIC8g
MTAwMCk7CisgICAgbWlsbGlzZWNvbmQgPSBzdGQ6OmZtb2QobWlsbGlzZWNvbmQsIDEwMDApOwor
ICAgIG1pbnV0ZSA9IHN0ZDo6dHJ1bmMoc2Vjb25kIC8gNjApOworICAgIHNlY29uZCA9IHN0ZDo6
Zm1vZChzZWNvbmQsIDYwKTsKKyAgICBob3VyID0gc3RkOjp0cnVuYyhtaW51dGUgLyA2MCk7Cisg
ICAgbWludXRlID0gc3RkOjpmbW9kKG1pbnV0ZSwgNjApOworICAgIGRvdWJsZSBkYXlzID0gc3Rk
Ojp0cnVuYyhob3VyIC8gMjQpOworICAgIGhvdXIgPSBzdGQ6OmZtb2QoaG91ciwgMjQpOworICAg
IHJldHVybiBJU084NjAxOjpEdXJhdGlvbigwLCAwLCAwLCBkYXlzLCBob3VyLCBtaW51dGUsIHNl
Y29uZCwgbWlsbGlzZWNvbmQsIG1pY3Jvc2Vjb25kLCBuYW5vc2Vjb25kKTsKK30KKworLy8gaHR0
cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcm91bmR0aW1lCitz
dGF0aWMgSVNPODYwMTo6RHVyYXRpb24gcm91bmRUaW1lKElTTzg2MDE6OlBsYWluVGltZSBwbGFp
blRpbWUsIGRvdWJsZSBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCB1bml0LCBSb3VuZGluZ01vZGUg
cm91bmRpbmdNb2RlLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGF5TGVuZ3RoTnMpCit7CisgICAg
YXV0byBmcmFjdGlvbmFsU2Vjb25kID0gW10oSVNPODYwMTo6UGxhaW5UaW1lIHBsYWluVGltZSkg
LT4gZG91YmxlIHsKKyAgICAgICAgcmV0dXJuIHBsYWluVGltZS5zZWNvbmQoKSArIHBsYWluVGlt
ZS5taWxsaXNlY29uZCgpICogMWUtMyArIHBsYWluVGltZS5taWNyb3NlY29uZCgpICogMWUtNiAr
IHBsYWluVGltZS5uYW5vc2Vjb25kKCkgKiAxZS05OworICAgIH07CisKKyAgICBkb3VibGUgcXVh
bnRpdHkgPSAwOworICAgIHN3aXRjaCAodW5pdCkgeworICAgIGNhc2UgVGVtcG9yYWxVbml0OjpE
YXk6IHsKKyAgICAgICAgZG91YmxlIGxlbmd0aCA9IGRheUxlbmd0aE5zLnZhbHVlX29yKDguNjQg
KiAxZSsxMyk7CisgICAgICAgIHF1YW50aXR5ID0gKCgoKHBsYWluVGltZS5ob3VyKCkgKiA2MC4w
ICsgcGxhaW5UaW1lLm1pbnV0ZSgpKSAqIDYwLjAgKyBwbGFpblRpbWUuc2Vjb25kKCkpICogMTAw
MC4wICsgcGxhaW5UaW1lLm1pbGxpc2Vjb25kKCkpICogMTAwMC4wICsgcGxhaW5UaW1lLm5hbm9z
ZWNvbmQoKSkgLyBsZW5ndGg7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0lu
Y3JlbWVudChxdWFudGl0eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOworICAgICAgICByZXR1
cm4gSVNPODYwMTo6RHVyYXRpb24oMCwgMCwgMCwgcmVzdWx0LCAwLCAwLCAwLCAwLCAwLCAwKTsK
KyAgICB9CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OkhvdXI6IHsKKyAgICAgICAgcXVhbnRpdHkg
PSAoZnJhY3Rpb25hbFNlY29uZChwbGFpblRpbWUpIC8gNjAuMCArIHBsYWluVGltZS5taW51dGUo
KSkgLyA2MC4wICsgcGxhaW5UaW1lLmhvdXIoKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3Vu
ZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7Cisg
ICAgICAgIHJldHVybiBiYWxhbmNlVGltZShyZXN1bHQsIDAsIDAsIDAsIDAsIDApOworICAgIH0K
KyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWludXRlOiB7CisgICAgICAgIHF1YW50aXR5ID0gZnJh
Y3Rpb25hbFNlY29uZChwbGFpblRpbWUpIC8gNjAuMCArIHBsYWluVGltZS5taW51dGUoKTsKKyAg
ICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNy
ZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVybiBiYWxhbmNlVGltZShwbGFpblRp
bWUuaG91cigpLCByZXN1bHQsIDAsIDAsIDAsIDApOworICAgIH0KKyAgICBjYXNlIFRlbXBvcmFs
VW5pdDo6U2Vjb25kOiB7CisgICAgICAgIHF1YW50aXR5ID0gZnJhY3Rpb25hbFNlY29uZChwbGFp
blRpbWUpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVh
bnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VU
aW1lKHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5taW51dGUoKSwgcmVzdWx0LCAwLCAwLCAw
KTsKKyAgICB9CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kOiB7CisgICAgICAg
IHF1YW50aXR5ID0gcGxhaW5UaW1lLm1pbGxpc2Vjb25kKCkgKyBwbGFpblRpbWUubWljcm9zZWNv
bmQoKSAqIDFlLTMgKyBwbGFpblRpbWUubmFub3NlY29uZCgpICogMWUtNjsKKyAgICAgICAgYXV0
byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJv
dW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVybiBiYWxhbmNlVGltZShwbGFpblRpbWUuaG91cigp
LCBwbGFpblRpbWUubWludXRlKCksIHBsYWluVGltZS5zZWNvbmQoKSwgcmVzdWx0LCAwLCAwKTsK
KyAgICB9CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kOiB7CisgICAgICAgIHF1
YW50aXR5ID0gcGxhaW5UaW1lLm1pY3Jvc2Vjb25kKCkgKyBwbGFpblRpbWUubmFub3NlY29uZCgp
ICogMWUtMzsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVtZW50KHF1
YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVybiBiYWxhbmNl
VGltZShwbGFpblRpbWUuaG91cigpLCBwbGFpblRpbWUubWludXRlKCksIHBsYWluVGltZS5zZWNv
bmQoKSwgcGxhaW5UaW1lLm1pbGxpc2Vjb25kKCksIHJlc3VsdCwgMCk7CisgICAgfQorICAgIGNh
c2UgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kOiB7CisgICAgICAgIHF1YW50aXR5ID0gcGxhaW5U
aW1lLm5hbm9zZWNvbmQoKTsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5j
cmVtZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVy
biBiYWxhbmNlVGltZShwbGFpblRpbWUuaG91cigpLCBwbGFpblRpbWUubWludXRlKCksIHBsYWlu
VGltZS5zZWNvbmQoKSwgcGxhaW5UaW1lLm1pbGxpc2Vjb25kKCksIHBsYWluVGltZS5taWNyb3Nl
Y29uZCgpLCByZXN1bHQpOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgICBSRUxFQVNFX0FT
U0VSVF9OT1RfUkVBQ0hFRCgpOworICAgICAgICBicmVhazsKKyAgICB9Cit9CisKK0lTTzg2MDE6
OlBsYWluVGltZSBUZW1wb3JhbFBsYWluVGltZTo6cm91bmQoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFs
T2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsg
fSk7CisKKyAgICBhdXRvIHNtYWxsZXN0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCB7IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwg
VGVtcG9yYWxVbml0OjpXZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSB9KTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGlmICghc21hbGxlc3QpIHsKKyAgICAgICAgdGhy
b3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJDYW5ub3Qgcm91bmQgd2l0aG91dCBh
IHNtYWxsZXN0VW5pdCBvcHRpb24iX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAg
ICBUZW1wb3JhbFVuaXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFsdWUoKTsKKworICAgIGF1
dG8gcm91bmRpbmdNb2RlID0gaW50bE9wdGlvbjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwg
b3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdNb2RlLAorICAgICAgICB7IHsgImNl
aWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2VpbCB9LCB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpG
bG9vciB9LCB7ICJ0cnVuYyJfcywgUm91bmRpbmdNb2RlOjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5k
Il9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSB9LAorICAgICAgICAicm91bmRpbmdNb2Rl
IG11c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBcImZsb29yXCIsIFwidHJ1bmNcIiwgb3IgXCJoYWxm
RXhwYW5kXCIiX3MsIFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8gaW5jcmVtZW50ID0gdGVtcG9yYWxSb3Vu
ZGluZ0luY3JlbWVudChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIG1heGltdW1Sb3VuZGluZ0luY3Jl
bWVudChzbWFsbGVzdFVuaXQpLCBmYWxzZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGF1dG8gZHVyYXRpb24gPSByb3VuZFRpbWUobV9wbGFpblRpbWUsIGlu
Y3JlbWVudCwgc21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUsIHN0ZDo6bnVsbG9wdCk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0b1BsYWluVGltZShnbG9iYWxPYmplY3QsIFdURk1v
dmUoZHVyYXRpb24pKSk7Cit9CisKK1N0cmluZyBUZW1wb3JhbFBsYWluVGltZTo6dG9TdHJpbmco
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBvcHRpb25zID0gaW50bEdl
dE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVSTl9J
Rl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBpZiAoIW9wdGlvbnMpCisgICAgICAgIHJl
dHVybiB0b1N0cmluZygpOworCisgICAgUHJlY2lzaW9uRGF0YSBkYXRhID0gc2Vjb25kc1N0cmlu
Z1ByZWNpc2lvbihnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91
bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5k
aW5nTW9kZSwKKyAgICAgICAgeyB7ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAi
Zmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9k
ZTo6VHJ1bmMgfSwgeyAiaGFsZkV4cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0g
fSwKKyAgICAgICAgInJvdW5kaW5nTW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9v
clwiLCBcInRydW5jXCIsIG9yIFwiaGFsZkV4cGFuZFwiIl9zLCBSb3VuZGluZ01vZGU6OlRydW5j
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgLy8gTm8gbmVl
ZCB0byBtYWtlIGEgbmV3IG9iamVjdCBpZiB3ZSB3ZXJlIGdpdmVuIGV4cGxpY2l0IGRlZmF1bHRz
LgorICAgIGlmIChzdGQ6OmdldDwwPihkYXRhLnByZWNpc2lvbikgPT0gUHJlY2lzaW9uOjpBdXRv
ICYmIHJvdW5kaW5nTW9kZSA9PSBSb3VuZGluZ01vZGU6OlRydW5jKQorICAgICAgICByZXR1cm4g
dG9TdHJpbmcoKTsKKworICAgIGF1dG8gZHVyYXRpb24gPSByb3VuZFRpbWUobV9wbGFpblRpbWUs
IGRhdGEuaW5jcmVtZW50LCBkYXRhLnVuaXQsIHJvdW5kaW5nTW9kZSwgc3RkOjpudWxsb3B0KTsK
KyAgICBhdXRvIHBsYWluVGltZSA9IHRvUGxhaW5UaW1lKGdsb2JhbE9iamVjdCwgV1RGTW92ZShk
dXJhdGlvbikpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBy
ZXR1cm4gSVNPODYwMTo6dGVtcG9yYWxUaW1lVG9TdHJpbmcocGxhaW5UaW1lLCBkYXRhLnByZWNp
c2lvbik7Cit9CisKKworc3RhdGljIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUoVk0mIHZtLCB1
bnNpZ25lZCBpbmRleCkKK3sKKyAgICBBU1NFUlQoaW5kZXggPCBudW1iZXJPZlRlbXBvcmFsVW5p
dHMpOworICAgIHN3aXRjaCAoc3RhdGljX2Nhc3Q8VGVtcG9yYWxVbml0PihpbmRleCkpIHsKKyNk
ZWZpbmUgSlNDX1RFTVBPUkFMX0RVUkFUSU9OX1BST1BFUlRZX05BTUUobmFtZSwgY2FwaXRhbGl6
ZWROYW1lKSBjYXNlIFRlbXBvcmFsVW5pdDo6Y2FwaXRhbGl6ZWROYW1lOiByZXR1cm4gdm0ucHJv
cGVydHlOYW1lcy0+bmFtZTsKKyAgICAgICAgSlNDX1RFTVBPUkFMX1VOSVRTKEpTQ19URU1QT1JB
TF9EVVJBVElPTl9QUk9QRVJUWV9OQU1FKQorI3VuZGVmIEpTQ19URU1QT1JBTF9EVVJBVElPTl9Q
Uk9QRVJUWV9OQU1FCisgICAgfQorCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsK
K30KKworc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIHRvVGVtcG9yYWxUaW1lUmVjb3JkKEpTR2xv
YmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0ZW1wb3JhbFRpbWVMaWtlKQorewor
ICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFS
RV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiB7IH07
CisgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZUZW1wb3JhbFBs
YWluVGltZVVuaXRzOyArK2luZGV4KSB7CisgICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uSW5kZXgg
PSBpbmRleCArIHN0YXRpY19jYXN0PHVuc2lnbmVkPihUZW1wb3JhbFVuaXQ6OkhvdXIpOworICAg
ICAgICBhdXRvIG5hbWUgPSBwcm9wZXJ0eU5hbWUodm0sIGR1cmF0aW9uSW5kZXgpOworICAgICAg
ICBKU1ZhbHVlIHZhbHVlID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgbmFt
ZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAgICAg
Ly8gV2UgYXJlIHRocm93aW5nIGFuIGVycm9yIGhlcmUsIGJ1dCBwcm9iYWJseSB0aGlzIGlzIGEg
c3BlYyBidWcuCisgICAgICAgIC8vIFRyYWNrZWQgaW4gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkv
cHJvcG9zYWwtdGVtcG9yYWwvaXNzdWVzLzE4MDMuCisgICAgICAgIGlmICh2YWx1ZS5pc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3Bl
LCBtYWtlU3RyaW5nKCciJywgU3RyaW5nVmlldyhuYW1lLnVpZCgpKSwgIlwiIGZpZWxkIGlzIG1p
c3NpbmciX3MpKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKworICAgICAg
ICBkb3VibGUgaW50ZWdlciA9IHZhbHVlLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgaWYg
KCFzdGQ6OmlzZmluaXRlKGludGVnZXIpKSB7CisgICAgICAgICAgICB0aHJvd1JhbmdlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZSBwcm9wZXJ0aWVzIG11c3Qg
YmUgZmluaXRlIl9zKTsKKyAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgIH0KKyAgICAg
ICAgZHVyYXRpb25bZHVyYXRpb25JbmRleF0gPSBpbnRlZ2VyOworICAgIH0KKyAgICByZXR1cm4g
ZHVyYXRpb247Cit9CisKK3N0YXRpYyBzdGQ6OmFycmF5PHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiwg
bnVtYmVyT2ZUZW1wb3JhbFBsYWluVGltZVVuaXRzPiB0b1BhcnRpYWxUaW1lKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0ZW1wb3JhbFRpbWVMaWtlKQoreworICAgIFZN
JiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJP
V19TQ09QRSh2bSk7CisKKyAgICBib29sIGhhc0FueUZpZWxkcyA9IGZhbHNlOworICAgIHN0ZDo6
YXJyYXk8c3RkOjpvcHRpb25hbDxkb3VibGU+LCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5p
dHM+IHBhcnRpYWxUaW1lIHsgfTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCBudW1iZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHM7ICsraW5kZXgpIHsKKyAgICAgICAgdW5z
aWduZWQgZHVyYXRpb25JbmRleCA9IGluZGV4ICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRlbXBv
cmFsVW5pdDo6SG91cik7CisgICAgICAgIGF1dG8gbmFtZSA9IHByb3BlcnR5TmFtZSh2bSwgZHVy
YXRpb25JbmRleCk7CisgICAgICAgIEpTVmFsdWUgdmFsdWUgPSB0ZW1wb3JhbFRpbWVMaWtlLT5n
ZXQoZ2xvYmFsT2JqZWN0LCBuYW1lKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgICAgICBpZiAoIXZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAg
ICAgIGhhc0FueUZpZWxkcyA9IHRydWU7CisgICAgICAgICAgICBkb3VibGUgZG91YmxlVmFsdWUg
PSB2YWx1ZS50b0ludGVnZXJPckluZmluaXR5KGdsb2JhbE9iamVjdCk7CisgICAgICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgaWYgKCFzdGQ6Omlz
ZmluaXRlKGRvdWJsZVZhbHVlKSkgeworICAgICAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAidG9QYXJ0aWFsVGltZSBwcm9wZXJ0aWVzIG11c3QgYmUgZmlu
aXRlIl9zKTsKKyAgICAgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICAgICAgfQorICAg
ICAgICAgICAgcGFydGlhbFRpbWVbaW5kZXhdID0gZG91YmxlVmFsdWU7CisgICAgICAgIH0KKyAg
ICB9CisgICAgaWYgKCFoYXNBbnlGaWVsZHMpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgInRvUGFydGlhbFRpbWUgcmVxdWlyZXMgYXQgbGVhc3Qgb25lIHBy
b3BlcnR5Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgcmV0dXJuIHBhcnRp
YWxUaW1lOworfQorCitzdGF0aWMgSVNPODYwMTo6UGxhaW5UaW1lIGNvbnN0cmFpbnRUaW1lKElT
Tzg2MDE6OkR1cmF0aW9uJiYgZHVyYXRpb24pCit7CisgICAgYXV0byBjb25zdHJhaW5Ub1Jhbmdl
ID0gW10oZG91YmxlIHZhbHVlLCB1bnNpZ25lZCBtaW5pbXVtLCB1bnNpZ25lZCBtYXhpbXVtKSAt
PiB1bnNpZ25lZCB7CisgICAgICAgIGlmIChzdGQ6OmlzbmFuKHZhbHVlKSkKKyAgICAgICAgICAg
IHJldHVybiAwOworICAgICAgICByZXR1cm4gc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KHN0ZDo6bWlu
PGRvdWJsZT4oc3RkOjptYXg8ZG91YmxlPih2YWx1ZSwgbWluaW11bSksIG1heGltdW0pKTsKKyAg
ICB9OworICAgIHJldHVybiBJU084NjAxOjpQbGFpblRpbWUoCisgICAgICAgIGNvbnN0cmFpblRv
UmFuZ2UoZHVyYXRpb24uaG91cnMoKSwgMCwgMjMpLAorICAgICAgICBjb25zdHJhaW5Ub1Jhbmdl
KGR1cmF0aW9uLm1pbnV0ZXMoKSwgMCwgNTkpLAorICAgICAgICBjb25zdHJhaW5Ub1JhbmdlKGR1
cmF0aW9uLnNlY29uZHMoKSwgMCwgNTkpLAorICAgICAgICBjb25zdHJhaW5Ub1JhbmdlKGR1cmF0
aW9uLm1pbGxpc2Vjb25kcygpLCAwLCAxMDAwKSwKKyAgICAgICAgY29uc3RyYWluVG9SYW5nZShk
dXJhdGlvbi5taWNyb3NlY29uZHMoKSwgMCwgMTAwMCksCisgICAgICAgIGNvbnN0cmFpblRvUmFu
Z2UoZHVyYXRpb24ubmFub3NlY29uZHMoKSwgMCwgMTAwMCkpOworfQorCitzdGF0aWMgSVNPODYw
MTo6UGxhaW5UaW1lIHJlZ3VsYXRlVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJ
U084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uLCBUZW1wb3JhbE92ZXJmbG93IG92ZXJmbG93KQor
eworICAgIHN3aXRjaCAob3ZlcmZsb3cpIHsKKyAgICBjYXNlIFRlbXBvcmFsT3ZlcmZsb3c6OkNv
bnN0cmFpbjoKKyAgICAgICAgcmV0dXJuIGNvbnN0cmFpbnRUaW1lKFdURk1vdmUoZHVyYXRpb24p
KTsKKyAgICBjYXNlIFRlbXBvcmFsT3ZlcmZsb3c6OlJlamVjdDoKKyAgICAgICAgcmV0dXJuIHRv
UGxhaW5UaW1lKGdsb2JhbE9iamVjdCwgV1RGTW92ZShkdXJhdGlvbikpOworICAgIH0KKyAgICBy
ZXR1cm4geyB9OworfQorCitzdGF0aWMgSlNPYmplY3QqIHRvVGVtcG9yYWxDYWxlbmRhcldpdGhJ
U09EZWZhdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGVtcG9yYWxD
YWxlbmRhckxpa2UpCit7CisgICAgaWYgKHRlbXBvcmFsQ2FsZW5kYXJMaWtlLmlzVW5kZWZpbmVk
KCkpCisgICAgICAgIHJldHVybiBUZW1wb3JhbENhbGVuZGFyOjpjcmVhdGUoZ2xvYmFsT2JqZWN0
LT52bSgpLCBnbG9iYWxPYmplY3QtPmNhbGVuZGFyU3RydWN0dXJlKCksIGlzbzg2MDFDYWxlbmRh
cklEKCkpOworICAgIHJldHVybiBUZW1wb3JhbENhbGVuZGFyOjpmcm9tKGdsb2JhbE9iamVjdCwg
dGVtcG9yYWxDYWxlbmRhckxpa2UpOworfQorCitzdGF0aWMgSlNPYmplY3QqIGdldFRlbXBvcmFs
Q2FsZW5kYXJXaXRoSVNPRGVmYXVsdChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1Zh
bHVlIGl0ZW1WYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAg
YXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKGl0ZW1WYWx1
ZS5pbmhlcml0czxUZW1wb3JhbFBsYWluVGltZT4odm0pKQorICAgICAgICByZXR1cm4ganNDYXN0
PFRlbXBvcmFsUGxhaW5UaW1lKj4oaXRlbVZhbHVlKS0+Y2FsZW5kYXIoKTsKKworICAgIEpTVmFs
dWUgY2FsZW5kYXIgPSBpdGVtVmFsdWUuZ2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1l
cy0+Y2FsZW5kYXIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0b1RlbXBvcmFsQ2FsZW5kYXJXaXRoSVNPRGVmYXVs
dChnbG9iYWxPYmplY3QsIGNhbGVuZGFyKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9w
b3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvdGVtcG9yYWx0aW1lCitUZW1wb3JhbFBsYWlu
VGltZSogVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBpdGVtVmFsdWUsIHN0ZDo6b3B0aW9uYWw8VGVtcG9yYWxPdmVyZmxvdz4gb3Zl
cmZsb3dWYWx1ZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBvdmVyZmxvdyA9
IG92ZXJmbG93VmFsdWUudmFsdWVfb3IoVGVtcG9yYWxPdmVyZmxvdzo6Q29uc3RyYWluKTsKKwor
ICAgIGlmIChpdGVtVmFsdWUuaXNPYmplY3QoKSkgeworICAgICAgICBpZiAoaXRlbVZhbHVlLmlu
aGVyaXRzPFRlbXBvcmFsUGxhaW5UaW1lPih2bSkpCisgICAgICAgICAgICByZXR1cm4ganNDYXN0
PFRlbXBvcmFsUGxhaW5UaW1lKj4oaXRlbVZhbHVlKTsKKyAgICAgICAgSlNPYmplY3QqIGNhbGVu
ZGFyID0gZ2V0VGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KGdsb2JhbE9iamVjdCwgaXRl
bVZhbHVlKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAg
ICAgSlNTdHJpbmcqIGNhbGVuZGFyU3RyaW5nID0gY2FsZW5kYXItPnRvU3RyaW5nKGdsb2JhbE9i
amVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAg
IFN0cmluZyBjYWxlbmRhcldURlN0cmluZyA9IGNhbGVuZGFyU3RyaW5nLT52YWx1ZShnbG9iYWxP
YmplY3QpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAg
ICBpZiAoY2FsZW5kYXJXVEZTdHJpbmcgIT0gImlzbzg2MDEiX3MpIHsKKyAgICAgICAgICAgIHRo
cm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiY2FsZW5kYXIgaXMgbm90IGlzbzg2
MDEiX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBhdXRv
IGR1cmF0aW9uID0gdG9UZW1wb3JhbFRpbWVSZWNvcmQoZ2xvYmFsT2JqZWN0LCBqc0Nhc3Q8SlNP
YmplY3QqPihpdGVtVmFsdWUpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKyAgICAgICAgYXV0byBwbGFpblRpbWUgPSByZWd1bGF0ZVRpbWUoZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGR1cmF0aW9uKSwgb3ZlcmZsb3cpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworICAgICAgICByZXR1cm4gVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShwbGFpblRp
bWUpKTsKKyAgICB9CisKKyAgICBhdXRvIHN0cmluZyA9IGl0ZW1WYWx1ZS50b1dURlN0cmluZyhn
bG9iYWxPYmplY3QpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBhdXRvIHRpbWUgPSBJU084NjAxOjpwYXJzZVRpbWUoc3RyaW5nKTsKKyAgICBpZiAodGltZSkg
eworICAgICAgICBhdXRvIFtwbGFpblRpbWUsIHRpbWVab25lT3B0aW9uYWxdID0gdGltZS52YWx1
ZSgpOworICAgICAgICByZXR1cm4gVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZSh2bSwgZ2xvYmFs
T2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShwbGFpblRpbWUpKTsKKyAgICB9
CisKKyAgICBhdXRvIGRhdGVUaW1lID0gSVNPODYwMTo6cGFyc2VEYXRlVGltZShzdHJpbmcpOwor
ICAgIGlmIChkYXRlVGltZSkgeworICAgICAgICBhdXRvIFtwbGFpbkRhdGUsIHBsYWluVGltZU9w
dGlvbmFsLCB0aW1lWm9uZU9wdGlvbmFsXSA9IGRhdGVUaW1lLnZhbHVlKCk7CisgICAgICAgIGlm
IChwbGFpblRpbWVPcHRpb25hbCkKKyAgICAgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGlt
ZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3Zl
KHBsYWluVGltZU9wdGlvbmFsLnZhbHVlKCkpKTsKKyAgICB9CisKKyAgICB0aHJvd1JhbmdlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImludmFsaWQgdGltZSBzdHJpbmciX3MpOworICAgIHJl
dHVybiB7IH07Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2Vj
LXRlbXBvcmFsLWNvbXBhcmV0ZW1wb3JhbHRpbWUKK2ludDMyX3QgVGVtcG9yYWxQbGFpblRpbWU6
OmNvbXBhcmUoVGVtcG9yYWxQbGFpblRpbWUqIHBsYWluVGltZTEsIFRlbXBvcmFsUGxhaW5UaW1l
KiBwbGFpblRpbWUyKQoreworICAgIElTTzg2MDE6OlBsYWluVGltZSB0MSA9IHBsYWluVGltZTEt
PnBsYWluVGltZSgpOworICAgIElTTzg2MDE6OlBsYWluVGltZSB0MiA9IHBsYWluVGltZTItPnBs
YWluVGltZSgpOworICAgIGlmICh0MS5ob3VyKCkgPiB0Mi5ob3VyKCkpCisgICAgICAgIHJldHVy
biAxOworICAgIGlmICh0MS5ob3VyKCkgPCB0Mi5ob3VyKCkpCisgICAgICAgIHJldHVybiAtMTsK
KyAgICBpZiAodDEubWludXRlKCkgPiB0Mi5taW51dGUoKSkKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgaWYgKHQxLm1pbnV0ZSgpIDwgdDIubWludXRlKCkpCisgICAgICAgIHJldHVybiAtMTsKKyAg
ICBpZiAodDEuc2Vjb25kKCkgPiB0Mi5zZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAg
aWYgKHQxLnNlY29uZCgpIDwgdDIuc2Vjb25kKCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBp
ZiAodDEubWlsbGlzZWNvbmQoKSA+IHQyLm1pbGxpc2Vjb25kKCkpCisgICAgICAgIHJldHVybiAx
OworICAgIGlmICh0MS5taWxsaXNlY29uZCgpIDwgdDIubWlsbGlzZWNvbmQoKSkKKyAgICAgICAg
cmV0dXJuIC0xOworICAgIGlmICh0MS5taWNyb3NlY29uZCgpID4gdDIubWljcm9zZWNvbmQoKSkK
KyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKHQxLm1pY3Jvc2Vjb25kKCkgPCB0Mi5taWNyb3Nl
Y29uZCgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgaWYgKHQxLm5hbm9zZWNvbmQoKSA+IHQy
Lm5hbm9zZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIDE7CisgICAgaWYgKHQxLm5hbm9zZWNvbmQo
KSA8IHQyLm5hbm9zZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIHJldHVybiAwOwor
fQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC10
b2xpbWl0ZWR0ZW1wb3JhbGR1cmF0aW9uCitzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gdG9MaW1p
dGVkVGVtcG9yYWxEdXJhdGlvbihKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVl
IHRlbXBvcmFsRHVyYXRpb25MaWtlLCBzdGQ6OmluaXRpYWxpemVyX2xpc3Q8VGVtcG9yYWxVbml0
PiBkaXNhbGxvd2VkRmllbGRzKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBJU084NjAx
OjpEdXJhdGlvbiBkdXJhdGlvbjsKKyAgICBpZiAoIXRlbXBvcmFsRHVyYXRpb25MaWtlLmlzT2Jq
ZWN0KCkpIHsKKyAgICAgICAgU3RyaW5nIHN0cmluZyA9IHRlbXBvcmFsRHVyYXRpb25MaWtlLnRv
V1RGU3RyaW5nKGdsb2JhbE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgICAgIGF1dG8gZHVyYXRpb25PcHRpb25hbCA9IElTTzg2MDE6OnBhcnNl
RHVyYXRpb24oc3RyaW5nKTsKKyAgICAgICAgaWYgKCFkdXJhdGlvbk9wdGlvbmFsKSB7CisgICAg
ICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNvdWxkIG5vdCBw
YXJzZSBEdXJhdGlvbiBzdHJpbmciX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAg
ICAgfQorICAgICAgICBkdXJhdGlvbiA9IGR1cmF0aW9uT3B0aW9uYWwudmFsdWUoKTsKKyAgICB9
IGVsc2UgeworICAgICAgICBkdXJhdGlvbiA9IFRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb25S
ZWNvcmQoZ2xvYmFsT2JqZWN0LCB0ZW1wb3JhbER1cmF0aW9uTGlrZSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgfQorCisgICAgaWYgKCFJU084NjAxOjpp
c1ZhbGlkRHVyYXRpb24oZHVyYXRpb24pKSB7CisgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuRHVyYXRpb24gcHJvcGVydGllcyBtdXN0IGJlIGZp
bml0ZSBhbmQgb2YgY29uc2lzdGVudCBzaWduIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAg
ICB9CisKKyAgICBmb3IgKHNpemVfdCBpbmRleCA9IDA7IGluZGV4IDwgbnVtYmVyT2ZUZW1wb3Jh
bFVuaXRzOyBpbmRleCsrKSB7CisgICAgICAgIGlmIChkdXJhdGlvbltpbmRleF0pIHsKKyAgICAg
ICAgICAgIGlmIChkaXNhbGxvd2VkRmllbGRzLnNpemUoKSAmJiBzdGQ6OmZpbmQoZGlzYWxsb3dl
ZEZpZWxkcy5iZWdpbigpLCBkaXNhbGxvd2VkRmllbGRzLmVuZCgpLCBzdGF0aWNfY2FzdDxUZW1w
b3JhbFVuaXQ+KGluZGV4KSkgIT0gZGlzYWxsb3dlZEZpZWxkcy5lbmQoKSkgeworICAgICAgICAg
ICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiRHVyYXRpb24gcHJv
cGVydGllcyBpbmNsdWRlIGRpc2FsbG93ZWQgZmllbGQiX3MpOworICAgICAgICAgICAgICAgIHJl
dHVybiB7IH07CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisKKyAgICByZXR1cm4g
ZHVyYXRpb247Cit9CisKK3N0YXRpYyBJU084NjAxOjpEdXJhdGlvbiBhZGRUaW1lKGNvbnN0IElT
Tzg2MDE6OlBsYWluVGltZSYgcGxhaW5UaW1lLCBjb25zdCBJU084NjAxOjpEdXJhdGlvbiYgZHVy
YXRpb24pCit7CisgICAgcmV0dXJuIGJhbGFuY2VUaW1lKAorICAgICAgICBwbGFpblRpbWUuaG91
cigpICsgZHVyYXRpb24uaG91cnMoKSwKKyAgICAgICAgcGxhaW5UaW1lLm1pbnV0ZSgpICsgZHVy
YXRpb24ubWludXRlcygpLAorICAgICAgICBwbGFpblRpbWUuc2Vjb25kKCkgKyBkdXJhdGlvbi5z
ZWNvbmRzKCksCisgICAgICAgIHBsYWluVGltZS5taWxsaXNlY29uZCgpICsgZHVyYXRpb24ubWls
bGlzZWNvbmRzKCksCisgICAgICAgIHBsYWluVGltZS5taWNyb3NlY29uZCgpICsgZHVyYXRpb24u
bWljcm9zZWNvbmRzKCksCisgICAgICAgIHBsYWluVGltZS5uYW5vc2Vjb25kKCkgKyBkdXJhdGlv
bi5uYW5vc2Vjb25kcygpKTsKK30KKworSVNPODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5U
aW1lOjphZGQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0ZW1wb3JhbER1
cmF0aW9uTGlrZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBkdXJh
dGlvbiA9IHRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24oZ2xvYmFsT2JqZWN0LCB0ZW1wb3JhbER1
cmF0aW9uTGlrZSwgeyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0b1BsYWluVGltZShnbG9iYWxPYmplY3Qs
IGFkZFRpbWUobV9wbGFpblRpbWUsIGR1cmF0aW9uKSkpOworfQorCitJU084NjAxOjpQbGFpblRp
bWUgVGVtcG9yYWxQbGFpblRpbWU6OnN1YnRyYWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEpTVmFsdWUgdGVtcG9yYWxEdXJhdGlvbkxpa2UpIGNvbnN0Cit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGF1dG8gZHVyYXRpb24gPSB0b0xpbWl0ZWRUZW1wb3JhbER1cmF0aW9uKGds
b2JhbE9iamVjdCwgdGVtcG9yYWxEdXJhdGlvbkxpa2UsIHsgfSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFJFTEVBU0VfQU5EX1JFVFVSTihzY29wZSwgdG9Q
bGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBhZGRUaW1lKG1fcGxhaW5UaW1lLCAtZHVyYXRpb24pKSk7
Cit9CisKK0lTTzg2MDE6OlBsYWluVGltZSBUZW1wb3JhbFBsYWluVGltZTo6d2l0aChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU09iamVjdCogdGVtcG9yYWxUaW1lTGlrZSwgSlNWYWx1
ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgp
OworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGlmICh0
ZW1wb3JhbFRpbWVMaWtlLT5pbmhlcml0czxUZW1wb3JhbFBsYWluVGltZT4odm0pKSB7CisgICAg
ICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJhcmd1bWVudCBvYmplY3Qg
bXVzdCBub3QgY2FycnkgY2FsZW5kYXIiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0K
KworICAgIEpTVmFsdWUgY2FsZW5kYXJQcm9wZXJ0eSA9IHRlbXBvcmFsVGltZUxpa2UtPmdldChn
bG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPmNhbGVuZGFyKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGlmICghY2FsZW5kYXJQcm9wZXJ0eS5pc1VuZGVm
aW5lZCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJh
cmd1bWVudCBvYmplY3QgbXVzdCBub3QgY2FycnkgY2FsZW5kYXIiX3MpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKworICAgIEpTVmFsdWUgdGltZVpvbmVQcm9wZXJ0eSA9IHRlbXBvcmFs
VGltZUxpa2UtPmdldChnbG9iYWxPYmplY3QsIHZtLnByb3BlcnR5TmFtZXMtPnRpbWVab25lKTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIGlmICghdGltZVpvbmVQ
cm9wZXJ0eS5pc1VuZGVmaW5lZCgpKSB7CisgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJhcmd1bWVudCBvYmplY3QgbXVzdCBub3QgY2FycnkgdGltZSB6b25lIl9z
KTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAgICBhdXRvIFtob3VyT3B0aW9uYWws
IG1pbnV0ZU9wdGlvbmFsLCBzZWNvbmRPcHRpb25hbCwgbWlsbGlzZWNvbmRPcHRpb25hbCwgbWlj
cm9zZWNvbmRPcHRpb25hbCwgbmFub3NlY29uZE9wdGlvbmFsXSA9IHRvUGFydGlhbFRpbWUoZ2xv
YmFsT2JqZWN0LCB0ZW1wb3JhbFRpbWVMaWtlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVj
dChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIFRlbXBvcmFsT3ZlcmZsb3cgb3ZlcmZsb3cgPSB0b1RlbXBvcmFs
T3ZlcmZsb3coZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCB7IH0pOworCisgICAgSVNPODYwMTo6RHVyYXRpb24gZHVyYXRpb24geyB9OworICAg
IGR1cmF0aW9uLnNldEhvdXJzKGhvdXJPcHRpb25hbC52YWx1ZV9vcihob3VyKCkpKTsKKyAgICBk
dXJhdGlvbi5zZXRNaW51dGVzKG1pbnV0ZU9wdGlvbmFsLnZhbHVlX29yKG1pbnV0ZSgpKSk7Cisg
ICAgZHVyYXRpb24uc2V0U2Vjb25kcyhzZWNvbmRPcHRpb25hbC52YWx1ZV9vcihzZWNvbmQoKSkp
OworICAgIGR1cmF0aW9uLnNldE1pbGxpc2Vjb25kcyhtaWxsaXNlY29uZE9wdGlvbmFsLnZhbHVl
X29yKG1pbGxpc2Vjb25kKCkpKTsKKyAgICBkdXJhdGlvbi5zZXRNaWNyb3NlY29uZHMobWljcm9z
ZWNvbmRPcHRpb25hbC52YWx1ZV9vcihtaWNyb3NlY29uZCgpKSk7CisgICAgZHVyYXRpb24uc2V0
TmFub3NlY29uZHMobmFub3NlY29uZE9wdGlvbmFsLnZhbHVlX29yKG5hbm9zZWNvbmQoKSkpOwor
CisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCByZWd1bGF0ZVRpbWUoZ2xvYmFsT2JqZWN0
LCBXVEZNb3ZlKGR1cmF0aW9uKSwgb3ZlcmZsb3cpKTsKK30KKworc3RhdGljIElTTzg2MDE6OkR1
cmF0aW9uIGRpZmZlcmVuY2VUaW1lKElTTzg2MDE6OlBsYWluVGltZSB0aW1lMSwgSVNPODYwMTo6
UGxhaW5UaW1lIHRpbWUyKQoreworICAgIGRvdWJsZSBob3VycyA9IHN0YXRpY19jYXN0PGRvdWJs
ZT4odGltZTIuaG91cigpKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTEuaG91cigpKTsKKyAg
ICBkb3VibGUgbWludXRlcyA9IHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTIubWludXRlKCkpIC0g
c3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMS5taW51dGUoKSk7CisgICAgZG91YmxlIHNlY29uZHMg
PSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUyLnNlY29uZCgpKSAtIHN0YXRpY19jYXN0PGRvdWJs
ZT4odGltZTEuc2Vjb25kKCkpOworICAgIGRvdWJsZSBtaWxsaXNlY29uZHMgPSBzdGF0aWNfY2Fz
dDxkb3VibGU+KHRpbWUyLm1pbGxpc2Vjb25kKCkpIC0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1l
MS5taWxsaXNlY29uZCgpKTsKKyAgICBkb3VibGUgbWljcm9zZWNvbmRzID0gc3RhdGljX2Nhc3Q8
ZG91YmxlPih0aW1lMi5taWNyb3NlY29uZCgpKSAtIHN0YXRpY19jYXN0PGRvdWJsZT4odGltZTEu
bWljcm9zZWNvbmQoKSk7CisgICAgZG91YmxlIG5hbm9zZWNvbmRzID0gc3RhdGljX2Nhc3Q8ZG91
YmxlPih0aW1lMi5uYW5vc2Vjb25kKCkpIC0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMS5uYW5v
c2Vjb25kKCkpOworICAgIHJldHVybiBiYWxhbmNlVGltZShob3VycywgbWludXRlcywgc2Vjb25k
cywgbWlsbGlzZWNvbmRzLCBtaWNyb3NlY29uZHMsIG5hbm9zZWNvbmRzKTsKK30KKworc3RhdGlj
IHN0ZDo6dHVwbGU8VGVtcG9yYWxVbml0LCBUZW1wb3JhbFVuaXQsIFJvdW5kaW5nTW9kZSwgZG91
YmxlPiBleHRyYWN0RGlmZmVyZW5jZU9wdGlvbnMoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpT
T2JqZWN0KiBvcHRpb25zID0gaW50bEdldE9wdGlvbnNPYmplY3QoZ2xvYmFsT2JqZWN0LCBvcHRp
b25zVmFsdWUpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBh
dXRvIHNtYWxsZXN0ID0gdGVtcG9yYWxTbWFsbGVzdFVuaXQoZ2xvYmFsT2JqZWN0LCBvcHRpb25z
LCB7IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwgVGVtcG9yYWxVbml0
OjpXZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworICAgIFRlbXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1
ZV9vcihUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQpOworCisgICAgYXV0byBsYXJnZXN0ID0gdGVt
cG9yYWxMYXJnZXN0VW5pdChnbG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZ
ZWFyLCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5p
dDo6RGF5IH0sIFRlbXBvcmFsVW5pdDo6SG91cik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFVuaXQgPSBsYXJnZXN0LnZhbHVl
X29yKFRlbXBvcmFsVW5pdDo6SG91cik7CisKKyAgICBpZiAoc21hbGxlc3RVbml0IDwgbGFyZ2Vz
dFVuaXQpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJz
bWFsbGVzdFVuaXQgbXVzdCBiZSBzbWFsbGVyIHRoYW4gbGFyZ2VzdFVuaXQiX3MpOworICAgICAg
ICByZXR1cm4geyB9OworICAgIH0KKworICAgIGF1dG8gcm91bmRpbmdNb2RlID0gaW50bE9wdGlv
bjxSb3VuZGluZ01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+
cm91bmRpbmdNb2RlLAorICAgICAgICB7IHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2VpbCB9
LCB7ICJmbG9vciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7ICJ0cnVuYyJfcywgUm91bmRp
bmdNb2RlOjpUcnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBh
bmQgfSB9LAorICAgICAgICAicm91bmRpbmdNb2RlIG11c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBc
ImZsb29yXCIsIFwidHJ1bmNcIiwgb3IgXCJoYWxmRXhwYW5kXCIiX3MsIFJvdW5kaW5nTW9kZTo6
VHJ1bmMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRv
IGluY3JlbWVudCA9IHRlbXBvcmFsUm91bmRpbmdJbmNyZW1lbnQoZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCBtYXhpbXVtUm91bmRpbmdJbmNyZW1lbnQoc21hbGxlc3RVbml0KSwgZmFsc2UpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4geyBzbWFsbGVz
dFVuaXQsIGxhcmdlc3RVbml0LCByb3VuZGluZ01vZGUsIGluY3JlbWVudCB9OworfQorCitJU084
NjAxOjpEdXJhdGlvbiBUZW1wb3JhbFBsYWluVGltZTo6dW50aWwoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgVGVtcG9yYWxQbGFpblRpbWUqIG90aGVyLCBKU1ZhbHVlIG9wdGlvbnNWYWx1
ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byBbc21hbGxlc3RVbml0
LCBsYXJnZXN0VW5pdCwgcm91bmRpbmdNb2RlLCBpbmNyZW1lbnRdID0gZXh0cmFjdERpZmZlcmVu
Y2VPcHRpb25zKGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byByZXN1bHQgPSBkaWZmZXJlbmNlVGltZShw
bGFpblRpbWUoKSwgb3RoZXItPnBsYWluVGltZSgpKTsKKyAgICByZXN1bHQuc2V0WWVhcnMoMCk7
CisgICAgcmVzdWx0LnNldE1vbnRocygwKTsKKyAgICByZXN1bHQuc2V0V2Vla3MoMCk7CisgICAg
cmVzdWx0LnNldERheXMoMCk7CisgICAgVGVtcG9yYWxEdXJhdGlvbjo6cm91bmQocmVzdWx0LCBp
bmNyZW1lbnQsIHNtYWxsZXN0VW5pdCwgcm91bmRpbmdNb2RlKTsKKyAgICBUZW1wb3JhbER1cmF0
aW9uOjpiYWxhbmNlKHJlc3VsdCwgbGFyZ2VzdFVuaXQpOworICAgIHJldHVybiByZXN1bHQ7Cit9
CisKK0lTTzg2MDE6OkR1cmF0aW9uIFRlbXBvcmFsUGxhaW5UaW1lOjpzaW5jZShKU0dsb2JhbE9i
amVjdCogZ2xvYmFsT2JqZWN0LCBUZW1wb3JhbFBsYWluVGltZSogb3RoZXIsIEpTVmFsdWUgb3B0
aW9uc1ZhbHVlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIFtzbWFs
bGVzdFVuaXQsIGxhcmdlc3RVbml0LCByb3VuZGluZ01vZGUsIGluY3JlbWVudF0gPSBleHRyYWN0
RGlmZmVyZW5jZU9wdGlvbnMoZ2xvYmFsT2JqZWN0LCBvcHRpb25zVmFsdWUpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHJlc3VsdCA9IGRpZmZlcmVu
Y2VUaW1lKG90aGVyLT5wbGFpblRpbWUoKSwgcGxhaW5UaW1lKCkpOworICAgIHJlc3VsdCA9IC1y
ZXN1bHQ7CisgICAgcmVzdWx0LnNldFllYXJzKDApOworICAgIHJlc3VsdC5zZXRNb250aHMoMCk7
CisgICAgcmVzdWx0LnNldFdlZWtzKDApOworICAgIHJlc3VsdC5zZXREYXlzKDApOworICAgIFRl
bXBvcmFsRHVyYXRpb246OnJvdW5kKHJlc3VsdCwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJv
dW5kaW5nTW9kZSk7CisgICAgcmVzdWx0ID0gLXJlc3VsdDsKKyAgICByZXN1bHQuc2V0RGF5cygw
KTsKKyAgICBUZW1wb3JhbER1cmF0aW9uOjpiYWxhbmNlKHJlc3VsdCwgbGFyZ2VzdFVuaXQpOwor
ICAgIHJldHVybiByZXN1bHQ7Cit9CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmgKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
ZDk5NzAwMGQ4ZTA4ZDI4NDZlZjJkYzAzNjVhOTkxMzQxZjdkYzNiZgotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmgKQEAg
LTAsMCArMSw5MCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSAiSVNPODYwMS5oIgorI2luY2x1ZGUgIkxh
enlQcm9wZXJ0eS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsQ2FsZW5kYXIuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lIGZpbmFsIDogcHVibGljIEpTTm9uRmlu
YWxPYmplY3QgeworcHVibGljOgorICAgIHVzaW5nIEJhc2UgPSBKU05vbkZpbmFsT2JqZWN0Owor
CisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzIG1vZGU+Cisg
ICAgc3RhdGljIElzb1N1YnNwYWNlKiBzdWJzcGFjZUZvcihWTSYgdm0pCisgICAgeworICAgICAg
ICByZXR1cm4gdm0udGVtcG9yYWxQbGFpblRpbWVTcGFjZTxtb2RlPigpOworICAgIH0KKworICAg
IHN0YXRpYyBUZW1wb3JhbFBsYWluVGltZSogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgSVNPODYw
MTo6UGxhaW5UaW1lJiYpOworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluVGltZSogdHJ5Q3JlYXRl
SWZWYWxpZChKU0dsb2JhbE9iamVjdCosIFN0cnVjdHVyZSosIElTTzg2MDE6OkR1cmF0aW9uJiYp
OworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xvYmFsT2Jq
ZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKKyAgICBzdGF0aWMgVGVtcG9y
YWxQbGFpblRpbWUqIGZyb20oSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlLCBzdGQ6Om9wdGlvbmFs
PFRlbXBvcmFsT3ZlcmZsb3c+KTsKKyAgICBzdGF0aWMgaW50MzJfdCBjb21wYXJlKFRlbXBvcmFs
UGxhaW5UaW1lKiwgVGVtcG9yYWxQbGFpblRpbWUqKTsKKworICAgIFRlbXBvcmFsQ2FsZW5kYXIq
IGNhbGVuZGFyKCkgeyByZXR1cm4gbV9jYWxlbmRhci5nZXQodGhpcyk7IH0KKyAgICBJU084NjAx
OjpQbGFpblRpbWUgcGxhaW5UaW1lKCkgY29uc3QgeyByZXR1cm4gbV9wbGFpblRpbWU7IH0KKwor
I2RlZmluZSBKU0NfREVGSU5FX1RFTVBPUkFMX1BMQUlOX1RJTUVfRklFTEQobmFtZSwgY2FwaXRh
bGl6ZWROYW1lKSBcCisgICAgdW5zaWduZWQgbmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhaW5U
aW1lLm5hbWUoKTsgfQorICAgIEpTQ19URU1QT1JBTF9QTEFJTl9USU1FX1VOSVRTKEpTQ19ERUZJ
TkVfVEVNUE9SQUxfUExBSU5fVElNRV9GSUVMRCk7CisjdW5kZWYgSlNDX0RFRklORV9URU1QT1JB
TF9QTEFJTl9USU1FX0ZJRUxECisKKyAgICBJU084NjAxOjpQbGFpblRpbWUgd2l0aChKU0dsb2Jh
bE9iamVjdCosIEpTT2JqZWN0KiB0ZW1wb3JhbFRpbWVMaWtlLCBKU1ZhbHVlIG9wdGlvbnMpIGNv
bnN0OworICAgIElTTzg2MDE6OlBsYWluVGltZSBhZGQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVl
KSBjb25zdDsKKyAgICBJU084NjAxOjpQbGFpblRpbWUgc3VidHJhY3QoSlNHbG9iYWxPYmplY3Qq
LCBKU1ZhbHVlKSBjb25zdDsKKyAgICBJU084NjAxOjpQbGFpblRpbWUgcm91bmQoSlNHbG9iYWxP
YmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisgICAgU3RyaW5nIHRvU3RyaW5n
KHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJlY2lzaW9uID0geyBQcmVjaXNpb246
OkF1dG8sIDAgfSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBJU084NjAxOjp0ZW1wb3Jh
bFRpbWVUb1N0cmluZyhtX3BsYWluVGltZSwgcHJlY2lzaW9uKTsKKyAgICB9CisKKyAgICBJU084
NjAxOjpEdXJhdGlvbiB1bnRpbChKU0dsb2JhbE9iamVjdCosIFRlbXBvcmFsUGxhaW5UaW1lKiwg
SlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBJU084NjAxOjpEdXJhdGlvbiBzaW5jZShKU0ds
b2JhbE9iamVjdCosIFRlbXBvcmFsUGxhaW5UaW1lKiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsK
KworICAgIERFQ0xBUkVfVklTSVRfQ0hJTERSRU47CisKK3ByaXZhdGU6CisgICAgVGVtcG9yYWxQ
bGFpblRpbWUoVk0mLCBTdHJ1Y3R1cmUqLCBJU084NjAxOjpQbGFpblRpbWUmJik7CisgICAgdm9p
ZCBmaW5pc2hDcmVhdGlvbihWTSYpOworCisgICAgdGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVy
VHlwZT4KKyAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxJU084NjAxOjpQbGFpblRpbWU+IHBhcnNl
KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mKTsKKyAgICBzdGF0aWMgSVNPODYw
MTo6UGxhaW5UaW1lIGZyb21PYmplY3QoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCopOworCisg
ICAgVGVtcG9yYWxVbml0IGxhcmdlc3RTdWJwbGFpblRpbWUoKSBjb25zdDsKKworICAgIElTTzg2
MDE6OlBsYWluVGltZSBtX3BsYWluVGltZTsKKyAgICBMYXp5UHJvcGVydHk8VGVtcG9yYWxQbGFp
blRpbWUsIFRlbXBvcmFsQ2FsZW5kYXI+IG1fY2FsZW5kYXI7Cit9OworCit9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
UGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWY0NjkwOTg2OTUy
MmZkMTgxOGRjY2I1ZWRkOGFjNGQwZDNlMWZlMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IuY3BwCkBA
IC0wLDAgKzEsMTQ2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5E
IElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExF
IElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQg
T0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNsdWRlICJUZW1w
b3JhbFBsYWluVGltZS5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmgi
CisKK25hbWVzcGFjZSBKU0MgeworCitTVEFUSUNfQVNTRVJUX0lTX1RSSVZJQUxMWV9ERVNUUlVD
VElCTEUoVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcik7CisKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jRnJvbSk7Citz
dGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVj
dG9yRnVuY0NvbXBhcmUpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLmx1dC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY29uc3QgQ2xhc3NJbmZvIFRlbXBv
cmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OnNfaW5mbyA9IHsgIkZ1bmN0aW9uIiwgJkJhc2U6OnNf
aW5mbywgJnRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JUYWJsZSwgbnVsbHB0ciwgQ1JFQVRF
X01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKSB9OworCisvKiBTb3Vy
Y2UgZm9yIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IubHV0LmgKK0BiZWdpbiB0ZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yVGFibGUKKyAgZnJvbSAgICAgICAgICAgICB0ZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yRnVuY0Zyb20gICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24g
MQorICBjb21wYXJlICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jQ29t
cGFyZSAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAyCitAZW5kCisqLworCitUZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yKiBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVhdGUo
Vk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUq
IHBsYWluVGltZVByb3RvdHlwZSkKK3sKKyAgICBhdXRvKiBjb25zdHJ1Y3RvciA9IG5ldyAoTm90
TnVsbCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I+KHZtLmhlYXAp
KSBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yKHZtLCBzdHJ1Y3R1cmUpOworICAgIGNvbnN0
cnVjdG9yLT5maW5pc2hDcmVhdGlvbih2bSwgcGxhaW5UaW1lUHJvdG90eXBlKTsKKyAgICByZXR1
cm4gY29uc3RydWN0b3I7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1
Y3Rvcjo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oSW50ZXJuYWxGdW5jdGlvblR5cGUs
IFN0cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1Rf
RlVOQ1RJT04oY2FsbFRlbXBvcmFsUGxhaW5UaW1lKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NU
X0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsUGxhaW5UaW1lKTsKKworVGVtcG9yYWxQbGFpblRp
bWVDb25zdHJ1Y3Rvcjo6VGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvcihWTSYgdm0sIFN0cnVj
dHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlLCBjYWxsVGVtcG9yYWxQ
bGFpblRpbWUsIGNvbnN0cnVjdFRlbXBvcmFsUGxhaW5UaW1lKQoreworfQorCit2b2lkIFRlbXBv
cmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgVGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGUqIHBsYWluVGltZVByb3RvdHlwZSkKK3sKKyAgICBCYXNlOjpmaW5p
c2hDcmVhdGlvbih2bSwgMCwgIlBsYWluVGltZSJfcywgUHJvcGVydHlBZGRpdGlvbk1vZGU6Oldp
dGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKKyAgICBwdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCBwbGFpblRpbWVQcm90b3R5cGUsIFBy
b3BlcnR5QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRl
IHwgUHJvcGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICBwbGFpblRpbWVQcm90b3R5cGUt
PnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1
Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250
RW51bSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxQ
bGFpblRpbWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2Nv
cGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIEpTT2JqZWN0KiBuZXdUYXJnZXQg
PSBhc09iamVjdChjYWxsRnJhbWUtPm5ld1RhcmdldCgpKTsKKyAgICBTdHJ1Y3R1cmUqIHN0cnVj
dHVyZSA9IEpTQ19HRVRfREVSSVZFRF9TVFJVQ1RVUkUodm0sIHBsYWluVGltZVN0cnVjdHVyZSwg
bmV3VGFyZ2V0LCBjYWxsRnJhbWUtPmpzQ2FsbGVlKCkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiB7IH07Cisg
ICAgYXV0byBjb3VudCA9IHN0ZDo6bWluPHNpemVfdD4oY2FsbEZyYW1lLT5hcmd1bWVudENvdW50
KCksIG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0cyk7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IGNvdW50OyBpKyspIHsKKyAgICAgICAgdW5zaWduZWQgZHVyYXRpb25JbmRleCA9
IGkgKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVGVtcG9yYWxVbml0OjpIb3VyKTsKKyAgICAgICAg
ZHVyYXRpb25bZHVyYXRpb25JbmRleF0gPSBjYWxsRnJhbWUtPnVuY2hlY2tlZEFyZ3VtZW50KGkp
LnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKGR1cmF0aW9u
W2R1cmF0aW9uSW5kZXhdKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lIHByb3BlcnRpZXMgbXVzdCBi
ZSBmaW5pdGUiX3MpOworICAgIH0KKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFs
dWU6OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9iYWxPYmpl
Y3QsIHN0cnVjdHVyZSwgV1RGTW92ZShkdXJhdGlvbikpKSk7Cit9CisKK0pTQ19ERUZJTkVfSE9T
VF9GVU5DVElPTihjYWxsVGVtcG9yYWxQbGFpblRpbWUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBDYWxsRnJhbWUqKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZSh0aHJvd0NvbnN0cnVjdG9yQ2Fubm90QmVDYWxsZWRBc0Z1bmN0aW9u
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJQbGFpblRpbWUiKSk7Cit9CisKKy8vIGh0
dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5m
cm9tCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rv
ckZ1bmNGcm9tLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9
IGludGxHZXRPcHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgx
KSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIFRlbXBvcmFs
T3ZlcmZsb3cgb3ZlcmZsb3cgPSB0b1RlbXBvcmFsT3ZlcmZsb3coZ2xvYmFsT2JqZWN0LCBvcHRp
b25zKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSlNWYWx1
ZSBpdGVtVmFsdWUgPSBjYWxsRnJhbWUtPmFyZ3VtZW50KDApOworCisgICAgaWYgKGl0ZW1WYWx1
ZS5pbmhlcml0czxUZW1wb3JhbFBsYWluVGltZT4odm0pKQorICAgICAgICBSRUxFQVNFX0FORF9S
RVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBqc0Nhc3Q8VGVtcG9yYWxQbGFp
blRpbWUqPihpdGVtVmFsdWUpLT5wbGFpblRpbWUoKSkpKTsKKworICAgIFJFTEVBU0VfQU5EX1JF
VFVSTihzY29wZSwgSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKGdsb2Jh
bE9iamVjdCwgaXRlbVZhbHVlLCBvdmVyZmxvdykpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVz
L3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLmNvbXBhcmUKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yRnVuY0NvbXBh
cmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkp
Cit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBE
RUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIG9uZSA9IFRlbXBvcmFsUGxhaW5U
aW1lOjpmcm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc3RkOjpudWxs
b3B0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byog
dHdvID0gVGVtcG9yYWxQbGFpblRpbWU6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFy
Z3VtZW50KDEpLCBzdGQ6Om51bGxvcHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKFRlbXBvcmFsUGxh
aW5UaW1lOjpjb21wYXJlKG9uZSwgdHdvKSkpOworfQorCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxh
aW5UaW1lQ29uc3RydWN0b3IuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45MmE5MzY1ZTE1MGQ1Mzk4NjVhZjVlZjMy
MzE2MWNlYmRjMWYwNWY0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5oCkBAIC0wLDAgKzEsNTAgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9S
UyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBP
RiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9T
RSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09O
VFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21h
IG9uY2UKKworI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKKworbmFtZXNwYWNlIEpTQyB7
CisKK2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOworCitjbGFzcyBUZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yIGZpbmFsIDogcHVibGljIEludGVybmFsRnVuY3Rpb24geworcHVi
bGljOgorICAgIHVzaW5nIEJhc2UgPSBJbnRlcm5hbEZ1bmN0aW9uOworICAgIHN0YXRpYyBjb25z
dGV4cHIgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSBCYXNlOjpTdHJ1Y3R1cmVGbGFncyB8IEhh
c1N0YXRpY1Byb3BlcnR5VGFibGU7CisKKyAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRpbWVDb25z
dHJ1Y3RvciogY3JlYXRlKFZNJiwgU3RydWN0dXJlKiwgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGUqKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2Jh
bE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAg
IFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUqKTsKK307CitT
VEFUSUNfQVNTRVJUX0lTT19TVUJTUEFDRV9TSEFSQUJMRShUZW1wb3JhbFBsYWluVGltZUNvbnN0
cnVjdG9yLCBJbnRlcm5hbEZ1bmN0aW9uKTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOGM2MGY3NDVmMmE3MDJkNzgwNTNjYjIzYzJjMDZm
NGU2Njg4ODE3ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcApAQCAtMCwwICsxLDM4OSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgorCisjaW5j
bHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCisKK25h
bWVzcGFjZSBKU0MgeworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZUZ1bmNBZGQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jU3VidHJhY3QpOworc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jV2l0
aCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZUZ1bmNVbnRpbCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1w
b3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNTaW5jZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9T
VF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNSb3VuZCk7CitzdGF0aWMg
SlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNF
cXVhbHMpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGVGdW5jR2V0SVNPRmllbGRzKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvU3RyaW5nKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1Rv
SlNPTik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9G
VU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNWYWx1ZU9mKTsKK3N0YXRpYyBK
U0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVy
SG91cik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZUdldHRlck1pbnV0ZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlclNlY29uZCk7CitzdGF0aWMgSlNDX0RF
Q0xBUkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbGxp
c2Vjb25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RP
TV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJOYW5vc2Vjb25kKTsKK3N0
YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
R2V0dGVyQ2FsZW5kYXIpOworCit9CisKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZS5sdXQuaCIKKworbmFtZXNwYWNlIEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZTo6c19pbmZvID0geyAiVGVtcG9yYWwuUGxhaW5UaW1lIiwgJkJh
c2U6OnNfaW5mbywgJnBsYWluVGltZVByb3RvdHlwZVRhYmxlLCBudWxscHRyLCBDUkVBVEVfTUVU
SE9EX1RBQkxFKFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKSB9OworCisvKiBTb3VyY2UgZm9y
IFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oCitAYmVnaW4gcGxhaW5UaW1lUHJvdG90
eXBlVGFibGUKKyAgYWRkICAgICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1
bmNBZGQgICAgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzdWJ0cmFjdCAgICAg
ICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1N1YnRyYWN0ICAgICAgICAgICBEb250
RW51bXxGdW5jdGlvbiAxCisgIHdpdGggICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90
b3R5cGVGdW5jV2l0aCAgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgdW50aWwg
ICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNVbnRpbCAgICAgICAgICAg
ICAgRG9udEVudW18RnVuY3Rpb24gMQorICBzaW5jZSAgICAgICAgICAgIHRlbXBvcmFsUGxhaW5U
aW1lUHJvdG90eXBlRnVuY1NpbmNlICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAxCisg
IHJvdW5kICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jUm91bmQgICAg
ICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZXF1YWxzICAgICAgICAgICB0ZW1wb3Jh
bFBsYWluVGltZVByb3RvdHlwZUZ1bmNFcXVhbHMgICAgICAgICAgICAgRG9udEVudW18RnVuY3Rp
b24gMQorICBnZXRJU09GaWVsZHMgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0dl
dElTT0ZpZWxkcyAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHRvU3RyaW5nICAgICAgICAg
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9TdHJpbmcgICAgICAgICAgIERvbnRFbnVt
fEZ1bmN0aW9uIDAKKyAgdG9KU09OICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZUZ1bmNUb0pTT04gICAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB0b0xvY2FsZVN0
cmluZyAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvTG9jYWxlU3RyaW5nICAgICBE
b250RW51bXxGdW5jdGlvbiAwCisgIHZhbHVlT2YgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGVGdW5jVmFsdWVPZiAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDAKKyAgaG91
ciAgICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlckhvdXIgICAgICAg
ICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgbWludXRlICAgICAgICAg
ICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbnV0ZSAgICAgICAgICAgRG9udEVu
dW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgc2Vjb25kICAgICAgICAgICB0ZW1wb3JhbFBs
YWluVGltZVByb3RvdHlwZUdldHRlclNlY29uZCAgICAgICAgICAgRG9udEVudW18UmVhZE9ubHl8
Q3VzdG9tQWNjZXNzb3IKKyAgbWlsbGlzZWNvbmQgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZUdldHRlck1pbGxpc2Vjb25kICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNz
b3IKKyAgbWljcm9zZWNvbmQgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1p
Y3Jvc2Vjb25kICAgICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgbmFub3Nl
Y29uZCAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck5hbm9zZWNvbmQgICAg
ICAgRG9udEVudW18UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKKyAgY2FsZW5kYXIgICAgICAgICB0
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlckNhbGVuZGFyICAgICAgICAgRG9udEVudW18
UmVhZE9ubHl8Q3VzdG9tQWNjZXNzb3IKK0BlbmQKKyovCisKK1RlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlKiBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3JlYXRlKFZNJiB2bSwgSlNHbG9i
YWxPYmplY3QqIGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUpCit7CisgICAgYXV0
byogcHJvdG90eXBlID0gbmV3IChOb3ROdWxsLCBhbGxvY2F0ZUNlbGw8VGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGU+KHZtLmhlYXApKSBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSh2bSwgc3Ry
dWN0dXJlKTsKKyAgICBwcm90b3R5cGUtPmZpbmlzaENyZWF0aW9uKHZtLCBnbG9iYWxPYmplY3Qp
OworICAgIHJldHVybiBwcm90b3R5cGU7Cit9CisKK1N0cnVjdHVyZSogVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9i
YWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQoreworICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNy
ZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUsIFR5cGVJbmZvKE9iamVjdFR5cGUsIFN0
cnVjdHVyZUZsYWdzKSwgaW5mbygpKTsKK30KKworVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6
OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUp
CisgICAgOiBCYXNlKHZtLCBzdHJ1Y3R1cmUpCit7Cit9CisKK3ZvaWQgVGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGU6OmZpbmlzaENyZWF0aW9uKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqKQorewor
ICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtKTsKKyAgICBBU1NFUlQoaW5oZXJpdHModm0sIGlu
Zm8oKSkpOworICAgIEpTQ19UT19TVFJJTkdfVEFHX1dJVEhPVVRfVFJBTlNJVElPTigpOworfQor
CisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFp
bnRpbWUucHJvdG90eXBlLmFkZAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlRnVuY0FkZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENh
bGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7
CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byog
cGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJh
bWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRo
cm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5w
cm90b3R5cGUuYWRkIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsK
KworICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT5hZGQoZ2xvYmFsT2JqZWN0LCBjYWxsRnJh
bWUtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwor
CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsK
K30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwu
cGxhaW50aW1lLnByb3RvdHlwZS5zdWJ0cmFjdAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1N1YnRyYWN0LCAoSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2Jh
bE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7
CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1l
Kj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9y
YWwuUGxhaW5UaW1lLnByb3RvdHlwZS5zdWJ0cmFjdCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHBsYWluVGltZS0+c3VidHJh
Y3QoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1w
b3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVy
ZSgpLCBXVEZNb3ZlKHJlc3VsdCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS53aXRoCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jV2l0aCwgKEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAg
ICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVf
VEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxU
ZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAo
IXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUud2l0aCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBKU1ZhbHVlIHRlbXBvcmFsVGlt
ZUxpa2UgID0gY2FsbEZyYW1lLT5hcmd1bWVudCgwKTsKKyAgICBpZiAoIXRlbXBvcmFsVGltZUxp
a2UuaXNPYmplY3QoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2Jq
ZWN0LCBzY29wZSwgIkZpcnN0IGFyZ3VtZW50IHRvIFRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5
cGUud2l0aCBtdXN0IGJlIGFuIG9iamVjdCJfcyk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHBsYWlu
VGltZS0+d2l0aChnbG9iYWxPYmplY3QsIGFzT2JqZWN0KHRlbXBvcmFsVGltZUxpa2UpLCBjYWxs
RnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRl
KHZtLCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJlc3VsdCkp
KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwucGxhaW50aW1lLnByb3RvdHlwZS51bnRpbAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1VudGlsLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwu
UGxhaW5UaW1lLnByb3RvdHlwZS51bnRpbCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBs
YWluVGltZSJfcyk7CisKKyAgICBhdXRvKiBvdGhlciA9IFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9t
KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSwgc3RkOjpudWxsb3B0KTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byByZXN1bHQgPSBw
bGFpblRpbWUtPnVudGlsKGdsb2JhbE9iamVjdCwgb3RoZXIsIGNhbGxGcmFtZS0+YXJndW1lbnQo
MSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFs
T2JqZWN0LCBXVEZNb3ZlKHJlc3VsdCksIGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUo
KSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1w
b3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLnNpbmNlCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jU2luY2UsIChKU0dsb2JhbE9iamVjdCogZ2xv
YmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFs
T2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsK
KworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUq
Pih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5QbGFpblRpbWUucHJvdG90eXBlLnNpbmNlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEg
cGxhaW5UaW1lIl9zKTsKKworICAgIGF1dG8qIG90aGVyID0gVGVtcG9yYWxQbGFpblRpbWU6OmZy
b20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51bGxvcHQpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICBhdXRvIHJlc3VsdCA9
IHBsYWluVGltZS0+c2luY2UoZ2xvYmFsT2JqZWN0LCBvdGhlciwgY2FsbEZyYW1lLT5hcmd1bWVu
dCgxKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChnbG9i
YWxPYmplY3QsIFdURk1vdmUocmVzdWx0KSwgZ2xvYmFsT2JqZWN0LT5kdXJhdGlvblN0cnVjdHVy
ZSgpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRl
bXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUucm91bmQKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNSb3VuZCwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGlt
ZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAg
ICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLlBsYWluVGltZS5wcm90b3R5cGUucm91bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3Qg
YSBwbGFpblRpbWUiX3MpOworCisgICAgYXV0byBvcHRpb25zID0gY2FsbEZyYW1lLT5hcmd1bWVu
dCgwKTsKKyAgICBpZiAob3B0aW9ucy5pc1VuZGVmaW5lZCgpKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS5yb3VuZCByZXF1aXJlcyBhbiBvcHRpb25zIGFyZ3VtZW50Il9zKTsKKworICAgIGF1
dG8gcm91bmRlZCA9IHBsYWluVGltZS0+cm91bmQoZ2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKKyAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QtPnBsYWlu
VGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHJvdW5kZWQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMz
OS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUu
ZXF1YWxzCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVGdW5jRXF1YWxzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBj
YWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUg
PSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVF
cnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5l
cXVhbHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAg
YXV0byogb3RoZXIgPSBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxG
cmFtZS0+YXJndW1lbnQoMCksIHN0ZDo6bnVsbG9wdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKHBs
YWluVGltZS0+cGxhaW5UaW1lKCkgPT0gb3RoZXItPnBsYWluVGltZSgpKSk7Cit9CisKKy8vIGh0
dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5w
cm90b3R5cGUuZ2V0aXNvZmllbGRzCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGVGdW5jR2V0SVNPRmllbGRzLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4o
dm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAg
ICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwu
UGxhaW5UaW1lLnByb3RvdHlwZS5lcXVhbHMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBw
bGFpblRpbWUiX3MpOworCisgICAgSlNPYmplY3QqIGZpZWxkcyA9IGNvbnN0cnVjdEVtcHR5T2Jq
ZWN0KGdsb2JhbE9iamVjdCk7CisgICAgZmllbGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5
TmFtZXMtPmNhbGVuZGFyLCBwbGFpblRpbWUtPmNhbGVuZGFyKCkpOworICAgIGZpZWxkcy0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc29Ib3VyLCBqc051bWJlcihwbGFpblRpbWUt
PmhvdXIoKSkpOworICAgIGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5p
c29NaWNyb3NlY29uZCwganNOdW1iZXIocGxhaW5UaW1lLT5taWNyb3NlY29uZCgpKSk7CisgICAg
ZmllbGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzb01pbGxpc2Vjb25kLCBq
c051bWJlcihwbGFpblRpbWUtPm1pbGxpc2Vjb25kKCkpKTsKKyAgICBmaWVsZHMtPnB1dERpcmVj
dCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNvTWludXRlLCBqc051bWJlcihwbGFpblRpbWUtPm1p
bnV0ZSgpKSk7CisgICAgZmllbGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlz
b05hbm9zZWNvbmQsIGpzTnVtYmVyKHBsYWluVGltZS0+bmFub3NlY29uZCgpKSk7CisgICAgZmll
bGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlzb1NlY29uZCwganNOdW1iZXIo
cGxhaW5UaW1lLT5zZWNvbmQoKSkpOworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoZmllbGRz
KTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9y
YWwucGxhaW50aW1lLnByb3RvdHlwZS50b3N0cmluZworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9O
KHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1RvU3RyaW5nLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5U
aW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQor
ICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVt
cG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS50b1N0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdz
IG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpT
VmFsdWU6OmVuY29kZShqc1N0cmluZyh2bSwgcGxhaW5UaW1lLT50b1N0cmluZyhnbG9iYWxPYmpl
Y3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMCkpKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLnRvanNv
bgorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVu
Y1RvSlNPTiwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudG9KU09O
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0sIHBsYWluVGltZS0+dG9TdHJpbmcoKSkpOwor
fQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5w
bGFpbnRpbWUucHJvdG90eXBlLnRvbG9jYWxlc3RyaW5nCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJ
T04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJpbmcsIChKU0dsb2Jh
bE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFp
blRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2Nv
cGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvTG9jYWxlU3RyaW5nIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNTdHJpbmcodm0sIHBsYWluVGltZS0+dG9TdHJpbmcoKSkpOworfQorCisvLyBo
dHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUu
cHJvdG90eXBlLnZhbHVlb2YKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWlu
VGltZVByb3RvdHlwZUZ1bmNWYWx1ZU9mLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
Q2FsbEZyYW1lKikpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1
dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiB0aHJvd1ZN
VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90
eXBlLnZhbHVlT2YgbXVzdCBub3QgYmUgY2FsbGVkLiBUbyBjb21wYXJlIFBsYWluVGltZSB2YWx1
ZXMsIHVzZSBUZW1wb3JhbC5QbGFpblRpbWUuY29tcGFyZSJfcyk7Cit9CisKK0pTQ19ERUZJTkVf
Q1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlckhvdXIsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3Bl
cnR5TmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9
IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRo
aXNWYWx1ZSkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5
cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlw
ZS5ob3VyIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5ob3VyKCkpKTsKK30K
KworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0
dGVyTWludXRlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBs
YWluVGltZS5wcm90b3R5cGUubWludXRlIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxh
aW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5U
aW1lLT5taW51dGUoKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGVHZXR0ZXJTZWNvbmQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAgVk0m
IHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9X
X1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9y
YWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlmICgh
cGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5zZWNvbmQgY2FsbGVkIG9uIHZh
bHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVu
Y29kZShqc051bWJlcihwbGFpblRpbWUtPnNlY29uZCgpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VT
VE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbGxpc2Vjb25kLCAo
SlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQ
cm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRp
bWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFsdWU6OmRlY29k
ZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90
b3R5cGUubWlsbGlzZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUi
X3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm1p
bGxpc2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlR2V0dGVyTWljcm9zZWNvbmQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBFbmNvZGVkSlNWYWx1ZSB0aGlzVmFsdWUsIFByb3BlcnR5TmFtZSkpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVt
cG9yYWxQbGFpblRpbWUqPih2bSwgSlNWYWx1ZTo6ZGVjb2RlKHRoaXNWYWx1ZSkpOworICAgIGlm
ICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmpl
Y3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5taWNyb3NlY29uZCBjYWxs
ZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNW
YWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+bWljcm9zZWNvbmQoKSkpOworfQorCitK
U0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJO
YW5vc2Vjb25kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUg
dGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+
dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBh
dXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpT
VmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAg
cmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBs
YWluVGltZS5wcm90b3R5cGUubmFub3NlY29uZCBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
IHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBs
YWluVGltZS0+bmFub3NlY29uZCgpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRFUih0
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlckNhbGVuZGFyLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWND
YXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsK
KyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xv
YmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuY2FsZW5kYXIg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShwbGFpblRpbWUtPmNhbGVuZGFyKCkpOworfQorCit9IC8vIG5hbWVz
cGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJlYTIyOWE3YmQ1MTk0YmI0
NjE2ZmE0NzJjMmZhZDYxNGQzYWU1OGUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oCkBAIC0wLDAgKzEs
NTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
cHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisKK25hbWVzcGFjZSBKU0Mgewor
CitjbGFzcyBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZp
bmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsK
KyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdzID0gQmFzZTo6U3Ry
dWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisgICAgdGVtcGxhdGU8dHlw
ZW5hbWUgQ2VsbFR5cGUsIFN1YnNwYWNlQWNjZXNzPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSog
c3Vic3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgU1RBVElDX0FTU0VSVF9JU09fU1VC
U1BBQ0VfU0hBUkFCTEUoVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUsIEJhc2UpOworICAgICAg
ICByZXR1cm4gJnZtLnBsYWluT2JqZWN0U3BhY2U7CisgICAgfQorCisgICAgc3RhdGljIFRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlKiBjcmVhdGUoVk0mLCBKU0dsb2JhbE9iamVjdCosIFN0cnVj
dHVyZSopOworICAgIHN0YXRpYyBTdHJ1Y3R1cmUqIGNyZWF0ZVN0cnVjdHVyZShWTSYsIEpTR2xv
YmFsT2JqZWN0KiwgSlNWYWx1ZSk7CisKKyAgICBERUNMQVJFX0lORk87CisKK3ByaXZhdGU6Cisg
ICAgVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUoVk0mLCBTdHJ1Y3R1cmUqKTsKKyAgICB2b2lk
IGZpbmlzaENyZWF0aW9uKFZNJiwgSlNHbG9iYWxPYmplY3QqKTsKK307CisKK30gLy8gbmFtZXNw
YWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9y
YWxUaW1lWm9uZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRp
bWVab25lLmNwcAppbmRleCA5Nzg0YzNkMTc0OTk2OTE1MGIzZWQ2ZTY4NmQ1Y2E4OTY5ZTJiMmQy
Li43NjU5YjA1ODJjY2QyOTVlOGQxYmE1ZjM4ZWViZDQxNDcxODYxNzJlIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmNwcAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmNwcApAQCAtNTcs
MTcgKzU3LDYgQEAgVGVtcG9yYWxUaW1lWm9uZTo6VGVtcG9yYWxUaW1lWm9uZShWTSYgdm0sIFN0
cnVjdHVyZSogc3RydWN0dXJlLCBUaW1lWm9uZSB0aW1lWm8KIHsKIH0KIAotLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzdXAtaXN2YWxpZHRpbWV6b25lbmFtZQotc3RkOjpv
cHRpb25hbDxUaW1lWm9uZUlEPiBUZW1wb3JhbFRpbWVab25lOjppZEZvclRpbWVab25lTmFtZShT
dHJpbmdWaWV3IHN0cmluZykKLXsKLSAgICBjb25zdCBhdXRvJiB0aW1lWm9uZXMgPSBpbnRsQXZh
aWxhYmxlVGltZVpvbmVzKCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwg
dGltZVpvbmVzLnNpemUoKTsgKytpbmRleCkgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0FT
Q0lJQ2FzZSh0aW1lWm9uZXNbaW5kZXhdLCBzdHJpbmcpKQotICAgICAgICAgICAgcmV0dXJuIGlu
ZGV4OwotICAgIH0KLSAgICByZXR1cm4gc3RkOjpudWxsb3B0OwotfQotCiAvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1wYXJzZXRlbXBvcmFsdGltZVpv
bmVzdHJpbmcKIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGVtcG9yYWxUaW1l
Wm9uZVN0cmluZyhTdHJpbmdWaWV3KQogewpAQCAtMTEwLDcgKzk5LDcgQEAgSlNPYmplY3QqIFRl
bXBvcmFsVGltZVpvbmU6OmZyb20oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB0aW1lWm9uZUwKICAgICBpZiAodXRjT2Zmc2V0KQogICAgICAgICByZXR1cm4gVGVtcG9yYWxU
aW1lWm9uZTo6Y3JlYXRlRnJvbVVUQ09mZnNldCh2bSwgZ2xvYmFsT2JqZWN0LT50aW1lWm9uZVN0
cnVjdHVyZSgpLCB1dGNPZmZzZXQudmFsdWUoKSk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFRpbWVa
b25lSUQ+IGlkZW50aWZpZXIgPSBpZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7Cisg
ICAgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZGVudGlmaWVyID0gSVNPODYwMTo6aWRGb3JU
aW1lWm9uZU5hbWUodGltZVpvbmVTdHJpbmcpOwogICAgIGlmIChpZGVudGlmaWVyKQogICAgICAg
ICByZXR1cm4gVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbUlEKHZtLCBnbG9iYWxPYmplY3Qt
PnRpbWVab25lU3RydWN0dXJlKCksIGlkZW50aWZpZXIudmFsdWUoKSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaAppbmRleCBiYzI4MTUz
YjdmZDI1YmI3NjVlMjUwNmZkOTZmYTc2YjVlNTEwYWRiLi5lNTc5ZWEzYTYzZjYyMWZkZjQzMjYx
MTMyOTc0OWJmM2M0NzQ2YTZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbFRpbWVab25lLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZS5oCkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQog
CisjaW5jbHVkZSAiSVNPODYwMS5oIgogI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRl
ICJKU09iamVjdC5oIgogI2luY2x1ZGUgPHd0Zi9WYXJpYW50Lmg+CkBAIC00NywxMCArNDgsOSBA
QCBjbGFzcyBUZW1wb3JhbFRpbWVab25lIGZpbmFsIDogcHVibGljIEpTTm9uRmluYWxPYmplY3Qg
ewogCiAgICAgREVDTEFSRV9JTkZPOwogCi0gICAgdXNpbmcgVGltZVpvbmUgPSBWYXJpYW50PFRp
bWVab25lSUQsIGludDY0X3Q+OwotICAgIFRpbWVab25lIHRpbWVab25lKCkgY29uc3QgeyByZXR1
cm4gbV90aW1lWm9uZTsgfQorICAgIHVzaW5nIFRpbWVab25lID0gSVNPODYwMTo6VGltZVpvbmU7
CiAKLSAgICBzdGF0aWMgc3RkOjpvcHRpb25hbDxUaW1lWm9uZUlEPiBpZEZvclRpbWVab25lTmFt
ZShTdHJpbmdWaWV3KTsKKyAgICBUaW1lWm9uZSB0aW1lWm9uZSgpIGNvbnN0IHsgcmV0dXJuIG1f
dGltZVpvbmU7IH0KIAogICAgIHN0YXRpYyBKU09iamVjdCogZnJvbShKU0dsb2JhbE9iamVjdCos
IEpTVmFsdWUpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcAppbmRleCA5OTMzNjVhYjMzMmY4
ZmZhZDg3NTg4MDAwODEwY2QzMGVkZGE2MWQ3Li42ZDIzZThmMDU5ZGM3OWJjZmEyOWQ5YzY1YTA1
ZWVlODNiM2E1Y2MyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAKQEAgLTc0LDYgKzc0LDcg
QEAgdm9pZCBUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3I6OmZpbmlzaENyZWF0aW9uKFZNJiB2
bSwgVGVtcG9yYWxUaW1lWm9uZVByb3RvdHkKIHsKICAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSwgMCwgIlRpbWVab25lIl9zLCBQcm9wZXJ0eUFkZGl0aW9uTW9kZTo6V2l0aG91dFN0cnVjdHVy
ZVRyYW5zaXRpb24pOwogICAgIHB1dERpcmVjdFdpdGhvdXRUcmFuc2l0aW9uKHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5wcm90b3R5cGUsIHRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUsIFByb3BlcnR5
QXR0cmlidXRlOjpEb250RW51bSB8IFByb3BlcnR5QXR0cmlidXRlOjpEb250RGVsZXRlIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OlJlYWRPbmx5KTsKKyAgICB0ZW1wb3JhbFRpbWVab25lUHJvdG90eXBl
LT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3Ry
dWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVuc2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9u
dEVudW0pKTsKIH0KIAogSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFs
VGltZVpvbmUsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxG
cmFtZSkpCkBAIC05Miw3ICs5Myw3IEBAIEpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTihjb25zdHJ1
Y3RUZW1wb3JhbFRpbWVab25lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjCiAgICAgaWYg
KHV0Y09mZnNldCkKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbFRpbWVa
b25lOjpjcmVhdGVGcm9tVVRDT2Zmc2V0KHZtLCBzdHJ1Y3R1cmUsIHV0Y09mZnNldC52YWx1ZSgp
KSk7CiAKLSAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkZW50aWZpZXIgPSBUZW1wb3Jh
bFRpbWVab25lOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7CisgICAgc3RkOjpv
cHRpb25hbDxUaW1lWm9uZUlEPiBpZGVudGlmaWVyID0gSVNPODYwMTo6aWRGb3JUaW1lWm9uZU5h
bWUodGltZVpvbmVTdHJpbmcpOwogICAgIGlmICghaWRlbnRpZmllcikgewogICAgICAgICB0aHJv
d1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG5lZWRzIHRvIGJlIFVU
QyBvZmZzZXQgc3RyaW5nIG9yIFRpbWVab25lIGlkZW50aWZpZXIiX3MpOwogICAgICAgICByZXR1
cm4geyB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3Bw
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCmluZGV4IDAyZjE4OTdiMGYz
OTE4NTYwYjUwNTMxOWQ2ZTQ2MWJkYjVkNzEwZGQuLjE1ZGRiMmFmYWU1MjM3NzdhZTkwNjZiMzFi
MGQ3MTA1NDZiN2Q4NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L1ZNLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAKQEAgLTE2
NCw2ICsxNjQsNyBAQAogI2luY2x1ZGUgIlN5bWJvbE9iamVjdC5oIgogI2luY2x1ZGUgIlRlbXBv
cmFsQ2FsZW5kYXIuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAi
VGVtcG9yYWxQbGFpblRpbWUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVab25lLmgiCiAjaW5j
bHVkZSAiVGVzdFJ1bm5lclV0aWxzLmgiCiAjaW5jbHVkZSAiVGh1bmtHZW5lcmF0b3JzLmgiCkBA
IC0xNTg4LDYgKzE1ODksOCBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coc3ltYm9sU3BhY2UsIGRlc3RydWN0aWJsZUNlbGxIZWFwQ2VsbFR5cAogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHN5bWJvbE9iamVjdFNwYWNlLCBjZWxsSGVhcENl
bGxUeXBlLmdldCgpLCBTeW1ib2xPYmplY3QpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UsIGRlc3RydWN0aWJsZUNl
bGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVGVtcGxhdGVPYmplY3REZXNjcmlwdG9yKQogRFlOQU1J
Q19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsQ2FsZW5kYXJTcGFjZSwg
Y2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxDYWxlbmRhcikKK0RZTkFNSUNfSVNPX1NV
QlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbER1cmF0aW9uU3BhY2UsIGNlbGxIZWFw
Q2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsRHVyYXRpb24pCitEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codGVtcG9yYWxQbGFpblRpbWVTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgVGVtcG9yYWxQbGFpblRpbWUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1codGVtcG9yYWxUaW1lWm9uZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgp
LCBUZW1wb3JhbFRpbWVab25lKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9T
TE9XKHVpbnQ4QXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNVaW50OEFycmF5
KQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHVpbnQ4Q2xhbXBlZEFy
cmF5U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTVWludDhDbGFtcGVkQXJyYXkpCkBA
IC0xNjIyLDcgKzE2MjUsNiBAQCBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coaW50bFJlbGF0aXZlVGltZUZvcm1hdFNwYWNlLCBpbnRsUmVsYXRpdgogRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSwgaW50
bFNlZ21lbnRJdGVyYXRvckhlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21lbnRJdGVyYXRvcikK
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsU2VnbWVudGVyU3Bh
Y2UsIGludGxTZWdtZW50ZXJIZWFwQ2VsbFR5cGUuZ2V0KCksIEludGxTZWdtZW50ZXIpCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coaW50bFNlZ21lbnRzU3BhY2UsIGlu
dGxTZWdtZW50c0hlYXBDZWxsVHlwZS5nZXQoKSwgSW50bFNlZ21lbnRzKQotRFlOQU1JQ19JU09f
U1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhl
YXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxEdXJhdGlvbikKICNpZiBFTkFCTEUoV0VCQVNTRU1C
TFkpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1coanNUb1dhc21JQ0Nh
bGxlZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBKU1RvV2FzbUlDQ2FsbGVlKQogRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9XKHdlYkFzc2VtYmx5Q29kZUJsb2Nr
U3BhY2UsIHdlYkFzc2VtYmx5Q29kZUJsb2NrSGVhcENlbGxUeXBlLmdldCgpLCBKU1dlYkFzc2Vt
Ymx5Q29kZUJsb2NrKSAvLyBIYXNoOjB4OWFkOTk1Y2QKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9W
TS5oCmluZGV4IDFlNzI1Y2UzNzQ4NzNlMDA3ZDFiMDNmNTQ5NTZjNTAyMzA0YzZiMzcuLjdhNThi
Mjc5ZTY3MGE4NDAzZDFmMzk0MTIzNTdkNWU3NzExM2Y1NzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVk0uaApAQCAtMTk1LDYgKzE5NSw3IEBAIGNsYXNzIFVubGlua2VkTW9kdWxlUHJvZ3Jh
bUNvZGVCbG9jazsKIGNsYXNzIFZpcnR1YWxSZWdpc3RlcjsKIGNsYXNzIFZNRW50cnlTY29wZTsK
IGNsYXNzIFRlbXBvcmFsQ2FsZW5kYXI7CitjbGFzcyBUZW1wb3JhbFBsYWluVGltZTsKIGNsYXNz
IFRlbXBvcmFsVGltZVpvbmU7CiBjbGFzcyBUb3BMZXZlbEdsb2JhbE9iamVjdFNjb3BlOwogY2xh
c3MgVHlwZVByb2ZpbGVyOwpAQCAtNTk1LDYgKzU5Niw4IEBAIGNsYXNzIFZNIDogcHVibGljIFRo
cmVhZFNhZmVSZWZDb3VudGVkPFZNPiwgcHVibGljIERvdWJseUxpbmtlZExpc3ROb2RlPFZNPiB7
CiAgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUihzeW1ib2xPYmplY3RTcGFj
ZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBsYXRlT2JqZWN0
RGVzY3JpcHRvclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
dGVtcG9yYWxDYWxlbmRhclNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVIodGVtcG9yYWxEdXJhdGlvblNwYWNlKQorICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RF
RklORV9NRU1CRVIodGVtcG9yYWxQbGFpblRpbWVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJT
UEFDRV9ERUZJTkVfTUVNQkVSKHRlbXBvcmFsVGltZVpvbmVTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4QXJyYXlTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKHVpbnQ4Q2xhbXBlZEFycmF5U3BhY2UpCkBAIC02MjAs
NyArNjIzLDYgQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBw
dWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50SXRlcmF0b3JTcGFjZSkKICAgICBEWU5BTUlDX0lT
T19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50ZXJTcGFjZSkKICAgICBEWU5BTUlD
X0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSKGludGxTZWdtZW50c1NwYWNlKQotICAgIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9yYWxEdXJhdGlvblNwYWNlKQogI2lm
IEVOQUJMRShXRUJBU1NFTUJMWSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSKGpzVG9XYXNtSUNDYWxsZWVTcGFjZSkKICAgICBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJ
TkVfTUVNQkVSKHdlYkFzc2VtYmx5Q29kZUJsb2NrU3BhY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V1RGL3d0Zi90ZXh0L1N0cmluZ1BhcnNpbmdCdWZmZXIuaCBiL1NvdXJjZS9XVEYvd3RmL3RleHQv
U3RyaW5nUGFyc2luZ0J1ZmZlci5oCmluZGV4IGYwYTg0Zjc1N2UzZWZlN2IwYTdkYWNhZWYwNTZm
YmI4YWI5NDI1NDcuLjUyYTliYWRiZTA3M2NjNTYwNDVlNDZiM2U5OWRiMDI3N2FhYjFlMzMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oCisrKyBi
L1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nUGFyc2luZ0J1ZmZlci5oCkBAIC02MSw5ICs2MSw5
IEBAIGNsYXNzIFN0cmluZ1BhcnNpbmdCdWZmZXIgZmluYWwgewogCiAgICAgY29uc3RleHByIHVu
c2lnbmVkIGxlbmd0aFJlbWFpbmluZygpIGNvbnN0IHsgcmV0dXJuIG1fZW5kIC0gbV9wb3NpdGlv
bjsgfQogCi0gICAgU3RyaW5nVmlldyBzdHJpbmdWaWV3T2ZDaGFyYWN0ZXJzUmVtYWluaW5nKCkg
eyByZXR1cm4geyBtX3Bvc2l0aW9uLCBsZW5ndGhSZW1haW5pbmcoKSB9OyB9CisgICAgU3RyaW5n
VmlldyBzdHJpbmdWaWV3T2ZDaGFyYWN0ZXJzUmVtYWluaW5nKCkgY29uc3QgeyByZXR1cm4geyBt
X3Bvc2l0aW9uLCBsZW5ndGhSZW1haW5pbmcoKSB9OyB9CiAKLSAgICBDaGFyYWN0ZXJUeXBlIG9w
ZXJhdG9yW10odW5zaWduZWQgaSkKKyAgICBDaGFyYWN0ZXJUeXBlIG9wZXJhdG9yW10odW5zaWdu
ZWQgaSkgY29uc3QKICAgICB7CiAgICAgICAgIEFTU0VSVChpIDwgbGVuZ3RoUmVtYWluaW5nKCkp
OwogICAgICAgICByZXR1cm4gbV9wb3NpdGlvbltpXTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvQ2hh
bmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggMzIyMzY2YTg2ODM0NTZmMGE0YjFkYTc4
ZjliOTI2MTdlYjAwMWUyNi4uMDM4OWFmM2I1YmMyYTE1YWM3NzJmNGExZmM0MGIyODgyNTllMzEw
MiAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNUZXN0cy9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwyNiBAQAorMjAyMS0wOS0wNiAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBw
bGUuY29tPgorCisgICAgICAgIFtKU0NdIEltcGxlbWVudCBUZW1wb3JhbC5QbGFpblRpbWUKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIyOTg5MgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL3Rl
bXBvcmFsLWNhbGVuZGFyLmpzOgorICAgICAgICAqIHN0cmVzcy90ZW1wb3JhbC1kdXJhdGlvbi5q
czoKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtcGxhaW50aW1lLmpzOiBBZGRlZC4KKyAgICAg
ICAgKHNob3VsZEJlKToKKyAgICAgICAgKHNob3VsZFRocm93KToKKyAgICAgICAgKHNob3VsZEJl
LlN0cmluZy5UZW1wb3JhbC5QbGFpblRpbWUuZnJvbSk6CisgICAgICAgIChsZXQudGltZS5UZW1w
b3JhbC5QbGFpblRpbWUuZnJvbS5zaG91bGRCZSk6CisgICAgICAgIChsZXQudGV4dC5vZi5mYWls
dXJlcy5zaG91bGRUaHJvdyk6CisgICAgICAgIChwcmludCk6CisgICAgICAgIChzaG91bGRCZS5U
ZW1wb3JhbC5QbGFpblRpbWUuZnJvbSk6CisgICAgICAgIChuZXcuVGVtcG9yYWwuUGxhaW5UaW1l
LnZhbHVlT2YpOgorICAgICAgICAoc2hvdWxkQmUuU3RyaW5nLnRpbWUudW50aWwuVGVtcG9yYWwu
UGxhaW5UaW1lLmZyb20pOgorICAgICAgICAqIHN0cmVzcy90ZW1wb3JhbC10aW1lem9uZS5qczoK
KyAgICAgICAgKGxldC50ZXh0Lm9mLmZhaWx1cmVzLnNob3VsZFRocm93KTogRGVsZXRlZC4KKyAg
ICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55YW1sOgorCiAyMDIxLTA5LTAzICBZdXN1a2UgU3V6dWtp
ICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gTWFrZSBFbnVtZXJhdG9yTmV4
dFVwZGF0ZUluZGV4QW5kTW9kZSBjbG9iYmVyaXppbmcgcnVsZSBwcmVjaXNlCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1jYWxlbmRhci5qcyBiL0pTVGVzdHMvc3RyZXNzL3Rl
bXBvcmFsLWNhbGVuZGFyLmpzCmluZGV4IGVmMGFjMTExYTViOGI3M2MzYTAxNzVkYWE3NzkzNmMw
ODlhZmNmNDQuLjM1MDk3MWNlM2NhMGNkMTM5NTE5Njk4ODRiZDQ1YjE2YjE5Y2IzOWQgMTAwNjQ0
Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzCisrKyBiL0pTVGVzdHMv
c3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzCkBAIC0xOCw2ICsxOCwxMyBAQCBmdW5jdGlvbiBz
aG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKICAgICAgICAgc2hvdWxkQmUo
U3RyaW5nKGVycm9yKSwgbWVzc2FnZSk7CiB9CiAKK3Nob3VsZEJlKFRlbXBvcmFsLkNhbGVuZGFy
IGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworc2hvdWxkQmUoVGVtcG9yYWwuQ2FsZW5kYXIu
bGVuZ3RoLCAwKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVt
cG9yYWwuQ2FsZW5kYXIsICdwcm90b3R5cGUnKS53cml0YWJsZSwgZmFsc2UpOworc2hvdWxkQmUo
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5DYWxlbmRhciwgJ3Byb3Rv
dHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoVGVtcG9yYWwuQ2FsZW5kYXIsICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUs
IGZhbHNlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLkNhbGVuZGFyLnByb3RvdHlwZS5jb25zdHJ1Y3Rv
ciwgVGVtcG9yYWwuQ2FsZW5kYXIpOworCiB7CiAgICAgbGV0IGNhbGVuZGFyID0gbmV3IFRlbXBv
cmFsLkNhbGVuZGFyKCJpc284NjAxIik7CiAgICAgc2hvdWxkQmUoY2FsZW5kYXIuaWQsIGBpc284
NjAxYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1kdXJhdGlvbi5qcyBi
L0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWR1cmF0aW9uLmpzCmluZGV4IGY2NTIyNzBhMDgyOGVm
NGY5OWY5NGI0YzM2NWJiN2M4ZWM4MTM4OTcuLmYyNzk3ODFmYWM2NWM3OWQ5MGE3N2RlMjQyYWMx
YzBmY2IwMDk2MmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWR1cmF0aW9u
LmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWR1cmF0aW9uLmpzCkBAIC0yNyw2ICsy
Nyw3IEBAIGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSkgewogc2hvdWxkQmUo
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5EdXJhdGlvbiwgJ3Byb3Rv
dHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKIHNob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0
eURlc2NyaXB0b3IoVGVtcG9yYWwuRHVyYXRpb24sICdwcm90b3R5cGUnKS5jb25maWd1cmFibGUs
IGZhbHNlKTsKIHNob3VsZFRocm93KCgpID0+IFRlbXBvcmFsLkR1cmF0aW9uKCksIFR5cGVFcnJv
cik7CitzaG91bGRCZShUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuY29uc3RydWN0b3IsIFRl
bXBvcmFsLkR1cmF0aW9uKTsKIAogc2hvdWxkQmUobmV3IFRlbXBvcmFsLkR1cmF0aW9uKCkgaW5z
dGFuY2VvZiBUZW1wb3JhbC5EdXJhdGlvbiwgdHJ1ZSk7CiB7CmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L3N0cmVzcy90ZW1wb3JhbC1wbGFpbnRpbWUuanMgYi9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1w
bGFpbnRpbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDc5OGRhODRlNjMwZWVhMDU0NzkzOWU1MGQ5ZTlmNDY4
Y2IxNjgzMgotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXBsYWlu
dGltZS5qcwpAQCAtMCwwICsxLDM1NyBAQAorLy9AIHJlcXVpcmVPcHRpb25zKCItLXVzZVRlbXBv
cmFsPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYg
KGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgZXhwZWN0ZWQg
JHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rpb24gc2hvdWxkVGhy
b3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9yOworICAgIHRyeSB7
CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAgIGVycm9yID0gZTsK
KyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlwZSkpCisgICAgICAg
IHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0hYCk7CisgICAgaWYg
KG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVycm9yKSwg
bWVzc2FnZSk7Cit9CisKK3Nob3VsZEJlKFRlbXBvcmFsLlBsYWluVGltZSBpbnN0YW5jZW9mIEZ1
bmN0aW9uLCB0cnVlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLlBsYWluVGltZS5sZW5ndGgsIDApOwor
c2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5QbGFpblRp
bWUsICdwcm90b3R5cGUnKS53cml0YWJsZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5QbGFpblRpbWUsICdwcm90b3R5cGUnKS5lbnVt
ZXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9y
KFRlbXBvcmFsLlBsYWluVGltZSwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJsZSwgZmFsc2UpOwor
c2hvdWxkQmUoVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgVGVtcG9y
YWwuUGxhaW5UaW1lKTsKKworeworICAgIGxldCB0aW1lID0gbmV3IFRlbXBvcmFsLlBsYWluVGlt
ZSgwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAw
MDowMTowMi4wMDMwMDQwMDVgKTsKKyAgICBzaG91bGRCZSh0aW1lLmhvdXIsIDApOworICAgIHNo
b3VsZEJlKHRpbWUubWludXRlLCAxKTsKKyAgICBzaG91bGRCZSh0aW1lLnNlY29uZCwgMik7Cisg
ICAgc2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwgMyk7CisgICAgc2hvdWxkQmUodGltZS5taWNy
b3NlY29uZCwgNCk7CisgICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCA1KTsKK30KKworewor
ICAgIGxldCB0aW1lID0gbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCAwKTsK
KyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAwMDowMDowMGApOworICAgIHNob3VsZEJlKHRp
bWUuaG91ciwgMCk7CisgICAgc2hvdWxkQmUodGltZS5taW51dGUsIDApOworICAgIHNob3VsZEJl
KHRpbWUuc2Vjb25kLCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCAwKTsKKyAg
ICBzaG91bGRCZSh0aW1lLm1pY3Jvc2Vjb25kLCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLm5hbm9z
ZWNvbmQsIDApOworfQorCit7CisgICAgbGV0IHRpbWUgPSBuZXcgVGVtcG9yYWwuUGxhaW5UaW1l
KDIzLCA1OSwgNTksIDk5OSwgOTk5LCA5OTkpOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lKSwg
YDIzOjU5OjU5Ljk5OTk5OTk5OWApOworICAgIHNob3VsZEJlKHRpbWUuaG91ciwgMjMpOworICAg
IHNob3VsZEJlKHRpbWUubWludXRlLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5zZWNvbmQsIDU5
KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJlKHRp
bWUubWljcm9zZWNvbmQsIDk5OSk7CisgICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCA5OTkp
OworfQorCit7CisgICAgbGV0IHRpbWUgPSBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDIzLCA1OSwg
NTksIDk5OSwgOTk5LCA5OTkpOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lKSwgYDIzOjU5OjU5
Ljk5OTk5OTk5OWApOworICAgIHNob3VsZEJlKHRpbWUuaG91ciwgMjMpOworICAgIHNob3VsZEJl
KHRpbWUubWludXRlLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5zZWNvbmQsIDU5KTsKKyAgICBz
aG91bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJlKHRpbWUubWljcm9z
ZWNvbmQsIDk5OSk7CisgICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCA5OTkpOworfQorCit7
CisgICAgLy8gV2UgYWNjZXB0IDYwIHNlY29uZHMsIGJ1dCBpbnRlcnByZXQgaXQgYXMgNTkgc2Vj
b25kcy4KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1w
b3JhbC1wYXJzZWlzb2RhdGV0aW1lIHN0ZXAgMTMKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBs
YWluVGltZS5mcm9tKCIyMzo1OTo2MC45OTk5OTk5OTkiKTsKKyAgICBzaG91bGRCZShTdHJpbmco
dGltZSksIGAyMzo1OTo1OS45OTk5OTk5OTlgKTsKKyAgICBzaG91bGRCZSh0aW1lLmhvdXIsIDIz
KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgNTkpOworICAgIHNob3VsZEJlKHRpbWUuc2Vj
b25kLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwgOTk5KTsKKyAgICBzaG91
bGRCZSh0aW1lLm1pY3Jvc2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJlKHRpbWUubmFub3NlY29u
ZCwgOTk5KTsKK30KKworeworICAgIC8vIFdlIGFjY2VwdCA2MCBzZWNvbmRzLCBidXQgaW50ZXJw
cmV0IGl0IGFzIDU5IHNlY29uZHMuCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRl
bXBvcmFsLyNzZWMtdGVtcG9yYWwtcGFyc2Vpc29kYXRldGltZSBzdGVwIDEzCisgICAgbGV0IHRp
bWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgiMjAyMS0wOS0wNFQyMzoxNDoyNi4xMDAyMDAz
MDAiKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAyMzoxNDoyNi4xMDAyMDAzYCk7Cisg
ICAgc2hvdWxkQmUodGltZS5ob3VyLCAyMyk7CisgICAgc2hvdWxkQmUodGltZS5taW51dGUsIDE0
KTsKKyAgICBzaG91bGRCZSh0aW1lLnNlY29uZCwgMjYpOworICAgIHNob3VsZEJlKHRpbWUubWls
bGlzZWNvbmQsIDEwMCk7CisgICAgc2hvdWxkQmUodGltZS5taWNyb3NlY29uZCwgMjAwKTsKKyAg
ICBzaG91bGRCZSh0aW1lLm5hbm9zZWNvbmQsIDMwMCk7Cit9CisKK3Nob3VsZEJlKFN0cmluZyhU
ZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDMnKSksIGAwMzowMDowMGApOworc2hvdWxkQmUoU3Ry
aW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMzE0JykpLCBgMDM6MTQ6MDBgKTsKK3Nob3Vs
ZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDMxNDE1JykpLCBgMDM6MTQ6MTVg
KTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDM6MTQnKSksIGAw
MzoxNDowMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMzox
NDoxNScpKSwgYDAzOjE0OjE1YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1l
LmZyb20oJzAzOjI0OjMwJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3Jh
bC5QbGFpblRpbWUuZnJvbSgnMjAyMC0wMScpKSwgYDIwOjIwOjAwYCk7IC8vIC0wMSBVVEMgb2Zm
c2V0CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAxLTAxJykpLCBg
MDE6MDA6MDBgKTsgLy8gLTAxIFVUQyBvZmZzZXQKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5Q
bGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCcpKSwgYDAzOjI0OjMwYCk7CitzaG91
bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDd0MDM6MjQ6MzAn
KSksIGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9t
KCcxOTk1LTEyLTA3IDAzOjI0OjMwJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhU
ZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMFonKSksIGAwMzoyNDoz
MGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3
VDAzOjI0OjMwKzIwOjIwOjU5JykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1w
b3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMC0yMDoyMDo1OScpKSwgYDAz
OjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUt
MTItMDdUMDM6MjQ6MzBcdTIyMTIyMDoyMDo1OScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShT
dHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMTAnKSks
IGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcx
OTk1LTEyLTA3VDAzOjI0OjMwKzEwMjAnKSksIGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5n
KFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzEwMjAzMCcpKSwg
YDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5
OTUtMTItMDdUMDM6MjQ6MzArMTA6MjA6MzAuMDUnKSksIGAwMzoyNDozMGApOworc2hvdWxkQmUo
U3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzEwOjIw
OjMwLjEyMzQ1Njc4OScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwu
UGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbRXVyb3BlL0JydXNzZWxz
XScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZy
b20oJzE5OTUtMTItMDcgMDM6MjQ6MzArMDE6MDBbRXVyb3BlL0JydXNzZWxzXScpKSwgYDAzOjI0
OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTIt
MDdUMDM6MjQ6MzArMDE6MDBbVU5LTk9XTl0nKSksIGAwMzoyNDozMGApOyAvLyBUaW1lWm9uZSBl
cnJvciBzaG91bGQgYmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRp
bWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFsuaGV5XScpKSwgYDAzOjI0OjMwYCk7
IC8vIFRpbWVab25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRl
bXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW19dJykpLCBg
MDM6MjQ6MzBgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRC
ZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6
MDBbXy1dJykpLCBgMDM6MjQ6MzBgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9y
ZWQuCitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdU
MDM6MjQ6MzArMDE6MDBbXy9fXScpKSwgYDAzOjI0OjMwYCk7IC8vIFRpbWVab25lIGVycm9yIHNo
b3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9t
KCcxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW18tLi9fLS5dJykpLCBgMDM6MjQ6MzBgKTsgLy8g
VGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRCZShTdHJpbmcoVGVtcG9y
YWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbXy4uL18uLl0nKSks
IGAwMzoyNDozMGApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQgYmUgaWdub3JlZC4KK3Nob3Vs
ZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCsw
MTowMFtfLi9fLl0nKSksIGAwMzoyNDozMGApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQgYmUg
aWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0x
Mi0wN1QwMzoyNDozMCswMTowMFtFdGMvR01UKzIwXScpKSwgYDAzOjI0OjMwYCk7IC8vIFRpbWVa
b25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBs
YWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW0V0Yy9HTVQtMjBdJykpLCBg
MDM6MjQ6MzBgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRC
ZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDcgMDM6MjQ6MzArMDE6
MDBbKzAxXScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5U
aW1lLmZyb20oJzE5OTUtMTItMDcgMDM6MjQ6MzArMDE6MDBbKzAxOjAwXScpKSwgYDAzOjI0OjMw
YCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDcg
MDM6MjQ6MzArMDE6MDBbKzAxOjAwOjAwXScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJp
bmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDcgMDM6MjQ6MzArMDE6MDBbKzAx
OjAwOjAwLjEyM10nKSksIGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBs
YWluVGltZS5mcm9tKCcxOTk1LTEyLTA3IDAzOjI0OjMwKzAxOjAwWyswMTowMDowMC4xMjM0NV0n
KSksIGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9t
KCcxOTk1LTEyLTA3IDAzOjI0OjMwKzAxOjAwWyswMTowMDowMC4xMjM0NTY3OF0nKSksIGAwMzoy
NDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEy
LTA3IDAzOjI0OjMwKzAxOjAwWyswMTowMDowMC4xMjM0NTY3ODldJykpLCBgMDM6MjQ6MzBgKTsK
K3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wNyAwMzoy
NDozMCswMTowMFstMDE6MDBdJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1w
b3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wNyAwMzoyNDozMCswMTowMFtcdTIyMTIwMTow
MF0nKSksIGAwMzoyNDozMGApOworeworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1l
LmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbRXVyb3BlL0JydXNzZWxzXScpCisgICAg
c2hvdWxkQmUodGltZSA9PT0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20odGltZSksIGZhbHNlKTsK
K30KK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsKKyAgICAgIGhv
dXI6IDE5LAorICAgICAgbWludXRlOiAzOSwKKyAgICAgIHNlY29uZDogOSwKKyAgICAgIG1pbGxp
c2Vjb25kOiA2OCwKKyAgICAgIG1pY3Jvc2Vjb25kOiAzNDYsCisgICAgICBuYW5vc2Vjb25kOiAy
MDUKKyAgICB9KTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAxOTozOTowOS4wNjgzNDYy
MDVgKTsKKworICAgIC8vIFRoaXMgaXMgc3BlYyBidWcuIEN1cnJlbnRseSB0aGlzIHRocm93cyBh
biBlcnJvci4gQnV0IHBvc3NpYmx5IHRoaXMgc2hvdWxkIG5vdCB0aHJvdyBhbiBlcnJvci4KKyAg
ICAvLyBUcmFja2VkIGluIGh0dHBzOi8vZ2l0aHViLmNvbS90YzM5L3Byb3Bvc2FsLXRlbXBvcmFs
L2lzc3Vlcy8xODAzLgorICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgVGVtcG9yYWwu
UGxhaW5UaW1lLmZyb20oeyBob3VyOiAxOSwgbWludXRlOiAzOSwgc2Vjb25kOiA5IH0pOworICAg
IH0sIFR5cGVFcnJvcik7Cit9Cit7CisgICAgLy8gRGlmZmVyZW50IG92ZXJmbG93IG1vZGVzCisg
ICAgc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsgaG91cjogMTUsIG1p
bnV0ZTogNjAsIHNlY29uZDogMCwgbWlsbGlzZWNvbmQ6IDAsIG1pY3Jvc2Vjb25kOiAwLCBuYW5v
c2Vjb25kOiAwIH0sIHsgb3ZlcmZsb3c6ICdjb25zdHJhaW4nIH0pKSwgYDE1OjU5OjAwYCk7Cisg
ICAgc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsgaG91cjogMTUsIG1p
bnV0ZTogLTEsIHNlY29uZDogMCwgbWlsbGlzZWNvbmQ6IDAsIG1pY3Jvc2Vjb25kOiAwLCBuYW5v
c2Vjb25kOiAwIH0sIHsgb3ZlcmZsb3c6ICdjb25zdHJhaW4nIH0pKSwgYDE1OjAwOjAwYCk7Cit9
CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oeyBob3Vy
OiAxNSwgbWludXRlOiA2MCwgc2Vjb25kOiAwLCBtaWxsaXNlY29uZDogMCwgbWljcm9zZWNvbmQ6
IDAsIG5hbm9zZWNvbmQ6IDAgfSwgeyBvdmVyZmxvdzogJ3JlamVjdCcgfSk7Cit9LCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsKKyAgICBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh7
IGhvdXI6IDE1LCBtaW51dGU6IC0xLCBzZWNvbmQ6IDAsIG1pbGxpc2Vjb25kOiAwLCBtaWNyb3Nl
Y29uZDogMCwgbmFub3NlY29uZDogMCB9LCB7IG92ZXJmbG93OiAncmVqZWN0JyB9KTsKK30sIFJh
bmdlRXJyb3IpOworCitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUo
LTEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBs
YWluVGltZSgyNSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVt
cG9yYWwuUGxhaW5UaW1lKDI0KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7
IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMzApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93
KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZShJbmZpbml0eSk7IH0sIFJhbmdlRXJyb3Ip
Oworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKC1JbmZpbml0eSk7
IH0sIFJhbmdlRXJyb3IpOworCitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFp
blRpbWUoMCwgLTEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRl
bXBvcmFsLlBsYWluVGltZSgwLCA2MCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDYxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgNzcpOyB9LCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAxMDAp
OyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgwLCBJbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBu
ZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIC1JbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworCitz
aG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgLTEpOyB9LCBS
YW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgw
LCAwLCA2MCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9y
YWwuUGxhaW5UaW1lKDAsIDAsIDYxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgNzcpOyB9LCBSYW5nZUVycm9yKTsKK3No
b3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAxMDApOyB9LCBS
YW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgw
LCAwLCBJbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcg
VGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIC1JbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworCitz
aG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgLTEpOyB9
LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGlt
ZSgwLCAwLCAwLCAxMDAwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5l
dyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMTAwMSk7IH0sIFJhbmdlRXJyb3IpOworc2hv
dWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDUwMDAwKTsg
fSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRp
bWUoMCwgMCwgMCwgOTk5OTk5OTk5OSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkg
PT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIEluZmluaXR5KTsgfSwgUmFuZ2VF
cnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwg
MCwgLUluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3
IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAtMSk7IH0sIFJhbmdlRXJyb3IpOworc2hv
dWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDEwMDAp
OyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgwLCAwLCAwLCAwLCAxMDAxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9
PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgNTAwMDApOyB9LCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAw
LCAwLCA5OTk5OTk5OTk5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5l
dyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgSW5maW5pdHkpOyB9LCBSYW5nZUVycm9y
KTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAw
LCAtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcg
VGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDAsIC0xKTsgfSwgUmFuZ2VFcnJvcik7Citz
aG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwg
MTAwMCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwu
UGxhaW5UaW1lKDAsIDAsIDAsIDAsIDAsIDEwMDEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRo
cm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCA1MDAwMCk7
IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5U
aW1lKDAsIDAsIDAsIDAsIDAsIDk5OTk5OTk5OTkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRo
cm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAwLCBJbmZpbml0
eSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxh
aW5UaW1lKDAsIDAsIDAsIDAsIDAsIC1JbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworCitsZXQg
ZmFpbHVyZXMgPSBbCisgICAgIiIsCisgICAgIjIwMjAtMDEtMDEiLAorICAgICIyMzo1OTo2MS45
OTk5OTk5OTkiLAorICAgICIxOTk1LTEyLTA3VDAzOjI0OjMwKzIwOjIwOjYwIiwKKyAgICAiMTk5
NS0xMi0wN1QwMzoyNDozMCsyMDoyMDUwIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCs6IiwK
KyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCsyOjUwIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDoz
MCswMTowMFsvXSIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbLy8vXSIsCisgICAg
IjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbSGV5L0hlbGxvIiwKKyAgICAiMTk5NS0xMi0wN1Qw
MzoyNDozMCswMTowMFtdIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtIZXkvXSIs
CisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbLi5dIiwKKyAgICAiMTk5NS0xMi0wN1Qw
MzoyNDozMCswMTowMFsuXSIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbLi8uXSIs
CisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbLi4vLi5dIiwKKyAgICAiMTk5NS0xMi0w
N1QwMzoyNDozMCswMTowMFstSGV5L0hlbGxvXSIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzAr
MDE6MDBbLV0iLAorICAgICIxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwWy0vX10iLAorICAgICIx
OTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW18vLV0iLAorICAgICIxOTk1LTEyLTA3VDAzOjI0OjMw
KzAxOjAwW0NvY29hQ2FwcHVjY2lub01hdGNoYV0iLAorICAgICIxOTk1LTEyLTA3VDAzOjI0OjMw
KzAxOjAwW0V0Yy9HTVQrNTBdIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtFdGMv
R01UKzBdIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtFdGMvR01UMF0iLAorICAg
ICIxOTk1LTEyLTA3VDAzOjI0OjMwKzEwOjIwOjMwLjAxMjM0NTY3ODkiLAorICAgICIxOTk1LTEy
LTA3IDAzOjI0OjMwKzAxOjAwW0V0Yy9HTVRcdTIyMTIwMV0iLAorICAgICIxOTk1LTEyLTA3IDAz
OjI0OjMwKzAxOjAwWyswMjowMDowMC4wMTIzNDU2Nzg5XSIsCisgICAgIjE5OTUtMTItMDcgMDM6
MjQ6MzArMDE6MDBbMDI6MDA6MDAuMTIzNDU2Nzg5XSIsCisgICAgIjE5OTUtMTItMDcgMDM6MjQ6
MzArMDE6MDBbMDI6MDAwMC4xMjM0NTY3ODldIiwKKyAgICAiMTk5NS0xMi0wNyAwMzoyNDozMCsw
MTowMFswMjAwOjAwLjEyMzQ1Njc4OV0iLAorICAgICIxOTk1LTEyLTA3IDAzOjI0OjMwKzAxOjAw
WzAyOjAwOjYwLjEyMzQ1Njc4OV0iLAorXTsKKworZm9yIChsZXQgdGV4dCBvZiBmYWlsdXJlcykg
eworICAgIHNob3VsZFRocm93KCgpID0+IHsKKyAgICAgICAgcHJpbnQoU3RyaW5nKFRlbXBvcmFs
LlBsYWluVGltZS5mcm9tKHRleHQpKSk7CisgICAgfSwgUmFuZ2VFcnJvcik7Cit9CisKK3sKKyAg
ICBsZXQgb25lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAzOjI0Jyk7CisgICAgbGV0IHR3
byA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMToyNCcpOworICAgIGxldCB0aHJlZSA9IFRl
bXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMToyNDowNScpOworICAgIGxldCBzb3J0ZWQgPSBbb25l
LCB0d28sIHRocmVlXS5zb3J0KFRlbXBvcmFsLlBsYWluVGltZS5jb21wYXJlKTsKKyAgICBzaG91
bGRCZShzb3J0ZWQuam9pbignICcpLCBgMDE6MjQ6MDAgMDE6MjQ6MDUgMDM6MjQ6MDBgKTsKK30K
Kworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCIyMDozNCIpLmNhbGVu
ZGFyKSwgYGlzbzg2MDFgKTsKK3Nob3VsZEJlKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCIyMDoz
NCIpLmNhbGVuZGFyIGluc3RhbmNlb2YgVGVtcG9yYWwuQ2FsZW5kYXIsIHRydWUpOworeworICAg
IGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oIjIwOjM0Iik7CisgICAgc2hvdWxk
QmUodGltZS5jYWxlbmRhciwgdGltZS5jYWxlbmRhcik7Cit9CisKK3sKKyAgICBsZXQgdGltZSA9
IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYyMDUnKTsKKyAgICBzaG91
bGRCZShTdHJpbmcodGltZS5yb3VuZCh7IHNtYWxsZXN0VW5pdDogJ2hvdXInIH0pKSwgYDIwOjAw
OjAwYCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUucm91bmQoeyByb3VuZGluZ0luY3JlbWVu
dDogMzAsIHNtYWxsZXN0VW5pdDogJ21pbnV0ZScgfSkpLCBgMTk6MzA6MDBgKTsKKyAgICBzaG91
bGRCZShTdHJpbmcodGltZS5yb3VuZCh7IHJvdW5kaW5nSW5jcmVtZW50OiAzMCwgc21hbGxlc3RV
bml0OiAnbWludXRlJywgcm91bmRpbmdNb2RlOiAnY2VpbCcgfSkpLCBgMjA6MDA6MDBgKTsKK30K
K3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgz
NDYyMDUnKTsKKyAgICBsZXQgb3RoZXIgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMjA6MTM6
MjAuOTcxMzk4MDk5Jyk7CisgICAgc2hvdWxkQmUodGltZS5lcXVhbHMob3RoZXIpLCBmYWxzZSk7
CisgICAgc2hvdWxkQmUodGltZS5lcXVhbHModGltZSksIHRydWUpOworfQoreworICAgIGxldCB0
aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OjM5OjA5LjA2ODM0NjIwNScpOworICAg
IHNob3VsZEJlKHRpbWUudG9TdHJpbmcoKSwgYDE5OjM5OjA5LjA2ODM0NjIwNWApOworCisgICAg
c2hvdWxkQmUodGltZS50b1N0cmluZyh7IHNtYWxsZXN0VW5pdDogJ21pbnV0ZScgfSksIGAxOToz
OWApOworICAgIHNob3VsZEJlKHRpbWUudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRz
OiAwIH0pLCBgMTk6Mzk6MDlgKTsKKyAgICBzaG91bGRCZSh0aW1lLnRvU3RyaW5nKHsgZnJhY3Rp
b25hbFNlY29uZERpZ2l0czogNCB9KSwgYDE5OjM5OjA5LjA2ODNgKTsKKyAgICBzaG91bGRCZSh0
aW1lLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogNSwgcm91bmRpbmdNb2RlOiAn
aGFsZkV4cGFuZCcgfSksIGAxOTozOTowOS4wNjgzNWApOworICAgIHNob3VsZEJlKFRlbXBvcmFs
LlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wMDAwMDAyMDUnKS50b1N0cmluZyh7IGZyYWN0aW9u
YWxTZWNvbmREaWdpdHM6IDQgfSksIGAxOTozOTowOS4wMDAwYCk7Cit9Cit7CisgICAgY29uc3Qg
d29ya0JyZWFrID0geworICAgICAgdHlwZTogJ21hbmRhdG9yeScsCisgICAgICBuYW1lOiAnTHVu
Y2gnLAorICAgICAgc3RhcnRUaW1lOiBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDEyKSwKKyAgICAg
IGVuZFRpbWU6IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMTMpCisgICAgfTsKKyAgICBjb25zdCBz
dHIgPSBKU09OLnN0cmluZ2lmeSh3b3JrQnJlYWspOworICAgIHNob3VsZEJlKHN0ciwgYHsidHlw
ZSI6Im1hbmRhdG9yeSIsIm5hbWUiOiJMdW5jaCIsInN0YXJ0VGltZSI6IjEyOjAwOjAwIiwiZW5k
VGltZSI6IjEzOjAwOjAwIn1gKTsKKyAgICBmdW5jdGlvbiByZXZpdmVyKGtleSwgdmFsdWUpIHsK
KyAgICAgIGlmIChrZXkuZW5kc1dpdGgoJ1RpbWUnKSkgcmV0dXJuIFRlbXBvcmFsLlBsYWluVGlt
ZS5mcm9tKHZhbHVlKTsKKyAgICAgIHJldHVybiB2YWx1ZTsKKyAgICB9CisgICAgbGV0IG9iamVj
dCA9IEpTT04ucGFyc2Uoc3RyLCByZXZpdmVyKTsKKyAgICBzaG91bGRCZShvYmplY3Quc3RhcnRU
aW1lIGluc3RhbmNlb2YgVGVtcG9yYWwuUGxhaW5UaW1lLCB0cnVlKTsKKyAgICBzaG91bGRCZShT
dHJpbmcob2JqZWN0LnN0YXJ0VGltZSksIGAxMjowMDowMGApOworICAgIHNob3VsZEJlKG9iamVj
dC5lbmRUaW1lIGluc3RhbmNlb2YgVGVtcG9yYWwuUGxhaW5UaW1lLCB0cnVlKTsKKyAgICBzaG91
bGRCZShTdHJpbmcob2JqZWN0LmVuZFRpbWUpLCBgMTM6MDA6MDBgKTsKK30KK3Nob3VsZFRocm93
KCgpID0+IHsKKyAgICBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDEyKS52YWx1ZU9mKCk7Cit9LCBU
eXBlRXJyb3IpOworeworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5
OjM5OjA5LjA2ODM0NjIwNScpOworICAgIHNob3VsZEJlKEpTT04uc3RyaW5naWZ5KHRpbWUuZ2V0
SVNPRmllbGRzKCkpLCBgeyJjYWxlbmRhciI6Imlzbzg2MDEiLCJpc29Ib3VyIjoxOSwiaXNvTWlj
cm9zZWNvbmQiOjM0NiwiaXNvTWlsbGlzZWNvbmQiOjY4LCJpc29NaW51dGUiOjM5LCJpc29OYW5v
c2Vjb25kIjoyMDUsImlzb1NlY29uZCI6OX1gKTsKK30KK3sKKyAgICBsZXQgbWF4ID0gMSAqKiA1
MzsKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgz
NDYyMDUnKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZS5hZGQoeyBtaW51dGVzOiA1LCBuYW5v
c2Vjb25kczogODAwIH0pKSwgYDE5OjQ0OjA5LjA2ODM0NzAwNWApOworICAgIHRpbWUgPSBUZW1w
b3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgc2hvdWxkQmUo
U3RyaW5nKHRpbWUuYWRkKHsgaG91cnM6IG1heCwgbWludXRlczogbWF4LCBzZWNvbmRzOiBtYXgs
IG1pbGxpc2Vjb25kczogbWF4LCBtaWNyb3NlY29uZHM6IG1heCwgbmFub3NlY29uZHM6IG1heCB9
KSksIGAyMDo0MDoxMC4wNjkzNDcyMDZgKTsKK30KK3sKKyAgICBsZXQgbWF4ID0gMSAqKiA1MzsK
KyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYy
MDUnKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZS5zdWJ0cmFjdCh7IG1pbnV0ZXM6IDUsIG5h
bm9zZWNvbmRzOiA4MDAgfSkpLCBgMTk6MzQ6MDkuMDY4MzQ1NDA1YCk7CisgICAgdGltZSA9IFRl
bXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYyMDUnKTsKKyAgICBzaG91bGRC
ZShTdHJpbmcodGltZS5zdWJ0cmFjdCh7IGhvdXJzOiBtYXgsIG1pbnV0ZXM6IG1heCwgc2Vjb25k
czogbWF4LCBtaWxsaXNlY29uZHM6IG1heCwgbWljcm9zZWNvbmRzOiBtYXgsIG5hbm9zZWNvbmRz
OiBtYXggfSkpLCBgMTg6Mzg6MDguMDY3MzQ1MjA0YCk7Cit9Cit7CisgICAgbGV0IHRpbWUgPSBU
ZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgc2hvdWxk
QmUoU3RyaW5nKHRpbWUuYWRkKHsgaG91cnM6IDEgfSkud2l0aCh7CisgICAgICBtaW51dGU6IDAs
CisgICAgICBzZWNvbmQ6IDAsCisgICAgICBtaWxsaXNlY29uZDogMCwKKyAgICAgIG1pY3Jvc2Vj
b25kOiAwLAorICAgICAgbmFub3NlY29uZDogMAorICAgIH0pKSwgYDIwOjAwOjAwYCk7Cit9Cit7
CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMjA6MTM6MjAuOTcxMzk4
MDk5Jyk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUudW50aWwoVGVtcG9yYWwuUGxhaW5UaW1l
LmZyb20oJzIyOjM5OjA5LjA2ODM0NjIwNScpKSksIGBQVDJIMjVNNDguMDk2OTQ4MTA2U2ApOwor
ICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnVudGlsKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcx
OTozOTowOS4wNjgzNDYyMDUnKSkpLCBgLVBUMzRNMTEuOTAzMDUxODk0U2ApOworICAgIHNob3Vs
ZEJlKFN0cmluZyh0aW1lLnVudGlsKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcyMjozOTowOS4w
NjgzNDYyMDUnKSwgeyBzbWFsbGVzdFVuaXQ6ICdzZWNvbmQnIH0pKSwgYFBUMkgyNU00OFNgKTsK
K30KK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcyMDoxMzoyMC45
NzEzOTgwOTknKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZS5zaW5jZShUZW1wb3JhbC5QbGFp
blRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1JykpKSwgYFBUMzRNMTEuOTAzMDUxODk0U2Ap
OworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnNpbmNlKFRlbXBvcmFsLlBsYWluVGltZS5mcm9t
KCcyMjozOTowOS4wNjgzNDYyMDUnKSkpLCBgLVBUMkgyNU00OC4wOTY5NDgxMDZTYCk7Cit9CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC10aW1lem9uZS5qcyBiL0pTVGVzdHMv
c3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzCmluZGV4IGQ4OGY4Yzg4N2U4NDRhZTJmMDMwOWVh
ZjE1MWVjYTIyMDE0NDE5NTYuLmY0ODE1OTY2MmZiNzlmOWE2MWM5MTdiOTJkYjAyZjEwODcyMTNh
Y2UgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzCisrKyBi
L0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzCkBAIC0xOCw2ICsxOCwxMyBAQCBm
dW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKICAgICAgICAg
c2hvdWxkQmUoU3RyaW5nKGVycm9yKSwgbWVzc2FnZSk7CiB9CiAKK3Nob3VsZEJlKFRlbXBvcmFs
LlRpbWVab25lIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworc2hvdWxkQmUoVGVtcG9yYWwu
VGltZVpvbmUubGVuZ3RoLCAwKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoVGVtcG9yYWwuVGltZVpvbmUsICdwcm90b3R5cGUnKS53cml0YWJsZSwgZmFsc2UpOwor
c2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5UaW1lWm9u
ZSwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuVGltZVpvbmUsICdwcm90b3R5cGUnKS5jb25m
aWd1cmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLlRpbWVab25lLnByb3RvdHlwZS5j
b25zdHJ1Y3RvciwgVGVtcG9yYWwuVGltZVpvbmUpOworCiBsZXQgZmFpbHVyZXMgPSBbCiAgICAg
IiIsCiAgICAgIisiLApAQCAtMjYsOSArMzMsMjIgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVu
YywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CiAgICAgIisyNCIsCiAgICAgIisyMzoiLAogICAgICIy
MDowMCIsCisgICAgIisyOjAwIiwKKyAgICAiKzMyOjAwIiwKKyAgICAiKzIzOjAwMSIsCisgICAg
IisyMzo5OSIsCisgICAgIisyMzo5OTAiLAorICAgICIrMjM6NTk6OTkiLAorICAgICIrMjM6NTk6
MDAxIiwKKyAgICAiKzIzOjU5Ojk5OSIsCisgICAgIisyMzo1OTo1OS4iLAorICAgICIrMjM6NTk6
NTksIiwKKyAgICAiKzIzOjU5OjU5YSIsCisgICAgIisyMzo1OTo1OS5hIiwKICAgICAiKzIwOjAw
MDAiLAogICAgICIrMjA6NjAiLAogICAgICIrMjA6NTk6IiwKKyAgICAiKzIwOjU5OjYwIiwKICAg
ICAiMjA1OTowMCIsCiAgICAgIisyMDU5OjAwIiwKICAgICAiKzIwOjU5MDAiLApAQCAtNTIsNiAr
NzIsMTAgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7
CiBzaG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTAwMDAiKS5p
ZCwgYC0wMTo1OTozMC4xMjM0NWApOwogc2hvdWxkQmUobmV3IFRlbXBvcmFsLlRpbWVab25lKCIt
MDE6NTk6MzAuMDAwMDAwMDAxIikuaWQsIGAtMDE6NTk6MzAuMDAwMDAwMDAxYCk7CiBzaG91bGRC
ZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTY3ODkiKS5pZCwgYC0wMTo1
OTozMC4xMjM0NTY3ODlgKTsKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5
OjMwLjAwMTAwMjAwMyIpLmlkLCBgLTAxOjU5OjMwLjAwMTAwMjAwM2ApOworc2hvdWxkQmUobmV3
IFRlbXBvcmFsLlRpbWVab25lKCItMDE6NTk6MzAuMDAwMDAwMDAwIikuaWQsIGAtMDE6NTk6MzBg
KTsKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5OjAwLjAwMDAwMDAwMCIp
LmlkLCBgLTAxOjU5YCk7CitzaG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTowMDow
MC4wMDAwMDAwMDAiKS5pZCwgYC0wMTowMGApOwogCiBsZXQgdHogPSBuZXcgVGVtcG9yYWwuVGlt
ZVpvbmUoIi0wMTo1OTozMC4xMjM0NTY3ODkiKQogc2hvdWxkQmUodHouaWQsIFN0cmluZyh0eikp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCmluZGV4IDEwNWZkZjQyNTM5NjUzNzI4NWE3MTc4MDI1MDlmOGRlMjkw
ZmFiNmMuLmE2YzhhMTFkZWJlM2RiNTdmMTFlMDUxZDljN2Q2NjgyZGYwNTJlMTIgMTAwNjQ0Ci0t
LSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29u
ZmlnLnlhbWwKQEAgLTI3LDcgKzI3LDggQEAgc2tpcDoKICAgICAtIHRlc3QvYnVpbHQtaW5zL1Rl
bXBvcmFsL1BsYWluRGF0ZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5EYXRl
VGltZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5Nb250aERheQotICAgIC0g
dGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lCisgICAgLSB0ZXN0L2J1aWx0LWlucy9U
ZW1wb3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL3RvUGxhaW5EYXRlVGltZQorICAgIC0gdGVzdC9i
dWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL3Byb3RvdHlwZS90b1pvbmVkRGF0ZVRpbWUKICAg
ICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluWWVhck1vbnRoCiAgICAgLSB0ZXN0L2J1
aWx0LWlucy9UZW1wb3JhbC9UaW1lWm9uZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwv
Wm9uZWREYXRlVGltZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>437524</attachid>
            <date>2021-09-07 10:19:52 -0700</date>
            <delta_ts>2021-09-07 14:39:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-229892-20210907101951.patch</filename>
            <type>text/plain</type>
            <size>170003</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMDgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
NDhhOWM4ZjhhYzRmNmNkNjI3ZmFiMTc3YWU3MGQ5YzQzYzBiMDVjLi41ZDk4NzcyM2YzZmUzNzAx
ZTk4YmMzNTRlMzIwYTIzNWVhMzVlMzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNDAgQEAKKzIwMjEtMDktMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNv
bT4KKworICAgICAgICBbSlNDXSBJbXBsZW1lbnQgVGVtcG9yYWwuUGxhaW5UaW1lCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMjk4OTIKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIHBhdGNoIGltcGxl
bWVudHMgVGVtcG9yYWwuUGxhaW5UaW1lWzFdLiBUaGlzIGlzIHRpbWUgcmVwcmVzZW50YXRpb24g
d2hpY2ggaXMgbm90IGFzc29jaWF0ZWQgdG8KKyAgICAgICAgY2FsZW5kYXJzIGFuZCB0aW1lem9u
ZXMuIFRoaXMgaXMgdHVwbGUgb2YgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pbGxpc2Vjb25kLCBt
aWNyb3NlY29uZCwgYW5kIG5hbm9zZWNvbmQuCisKKyAgICAgICAgMS4gV2UgYWRkIGZ1bGwtZmxl
ZGdlZCBJU084NjAxIERhdGVUaW1lIC8gVGltZSBwYXJzZXIsIHNvIHRoYXQgVGVtcG9yYWwuUGxh
aW5UaW1lLmZyb20gY2FuIGV4dHJhY3QKKyAgICAgICAgICAgdGltZSBhcyBzcGVjaWZpZWQuCisK
KyAgICAgICAgMi4gSVNPODYwMTo6UGxhaW5UaW1lIGlzIHVzZWQgZm9yIGFscmVhZHktdmFsaWRh
dGVkIFBsYWluVGltZSBkYXRhLiBXaGVuIHBlcmZvcm1pbmcgYXJpdGhtZXRpY3MsIHdlIGZpcnN0
CisgICAgICAgICAgIGRvIHRoYXQgaW4gSVNPODYwMTo6RHVyYXRpb24sIGFuZCB0aGVuIHdlIHZh
bGlkYXRlIGFuZCBjb252ZXJ0IGl0IHRvIFBsYWluVGltZS4KKworICAgICAgICBbMV06IGh0dHBz
Oi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXBsYWludGltZS1vYmpl
Y3RzCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNl
cy1pbnB1dC54Y2ZpbGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLW91dHB1dC54Y2Zp
bGVsaXN0OgorICAgICAgICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogU291cmNl
cy50eHQ6CisgICAgICAgICogcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oOgorICAgICAgICAq
IHJ1bnRpbWUvSVNPODYwMS5jcHA6CisgICAgICAgIChKU0M6OklTTzg2MDE6OmlkRm9yVGltZVpv
bmVOYW1lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lU3BlYyk6CisgICAgICAg
IChKU0M6OklTTzg2MDE6OnBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KToKKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6cGFyc2VUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24pOgorICAgICAg
ICAoSlNDOjpJU084NjAxOjpjYW5CZVRpbWVab25lKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
cGFyc2VUaW1lWm9uZSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OnBhcnNlVGltZSk6CisgICAg
ICAgIChKU0M6OklTTzg2MDE6OmRheXNJbk1vbnRoKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6
cGFyc2VEYXRlKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6cGFyc2VEYXRlVGltZSk6CisgICAg
ICAgIChKU0M6OklTTzg2MDE6OmZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKToKKyAgICAgICAg
KEpTQzo6SVNPODYwMTo6dGVtcG9yYWxUaW1lVG9TdHJpbmcpOgorICAgICAgICAoSlNDOjpJU084
NjAxOjppc1ZhbGlkRHVyYXRpb24pOgorICAgICAgICAqIHJ1bnRpbWUvSVNPODYwMS5oOgorICAg
ICAgICAoSlNDOjpJU084NjAxOjpEdXJhdGlvbjo6RHVyYXRpb24pOgorICAgICAgICAoSlNDOjpJ
U084NjAxOjpEdXJhdGlvbjo6b3BlcmF0b3JbXSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1
cmF0aW9uOjpvcGVyYXRvcltdIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRp
b246OmJlZ2luIGNvbnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6RHVyYXRpb246OmVuZCBj
b25zdCk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpjbGVhcik6CisgICAgICAg
IChKU0M6OklTTzg2MDE6OkR1cmF0aW9uOjpvcGVyYXRvci0gY29uc3QpOgorICAgICAgICAoSlND
OjpJU084NjAxOjpQbGFpblRpbWU6OlBsYWluVGltZSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6
OlBsYWluVGltZTo6b3BlcmF0b3I9PSk6CisgICAgICAgIChKU0M6OklTTzg2MDE6OlBsYWluRGF0
ZTo6UGxhaW5EYXRlKToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRlOjp5ZWFyIGNv
bnN0KToKKyAgICAgICAgKEpTQzo6SVNPODYwMTo6UGxhaW5EYXRlOjptb250aCBjb25zdCk6Cisg
ICAgICAgIChKU0M6OklTTzg2MDE6OlBsYWluRGF0ZTo6ZGF5IGNvbnN0KToKKyAgICAgICAgKiBy
dW50aW1lL0ludGxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjp1dGNUaW1lWm9uZUlEU2xvdyk6
CisgICAgICAgICogcnVudGltZS9JbnRsT2JqZWN0Lmg6CisgICAgICAgIChKU0M6OnV0Y1RpbWVa
b25lSUQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwOgorICAgICAgICAo
SlNDOjpKU0dsb2JhbE9iamVjdDo6aW5pdCk6CisgICAgICAgIChKU0M6OkpTR2xvYmFsT2JqZWN0
Ojp2aXNpdENoaWxkcmVuSW1wbCk6CisgICAgICAgICogcnVudGltZS9KU0dsb2JhbE9iamVjdC5o
OgorICAgICAgICAoSlNDOjpKU0dsb2JhbE9iamVjdDo6cGxhaW5UaW1lU3RydWN0dXJlKToKKyAg
ICAgICAgKiBydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChKU0M6OlRlbXBvcmFsQ2FsZW5kYXJDb25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24pOgorICAg
ICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHA6CisgICAgICAgIChKU0M6OlRlbXBv
cmFsRHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1
cmF0aW9uOjpmcm9tTm9uRHVyYXRpb25WYWx1ZSk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsRHVy
YXRpb246OnRvRHVyYXRpb24pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b0R1
cmF0aW9uUmVjb3JkKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcg
Y29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyk6CisgICAg
ICAgIChKU0M6OmlzVmFsaWREdXJhdGlvbik6IERlbGV0ZWQuCisgICAgICAgIChKU0M6OlRlbXBv
cmFsRHVyYXRpb246OmZyb21PYmplY3QpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVt
cG9yYWxEdXJhdGlvbi5oOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxOb3cuY3BwOgorICAg
ICAgICAoSlNDOjpKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04pOgorICAgICAgICAqIHJ1bnRpbWUv
VGVtcG9yYWxPYmplY3QuY3BwOgorICAgICAgICAoSlNDOjpjcmVhdGVQbGFpblRpbWVDb25zdHJ1
Y3Rvcik6CisgICAgICAgIChKU0M6OnNlY29uZHNTdHJpbmdQcmVjaXNpb24pOgorICAgICAgICAo
SlNDOjp0b1RlbXBvcmFsT3ZlcmZsb3cpOgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxPYmpl
Y3QuaDoKKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcDogQWRkZWQuCisg
ICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpjcmVhdGUpOgorICAgICAgICAoSlNDOjpU
ZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlU3RydWN0dXJlKToKKyAgICAgICAgKEpTQzo6VGVtcG9y
YWxQbGFpblRpbWU6OlRlbXBvcmFsUGxhaW5UaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQ
bGFpblRpbWU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRp
bWU6OnZpc2l0Q2hpbGRyZW5JbXBsKToKKyAgICAgICAgKEpTQzo6dG9QbGFpblRpbWUpOgorICAg
ICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dHJ5Q3JlYXRlSWZWYWxpZCk6CisgICAgICAg
IChKU0M6Om5vbk5lZ2F0aXZlTW9kdWxvKToKKyAgICAgICAgKEpTQzo6YmFsYW5jZVRpbWUpOgor
ICAgICAgICAoSlNDOjpyb3VuZFRpbWUpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGlt
ZTo6cm91bmQgY29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dG9TdHJp
bmcgY29uc3QpOgorICAgICAgICAoSlNDOjpwcm9wZXJ0eU5hbWUpOgorICAgICAgICAoSlNDOjp0
b1RlbXBvcmFsVGltZVJlY29yZCk6CisgICAgICAgIChKU0M6OnRvUGFydGlhbFRpbWUpOgorICAg
ICAgICAoSlNDOjpjb25zdHJhaW50VGltZSk6CisgICAgICAgIChKU0M6OnJlZ3VsYXRlVGltZSk6
CisgICAgICAgIChKU0M6OnRvVGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KToKKyAgICAg
ICAgKEpTQzo6Z2V0VGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KToKKyAgICAgICAgKEpT
Qzo6VGVtcG9yYWxQbGFpblRpbWU6OmZyb20pOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWlu
VGltZTo6Y29tcGFyZSk6CisgICAgICAgIChKU0M6OnRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24p
OgorICAgICAgICAoSlNDOjphZGRUaW1lKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRp
bWU6OmFkZCBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjpzdWJ0cmFj
dCBjb25zdCk6CisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lOjp3aXRoIGNvbnN0KToK
KyAgICAgICAgKEpTQzo6ZGlmZmVyZW5jZVRpbWUpOgorICAgICAgICAoSlNDOjpleHRyYWN0RGlm
ZmVyZW5jZU9wdGlvbnMpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6dW50aWwg
Y29uc3QpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZTo6c2luY2UgY29uc3QpOgor
ICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWUuaDogQWRkZWQuCisgICAgICAgICog
cnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcDogQWRkZWQuCisgICAgICAg
IChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZSk6CisgICAgICAgIChK
U0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZSk6CisgICAg
ICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OlRlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IpOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9y
OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tik6CisgICAgICAgICogcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUu
aC4KKyAgICAgICAgKiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmNwcDogQWRk
ZWQuCisgICAgICAgIChKU0M6OlRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpjcmVhdGUpOgor
ICAgICAgICAoSlNDOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJl
KToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OlRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGU6OmZpbmlzaENyZWF0aW9uKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKToKKyAgICAgICAgKEpTQzo6SlNDX0RFRklORV9DVVNUT01fR0VUVEVSKToKKyAgICAgICAg
KiBydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlLmg6IENvcGllZCBmcm9tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaC4KKyAgICAgICAgKiBy
dW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwOgorICAgICAgICAoSlNDOjpUZW1wb3JhbFRpbWVa
b25lOjpmcm9tKToKKyAgICAgICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZTo6aWRGb3JUaW1lWm9u
ZU5hbWUpOiBEZWxldGVkLgorICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oOgor
ICAgICAgICAqIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6VGVtcG9yYWxUaW1lWm9uZUNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChKU0M6OkpTQ19ERUZJTkVfSE9TVF9GVU5DVElPTik6CisgICAgICAgICogcnVudGlt
ZS9WTS5jcHA6CisgICAgICAgICogcnVudGltZS9WTS5oOgorCiAyMDIxLTA5LTA3ICBZdXN1a2Ug
U3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CiAKICAgICAgICAgTWF0aC5oeXBvdCBjaGVja3Mg
Zm9yIGluZmluaXRlIHZhbHVlcyBwcmVtYXR1cmVseQpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV1RGL0NoYW5nZUxvZwppbmRleCBmYmY5YzIzOGY5MTQ5OTFiNzdm
YTZiZGExMDRkZTQ1NDgzOTk3YWQ5Li45OWZjYzRiNjU0ZThmZTlkM2EzNTVkNTRiNGNkOWM5MjFj
MTRjNTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV1RG
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyIEBACisyMDIxLTA5LTA3ICBZdXN1a2UgU3V6dWtpICA8
eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gSW1wbGVtZW50IFRlbXBvcmFsLlBs
YWluVGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjI5ODkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
KiB3dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmg6CisKIDIwMjEtMDktMDYgIERtaXRyeSBL
YWxpbmtpbiAgPGRtaXRyeS5rYWxpbmtpbit3ZWJraXRAZ21haWwuY29tPgogCiAgICAgICAgIEZp
eCBXZWJLaXRHVEsgYnVpbGQgb24gTWFjT1MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4
dAppbmRleCBlY2EwODMxNGI2NDQ1OWM3OGNhMDM4NjQyODE1MzdmODUxOGRiZWUwLi4zOGNiODRk
YTA1NmUyYjZhNmMxM2VkOWY4ZDcwNTE4ZWFmMDg5NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xMTMsNiArMTEzLDggQEAgc2V0KEphdmFTY3JpcHRDb3JlX09CSkVD
VF9MVVRfU09VUkNFUwogICAgIHJ1bnRpbWUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5jcHAK
ICAgICBydW50aW1lL1RlbXBvcmFsTm93LmNwcAogICAgIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3Qu
Y3BwCisgICAgcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcAorICAgIHJ1
bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCiAgICAgcnVudGltZS9UZW1wb3Jh
bFRpbWVab25lQ29uc3RydWN0b3IuY3BwCiAgICAgcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJv
dG90eXBlLmNwcAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNv
dXJjZXMtaW5wdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291
cmNlcy1pbnB1dC54Y2ZpbGVsaXN0CmluZGV4IGNlNWY2Mjg4YWFhMjdjYjc4MTdiZWFlMTQ0Mzc2
ZWEyOGFmYWU2M2YuLjI4ODViNTEwMTdjYzFhZTNkODkyZWYzYzVmMjdhNGIxMjM3NTM4NDIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54Y2Zp
bGVsaXN0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9EZXJpdmVkU291cmNlcy1pbnB1dC54
Y2ZpbGVsaXN0CkBAIC0xNzUsNiArMTc1LDggQEAgJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1w
b3JhbER1cmF0aW9uQ29uc3RydWN0b3IuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBv
cmFsRHVyYXRpb25Qcm90b3R5cGUuY3BwCiAkKFBST0pFQ1RfRElSKS9ydW50aW1lL1RlbXBvcmFs
Tm93LmNwcAogJChQUk9KRUNUX0RJUikvcnVudGltZS9UZW1wb3JhbE9iamVjdC5jcHAKKyQoUFJP
SkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5jcHAKKyQoUFJP
SkVDVF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCiAkKFBST0pF
Q1RfRElSKS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rvci5jcHAKICQoUFJPSkVD
VF9ESVIpL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5jcHAKICQoUFJPSkVDVF9E
SVIpL3VjZC9DYXNlRm9sZGluZy50eHQKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9EZXJpdmVkU291cmNlcy1vdXRwdXQueGNmaWxlbGlzdAppbmRleCAxYjA1NWM5MjJjMDk0YTU5
NTg0MjYwODQxZGNlZGZjYWE3Mzc2NTAzLi4yYWQyMTMxYzU4NjY5YmQwNTc1YzdhZjQwYTZjNDI3
YTU5NGY1YzNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJj
ZXMtb3V0cHV0LnhjZmlsZWxpc3QKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0Rlcml2ZWRT
b3VyY2VzLW91dHB1dC54Y2ZpbGVsaXN0CkBAIC03Miw2ICs3Miw4IEBAICQoQlVJTFRfUFJPRFVD
VFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbER1cmF0aW9uQ29u
c3RydWN0b3IuCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlw
dENvcmUvVGVtcG9yYWxEdXJhdGlvblByb3RvdHlwZS5sdXQuaAogJChCVUlMVF9QUk9EVUNUU19E
SVIpL0Rlcml2ZWRTb3VyY2VzL0phdmFTY3JpcHRDb3JlL1RlbXBvcmFsTm93Lmx1dC5oCiAkKEJV
SUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxP
YmplY3QubHV0LmgKKyQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2Ny
aXB0Q29yZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmx1dC5oCiskKEJVSUxUX1BST0RV
Q1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2YVNjcmlwdENvcmUvVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUubHV0LmgKICQoQlVJTFRfUFJPRFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZh
U2NyaXB0Q29yZS9UZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IubHV0LmgKICQoQlVJTFRfUFJP
RFVDVFNfRElSKS9EZXJpdmVkU291cmNlcy9KYXZhU2NyaXB0Q29yZS9UZW1wb3JhbFRpbWVab25l
UHJvdG90eXBlLmx1dC5oCiAkKEJVSUxUX1BST0RVQ1RTX0RJUikvRGVyaXZlZFNvdXJjZXMvSmF2
YVNjcmlwdENvcmUvVW5pY29kZVBhdHRlcm5UYWJsZXMuaApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
RGVyaXZlZFNvdXJjZXMubWFrZQppbmRleCA4ODE5MjdlMTdiZGEyMzhkN2RhY2VmMWQ2ZWI1YzNj
M2I3NDhiMzc3Li5lY2JjZTY3Zjc4YzAwMzRjMTY2ZjUwZDU4OTJhNmYwOGM1ZGE0MGQ2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvRGVyaXZlZFNvdXJjZXMubWFrZQpAQCAtMTk3LDYgKzE5Nyw4
IEBAIE9CSkVDVF9MVVRfSEVBREVSUyA9IFwKICAgICBUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
Lmx1dC5oIFwKICAgICBUZW1wb3JhbE5vdy5sdXQuaCBcCiAgICAgVGVtcG9yYWxPYmplY3QubHV0
LmggXAorICAgIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IubHV0LmggXAorICAgIFRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlLmx1dC5oIFwKICAgICBUZW1wb3JhbFRpbWVab25lQ29uc3Ry
dWN0b3IubHV0LmggXAogICAgIFRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUubHV0LmggXAogICAg
IFdlYkFzc2VtYmx5Q29tcGlsZUVycm9yQ29uc3RydWN0b3IubHV0LmggXApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL1NvdXJjZXMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L1NvdXJjZXMudHh0CmluZGV4IDMyOGY5MmY1YjJmYjIwNWM4Mzg3ODIyNDE5YTUwODRlMGZhMWY3
Y2EuLjg0NmU5ZWU3NWZlZDA1NDc1NTZjNGJmZDRhMjYxZDgwZDU5YWZiZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvU291cmNlcy50eHQKQEAgLTEwMTksNiArMTAxOSw5IEBAIHJ1bnRpbWUvVGVtcG9yYWxE
dXJhdGlvbkNvbnN0cnVjdG9yLmNwcAogcnVudGltZS9UZW1wb3JhbER1cmF0aW9uUHJvdG90eXBl
LmNwcAogcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3Bw
CitydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcAorcnVudGltZS9UZW1wb3JhbFBsYWluVGlt
ZUNvbnN0cnVjdG9yLmNwcAorcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5jcHAK
IHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKIHJ1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZUNv
bnN0cnVjdG9yLmNwcAogcnVudGltZS9UZW1wb3JhbFRpbWVab25lUHJvdG90eXBlLmNwcApkaWZm
IC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMu
aCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0NvbW1vbklkZW50aWZpZXJzLmgKaW5k
ZXggNzE0YWEyZmViMjI0ZmE1OGYyN2VkNTU1MWI2N2M5ZjMyNjVjYmQyNy4uNDBjMTU5ZThkN2M1
NDA0OWZkOThjOGE2NjY4YTY0YThkZjRlYTM2NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvQ29tbW9uSWRlbnRpZmllcnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9Db21tb25JZGVudGlmaWVycy5oCkBAIC0xNDksNiArMTQ5LDEyIEBACiAg
ICAgbWFjcm8oaW5kaWNlcykgXAogICAgIG1hY3JvKGluZmVycmVkTmFtZSkgXAogICAgIG1hY3Jv
KGlucHV0KSBcCisgICAgbWFjcm8oaXNvSG91cikgXAorICAgIG1hY3JvKGlzb01pY3Jvc2Vjb25k
KSBcCisgICAgbWFjcm8oaXNvTWlsbGlzZWNvbmQpIFwKKyAgICBtYWNybyhpc29NaW51dGUpIFwK
KyAgICBtYWNybyhpc29OYW5vc2Vjb25kKSBcCisgICAgbWFjcm8oaXNvU2Vjb25kKSBcCiAgICAg
bWFjcm8oaW5zdHJ1Y3Rpb25Db3VudCkgXAogICAgIG1hY3JvKGlzQXJyYXkpIFwKICAgICBtYWNy
byhpc0VuYWJsZWQpIFwKQEAgLTE2OSw3ICsxNzUsOSBAQAogICAgIG1hY3JvKG1heGltdW1GcmFj
dGlvbkRpZ2l0cykgXAogICAgIG1hY3JvKG1heGltdW1TaWduaWZpY2FudERpZ2l0cykgXAogICAg
IG1hY3JvKG1lc3NhZ2UpIFwKKyAgICBtYWNybyhtaWNyb3NlY29uZCkgXAogICAgIG1hY3JvKG1p
Y3Jvc2Vjb25kcykgXAorICAgIG1hY3JvKG1pbGxpc2Vjb25kKSBcCiAgICAgbWFjcm8obWlsbGlz
ZWNvbmRzKSBcCiAgICAgbWFjcm8obWluaW11bUZyYWN0aW9uRGlnaXRzKSBcCiAgICAgbWFjcm8o
bWluaW11bUludGVnZXJEaWdpdHMpIFwKQEAgLTE4MSw2ICsxODksNyBAQAogICAgIG1hY3JvKG1v
bnRocykgXAogICAgIG1hY3JvKG11bHRpbGluZSkgXAogICAgIG1hY3JvKG5hbWUpIFwKKyAgICBt
YWNybyhuYW5vc2Vjb25kKSBcCiAgICAgbWFjcm8obmFub3NlY29uZHMpIFwKICAgICBtYWNybyhu
ZXh0KSBcCiAgICAgbWFjcm8obm93KSBcCkBAIC0xOTQsNiArMjAzLDcgQEAKICAgICBtYWNybyhv
cmlnaW4pIFwKICAgICBtYWNybyhvc3JFeGl0U2l0ZXMpIFwKICAgICBtYWNybyhvc3JFeGl0cykg
XAorICAgIG1hY3JvKG92ZXJmbG93KSBcCiAgICAgbWFjcm8ocGFyc2UpIFwKICAgICBtYWNybyhw
YXJzZUludCkgXAogICAgIG1hY3JvKHBhcnNlRmxvYXQpIFwKQEAgLTI0NSw2ICsyNTUsNyBAQAog
ICAgIG1hY3JvKHVzYWdlKSBcCiAgICAgbWFjcm8odmFsdWUpIFwKICAgICBtYWNybyh2YWx1ZU9m
KSBcCisgICAgbWFjcm8od2VlaykgXAogICAgIG1hY3JvKHdlZWtkYXkpIFwKICAgICBtYWNybyh3
ZWVrcykgXAogICAgIG1hY3JvKHdyaXRhYmxlKSBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9JU084NjAxLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0lTTzg2MDEuY3BwCmluZGV4IDllNDJhZmMxMzNjMDdlM2ZiOTFiODk3NzU2ZTNhMTU1MTIz
YWY5MzcuLmMyYTllM2NmZGIzMmU0MGIxMGQ3YTQyMzZjM2Q2MTkyOGM0OWE2YzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuY3BwCkBAIC0xLDUgKzEsNiBAQAogLyoK
ICAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVydGFpbm1lbnQgSW5j
LgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KICAqCiAgKiBSZWRpc3RyaWJ1dGlv
biBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKICAq
IG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcg
Y29uZGl0aW9ucwpAQCAtMjYsNyArMjcsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1
ZGUgIklTTzg2MDEuaCIKIAorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJQYXJz
ZUludC5oIgorI2luY2x1ZGUgPHd0Zi9EYXRlTWF0aC5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ1BhcnNpbmdCdWZmZXIuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0zOCw2ICs0MSwxNiBA
QCBzdGF0aWMgY29uc3RleHByIGludDY0X3QgbnNQZXJTZWNvbmQgPSAxMDAwTEwgKiAxMDAwICog
MTAwMDsKIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBuc1Blck1pbGxpc2Vjb25kID0gMTAwMExM
ICogMTAwMDsKIHN0YXRpYyBjb25zdGV4cHIgaW50NjRfdCBuc1Blck1pY3Jvc2Vjb25kID0gMTAw
MExMOwogCitzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkRm9yVGltZVpvbmVOYW1lKFN0cmlu
Z1ZpZXcgc3RyaW5nKQoreworICAgIGNvbnN0IGF1dG8mIHRpbWVab25lcyA9IGludGxBdmFpbGFi
bGVUaW1lWm9uZXMoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCB0aW1l
Wm9uZXMuc2l6ZSgpOyArK2luZGV4KSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nQVNDSUlD
YXNlKHRpbWVab25lc1tpbmRleF0sIHN0cmluZykpCisgICAgICAgICAgICByZXR1cm4gaW5kZXg7
CisgICAgfQorICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Cit9CisKIHRlbXBsYXRlPHR5cGVuYW1l
IENoYXJUeXBlPgogaW50MzJfdCBwYXJzZURlY2ltYWxJbnQzMihjb25zdCBDaGFyVHlwZSogY2hh
cmFjdGVycywgdW5zaWduZWQgbGVuZ3RoKQogewpAQCAtMjQzLDMyICsyNTYsMjYgQEAgc3RkOjpv
cHRpb25hbDxEdXJhdGlvbj4gcGFyc2VEdXJhdGlvbihTdHJpbmdWaWV3IHN0cmluZykKICAgICB9
KTsKIH0KIAorCitlbnVtIGNsYXNzIFNlY29uZDYwTW9kZSB7IEFjY2VwdCwgUmVqZWN0IH07CiB0
ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgotc3RhdGljIHN0ZDo6b3B0aW9uYWw8aW50
NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nUGFyc2luZ0J1ZmZlcjxD
aGFyYWN0ZXJUeXBlPiYgYnVmZmVyKQorc3RhdGljIHN0ZDo6b3B0aW9uYWw8UGxhaW5UaW1lPiBw
YXJzZVRpbWVTcGVjKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlciwg
U2Vjb25kNjBNb2RlIHNlY29uZDYwTW9kZSkKIHsKLSAgICAvLyBUaW1lWm9uZU51bWVyaWNVVENP
ZmZzZXQgOgotICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZz
ZXRIb3VyCi0gICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lWm9uZVVUQ09mZnNl
dEhvdXIgOiBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZQotICAgIC8vICAgICBUaW1lWm9uZVVUQ09m
ZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIFRpbWVab25lVVRDT2Zmc2V0TWludXRlCi0g
ICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lWm9uZVVUQ09mZnNldEhvdXIgOiBU
aW1lWm9uZVVUQ09mZnNldE1pbnV0ZSA6IFRpbWVab25lVVRDT2Zmc2V0U2Vjb25kIFRpbWVab25l
VVRDT2Zmc2V0RnJhY3Rpb25bb3B0XQotICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24g
VGltZVpvbmVVVENPZmZzZXRIb3VyIFRpbWVab25lVVRDT2Zmc2V0TWludXRlIFRpbWVab25lVVRD
T2Zmc2V0U2Vjb25kW29wdF0KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3Byb2QtVGltZVNwZWMKKyAgICAvLyBUaW1lU3BlYyA6CisgICAgLy8gICAgIFRpbWVIb3Vy
CisgICAgLy8gICAgIFRpbWVIb3VyIDogVGltZU1pbnV0ZQorICAgIC8vICAgICBUaW1lSG91ciBU
aW1lTWludXRlCisgICAgLy8gICAgIFRpbWVIb3VyIDogVGltZU1pbnV0ZSA6IFRpbWVTZWNvbmQg
VGltZUZyYWN0aW9uW29wdF0KKyAgICAvLyAgICAgVGltZUhvdXIgVGltZU1pbnV0ZSBUaW1lU2Vj
b25kIFRpbWVGcmFjdGlvbltvcHRdCiAgICAgLy8KLSAgICAvLyAgTWF4aW11bSBhbmQgbWluaW11
bSB2YWx1ZXMgYXJlIMKxMjM6NTk6NTkuOTk5OTk5OTk5ID0gwrE4NjM5OTk5OTk5OTk5OW5zLCB3
aGljaCBjYW4gYmUgcmVwcmVzZW50ZWQgYnkgaW50NjRfdCAvIGRvdWJsZSdzIGludGVnZXIgcGFy
dC4KLQotICAgIC8vIHNpZ24gYW5kIGhvdXIuCi0gICAgaWYgKGJ1ZmZlci5sZW5ndGhSZW1haW5p
bmcoKSA8IDMpCi0gICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgLy8gIFRpbWVTZWNv
bmQgY2FuIGJlIDYwLiBBbmQgaWYgaXQgaXMgNjAsIHdlIGludGVycHJldCBpdCBhcyA1OS4KKyAg
ICAvLyAgaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcGFy
c2Vpc29kYXRldGltZQogCi0gICAgaW50NjRfdCBmYWN0b3IgPSAxOwotICAgIGlmICgqYnVmZmVy
ID09ICcrJykKLSAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKLSAgICBlbHNlIGlmICgqYnVmZmVy
ID09ICctJyB8fCAqYnVmZmVyID09IDB4MjIxMikgewotICAgICAgICBmYWN0b3IgPSAtMTsKLSAg
ICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKLSAgICB9IGVsc2UKKyAgICBpZiAoYnVmZmVyLmxlbmd0
aFJlbWFpbmluZygpIDwgMikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAotICAgIGlu
dDY0X3QgaG91ciA9IDA7CisgICAgdW5zaWduZWQgaG91ciA9IDA7CiAgICAgQVNTRVJUKGJ1ZmZl
ci5sZW5ndGhSZW1haW5pbmcoKSA+PSAyKTsKICAgICBhdXRvIGZpcnN0SG91ckNoYXJhY3RlciA9
ICpidWZmZXI7CiAgICAgaWYgKGZpcnN0SG91ckNoYXJhY3RlciA+PSAnMCcgJiYgZmlyc3RIb3Vy
Q2hhcmFjdGVyIDw9ICcyJykgewpAQCAtMjg0LDE1ICsyOTEsMTYgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nUGFyc2lu
Z0J1ZmZlcjwKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIAogICAgIGlmIChidWZmZXIu
YXRFbmQoKSkKLSAgICAgICAgcmV0dXJuIChuc1BlckhvdXIgKiBob3VyKSAqIGZhY3RvcjsKKyAg
ICAgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCAwLCAwLCAwLCAwLCAwKTsKIAogICAgIGJvb2wg
c3BsaXRCeUNvbG9uID0gZmFsc2U7CiAgICAgaWYgKCpidWZmZXIgPT0gJzonKSB7Ci0gICAgICAg
IGJ1ZmZlci5hZHZhbmNlKCk7CiAgICAgICAgIHNwbGl0QnlDb2xvbiA9IHRydWU7Ci0gICAgfQor
ICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgIH0gZWxzZSBpZiAoISgqYnVmZmVyID49ICcw
JyAmJiAqYnVmZmVyIDw9ICc1JykpCisgICAgICAgIHJldHVybiBQbGFpblRpbWUoaG91ciwgMCwg
MCwgMCwgMCwgMCk7CiAKLSAgICBpbnQ2NF90IG1pbnV0ZSA9IDA7CisgICAgdW5zaWduZWQgbWlu
dXRlID0gMDsKICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgMikKICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKICAgICBhdXRvIGZpcnN0TWludXRlQ2hhcmFjdGVyID0gKmJ1
ZmZlcjsKQEAgLTMwOCwxNiArMzE2LDE3IEBAIHN0YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+
IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1BhcnNpbmdCdWZmZXI8CiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAg
ICAgIHJldHVybiAobnNQZXJIb3VyICogaG91ciArIG5zUGVyTWludXRlICogbWludXRlKSAqIGZh
Y3RvcjsKKyAgICAgICAgcmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIDAsIDAsIDAsIDAp
OwogCiAgICAgaWYgKHNwbGl0QnlDb2xvbikgewogICAgICAgICBpZiAoKmJ1ZmZlciA9PSAnOicp
CiAgICAgICAgICAgICBidWZmZXIuYWR2YW5jZSgpOwogICAgICAgICBlbHNlCi0gICAgICAgICAg
ICByZXR1cm4gc3RkOjpudWxsb3B0OwotICAgIH0KKyAgICAgICAgICAgIHJldHVybiBQbGFpblRp
bWUoaG91ciwgbWludXRlLCAwLCAwLCAwLCAwKTsKKyAgICB9IGVsc2UgaWYgKCEoKmJ1ZmZlciA+
PSAnMCcgJiYgKHNlY29uZDYwTW9kZSA9PSBTZWNvbmQ2ME1vZGU6OkFjY2VwdCA/ICgqYnVmZmVy
IDw9ICc2JykgOiAoKmJ1ZmZlciA8PSAnNScpKSkpCisgICAgICAgIHJldHVybiBQbGFpblRpbWUo
aG91ciwgbWludXRlLCAwLCAwLCAwLCAwKTsKIAotICAgIGludDY0X3Qgc2Vjb25kID0gMDsKKyAg
ICB1bnNpZ25lZCBzZWNvbmQgPSAwOwogICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkg
PCAyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OwogICAgIGF1dG8gZmlyc3RTZWNvbmRD
aGFyYWN0ZXIgPSAqYnVmZmVyOwpAQCAtMzI3LDM0ICszMzYsODQgQEAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nUGFyc2lu
Z0J1ZmZlcjwKICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc2Vjb25kU2Vjb25kQ2hhcmFjdGVy
KSkKICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAgICAgICAgIHNlY29uZCA9IChz
ZWNvbmRTZWNvbmRDaGFyYWN0ZXIgLSAnMCcpICsgMTAgKiAoZmlyc3RTZWNvbmRDaGFyYWN0ZXIg
LSAnMCcpOwotICAgICAgICBBU1NFUlQobWludXRlIDwgNjApOworICAgICAgICBBU1NFUlQoc2Vj
b25kIDwgNjApOworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgIH0gZWxzZSBpZiAoc2Vj
b25kNjBNb2RlID09IFNlY29uZDYwTW9kZTo6QWNjZXB0ICYmIGZpcnN0U2Vjb25kQ2hhcmFjdGVy
ID09ICc2JykgeworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBhdXRvIHNlY29u
ZFNlY29uZENoYXJhY3RlciA9ICpidWZmZXI7CisgICAgICAgIGlmIChzZWNvbmRTZWNvbmRDaGFy
YWN0ZXIgIT0gJzAnKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
c2Vjb25kID0gNTk7CiAgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CiAgICAgfSBlbHNlCiAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCi0gICAg
ICAgIHJldHVybiAobnNQZXJIb3VyICogaG91ciArIG5zUGVyTWludXRlICogbWludXRlICsgbnNQ
ZXJTZWNvbmQgKiBzZWNvbmQpICogZmFjdG9yOworICAgICAgICByZXR1cm4gUGxhaW5UaW1lKGhv
dXIsIG1pbnV0ZSwgc2Vjb25kLCAwLCAwLCAwKTsKIAogICAgIGlmICgqYnVmZmVyICE9ICcuJyAm
JiAqYnVmZmVyICE9ICcsJykKLSAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
cmV0dXJuIFBsYWluVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgMCwgMCwgMCk7CiAgICAgYnVm
ZmVyLmFkdmFuY2UoKTsKIAogICAgIHVuc2lnbmVkIGRpZ2l0cyA9IDA7Ci0gICAgd2hpbGUgKGRp
Z2l0cyA8IGJ1ZmZlci5sZW5ndGhSZW1haW5pbmcoKSAmJiBpc0FTQ0lJRGlnaXQoYnVmZmVyW2Rp
Z2l0c10pKQotICAgICAgICBkaWdpdHMrKzsKLSAgICBpZiAoIWRpZ2l0cyB8fCBkaWdpdHMgPiA5
KQorICAgIHVuc2lnbmVkIG1heENvdW50ID0gc3RkOjptaW48dW5zaWduZWQ+KGJ1ZmZlci5sZW5n
dGhSZW1haW5pbmcoKSwgOSk7CisgICAgZm9yICg7IGRpZ2l0cyA8IG1heENvdW50OyArK2RpZ2l0
cykgeworICAgICAgICBpZiAoIWlzQVNDSUlEaWdpdChidWZmZXJbZGlnaXRzXSkpCisgICAgICAg
ICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKCFkaWdpdHMpCiAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CiAKICAgICBWZWN0b3I8TENoYXIsIDk+IHBhZGRlZCg5LCAnMCcpOwogICAgIGZv
ciAodW5zaWduZWQgaSA9IDA7IGkgPCBkaWdpdHM7ICsraSkKICAgICAgICAgcGFkZGVkW2ldID0g
YnVmZmVyW2ldOwogICAgIGJ1ZmZlci5hZHZhbmNlQnkoZGlnaXRzKTsKLSAgICBpZiAoIWJ1ZmZl
ci5hdEVuZCgpKQorCisgICAgdW5zaWduZWQgbWlsbGlzZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQz
MihwYWRkZWQuZGF0YSgpLCAzKTsKKyAgICB1bnNpZ25lZCBtaWNyb3NlY29uZCA9IHBhcnNlRGVj
aW1hbEludDMyKHBhZGRlZC5kYXRhKCkgKyAzLCAzKTsKKyAgICB1bnNpZ25lZCBuYW5vc2Vjb25k
ID0gcGFyc2VEZWNpbWFsSW50MzIocGFkZGVkLmRhdGEoKSArIDYsIDMpOworCisgICAgcmV0dXJu
IFBsYWluVGltZShob3VyLCBtaW51dGUsIHNlY29uZCwgbWlsbGlzZWNvbmQsIG1pY3Jvc2Vjb25k
LCBuYW5vc2Vjb25kKTsKK30KKwordGVtcGxhdGU8dHlwZW5hbWUgQ2hhcmFjdGVyVHlwZT4KK3N0
YXRpYyBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0
KFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3sKKyAgICAvLyBU
aW1lWm9uZU51bWVyaWNVVENPZmZzZXQgOgorICAgIC8vICAgICBUaW1lWm9uZVVUQ09mZnNldFNp
Z24gVGltZVpvbmVVVENPZmZzZXRIb3VyCisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2ln
biBUaW1lWm9uZVVUQ09mZnNldEhvdXIgOiBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZQorICAgIC8v
ICAgICBUaW1lWm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIFRpbWVab25l
VVRDT2Zmc2V0TWludXRlCisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0U2lnbiBUaW1lWm9u
ZVVUQ09mZnNldEhvdXIgOiBUaW1lWm9uZVVUQ09mZnNldE1pbnV0ZSA6IFRpbWVab25lVVRDT2Zm
c2V0U2Vjb25kIFRpbWVab25lVVRDT2Zmc2V0RnJhY3Rpb25bb3B0XQorICAgIC8vICAgICBUaW1l
Wm9uZVVUQ09mZnNldFNpZ24gVGltZVpvbmVVVENPZmZzZXRIb3VyIFRpbWVab25lVVRDT2Zmc2V0
TWludXRlIFRpbWVab25lVVRDT2Zmc2V0U2Vjb25kIFRpbWVab25lVVRDT2Zmc2V0RnJhY3Rpb25b
b3B0XQorICAgIC8vCisgICAgLy8gIFRoaXMgaXMgdGhlIHNhbWUgdG8KKyAgICAvLyAgICAgVGlt
ZVpvbmVVVENPZmZzZXRTaWduIFRpbWVTcGVjCisgICAgLy8KKyAgICAvLyAgTWF4aW11bSBhbmQg
bWluaW11bSB2YWx1ZXMgYXJlIMKxMjM6NTk6NTkuOTk5OTk5OTk5ID0gwrE4NjM5OTk5OTk5OTk5
OW5zLCB3aGljaCBjYW4gYmUgcmVwcmVzZW50ZWQgYnkgaW50NjRfdCAvIGRvdWJsZSdzIGludGVn
ZXIgcGFydC4KKworICAgIC8vIHNpZ24gYW5kIGhvdXIuCisgICAgaWYgKGJ1ZmZlci5sZW5ndGhS
ZW1haW5pbmcoKSA8IDMpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAKLSAgICBpbnQ2
NF90IG1pbGxpc2Vjb25kID0gcGFyc2VEZWNpbWFsSW50MzIocGFkZGVkLmRhdGEoKSwgMyk7Ci0g
ICAgaW50NjRfdCBtaWNyb3NlY29uZCA9IHBhcnNlRGVjaW1hbEludDMyKHBhZGRlZC5kYXRhKCkg
KyAzLCAzKTsKLSAgICBpbnQ2NF90IG5hbm9zZWNvbmQgPSBwYXJzZURlY2ltYWxJbnQzMihwYWRk
ZWQuZGF0YSgpICsgNiwgMyk7CisgICAgaW50NjRfdCBmYWN0b3IgPSAxOworICAgIGlmICgqYnVm
ZmVyID09ICcrJykKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICBlbHNlIGlmICgqYnVm
ZmVyID09ICctJyB8fCAqYnVmZmVyID09IDB4MjIxMikgeworICAgICAgICBmYWN0b3IgPSAtMTsK
KyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAgICB9IGVsc2UKKyAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKworICAgIGF1dG8gcGxhaW5UaW1lID0gcGFyc2VUaW1lU3BlYyhidWZmZXIs
IFNlY29uZDYwTW9kZTo6UmVqZWN0KTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0
dXJuIHN0ZDo6bnVsbG9wdDsKKworICAgIGludDY0X3QgaG91ciA9IHBsYWluVGltZS0+aG91cigp
OworICAgIGludDY0X3QgbWludXRlID0gcGxhaW5UaW1lLT5taW51dGUoKTsKKyAgICBpbnQ2NF90
IHNlY29uZCA9IHBsYWluVGltZS0+c2Vjb25kKCk7CisgICAgaW50NjRfdCBtaWxsaXNlY29uZCA9
IHBsYWluVGltZS0+bWlsbGlzZWNvbmQoKTsKKyAgICBpbnQ2NF90IG1pY3Jvc2Vjb25kID0gcGxh
aW5UaW1lLT5taWNyb3NlY29uZCgpOworICAgIGludDY0X3QgbmFub3NlY29uZCA9IHBsYWluVGlt
ZS0+bmFub3NlY29uZCgpOwogCiAgICAgcmV0dXJuIChuc1BlckhvdXIgKiBob3VyICsgbnNQZXJN
aW51dGUgKiBtaW51dGUgKyBuc1BlclNlY29uZCAqIHNlY29uZCArIG5zUGVyTWlsbGlzZWNvbmQg
KiBtaWxsaXNlY29uZCArIG5zUGVyTWljcm9zZWNvbmQgKiBtaWNyb3NlY29uZCArIG5hbm9zZWNv
bmQpICogZmFjdG9yOwogfQpAQCAtMzYyLDcgKzQyMSw0NTggQEAgc3RhdGljIHN0ZDo6b3B0aW9u
YWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoU3RyaW5nUGFyc2luZ0J1
ZmZlcjwKIHN0ZDo6b3B0aW9uYWw8aW50NjRfdD4gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZz
ZXQoU3RyaW5nVmlldyBzdHJpbmcpCiB7CiAgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFy
c2luZyhzdHJpbmcsIFtdKGF1dG8gYnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+IHsK
LSAgICAgICAgcmV0dXJuIHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KGJ1ZmZlcik7Cisg
ICAgICAgIGF1dG8gcmVzdWx0ID0gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoYnVmZmVy
KTsKKyAgICAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSk7Cit9CisKK3RlbXBsYXRl
PHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFsPFZhcmlhbnQ8VmVjdG9yPExD
aGFyPiwgaW50NjRfdD4+IHBhcnNlVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uKFN0cmluZ1Bh
cnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZlcikKK3sKKyAgICAvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9u
CisgICAgLy8gVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uIDoKKyAgICAvLyAgICAgWyBUaW1l
Wm9uZUJyYWNrZXRlZE5hbWUgXQorICAgIC8vCisgICAgLy8gVGltZVpvbmVCcmFja2V0ZWROYW1l
IDoKKyAgICAvLyAgICAgVGltZVpvbmVJQU5BTmFtZQorICAgIC8vICAgICBFdGMvR01UIEFTQ0lJ
U2lnbiBIb3VyCisgICAgLy8gICAgIFRpbWVab25lVVRDT2Zmc2V0TmFtZQorCisgICAgaWYgKGJ1
ZmZlci5sZW5ndGhSZW1haW5pbmcoKSA8IDMpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisKKyAgICBpZiAoKmJ1ZmZlciAhPSAnWycpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgYnVmZmVyLmFkdmFuY2UoKTsKKworICAgIHN3aXRjaCAoKmJ1ZmZlcikgeworICAgIGNh
c2UgJysnOgorICAgIGNhc2UgJy0nOgorICAgIGNhc2UgMHgyMjEyOiB7CisgICAgICAgIC8vIFRp
bWVab25lVVRDT2Zmc2V0TmFtZSBpcyB0aGUgc2FtZSB0byBUaW1lWm9uZU51bWVyaWNVVENPZmZz
ZXQuCisgICAgICAgIGF1dG8gb2Zmc2V0ID0gcGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQo
YnVmZmVyKTsKKyAgICAgICAgaWYgKCFvZmZzZXQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICBpZiAoKmJ1ZmZlciAhPSAnXScpCisgICAgICAgICAgICBy
ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBy
ZXR1cm4gb2Zmc2V0LnZhbHVlKCk7CisgICAgfQorICAgIGNhc2UgJ0UnOiB7CisgICAgICAgIC8v
ICJFdGMvR01UKzIwIiBhbmQgIl0iID0+IGxlbmd0aCBpcyAxMS4KKyAgICAgICAgaWYgKGJ1ZmZl
ci5sZW5ndGhSZW1haW5pbmcoKSA+PSAxMSkgeworICAgICAgICAgICAgaWYgKGJ1ZmZlclswXSA9
PSAnRScgJiYgYnVmZmVyWzFdID09ICd0JyAmJiBidWZmZXJbMl0gPT0gJ2MnICYmIGJ1ZmZlclsz
XSA9PSAnLycgJiYgYnVmZmVyWzRdID09ICdHJyAmJiBidWZmZXJbNV0gPT0gJ00nICYmIGJ1ZmZl
cls2XSA9PSAnVCcpIHsKKyAgICAgICAgICAgICAgICBhdXRvIHNpZ25DaGFyYWN0ZXIgPSBidWZm
ZXJbN107CisgICAgICAgICAgICAgICAgLy8gTm90IGluY2x1ZGluZyAweDIyMTIgc2luY2UgaXQg
aXMgQVNDSUlTaWduLgorICAgICAgICAgICAgICAgIGlmIChzaWduQ2hhcmFjdGVyID09ICcrJyB8
fCBzaWduQ2hhcmFjdGVyID09ICctJykgeworICAgICAgICAgICAgICAgICAgICAvLyBFdGMvR01U
KzAxIGlzIFVUQy0wMTowMC4gVGhpcyBzaWduIGlzIGludGVudGlvbmFsbHkgaW52ZXJ0ZWQuCisg
ICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1R6X2Rh
dGFiYXNlI0FyZWEKKyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBmYWN0b3IgPSBzaWduQ2hh
cmFjdGVyID09ICcrJyA/IC0xIDogMTsKKyAgICAgICAgICAgICAgICAgICAgaW50NjRfdCBob3Vy
ID0gMDsKKyAgICAgICAgICAgICAgICAgICAgYXV0byBmaXJzdEhvdXJDaGFyYWN0ZXIgPSBidWZm
ZXJbOF07CisgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdEhvdXJDaGFyYWN0ZXIgPj0gJzAn
ICYmIGZpcnN0SG91ckNoYXJhY3RlciA8PSAnMicpIHsKKyAgICAgICAgICAgICAgICAgICAgICAg
IGF1dG8gc2Vjb25kSG91ckNoYXJhY3RlciA9IGJ1ZmZlcls5XTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIGlmIChpc0FTQ0lJRGlnaXQoc2Vjb25kSG91ckNoYXJhY3RlcikpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBob3VyID0gKHNlY29uZEhvdXJDaGFyYWN0ZXIgLSAnMCcpICsg
MTAgKiAoZmlyc3RIb3VyQ2hhcmFjdGVyIC0gJzAnKTsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBpZiAoaG91ciA8IDI0ICYmIGJ1ZmZlclsxMF0gPT0gJ10nKSB7CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGJ1ZmZlci5hZHZhbmNlQnkoMTEpOworICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gbnNQZXJIb3VyICogaG91ciAqIGZhY3RvcjsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAg
ICAgIH0KKyAgICAgICAgRkFMTFRIUk9VR0g7CisgICAgfQorICAgIGRlZmF1bHQ6IHsKKyAgICAg
ICAgLy8gVFpMZWFkaW5nQ2hhciA6CisgICAgICAgIC8vICAgICBBbHBoYQorICAgICAgICAvLyAg
ICAgLgorICAgICAgICAvLyAgICAgXworICAgICAgICAvLworICAgICAgICAvLyBUWkNoYXIgOgor
ICAgICAgICAvLyAgICAgQWxwaGEKKyAgICAgICAgLy8gICAgIC4KKyAgICAgICAgLy8gICAgIC0K
KyAgICAgICAgLy8gICAgIF8KKyAgICAgICAgLy8KKyAgICAgICAgLy8gVGltZVpvbmVJQU5BTmFt
ZUNvbXBvbmVudCA6CisgICAgICAgIC8vICAgICBUWkxlYWRpbmdDaGFyIFRaQ2hhcltvcHRdIFRa
Q2hhcltvcHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRd
IFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltv
cHRdIFRaQ2hhcltvcHRdIFRaQ2hhcltvcHRdIGJ1dCBub3Qgb25lIG9mIC4gb3IgLi4KKyAgICAg
ICAgLy8KKyAgICAgICAgLy8gVGltZVpvbmVJQU5BTmFtZSA6CisgICAgICAgIC8vICAgICBUaW1l
Wm9uZUlBTkFOYW1lQ29tcG9uZW50CisgICAgICAgIC8vICAgICBUaW1lWm9uZUlBTkFOYW1lIC8g
VGltZVpvbmVJQU5BTmFtZUNvbXBvbmVudAorCisgICAgICAgIHVuc2lnbmVkIG5hbWVMZW5ndGgg
PSAwOworICAgICAgICB7CisgICAgICAgICAgICB1bnNpZ25lZCBpbmRleCA9IDA7CisgICAgICAg
ICAgICBmb3IgKDsgaW5kZXggPCBidWZmZXIubGVuZ3RoUmVtYWluaW5nKCk7ICsraW5kZXgpIHsK
KyAgICAgICAgICAgICAgICBhdXRvIGNoYXJhY3RlciA9IGJ1ZmZlcltpbmRleF07CisgICAgICAg
ICAgICAgICAgaWYgKGNoYXJhY3RlciA9PSAnXScpCisgICAgICAgICAgICAgICAgICAgIGJyZWFr
OworICAgICAgICAgICAgICAgIGlmICghaXNBU0NJSUFscGhhKGNoYXJhY3RlcikgJiYgY2hhcmFj
dGVyICE9ICcuJyAmJiBjaGFyYWN0ZXIgIT0gJ18nICYmIGNoYXJhY3RlciAhPSAnLScgJiYgY2hh
cmFjdGVyICE9ICcvJykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsK
KyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghaW5kZXgpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgICAgIG5hbWVMZW5ndGggPSBpbmRleDsKKyAg
ICAgICAgfQorCisgICAgICAgIGF1dG8gaXNWYWxpZENvbXBvbmVudCA9IFsmXSh1bnNpZ25lZCBz
dGFydCwgdW5zaWduZWQgZW5kKSB7CisgICAgICAgICAgICB1bnNpZ25lZCBjb21wb25lbnRMZW5n
dGggPSBlbmQgLSBzdGFydDsKKyAgICAgICAgICAgIGlmICghY29tcG9uZW50TGVuZ3RoKQorICAg
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgICAgIGlmIChjb21wb25lbnRMZW5n
dGggPiAxNCkKKyAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICBpZiAo
Y29tcG9uZW50TGVuZ3RoID09IDEgJiYgYnVmZmVyW3N0YXJ0XSA9PSAnLicpCisgICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgaWYgKGNvbXBvbmVudExlbmd0aCA9PSAy
ICYmIGJ1ZmZlcltzdGFydF0gPT0gJy4nICYmIGJ1ZmZlcltzdGFydCArIDFdID09ICcuJykKKyAg
ICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICAgICAgfTsKKworICAgICAgICB1bnNpZ25lZCBjdXJyZW50TmFtZUNvbXBvbmVudFN0YXJ0SW5k
ZXggPSAwOworICAgICAgICBib29sIGlzTGVhZGluZ0NoYXJhY3RlckluTmFtZUNvbXBvbmVudCA9
IHRydWU7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG5hbWVMZW5n
dGg7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGF1dG8gY2hhcmFjdGVyID0gYnVmZmVyW2luZGV4
XTsKKyAgICAgICAgICAgIGlmIChpc0xlYWRpbmdDaGFyYWN0ZXJJbk5hbWVDb21wb25lbnQpIHsK
KyAgICAgICAgICAgICAgICBpZiAoIShpc0FTQ0lJQWxwaGEoY2hhcmFjdGVyKSB8fCBjaGFyYWN0
ZXIgPT0gJy4nIHx8IGNoYXJhY3RlciA9PSAnXycpKQorICAgICAgICAgICAgICAgICAgICByZXR1
cm4gc3RkOjpudWxsb3B0OworCisgICAgICAgICAgICAgICAgY3VycmVudE5hbWVDb21wb25lbnRT
dGFydEluZGV4ID0gaW5kZXg7CisgICAgICAgICAgICAgICAgaXNMZWFkaW5nQ2hhcmFjdGVySW5O
YW1lQ29tcG9uZW50ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAg
ICAgICB9CisKKyAgICAgICAgICAgIGlmIChjaGFyYWN0ZXIgPT0gJy8nKSB7CisgICAgICAgICAg
ICAgICAgaWYgKCFpc1ZhbGlkQ29tcG9uZW50KGN1cnJlbnROYW1lQ29tcG9uZW50U3RhcnRJbmRl
eCwgaW5kZXgpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAg
ICAgICAgICAgICAgIGlzTGVhZGluZ0NoYXJhY3RlckluTmFtZUNvbXBvbmVudCA9IHRydWU7Cisg
ICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlm
ICghKGlzQVNDSUlBbHBoYShjaGFyYWN0ZXIpIHx8IGNoYXJhY3RlciA9PSAnLicgfHwgY2hhcmFj
dGVyID09ICdfJyB8fCBjaGFyYWN0ZXIgPT0gJy0nKSkKKyAgICAgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICB9CisgICAgICAgIGlmIChpc0xlYWRpbmdDaGFyYWN0ZXJJ
bk5hbWVDb21wb25lbnQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAg
ICBpZiAoIWlzVmFsaWRDb21wb25lbnQoY3VycmVudE5hbWVDb21wb25lbnRTdGFydEluZGV4LCBu
YW1lTGVuZ3RoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICAgICAg
VmVjdG9yPExDaGFyPiByZXN1bHQ7CisgICAgICAgIHJlc3VsdC5yZXNlcnZlSW5pdGlhbENhcGFj
aXR5KG5hbWVMZW5ndGgpOworICAgICAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXgg
PCBuYW1lTGVuZ3RoOyArK2luZGV4KQorICAgICAgICAgICAgcmVzdWx0LnVuY2hlY2tlZEFwcGVu
ZChidWZmZXJbaW5kZXhdKTsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2VCeShuYW1lTGVuZ3RoKTsK
KworICAgICAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpu
dWxsb3B0OworICAgICAgICBpZiAoKmJ1ZmZlciAhPSAnXScpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICByZXR1cm4g
V1RGTW92ZShyZXN1bHQpOworICAgIH0KKyAgICB9Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIENo
YXJhY3RlclR5cGU+Citib29sIGNhbkJlVGltZVpvbmUoY29uc3QgU3RyaW5nUGFyc2luZ0J1ZmZl
cjxDaGFyYWN0ZXJUeXBlPiYgYnVmZmVyLCBDaGFyYWN0ZXJUeXBlIGNoYXJhY3RlcikKK3sKKyAg
ICBzd2l0Y2ggKGNoYXJhY3RlcikgeworICAgIC8vIFVUQ0Rlc2lnbmF0b3IKKyAgICAvLyBodHRw
czovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVVRDRGVzaWduYXRvcgorICAgIGNh
c2UgJ3onOgorICAgIGNhc2UgJ1onOgorICAgIC8vIFRpbWVab25lVVRDT2Zmc2V0U2lnbgorICAg
IC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1UaW1lWm9uZVVUQ09m
ZnNldFNpZ24KKyAgICBjYXNlICcrJzoKKyAgICBjYXNlICctJzoKKyAgICBjYXNlIDB4MjIxMjoK
KyAgICAvLyBUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICAvLyBodHRwczovL3RjMzku
ZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVGltZVpvbmVCcmFja2V0ZWRBbm5vdGF0aW9uCisg
ICAgY2FzZSAnWyc6IHsKKyAgICAgICAgLy8gV2Ugc2hvdWxkIHJlamVjdCBjYWxlbmRhciBleHRl
bnNpb24gY2FzZS4KKyAgICAgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNwcm9kLUNhbGVuZGFyCisgICAgICAgIC8vIENhbGVuZGFyIDoKKyAgICAgICAgLy8gICAgIFt1
LWNhPSBDYWxlbmRhck5hbWVdCisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkg
Pj0gNiAmJiBidWZmZXJbMV0gPT0gJ3UnICYmIGJ1ZmZlclsyXSA9PSAnLScgJiYgYnVmZmVyWzNd
ID09ICdjJyAmJiBidWZmZXJbNF0gPT0gJ2EnICYmIGJ1ZmZlcls1XSA9PSAnPScpCisgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICBkZWZh
dWx0OgorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorfQorCit0ZW1wbGF0ZTx0eXBlbmFt
ZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4gcGFyc2VUaW1l
Wm9uZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAg
aWYgKGJ1ZmZlci5hdEVuZCgpKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIHN3
aXRjaCAoKmJ1ZmZlcikgeworICAgIC8vIFVUQ0Rlc2lnbmF0b3IKKyAgICAvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtVVRDRGVzaWduYXRvcgorICAgIGNhc2UgJ3on
OgorICAgIGNhc2UgJ1onOiB7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAgIGlm
ICghYnVmZmVyLmF0RW5kKCkgJiYgKmJ1ZmZlciA9PSAnWycpIHsKKyAgICAgICAgICAgIGF1dG8g
dGltZVpvbmUgPSBwYXJzZVRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbihidWZmZXIpOworICAg
ICAgICAgICAgaWYgKCF0aW1lWm9uZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgICAgICAgICAgcmV0dXJuIFRpbWVab25lUmVjb3JkIHsgdHJ1ZSwgc3RkOjpudWxs
b3B0LCBXVEZNb3ZlKHRpbWVab25lLnZhbHVlKCkpIH07CisgICAgICAgIH0KKyAgICAgICAgcmV0
dXJuIFRpbWVab25lUmVjb3JkIHsgdHJ1ZSwgc3RkOjpudWxsb3B0LCB7IH0gfTsKKyAgICB9Cisg
ICAgLy8gVGltZVpvbmVVVENPZmZzZXRTaWduCisgICAgLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNwcm9kLVRpbWVab25lVVRDT2Zmc2V0U2lnbgorICAgIGNhc2UgJysnOgor
ICAgIGNhc2UgJy0nOgorICAgIGNhc2UgMHgyMjEyOiB7CisgICAgICAgIGF1dG8gb2Zmc2V0ID0g
cGFyc2VUaW1lWm9uZU51bWVyaWNVVENPZmZzZXQoYnVmZmVyKTsKKyAgICAgICAgaWYgKCFvZmZz
ZXQpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICBpZiAoIWJ1ZmZl
ci5hdEVuZCgpICYmICpidWZmZXIgPT0gJ1snKSB7CisgICAgICAgICAgICBhdXRvIHRpbWVab25l
ID0gcGFyc2VUaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24oYnVmZmVyKTsKKyAgICAgICAgICAg
IGlmICghdGltZVpvbmUpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAg
ICAgICAgICAgIHJldHVybiBUaW1lWm9uZVJlY29yZCB7IGZhbHNlLCBvZmZzZXQudmFsdWUoKSwg
V1RGTW92ZSh0aW1lWm9uZS52YWx1ZSgpKSB9OworICAgICAgICB9CisgICAgICAgIHJldHVybiBU
aW1lWm9uZVJlY29yZCB7IGZhbHNlLCBvZmZzZXQudmFsdWUoKSwgeyB9IH07CisgICAgfQorICAg
IC8vIFRpbWVab25lQnJhY2tldGVkQW5ub3RhdGlvbgorICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC10ZW1wb3JhbC8jcHJvZC1UaW1lWm9uZUJyYWNrZXRlZEFubm90YXRpb24KKyAgICBj
YXNlICdbJzogeworICAgICAgICBhdXRvIHRpbWVab25lID0gcGFyc2VUaW1lWm9uZUJyYWNrZXRl
ZEFubm90YXRpb24oYnVmZmVyKTsKKyAgICAgICAgaWYgKCF0aW1lWm9uZSkKKyAgICAgICAgICAg
IHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiBUaW1lWm9uZVJlY29yZCB7IGZh
bHNlLCBzdGQ6Om51bGxvcHQsIFdURk1vdmUodGltZVpvbmUudmFsdWUoKSkgfTsKKyAgICB9Cisg
ICAgZGVmYXVsdDoKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICB9Cit9CisKK3Rl
bXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8
UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lUmVjb3JkPj4+IHBhcnNlVGltZShTdHJp
bmdQYXJzaW5nQnVmZmVyPENoYXJhY3RlclR5cGU+JiBidWZmZXIpCit7CisgICAgLy8gaHR0cHM6
Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNwcm9kLVRpbWUKKyAgICAvLyBUaW1lIDoKKyAg
ICAvLyAgICAgVGltZVNwZWMgVGltZVpvbmVbb3B0XQorICAgIGF1dG8gcGxhaW5UaW1lID0gcGFy
c2VUaW1lU3BlYyhidWZmZXIsIFNlY29uZDYwTW9kZTo6QWNjZXB0KTsKKyAgICBpZiAoIXBsYWlu
VGltZSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICBpZiAoYnVmZmVyLmF0RW5k
KCkpCisgICAgICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZhbHVlKCksIHN0ZDo6
bnVsbG9wdCB9OworICAgIGlmIChjYW5CZVRpbWVab25lKGJ1ZmZlciwgKmJ1ZmZlcikpIHsKKyAg
ICAgICAgYXV0byB0aW1lWm9uZSA9IHBhcnNlVGltZVpvbmUoYnVmZmVyKTsKKyAgICAgICAgaWYg
KCF0aW1lWm9uZSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJl
dHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZhbHVlKCksIHRpbWVab25lIH07CisgICAgfQor
ICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxhaW5UaW1lLnZhbHVlKCksIHN0ZDo6bnVsbG9wdCB9
OworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3Jh
bC1pc29kYXlzaW5tb250aAoraW5saW5lIHVuc2lnbmVkIGRheXNJbk1vbnRoKGludDMyX3QgeWVh
ciwgdW5zaWduZWQgbW9udGgpCit7CisgICAgc3dpdGNoIChtb250aCkgeworICAgIGNhc2UgMToK
KyAgICBjYXNlIDM6CisgICAgY2FzZSA1OgorICAgIGNhc2UgNzoKKyAgICBjYXNlIDg6CisgICAg
Y2FzZSAxMDoKKyAgICBjYXNlIDEyOgorICAgICAgICByZXR1cm4gMzE7CisgICAgY2FzZSA0Ogor
ICAgIGNhc2UgNjoKKyAgICBjYXNlIDk6CisgICAgY2FzZSAxMToKKyAgICAgICAgcmV0dXJuIDMw
OworICAgIGNhc2UgMjoKKyAgICAgICAgaWYgKGlzTGVhcFllYXIoeWVhcikpCisgICAgICAgICAg
ICByZXR1cm4gMjk7CisgICAgICAgIHJldHVybiAyODsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9
CisKK3RlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CitzdGQ6Om9wdGlvbmFsPFBsYWlu
RGF0ZT4gcGFyc2VEYXRlKFN0cmluZ1BhcnNpbmdCdWZmZXI8Q2hhcmFjdGVyVHlwZT4mIGJ1ZmZl
cikKK3sKKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Byb2QtRGF0
ZQorICAgIC8vIERhdGUgOgorICAgIC8vICAgICBEYXRlWWVhciAtIERhdGVNb250aCAtIERhdGVE
YXkKKyAgICAvLyAgICAgRGF0ZVllYXIgRGF0ZU1vbnRoIERhdGVEYXkKKyAgICAvLworICAgIC8v
IERhdGVZZWFyIDoKKyAgICAvLyAgICAgRGF0ZUZvdXJEaWdpdFllYXIKKyAgICAvLyAgICAgRGF0
ZUV4dGVuZGVkWWVhcgorICAgIC8vCisgICAgLy8gRGF0ZUZvdXJEaWdpdFllYXIgOgorICAgIC8v
ICAgICBEaWdpdCBEaWdpdCBEaWdpdCBEaWdpdAorICAgIC8vCisgICAgLy8gRGF0ZUV4dGVuZGVk
WWVhciA6CisgICAgLy8gICAgIFNpZ24gRGlnaXQgRGlnaXQgRGlnaXQgRGlnaXQgRGlnaXQgRGln
aXQKKyAgICAvLworICAgIC8vIERhdGVNb250aCA6CisgICAgLy8gICAgIDAgTm9uemVyb0RpZ2l0
CisgICAgLy8gICAgIDEwCisgICAgLy8gICAgIDExCisgICAgLy8gICAgIDEyCisgICAgLy8KKyAg
ICAvLyBEYXRlRGF5IDoKKyAgICAvLyAgICAgMCBOb256ZXJvRGlnaXQKKyAgICAvLyAgICAgMSBE
aWdpdAorICAgIC8vICAgICAyIERpZ2l0CisgICAgLy8gICAgIDMwCisgICAgLy8gICAgIDMxCisK
KyAgICBpZiAoYnVmZmVyLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisK
KyAgICBib29sIHNpeERpZ2l0c1llYXIgPSBmYWxzZTsKKyAgICBpbnQgeWVhckZhY3RvciA9IDE7
CisgICAgaWYgKCpidWZmZXIgPT0gJysnKSB7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7Cisg
ICAgICAgIHNpeERpZ2l0c1llYXIgPSB0cnVlOworICAgIH0gZWxzZSBpZiAoKmJ1ZmZlciA9PSAn
LScgfHwgKmJ1ZmZlciA9PSAweDIyMTIpIHsKKyAgICAgICAgeWVhckZhY3RvciA9IC0xOworICAg
ICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBzaXhEaWdpdHNZZWFyID0gdHJ1ZTsKKyAg
ICB9IGVsc2UgaWYgKCFpc0FTQ0lJRGlnaXQoKmJ1ZmZlcikpCisgICAgICAgIHJldHVybiBzdGQ6
Om51bGxvcHQ7CisKKyAgICBpbnQzMl90IHllYXIgPSAwOworICAgIGlmIChzaXhEaWdpdHNZZWFy
KSB7CisgICAgICAgIGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCA2KQorICAgICAgICAg
ICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAgZm9yICh1bnNpZ25lZCBpbmRleCA9IDA7
IGluZGV4IDwgNjsgKytpbmRleCkgeworICAgICAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoYnVm
ZmVyW2luZGV4XSkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAg
ICAgfQorICAgICAgICB5ZWFyID0gcGFyc2VEZWNpbWFsSW50MzIoYnVmZmVyLnBvc2l0aW9uKCks
IDYpICogeWVhckZhY3RvcjsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2VCeSg2KTsKKyAgICB9IGVs
c2UgeworICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFpbmluZygpIDwgNCkKKyAgICAgICAg
ICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAw
OyBpbmRleCA8IDQ7ICsraW5kZXgpIHsKKyAgICAgICAgICAgIGlmICghaXNBU0NJSURpZ2l0KGJ1
ZmZlcltpbmRleF0pKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAg
ICAgIH0KKyAgICAgICAgeWVhciA9IHBhcnNlRGVjaW1hbEludDMyKGJ1ZmZlci5wb3NpdGlvbigp
LCA0KTsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2VCeSg0KTsKKyAgICB9CisKKyAgICBpZiAoYnVm
ZmVyLmF0RW5kKCkpCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBib29sIHNw
bGl0QnlIeXBoZW4gPSBmYWxzZTsKKyAgICBpZiAoKmJ1ZmZlciA9PSAnLScpIHsKKyAgICAgICAg
c3BsaXRCeUh5cGhlbiA9IHRydWU7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgICAg
IGlmIChidWZmZXIubGVuZ3RoUmVtYWluaW5nKCkgPCA1KQorICAgICAgICAgICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoYnVmZmVyLmxlbmd0aFJlbWFp
bmluZygpIDwgNCkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgfQorICAg
IC8vIFdlIGVuc3VyZWQgdGhhdCBidWZmZXIgaGFzIGVub3VnaCBsZW5ndGggZm9yIG1vbnRoIGFu
ZCBkYXkuIFdlIGRvIG5vdCBuZWVkIHRvIGNoZWNrIGxlbmd0aC4KKworICAgIHVuc2lnbmVkIG1v
bnRoID0gMDsKKyAgICBhdXRvIGZpcnN0TW9udGhDaGFyYWN0ZXIgPSAqYnVmZmVyOworICAgIGlm
IChmaXJzdE1vbnRoQ2hhcmFjdGVyID09ICcwJyB8fCBmaXJzdE1vbnRoQ2hhcmFjdGVyID09ICcx
JykgeworICAgICAgICBidWZmZXIuYWR2YW5jZSgpOworICAgICAgICBhdXRvIHNlY29uZE1vbnRo
Q2hhcmFjdGVyID0gKmJ1ZmZlcjsKKyAgICAgICAgaWYgKCFpc0FTQ0lJRGlnaXQoc2Vjb25kTW9u
dGhDaGFyYWN0ZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgICAg
bW9udGggPSAoc2Vjb25kTW9udGhDaGFyYWN0ZXIgLSAnMCcpICsgMTAgKiAoZmlyc3RNb250aENo
YXJhY3RlciAtICcwJyk7CisgICAgICAgIGlmICghbW9udGggfHwgbW9udGggPiAxMikKKyAgICAg
ICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7Cisg
ICAgfSBlbHNlCisgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisKKyAgICBpZiAoc3BsaXRC
eUh5cGhlbikgeworICAgICAgICBpZiAoKmJ1ZmZlciA9PSAnLScpCisgICAgICAgICAgICBidWZm
ZXIuYWR2YW5jZSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OworICAgIH0KKworICAgIHVuc2lnbmVkIGRheSA9IDA7CisgICAgYXV0byBmaXJzdERheUNo
YXJhY3RlciA9ICpidWZmZXI7CisgICAgaWYgKGZpcnN0RGF5Q2hhcmFjdGVyID49ICcwJyAmJiBm
aXJzdERheUNoYXJhY3RlciA8PSAnMycpIHsKKyAgICAgICAgYnVmZmVyLmFkdmFuY2UoKTsKKyAg
ICAgICAgYXV0byBzZWNvbmREYXlDaGFyYWN0ZXIgPSAqYnVmZmVyOworICAgICAgICBpZiAoIWlz
QVNDSUlEaWdpdChzZWNvbmREYXlDaGFyYWN0ZXIpKQorICAgICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKKyAgICAgICAgZGF5ID0gKHNlY29uZERheUNoYXJhY3RlciAtICcwJykgKyAxMCAq
IChmaXJzdERheUNoYXJhY3RlciAtICcwJyk7CisgICAgICAgIGlmICghZGF5IHx8IGRheSA+IGRh
eXNJbk1vbnRoKHllYXIsIG1vbnRoKSkKKyAgICAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7
CisgICAgICAgIGJ1ZmZlci5hZHZhbmNlKCk7CisgICAgfSBlbHNlCisgICAgICAgIHJldHVybiBz
dGQ6Om51bGxvcHQ7CisKKyAgICByZXR1cm4gUGxhaW5EYXRlKHllYXIsIG1vbnRoLCBkYXkpOwor
fQorCit0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgorc3RkOjpvcHRpb25hbDxzdGQ6
OnR1cGxlPFBsYWluRGF0ZSwgc3RkOjpvcHRpb25hbDxQbGFpblRpbWU+LCBzdGQ6Om9wdGlvbmFs
PFRpbWVab25lUmVjb3JkPj4+IHBhcnNlRGF0ZVRpbWUoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFy
YWN0ZXJUeXBlPiYgYnVmZmVyKQoreworICAgIC8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10
ZW1wb3JhbC8jcHJvZC1EYXRlVGltZQorICAgIC8vIERhdGVUaW1lIDoKKyAgICAvLyAgICAgRGF0
ZSBUaW1lU3BlY1NlcGFyYXRvcltvcHRdIFRpbWVab25lW29wdF0KKyAgICAvLworICAgIC8vIFRp
bWVTcGVjU2VwYXJhdG9yIDoKKyAgICAvLyAgICAgRGF0ZVRpbWVTZXBhcmF0b3IgVGltZVNwZWMK
KyAgICBhdXRvIHBsYWluRGF0ZSA9IHBhcnNlRGF0ZShidWZmZXIpOworICAgIGlmICghcGxhaW5E
YXRlKQorICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgIGlmIChidWZmZXIuYXRFbmQo
KSkKKyAgICAgICAgcmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpbkRhdGUudmFsdWUoKSwgc3RkOjpu
dWxsb3B0LCBzdGQ6Om51bGxvcHQgfTsKKworICAgIGlmICgqYnVmZmVyID09ICcgJyB8fCAqYnVm
ZmVyID09ICdUJyB8fCAqYnVmZmVyID09ICd0JykgeworICAgICAgICBidWZmZXIuYWR2YW5jZSgp
OworICAgICAgICBhdXRvIHBsYWluVGltZUFuZFRpbWVab25lID0gcGFyc2VUaW1lKGJ1ZmZlcik7
CisgICAgICAgIGlmICghcGxhaW5UaW1lQW5kVGltZVpvbmUpCisgICAgICAgICAgICByZXR1cm4g
c3RkOjpudWxsb3B0OworICAgICAgICBhdXRvIFtwbGFpblRpbWUsIHRpbWVab25lXSA9IHBsYWlu
VGltZUFuZFRpbWVab25lLnZhbHVlKCk7CisgICAgICAgIHJldHVybiBzdGQ6OnR1cGxlIHsgcGxh
aW5EYXRlLnZhbHVlKCksIHBsYWluVGltZSwgdGltZVpvbmUgfTsKKyAgICB9CisKKyAgICBpZiAo
Y2FuQmVUaW1lWm9uZShidWZmZXIsICpidWZmZXIpKSB7CisgICAgICAgIGF1dG8gdGltZVpvbmUg
PSBwYXJzZVRpbWVab25lKGJ1ZmZlcik7CisgICAgICAgIGlmICghdGltZVpvbmUpCisgICAgICAg
ICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICAgICByZXR1cm4gc3RkOjp0dXBsZSB7IHBs
YWluRGF0ZS52YWx1ZSgpLCBzdGQ6Om51bGxvcHQsIHRpbWVab25lIH07CisgICAgfQorCisgICAg
cmV0dXJuIHN0ZDo6dHVwbGUgeyBwbGFpbkRhdGUudmFsdWUoKSwgc3RkOjpudWxsb3B0LCBzdGQ6
Om51bGxvcHQgfTsKK30KKworc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluVGltZSwgc3Rk
OjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBwYXJzZVRpbWUoU3RyaW5nVmlldyBzdHJpbmcp
Cit7CisgICAgcmV0dXJuIHJlYWRDaGFyYWN0ZXJzRm9yUGFyc2luZyhzdHJpbmcsIFtdKGF1dG8g
YnVmZmVyKSAtPiBzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8UGxhaW5UaW1lLCBzdGQ6Om9wdGlv
bmFsPFRpbWVab25lUmVjb3JkPj4+IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBwYXJzZVRpbWUo
YnVmZmVyKTsKKyAgICAgICAgaWYgKCFidWZmZXIuYXRFbmQoKSkKKyAgICAgICAgICAgIHJldHVy
biBzdGQ6Om51bGxvcHQ7CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfSk7Cit9CisKK3N0
ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9uYWw8UGxhaW5UaW1l
Piwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBwYXJzZURhdGVUaW1lKFN0cmluZ1Zp
ZXcgc3RyaW5nKQoreworICAgIHJldHVybiByZWFkQ2hhcmFjdGVyc0ZvclBhcnNpbmcoc3RyaW5n
LCBbXShhdXRvIGJ1ZmZlcikgLT4gc3RkOjpvcHRpb25hbDxzdGQ6OnR1cGxlPFBsYWluRGF0ZSwg
c3RkOjpvcHRpb25hbDxQbGFpblRpbWU+LCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lUmVjb3JkPj4+
IHsKKyAgICAgICAgYXV0byByZXN1bHQgPSBwYXJzZURhdGVUaW1lKGJ1ZmZlcik7CisgICAgICAg
IGlmICghYnVmZmVyLmF0RW5kKCkpCisgICAgICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owor
ICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0pOwogfQogCkBAIC0zODIsMTMgKzg5MiwxOSBA
QCBTdHJpbmcgZm9ybWF0VGltZVpvbmVPZmZzZXRTdHJpbmcoaW50NjRfdCBvZmZzZXQpCiAgICAg
aWYgKG5hbm9zZWNvbmRzKSB7CiAgICAgICAgIC8vIFNpbmNlIG5zUGVyU2Vjb25kIGlzIDEwMDAw
MDAwMDAsIHN0cmluZ2lmaWVkIG5hbm9zZWNvbmRzIHRha2VzIGF0IG1vc3QgOSBjaGFyYWN0ZXJz
ICg5OTk5OTk5OTkpLgogICAgICAgICBhdXRvIGZyYWN0aW9uID0gV1RGOjpudW1iZXJUb1N0cmlu
Z1Vuc2lnbmVkPFZlY3RvcjxMQ2hhciwgOT4+KG5hbm9zZWNvbmRzKTsKLSAgICAgICAgdW5zaWdu
ZWQgaW5kZXggPSAwOwogICAgICAgICB1bnNpZ25lZCBwYWRkaW5nTGVuZ3RoID0gOSAtIGZyYWN0
aW9uLnNpemUoKTsKLSAgICAgICAgZm9yICg7IGluZGV4IDwgZnJhY3Rpb24uc2l6ZSgpOyArK2lu
ZGV4KSB7Ci0gICAgICAgICAgICBpZiAoZnJhY3Rpb25baW5kZXhdID09ICcwJykKKyAgICAgICAg
dW5zaWduZWQgaW5kZXggPSBmcmFjdGlvbi5zaXplKCk7CisgICAgICAgIHN0ZDo6b3B0aW9uYWw8
dW5zaWduZWQ+IHZhbGlkTGVuZ3RoOworICAgICAgICB3aGlsZSAoaW5kZXgtLSkgeworICAgICAg
ICAgICAgaWYgKGZyYWN0aW9uW2luZGV4XSAhPSAnMCcpIHsKKyAgICAgICAgICAgICAgICB2YWxp
ZExlbmd0aCA9IGluZGV4ICsgMTsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAg
IH0KICAgICAgICAgfQotICAgICAgICBmcmFjdGlvbi5yZXNpemUoaW5kZXgpOworICAgICAgICBp
ZiAodmFsaWRMZW5ndGgpCisgICAgICAgICAgICBmcmFjdGlvbi5yZXNpemUodmFsaWRMZW5ndGgu
dmFsdWUoKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZyYWN0aW9uLmNsZWFyKCk7CiAg
ICAgICAgIHJldHVybiBtYWtlU3RyaW5nKG5lZ2F0aXZlID8gJy0nIDogJysnLCBwYWQoJzAnLCAy
LCBob3VycyksICc6JywgcGFkKCcwJywgMiwgbWludXRlcyksICc6JywgcGFkKCcwJywgMiwgc2Vj
b25kcyksICcuJywgcGFkKCcwJywgcGFkZGluZ0xlbmd0aCwgZW1wdHlTdHJpbmcoKSksIGZyYWN0
aW9uKTsKICAgICB9CiAgICAgaWYgKHNlY29uZHMpCkBAIC0zOTYsNSArOTEyLDU4IEBAIFN0cmlu
ZyBmb3JtYXRUaW1lWm9uZU9mZnNldFN0cmluZyhpbnQ2NF90IG9mZnNldCkKICAgICByZXR1cm4g
bWFrZVN0cmluZyhuZWdhdGl2ZSA/ICctJyA6ICcrJywgcGFkKCcwJywgMiwgaG91cnMpLCAnOics
IHBhZCgnMCcsIDIsIG1pbnV0ZXMpKTsKIH0KIAorU3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5n
KFBsYWluVGltZSBwbGFpblRpbWUsIHN0ZDo6dHVwbGU8UHJlY2lzaW9uLCB1bnNpZ25lZD4gcHJl
Y2lzaW9uKQoreworICAgIGF1dG8gW3ByZWNpc2lvblR5cGUsIHByZWNpc2lvblZhbHVlXSA9IHBy
ZWNpc2lvbjsKKyAgICBBU1NFUlQocHJlY2lzaW9uVHlwZSA9PSBQcmVjaXNpb246OkF1dG8gfHwg
cHJlY2lzaW9uVmFsdWUgPCAxMCk7CisgICAgaWYgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9u
OjpNaW51dGUpCisgICAgICAgIHJldHVybiBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBsYWluVGlt
ZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5taW51dGUoKSkpOworCisgICAg
aW50NjRfdCBmcmFjdGlvbk5hbm9zZWNvbmRzID0gc3RhdGljX2Nhc3Q8aW50NjRfdD4ocGxhaW5U
aW1lLm1pbGxpc2Vjb25kKCkpICogbnNQZXJNaWxsaXNlY29uZCArIHN0YXRpY19jYXN0PGludDY0
X3Q+KHBsYWluVGltZS5taWNyb3NlY29uZCgpKSAqIG5zUGVyTWljcm9zZWNvbmQgKyBzdGF0aWNf
Y2FzdDxpbnQ2NF90PihwbGFpblRpbWUubmFub3NlY29uZCgpKTsKKyAgICBpZiAocHJlY2lzaW9u
VHlwZSA9PSBQcmVjaXNpb246OkF1dG8pIHsKKyAgICAgICAgaWYgKCFmcmFjdGlvbk5hbm9zZWNv
bmRzKQorICAgICAgICAgICAgcmV0dXJuIG1ha2VTdHJpbmcocGFkKCcwJywgMiwgcGxhaW5UaW1l
LmhvdXIoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLm1pbnV0ZSgpKSwgJzonLCBwYWQo
JzAnLCAyLCBwbGFpblRpbWUuc2Vjb25kKCkpKTsKKyAgICAgICAgYXV0byBmcmFjdGlvbiA9IFdU
Rjo6bnVtYmVyVG9TdHJpbmdVbnNpZ25lZDxWZWN0b3I8TENoYXIsIDk+PihmcmFjdGlvbk5hbm9z
ZWNvbmRzKTsKKyAgICAgICAgdW5zaWduZWQgcGFkZGluZ0xlbmd0aCA9IDkgLSBmcmFjdGlvbi5z
aXplKCk7CisgICAgICAgIHVuc2lnbmVkIGluZGV4ID0gZnJhY3Rpb24uc2l6ZSgpOworICAgICAg
ICBzdGQ6Om9wdGlvbmFsPHVuc2lnbmVkPiB2YWxpZExlbmd0aDsKKyAgICAgICAgd2hpbGUgKGlu
ZGV4LS0pIHsKKyAgICAgICAgICAgIGlmIChmcmFjdGlvbltpbmRleF0gIT0gJzAnKSB7CisgICAg
ICAgICAgICAgICAgdmFsaWRMZW5ndGggPSBpbmRleCArIDE7CisgICAgICAgICAgICAgICAgYnJl
YWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKHZhbGlkTGVuZ3RoKQor
ICAgICAgICAgICAgZnJhY3Rpb24ucmVzaXplKHZhbGlkTGVuZ3RoLnZhbHVlKCkpOworICAgICAg
ICBlbHNlCisgICAgICAgICAgICBmcmFjdGlvbi5jbGVhcigpOworICAgICAgICByZXR1cm4gbWFr
ZVN0cmluZyhwYWQoJzAnLCAyLCBwbGFpblRpbWUuaG91cigpKSwgJzonLCBwYWQoJzAnLCAyLCBw
bGFpblRpbWUubWludXRlKCkpLCAnOicsIHBhZCgnMCcsIDIsIHBsYWluVGltZS5zZWNvbmQoKSks
ICcuJywgcGFkKCcwJywgcGFkZGluZ0xlbmd0aCwgZW1wdHlTdHJpbmcoKSksIGZyYWN0aW9uKTsK
KyAgICB9CisgICAgaWYgKCFwcmVjaXNpb25WYWx1ZSkKKyAgICAgICAgcmV0dXJuIG1ha2VTdHJp
bmcocGFkKCcwJywgMiwgcGxhaW5UaW1lLmhvdXIoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5U
aW1lLm1pbnV0ZSgpKSwgJzonLCBwYWQoJzAnLCAyLCBwbGFpblRpbWUuc2Vjb25kKCkpKTsKKyAg
ICBhdXRvIGZyYWN0aW9uID0gV1RGOjpudW1iZXJUb1N0cmluZ1Vuc2lnbmVkPFZlY3RvcjxMQ2hh
ciwgOT4+KGZyYWN0aW9uTmFub3NlY29uZHMpOworICAgIHVuc2lnbmVkIHBhZGRpbmdMZW5ndGgg
PSA5IC0gZnJhY3Rpb24uc2l6ZSgpOworICAgIHBhZGRpbmdMZW5ndGggPSBzdGQ6Om1pbihwYWRk
aW5nTGVuZ3RoLCBwcmVjaXNpb25WYWx1ZSk7CisgICAgcHJlY2lzaW9uVmFsdWUgLT0gcGFkZGlu
Z0xlbmd0aDsKKyAgICBmcmFjdGlvbi5yZXNpemUocHJlY2lzaW9uVmFsdWUpOworICAgIHJldHVy
biBtYWtlU3RyaW5nKHBhZCgnMCcsIDIsIHBsYWluVGltZS5ob3VyKCkpLCAnOicsIHBhZCgnMCcs
IDIsIHBsYWluVGltZS5taW51dGUoKSksICc6JywgcGFkKCcwJywgMiwgcGxhaW5UaW1lLnNlY29u
ZCgpKSwgJy4nLCBwYWQoJzAnLCBwYWRkaW5nTGVuZ3RoLCBlbXB0eVN0cmluZygpKSwgZnJhY3Rp
b24pOworfQorCisvLyBJc1ZhbGlkRHVyYXRpb24gKCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5
cywgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBu
YW5vc2Vjb25kcyApCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10
ZW1wb3JhbC1pc3ZhbGlkZHVyYXRpb24KK2Jvb2wgaXNWYWxpZER1cmF0aW9uKGNvbnN0IER1cmF0
aW9uJiBkdXJhdGlvbikKK3sKKyAgICBpbnQgc2lnbiA9IDA7CisgICAgZm9yIChhdXRvIHZhbHVl
IDogZHVyYXRpb24pIHsKKyAgICAgICAgaWYgKCFzdGQ6OmlzZmluaXRlKHZhbHVlKSB8fCAodmFs
dWUgPCAwICYmIHNpZ24gPiAwKSB8fCAodmFsdWUgPiAwICYmIHNpZ24gPCAwKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBpZiAoIXNpZ24gJiYgdmFsdWUpCisgICAgICAg
ICAgICBzaWduID0gdmFsdWUgPiAwID8gMSA6IC0xOworICAgIH0KKworICAgIHJldHVybiB0cnVl
OworfQorCiB9IC8vIG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0lTTzg2MDEuaAppbmRleCA2NzY4OWQxYzI0NWFmZWUyYWMy
Njk1OWMyOTcwZGQ0OTYzYWUzMDAyLi44YmYwZmViNThiYzIyMzZhMDQ2ZmQwMjRiY2E1ODQwYTE1
OWVlZDBiIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JU084NjAx
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSVNPODYwMS5oCkBAIC0xLDUg
KzEsNiBAQAogLyoKICAqIENvcHlyaWdodCAoQykgMjAyMSBTb255IEludGVyYWN0aXZlIEVudGVy
dGFpbm1lbnQgSW5jLgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIEluYy4KICAqCiAgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjUsMzIgKzI2LDE0OCBAQAogCiAjcHJhZ21hIG9u
Y2UKIAorI2luY2x1ZGUgIkludGxPYmplY3QuaCIKICNpbmNsdWRlICJUZW1wb3JhbE9iamVjdC5o
IgogCiBuYW1lc3BhY2UgSlNDIHsKIG5hbWVzcGFjZSBJU084NjAxIHsKIAotc3RydWN0IER1cmF0
aW9uIHsKK2NsYXNzIER1cmF0aW9uIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChEdXJh
dGlvbik7CitwdWJsaWM6CiAgICAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBzdGQ6OmFycmF5PGRv
dWJsZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPjo6Y29uc3RfaXRlcmF0b3I7CiAKKyAgICBEdXJh
dGlvbigpID0gZGVmYXVsdDsKKyAgICBEdXJhdGlvbihkb3VibGUgeWVhcnMsIGRvdWJsZSBtb250
aHMsIGRvdWJsZSB3ZWVrcywgZG91YmxlIGRheXMsIGRvdWJsZSBob3VycywgZG91YmxlIG1pbnV0
ZXMsIGRvdWJsZSBzZWNvbmRzLCBkb3VibGUgbWlsbGlzZWNvbmRzLCBkb3VibGUgbWljcm9zZWNv
bmRzLCBkb3VibGUgbmFub3NlY29uZHMpCisgICAgICAgIDogbV9kYXRhIHsKKyAgICAgICAgICAg
IHllYXJzLAorICAgICAgICAgICAgbW9udGhzLAorICAgICAgICAgICAgd2Vla3MsCisgICAgICAg
ICAgICBkYXlzLAorICAgICAgICAgICAgaG91cnMsCisgICAgICAgICAgICBtaW51dGVzLAorICAg
ICAgICAgICAgc2Vjb25kcywKKyAgICAgICAgICAgIG1pbGxpc2Vjb25kcywKKyAgICAgICAgICAg
IG1pY3Jvc2Vjb25kcywKKyAgICAgICAgICAgIG5hbm9zZWNvbmRzLAorICAgICAgICB9CisgICAg
eyB9CisKICNkZWZpbmUgSlNDX0RFRklORV9JU084NjAxX0RVUkFUSU9OX0ZJRUxEKG5hbWUsIGNh
cGl0YWxpemVkTmFtZSkgXAotICAgIGRvdWJsZSBuYW1lIyNzKCkgY29uc3QgeyByZXR1cm4gZGF0
YVtzdGF0aWNfY2FzdDx1aW50OF90PihUZW1wb3JhbFVuaXQ6OmNhcGl0YWxpemVkTmFtZSldOyB9
IFwKLSAgICB2b2lkIHNldCMjY2FwaXRhbGl6ZWROYW1lIyNzKGRvdWJsZSB2YWx1ZSkgeyBkYXRh
W3N0YXRpY19jYXN0PHVpbnQ4X3Q+KFRlbXBvcmFsVW5pdDo6Y2FwaXRhbGl6ZWROYW1lKV0gPSB2
YWx1ZTsgfQorICAgIGRvdWJsZSBuYW1lIyNzKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhW3N0YXRp
Y19jYXN0PHVpbnQ4X3Q+KFRlbXBvcmFsVW5pdDo6Y2FwaXRhbGl6ZWROYW1lKV07IH0gXAorICAg
IHZvaWQgc2V0IyNjYXBpdGFsaXplZE5hbWUjI3MoZG91YmxlIHZhbHVlKSB7IG1fZGF0YVtzdGF0
aWNfY2FzdDx1aW50OF90PihUZW1wb3JhbFVuaXQ6OmNhcGl0YWxpemVkTmFtZSldID0gdmFsdWU7
IH0KICAgICBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX0RFRklORV9JU084NjAxX0RVUkFUSU9OX0ZJ
RUxEKTsKICN1bmRlZiBKU0NfREVGSU5FX0lTTzg2MDFfRFVSQVRJT05fRklFTEQKIAotICAgIGRv
dWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgeyByZXR1cm4gZGF0YVtpXTsgfQotICAgIGNvbnN0
IGRvdWJsZSYgb3BlcmF0b3JbXShzaXplX3QgaSkgY29uc3QgeyByZXR1cm4gZGF0YVtpXTsgfQot
ICAgIGNvbnN0X2l0ZXJhdG9yIGJlZ2luKCkgY29uc3QgeyByZXR1cm4gZGF0YS5iZWdpbigpOyB9
Ci0gICAgY29uc3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gZGF0YS5lbmQoKTsgfQot
ICAgIHZvaWQgY2xlYXIoKSB7IGRhdGEuZmlsbCgwKTsgfQorICAgIGRvdWJsZSYgb3BlcmF0b3Jb
XShzaXplX3QgaSkgeyByZXR1cm4gbV9kYXRhW2ldOyB9CisgICAgY29uc3QgZG91YmxlJiBvcGVy
YXRvcltdKHNpemVfdCBpKSBjb25zdCB7IHJldHVybiBtX2RhdGFbaV07IH0KKyAgICBjb25zdF9p
dGVyYXRvciBiZWdpbigpIGNvbnN0IHsgcmV0dXJuIG1fZGF0YS5iZWdpbigpOyB9CisgICAgY29u
c3RfaXRlcmF0b3IgZW5kKCkgY29uc3QgeyByZXR1cm4gbV9kYXRhLmVuZCgpOyB9CisgICAgdm9p
ZCBjbGVhcigpIHsgbV9kYXRhLmZpbGwoMCk7IH0KKworICAgIER1cmF0aW9uIG9wZXJhdG9yLSgp
IGNvbnN0CisgICAgeworICAgICAgICBEdXJhdGlvbiByZXN1bHQoKnRoaXMpOworICAgICAgICBm
b3IgKGF1dG8mIHZhbHVlIDogcmVzdWx0Lm1fZGF0YSkKKyAgICAgICAgICAgIHZhbHVlID0gLXZh
bHVlOworICAgICAgICByZXR1cm4gcmVzdWx0OworICAgIH0KKworcHJpdmF0ZToKKyAgICBzdGQ6
OmFycmF5PGRvdWJsZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPiBtX2RhdGEgeyB9OworfTsKKwor
Y2xhc3MgUGxhaW5UaW1lIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRChQbGFpblRpbWUp
OworcHVibGljOgorICAgIGNvbnN0ZXhwciBQbGFpblRpbWUoKQorICAgICAgICA6IG1faG91cigw
KQorICAgICAgICAsIG1fbWludXRlKDApCisgICAgICAgICwgbV9zZWNvbmQoMCkKKyAgICAgICAg
LCBtX21pbGxpc2Vjb25kKDApCisgICAgICAgICwgbV9taWNyb3NlY29uZCgwKQorICAgICAgICAs
IG1fbmFub3NlY29uZCgwKQorICAgIHsKKyAgICB9CisKKyAgICBQbGFpblRpbWUodW5zaWduZWQg
aG91ciwgdW5zaWduZWQgbWludXRlLCB1bnNpZ25lZCBzZWNvbmQsIHVuc2lnbmVkIG1pbGxpc2Vj
b25kLCB1bnNpZ25lZCBtaWNyb3NlY29uZCwgdW5zaWduZWQgbmFub3NlY29uZCkKKyAgICAgICAg
OiBtX2hvdXIoaG91cikKKyAgICAgICAgLCBtX21pbnV0ZShtaW51dGUpCisgICAgICAgICwgbV9z
ZWNvbmQoc2Vjb25kKQorICAgICAgICAsIG1fbWlsbGlzZWNvbmQobWlsbGlzZWNvbmQpCisgICAg
ICAgICwgbV9taWNyb3NlY29uZChtaWNyb3NlY29uZCkKKyAgICAgICAgLCBtX25hbm9zZWNvbmQo
bmFub3NlY29uZCkKKyAgICB7IH0KKworI2RlZmluZSBKU0NfREVGSU5FX0lTTzg2MDFfUExBSU5f
VElNRV9GSUVMRChuYW1lLCBjYXBpdGFsaXplZE5hbWUpIFwKKyAgICB1bnNpZ25lZCBuYW1lKCkg
Y29uc3QgeyByZXR1cm4gbV8jI25hbWU7IH0KKyAgICBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9V
TklUUyhKU0NfREVGSU5FX0lTTzg2MDFfUExBSU5fVElNRV9GSUVMRCk7CisjdW5kZWYgSlNDX0RF
RklORV9JU084NjAxX0RVUkFUSU9OX0ZJRUxECisKKyAgICBmcmllbmQgYm9vbCBvcGVyYXRvcj09
KFBsYWluVGltZSBsaHMsIFBsYWluVGltZSByaHMpCisgICAgeworICAgICAgICByZXR1cm4gbGhz
LmhvdXIoKSA9PSByaHMuaG91cigpCisgICAgICAgICAgICAmJiBsaHMubWludXRlKCkgPT0gcmhz
Lm1pbnV0ZSgpCisgICAgICAgICAgICAmJiBsaHMuc2Vjb25kKCkgPT0gcmhzLnNlY29uZCgpCisg
ICAgICAgICAgICAmJiBsaHMubWlsbGlzZWNvbmQoKSA9PSByaHMubWlsbGlzZWNvbmQoKQorICAg
ICAgICAgICAgJiYgbGhzLm1pY3Jvc2Vjb25kKCkgPT0gcmhzLm1pY3Jvc2Vjb25kKCkKKyAgICAg
ICAgICAgICYmIGxocy5uYW5vc2Vjb25kKCkgPT0gcmhzLm5hbm9zZWNvbmQoKTsKKyAgICB9CiAK
LSAgICBzdGQ6OmFycmF5PGRvdWJsZSwgbnVtYmVyT2ZUZW1wb3JhbFVuaXRzPiBkYXRhIHsgfTsK
K3ByaXZhdGU6CisgICAgdWludDhfdCBtX2hvdXIgeyAwIH07CisgICAgdWludDhfdCBtX21pbnV0
ZSB7IDAgfTsKKyAgICB1aW50OF90IG1fc2Vjb25kIHsgMCB9OworICAgIHVpbnQzMl90IG1fbWls
bGlzZWNvbmQgOiAxMDsKKyAgICB1aW50MzJfdCBtX21pY3Jvc2Vjb25kIDogMTA7CisgICAgdWlu
dDMyX3QgbV9uYW5vc2Vjb25kIDogMTA7CiB9Oworc3RhdGljX2Fzc2VydChzaXplb2YoUGxhaW5U
aW1lKSA8PSBzaXplb2YodWludDY0X3QpKTsKIAorLy8gTm90ZSB0aGF0IFBsYWluRGF0ZSBkb2Vz
IG5vdCBpbmNsdWRlIHdlZWsgdW5pdC4KKy8vIHllYXIgY2FuIGJlIG5lZ2F0aXZlLiBBbmQgbW9u
dGggYW5kIGRheSBzdGFydHMgd2l0aCAxLgorY2xhc3MgUGxhaW5EYXRlIHsKKyAgICBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRChQbGFpbkRhdGUpOworcHVibGljOgorICAgIFBsYWluRGF0ZSgpID0g
ZGVmYXVsdDsKKyAgICBQbGFpbkRhdGUoaW50MzJfdCB5ZWFyLCB1bnNpZ25lZCBtb250aCwgdW5z
aWduZWQgZGF5KQorICAgICAgICA6IG1feWVhcih5ZWFyKQorICAgICAgICAsIG1fbW9udGgobW9u
dGgpCisgICAgICAgICwgbV9kYXkoZGF5KQorICAgIHsKKyAgICB9CisKKyAgICBpbnQzMl90IHll
YXIoKSBjb25zdCB7IHJldHVybiBtX3llYXI7IH0KKyAgICB1aW50OF90IG1vbnRoKCkgY29uc3Qg
eyByZXR1cm4gbV9tb250aDsgfQorICAgIHVpbnQ4X3QgZGF5KCkgY29uc3QgeyByZXR1cm4gbV9k
YXk7IH0KKworcHJpdmF0ZToKKyAgICBpbnQzMl90IG1feWVhciB7IDAgfTsKKyAgICB1aW50OF90
IG1fbW9udGggeyAxIH07CisgICAgdWludDhfdCBtX2RheSB7IDEgfTsKK307CisKK3VzaW5nIFRp
bWVab25lID0gVmFyaWFudDxUaW1lWm9uZUlELCBpbnQ2NF90PjsKKworLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtcGFyc2V0ZW1wb3JhbHRpbWV6b25l
c3RyaW5nCisvLyBSZWNvcmQgeyBbW1pdXSwgW1tPZmZzZXRTdHJpbmddXSwgW1tOYW1lXV0gfQor
c3RydWN0IFRpbWVab25lUmVjb3JkIHsKKyAgICBib29sIG1feiB7IGZhbHNlIH07CisgICAgc3Rk
OjpvcHRpb25hbDxpbnQ2NF90PiBtX29mZnNldDsKKyAgICBWYXJpYW50PFZlY3RvcjxMQ2hhcj4s
IGludDY0X3Q+IG1fbmFtZU9yT2Zmc2V0OworfTsKKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzdXAtaXN2YWxpZHRpbWV6b25lbmFtZQorc3RkOjpvcHRpb25hbDxUaW1l
Wm9uZUlEPiBpZEZvclRpbWVab25lTmFtZShTdHJpbmdWaWV3KTsKIHN0ZDo6b3B0aW9uYWw8RHVy
YXRpb24+IHBhcnNlRHVyYXRpb24oU3RyaW5nVmlldyk7CiBzdGQ6Om9wdGlvbmFsPGludDY0X3Q+
IHBhcnNlVGltZVpvbmVOdW1lcmljVVRDT2Zmc2V0KFN0cmluZ1ZpZXcpOworZW51bSBjbGFzcyBW
YWxpZGF0ZVRpbWVab25lSUQgeyBZZXMsIE5vIH07CitzdGQ6Om9wdGlvbmFsPHN0ZDo6dHVwbGU8
UGxhaW5UaW1lLCBzdGQ6Om9wdGlvbmFsPFRpbWVab25lUmVjb3JkPj4+IHBhcnNlVGltZShTdHJp
bmdWaWV3KTsKK3N0ZDo6b3B0aW9uYWw8c3RkOjp0dXBsZTxQbGFpbkRhdGUsIHN0ZDo6b3B0aW9u
YWw8UGxhaW5UaW1lPiwgc3RkOjpvcHRpb25hbDxUaW1lWm9uZVJlY29yZD4+PiBwYXJzZURhdGVU
aW1lKFN0cmluZ1ZpZXcpOwogU3RyaW5nIGZvcm1hdFRpbWVab25lT2Zmc2V0U3RyaW5nKGludDY0
X3QpOworU3RyaW5nIHRlbXBvcmFsVGltZVRvU3RyaW5nKFBsYWluVGltZSwgc3RkOjp0dXBsZTxQ
cmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24pOworCitib29sIGlzVmFsaWREdXJhdGlvbihj
b25zdCBEdXJhdGlvbiYpOwogCiB9IC8vIG5hbWVzcGFjZSBJU084NjAxCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmpl
Y3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5k
ZXggOGQ4ZTk2ZTc3NTVkNThhYjg0MmUzNjBjZmFmYjE5ZDAwZmUyNjI3MC4uNzk3NTliYzVmYTQ0
ZmUyOTc3MjYwNWY1NmE1Y2E5YjA4OTU2MzFjMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSW50bE9iamVjdC5jcHAKQEAgLTE4MzksNiArMTgzOSwyMyBAQCBjb25zdCBWZWN0
b3I8U3RyaW5nPiYgaW50bEF2YWlsYWJsZVRpbWVab25lcygpCiAgICAgcmV0dXJuIGF2YWlsYWJs
ZVRpbWVab25lczsKIH0KIAorVGltZVpvbmVJRCB1dGNUaW1lWm9uZUlEU3RvcmFnZSB7IHN0ZDo6
bnVtZXJpY19saW1pdHM8VGltZVpvbmVJRD46Om1heCgpIH07CitUaW1lWm9uZUlEIHV0Y1RpbWVa
b25lSURTbG93KCkKK3sKKyAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgaW5pdGlhbGl6ZU9uY2U7
CisgICAgc3RkOjpjYWxsX29uY2UoaW5pdGlhbGl6ZU9uY2UsIFsmXSB7CisgICAgICAgIGNvbnN0
IGF1dG8mIHRpbWVab25lcyA9IGludGxBdmFpbGFibGVUaW1lWm9uZXMoKTsKKyAgICAgICAgZm9y
ICh1bnNpZ25lZCBpbmRleCA9IDA7IGluZGV4IDwgdGltZVpvbmVzLnNpemUoKTsgKytpbmRleCkg
eworICAgICAgICAgICAgaWYgKHRpbWVab25lc1tpbmRleF0gPT0gIlVUQyJfcykgeworICAgICAg
ICAgICAgICAgIHV0Y1RpbWVab25lSURTdG9yYWdlID0gaW5kZXg7CisgICAgICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgfSk7CisgICAgcmV0dXJuIHV0Y1RpbWVab25lSURTdG9yYWdl
OworfQorCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtaW50bC1lbnVtZXJhdGlvbi8jc2Vj
LWF2YWlsYWJsZXRpbWV6b25lcwogc3RhdGljIEpTQXJyYXkqIGF2YWlsYWJsZVRpbWVab25lcyhK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0KQogewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCmluZGV4IDk2ZDIxODU1YzljYTZmM2UzMTk2Yjc0ZWEwMmQwZWQ1
M2QzOWMxMzAuLmIzZTE1ZDMwYmE5M2I1YjIwNWI1NzNlMDg5ZWJiYmYzOWNlMjExM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKQEAgLTExNyw2ICsxMTcs
MTYgQEAgaW5saW5lIENhbGVuZGFySUQgaXNvODYwMUNhbGVuZGFySUQoKQogdXNpbmcgVGltZVpv
bmVJRCA9IHVuc2lnbmVkOwogY29uc3QgVmVjdG9yPFN0cmluZz4mIGludGxBdmFpbGFibGVUaW1l
Wm9uZXMoKTsKIAorZXh0ZXJuIFRpbWVab25lSUQgdXRjVGltZVpvbmVJRFN0b3JhZ2U7CitUaW1l
Wm9uZUlEIHV0Y1RpbWVab25lSURTbG93KCk7CitpbmxpbmUgQ2FsZW5kYXJJRCB1dGNUaW1lWm9u
ZUlEKCkKK3sKKyAgICB1bnNpZ25lZCB2YWx1ZSA9IHV0Y1RpbWVab25lSURTdG9yYWdlOworICAg
IGlmICh2YWx1ZSA9PSBzdGQ6Om51bWVyaWNfbGltaXRzPFRpbWVab25lSUQ+OjptYXgoKSkKKyAg
ICAgICAgcmV0dXJuIHV0Y1RpbWVab25lSURTbG93KCk7CisgICAgcmV0dXJuIHZhbHVlOworfQor
CiBUcmlTdGF0ZSBpbnRsQm9vbGVhbk9wdGlvbihKU0dsb2JhbE9iamVjdCosIEpTT2JqZWN0KiBv
cHRpb25zLCBQcm9wZXJ0eU5hbWUpOwogU3RyaW5nIGludGxTdHJpbmdPcHRpb24oSlNHbG9iYWxP
YmplY3QqLCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1lLCBzdGQ6OmluaXRpYWxpemVy
X2xpc3Q8Y29uc3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91bmQsIGNvbnN0IGNo
YXIqIGZhbGxiYWNrKTsKIHVuc2lnbmVkIGludGxOdW1iZXJPcHRpb24oSlNHbG9iYWxPYmplY3Qq
LCBKU09iamVjdCogb3B0aW9ucywgUHJvcGVydHlOYW1lLCB1bnNpZ25lZCBtaW5pbXVtLCB1bnNp
Z25lZCBtYXhpbXVtLCB1bnNpZ25lZCBmYWxsYmFjayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggYjJmZGY0NjQzNmU4Nzc2MDQ5
MDY0OGFmZDAxNDFjODIyMzYxNDk1MS4uNmRhNDU4ODM0MWEwMTZlOTFhYjkxMzY5MDM2ZjBjOTZk
YTQxNGZiNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9i
YWxPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFs
T2JqZWN0LmNwcApAQCAtMjA2LDYgKzIwNiw4IEBACiAjaW5jbHVkZSAiVGVtcG9yYWxEdXJhdGlv
bi5oIgogI2luY2x1ZGUgIlRlbXBvcmFsRHVyYXRpb25Qcm90b3R5cGUuaCIKICNpbmNsdWRlICJU
ZW1wb3JhbE9iamVjdC5oIgorI2luY2x1ZGUgIlRlbXBvcmFsUGxhaW5UaW1lLmgiCisjaW5jbHVk
ZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKICNpbmNsdWRlICJUZW1wb3JhbFRpbWVa
b25lLmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxUaW1lWm9uZVByb3RvdHlwZS5oIgogI2luY2x1ZGUg
IlZNVHJhcHNJbmxpbmVzLmgiCkBAIC0xMjMyLDYgKzEyMzQsMTMgQEAgY2FwaXRhbE5hbWUgIyMg
Q29uc3RydWN0b3IqIGxvd2VyTmFtZSAjIyBDb25zdHJ1Y3RvciA9IGZlYXR1cmVGbGFnID8gY2Fw
aXRhbE5hbWUKICAgICAgICAgICAgICAgICBpbml0LnNldChUZW1wb3JhbER1cmF0aW9uOjpjcmVh
dGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBkdXJhdGlvblByb3RvdHlwZSkpOwog
ICAgICAgICAgICAgfSk7CiAKKyAgICAgICAgbV9wbGFpblRpbWVTdHJ1Y3R1cmUuaW5pdExhdGVy
KAorICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0cnVjdHVyZT4mIGluaXQpIHsK
KyAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0ganNDYXN0PEpT
R2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICAgICAgVGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGUqIHBsYWluVGltZVByb3RvdHlwZSA9IFRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlOjpjcmVhdGUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBUZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZTo6Y3JlYXRlU3RydWN0dXJlKGluaXQudm0sIGdsb2JhbE9iamVjdCwgZ2xvYmFsT2Jq
ZWN0LT5vYmplY3RQcm90b3R5cGUoKSkpOworICAgICAgICAgICAgICAgIGluaXQuc2V0KFRlbXBv
cmFsUGxhaW5UaW1lOjpjcmVhdGVTdHJ1Y3R1cmUoaW5pdC52bSwgZ2xvYmFsT2JqZWN0LCBwbGFp
blRpbWVQcm90b3R5cGUpKTsKKyAgICAgICAgICAgIH0pOworCiAgICAgICAgIG1fdGltZVpvbmVT
dHJ1Y3R1cmUuaW5pdExhdGVyKAogICAgICAgICAgICAgW10gKGNvbnN0IEluaXRpYWxpemVyPFN0
cnVjdHVyZT4mIGluaXQpIHsKICAgICAgICAgICAgICAgICBKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0ID0ganNDYXN0PEpTR2xvYmFsT2JqZWN0Kj4oaW5pdC5vd25lcik7CkBAIC0yMTE5LDYg
KzIxMjgsNyBAQCB2b2lkIEpTR2xvYmFsT2JqZWN0Ojp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwq
IGNlbGwsIFZpc2l0b3ImIHZpc2l0b3IpCiAKICAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyU3Ry
dWN0dXJlLnZpc2l0KHZpc2l0b3IpOwogICAgIHRoaXNPYmplY3QtPm1fZHVyYXRpb25TdHJ1Y3R1
cmUudmlzaXQodmlzaXRvcik7CisgICAgdGhpc09iamVjdC0+bV9wbGFpblRpbWVTdHJ1Y3R1cmUu
dmlzaXQodmlzaXRvcik7CiAgICAgdGhpc09iamVjdC0+bV90aW1lWm9uZVN0cnVjdHVyZS52aXNp
dCh2aXNpdG9yKTsKIAogICAgIHZpc2l0b3IuYXBwZW5kKHRoaXNPYmplY3QtPm1fbnVsbEdldHRl
ckZ1bmN0aW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9i
amVjdC5oCmluZGV4IGRlYjMzZGJkMTAzMDgzYTE4ZjQwYmE3YWRjNTY5NTI2MDE0OTdkMjkuLjEy
OGIzOTkxMGRkODA1N2Y3YWFiYjU5Nzc3Y2E2ODBlOWRmNjE4OTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAtMzI2LDYgKzMyNiw3IEBA
IGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGljIEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3Qg
ewogCiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+IG1fY2FsZW5k
YXJTdHJ1Y3R1cmU7CiAgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBTdHJ1Y3R1cmU+
IG1fZHVyYXRpb25TdHJ1Y3R1cmU7CisgICAgTGF6eVByb3BlcnR5PEpTR2xvYmFsT2JqZWN0LCBT
dHJ1Y3R1cmU+IG1fcGxhaW5UaW1lU3RydWN0dXJlOwogICAgIExhenlQcm9wZXJ0eTxKU0dsb2Jh
bE9iamVjdCwgU3RydWN0dXJlPiBtX3RpbWVab25lU3RydWN0dXJlOwogCiAgICAgV3JpdGVCYXJy
aWVyPE51bGxHZXR0ZXJGdW5jdGlvbj4gbV9udWxsR2V0dGVyRnVuY3Rpb247CkBAIC04NzYsNiAr
ODc3LDcgQEAgY2xhc3MgSlNHbG9iYWxPYmplY3QgOiBwdWJsaWMgSlNTZWdtZW50ZWRWYXJpYWJs
ZU9iamVjdCB7CiAKICAgICBTdHJ1Y3R1cmUqIGNhbGVuZGFyU3RydWN0dXJlKCkgeyByZXR1cm4g
bV9jYWxlbmRhclN0cnVjdHVyZS5nZXQodGhpcyk7IH0KICAgICBTdHJ1Y3R1cmUqIGR1cmF0aW9u
U3RydWN0dXJlKCkgeyByZXR1cm4gbV9kdXJhdGlvblN0cnVjdHVyZS5nZXQodGhpcyk7IH0KKyAg
ICBTdHJ1Y3R1cmUqIHBsYWluVGltZVN0cnVjdHVyZSgpIHsgcmV0dXJuIG1fcGxhaW5UaW1lU3Ry
dWN0dXJlLmdldCh0aGlzKTsgfQogICAgIFN0cnVjdHVyZSogdGltZVpvbmVTdHJ1Y3R1cmUoKSB7
IHJldHVybiBtX3RpbWVab25lU3RydWN0dXJlLmdldCh0aGlzKTsgfQogCiAgICAgSlNfRVhQT1JU
X1BSSVZBVEUgdm9pZCBzZXRSZW1vdGVEZWJ1Z2dpbmdFbmFibGVkKGJvb2wpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVj
dG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsQ2FsZW5kYXJD
b25zdHJ1Y3Rvci5jcHAKaW5kZXggYTBmYWEzZmZjZDA0NDQ3NzJjNDFhNGNiNzM1NmEyZDY4Njcw
YTY5Yy4uNjUzMGRkMDFlYjY3YzUzY2Q4ZTllMzA4ODk5MTA1NjZlOGNiNTdmNCAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxDYWxlbmRhckNvbnN0cnVj
dG9yLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbENhbGVu
ZGFyQ29uc3RydWN0b3IuY3BwCkBAIC03Myw2ICs3Myw3IEBAIHZvaWQgVGVtcG9yYWxDYWxlbmRh
ckNvbnN0cnVjdG9yOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsQ2FsZW5kYXJQcm90
b3R5CiB7CiAgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJDYWxlbmRhciJfcywgUHJv
cGVydHlBZGRpdGlvbk1vZGU6OldpdGhvdXRTdHJ1Y3R1cmVUcmFuc2l0aW9uKTsKICAgICBwdXRE
aXJlY3RXaXRob3V0VHJhbnNpdGlvbih2bSwgdm0ucHJvcGVydHlOYW1lcy0+cHJvdG90eXBlLCB0
ZW1wb3JhbENhbGVuZGFyUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0gfCBQ
cm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFkT25s
eSk7CisgICAgdGVtcG9yYWxDYWxlbmRhclByb3RvdHlwZS0+cHV0RGlyZWN0V2l0aG91dFRyYW5z
aXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPmNvbnN0cnVjdG9yLCB0aGlzLCBzdGF0aWNfY2Fz
dDx1bnNpZ25lZD4oUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtKSk7CiB9CiAKIEpTQ19ERUZJ
TkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3JhbENhbGVuZGFyLCAoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxEdXJhdGlvbi5jcHAgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAppbmRleCAwZGEyNGE1
MjU1N2ViY2RlNThmMzVkZTE4ZDc2YzJlNzJiNjI2ZjhkLi4xYzEwMDU4NzIyMWUzMmM3NjNkNDNi
ZTc2ODIxZjBiZmVlYjNlYTQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9UZW1wb3JhbER1cmF0aW9uLmNwcApAQCAtNzIsMjIgKzcyLDYgQEAgdm9pZCBUZW1wb3Jh
bER1cmF0aW9uOjpmaW5pc2hDcmVhdGlvbihWTSYgdm0pCiAgICAgQVNTRVJUKGluaGVyaXRzKHZt
LCBpbmZvKCkpKTsKIH0KIAotLy8gSXNWYWxpZER1cmF0aW9uICggeWVhcnMsIG1vbnRocywgd2Vl
a3MsIGRheXMsIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vj
b25kcywgbmFub3NlY29uZHMgKQotLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwtaXN2YWxpZGR1cmF0aW9uCi1zdGF0aWMgYm9vbCBpc1ZhbGlkRHVyYXRp
b24oY29uc3QgVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMpCi17
Ci0gICAgaW50IHNpZ24gPSAwOwotICAgIGZvciAoYXV0byB2YWx1ZSA6IHN1YmR1cmF0aW9ucykg
ewotICAgICAgICBpZiAoIXN0ZDo6aXNmaW5pdGUodmFsdWUpIHx8ICh2YWx1ZSA8IDAgJiYgc2ln
biA+IDApIHx8ICh2YWx1ZSA+IDAgJiYgc2lnbiA8IDApKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgICAgIGlmICghc2lnbiAmJiB2YWx1ZSkKLSAgICAgICAgICAgIHNpZ24gPSB2
YWx1ZSA+IDAgPyAxIDogLTE7Ci0gICAgfQotCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KIC8vIENy
ZWF0ZVRlbXBvcmFsRHVyYXRpb24gKCB5ZWFycywgbW9udGhzLCB3ZWVrcywgZGF5cywgaG91cnMs
IG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNvbmRzLCBuYW5vc2Vjb25k
cyBbICwgbmV3VGFyZ2V0IF0gKQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFs
LyNzZWMtdGVtcG9yYWwtY3JlYXRldGVtcG9yYWxkdXJhdGlvbgogVGVtcG9yYWxEdXJhdGlvbiog
VGVtcG9yYWxEdXJhdGlvbjo6dHJ5Q3JlYXRlSWZWYWxpZChKU0dsb2JhbE9iamVjdCogZ2xvYmFs
T2JqZWN0LCBTdWJkdXJhdGlvbnMmJiBzdWJkdXJhdGlvbnMsIFN0cnVjdHVyZSogc3RydWN0dXJl
KQpAQCAtOTUsNyArNzksNyBAQCBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0
cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplYwogICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CiAKLSAgICBpZiAoIWlzVmFsaWREdXJhdGlvbihzdWJkdXJhdGlvbnMpKSB7CisgICAg
aWYgKCFJU084NjAxOjppc1ZhbGlkRHVyYXRpb24oc3ViZHVyYXRpb25zKSkgewogICAgICAgICB0
aHJvd1JhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLkR1cmF0aW9uIHBy
b3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUgYW5kIG9mIGNvbnNpc3RlbnQgc2lnbiJfcyk7CiAgICAg
ICAgIHJldHVybiB7IH07CiAgICAgfQpAQCAtMTA1LDE3ICs4OSwxNyBAQCBUZW1wb3JhbER1cmF0
aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplYwogCiAvLyBUb1RlbXBvcmFsRHVyYXRpb25SZWNvcmQgKCB0ZW1wb3JhbER1cmF0
aW9uTGlrZSApCiAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1w
b3JhbC10b3RlbXBvcmFsZHVyYXRpb25yZWNvcmQKLVRlbXBvcmFsRHVyYXRpb246OlN1YmR1cmF0
aW9ucyBUZW1wb3JhbER1cmF0aW9uOjpmcm9tT2JqZWN0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxP
YmplY3QsIEpTT2JqZWN0KiBkdXJhdGlvbkxpa2UpCitUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJh
dGlvbnMgVGVtcG9yYWxEdXJhdGlvbjo6ZnJvbU5vbkR1cmF0aW9uVmFsdWUoSlNHbG9iYWxPYmpl
Y3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSBkdXJhdGlvbkxpa2UpCiB7CiAgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOwogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKIAotICAgIEFTU0VSVCghZHVyYXRpb25MaWtlLT5pbmhlcml0czxUZW1wb3JhbER1cmF0
aW9uPih2bSkpOworICAgIEFTU0VSVCghZHVyYXRpb25MaWtlLmluaGVyaXRzPFRlbXBvcmFsRHVy
YXRpb24+KHZtKSk7CiAKICAgICBTdWJkdXJhdGlvbnMgcmVzdWx0OwogICAgIGF1dG8gaGFzUmVs
ZXZhbnRQcm9wZXJ0eSA9IGZhbHNlOwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbnVtYmVy
T2ZUZW1wb3JhbFVuaXRzOyBpKyspIHsKLSAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IGR1cmF0aW9u
TGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1lKHZtLCBpKSk7CisgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSBkdXJhdGlvbkxpa2UuZ2V0KGdsb2JhbE9iamVjdCwgcHJvcGVydHlOYW1l
KHZtLCBpKSk7CiAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAKICAg
ICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVkKCkpIHsKQEAgLTE1Miw3ICsxMzYsNyBAQCBUZW1w
b3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjp0b0R1cmF0aW9uKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEpTVgogICAgICAgICByZXR1cm4ganNDYXN0PFRlbXBvcmFsRHVyYXRp
b24qPihpdGVtVmFsdWUpOwogCiAgICAgaWYgKGl0ZW1WYWx1ZS5pc09iamVjdCgpKSB7Ci0gICAg
ICAgIGF1dG8gc3ViZHVyYXRpb25zID0gZnJvbU9iamVjdChnbG9iYWxPYmplY3QsIGFzT2JqZWN0
KGl0ZW1WYWx1ZSkpOworICAgICAgICBhdXRvIHN1YmR1cmF0aW9ucyA9IGZyb21Ob25EdXJhdGlv
blZhbHVlKGdsb2JhbE9iamVjdCwgaXRlbVZhbHVlKTsKICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgbnVsbHB0cik7CiAKICAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3Bl
LCBUZW1wb3JhbER1cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92
ZShzdWJkdXJhdGlvbnMpKSk7CkBAIC0xNzAsNiArMTU0LDE2IEBAIFRlbXBvcmFsRHVyYXRpb24q
IFRlbXBvcmFsRHVyYXRpb246OnRvRHVyYXRpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWCiAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBUZW1wb3JhbER1cmF0aW9uOjp0
cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShwYXJzZWRTdWJkdXJhdGlvbnMu
dmFsdWUoKSkpKTsKIH0KIAorVGVtcG9yYWxEdXJhdGlvbjo6U3ViZHVyYXRpb25zIFRlbXBvcmFs
RHVyYXRpb246OnRvRHVyYXRpb25SZWNvcmQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB0ZW1wb3JhbER1cmF0aW9uTGlrZSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisKKyAgICBpZiAodGVtcG9yYWxEdXJhdGlvbkxpa2UuaW5oZXJpdHM8VGVtcG9y
YWxEdXJhdGlvbj4odm0pKQorICAgICAgICByZXR1cm4ganNDYXN0PFRlbXBvcmFsRHVyYXRpb24q
Pih0ZW1wb3JhbER1cmF0aW9uTGlrZSktPnN1YmR1cmF0aW9ucygpOworCisgICAgcmV0dXJuIGZy
b21Ob25EdXJhdGlvblZhbHVlKGdsb2JhbE9iamVjdCwgdGVtcG9yYWxEdXJhdGlvbkxpa2UpOwor
fQorCiBUZW1wb3JhbER1cmF0aW9uKiBUZW1wb3JhbER1cmF0aW9uOjpmcm9tKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgaXRlbVZhbHVlKQogewogICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKQEAgLTUzMCw3ICs1MjQsMTAgQEAgU3RyaW5nIFRlbXBvcmFsRHVy
YXRpb246OnRvU3RyaW5nKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0
aW9uc1YKIAogICAgIFByZWNpc2lvbkRhdGEgZGF0YSA9IHNlY29uZHNTdHJpbmdQcmVjaXNpb24o
Z2xvYmFsT2JqZWN0LCBvcHRpb25zKTsKICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOwotICAgIEFTU0VSVChkYXRhLnVuaXQgPj0gVGVtcG9yYWxVbml0OjpTZWNvbmQpOworICAg
IGlmIChkYXRhLnVuaXQgPCBUZW1wb3JhbFVuaXQ6OlNlY29uZCkgeworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgInNtYWxsZXN0VW5pdCBtdXN0IG5vdCBiZSBc
Im1pbnV0ZVwiIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CiAKICAgICBhdXRvIHJv
dW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmplY3QsIG9wdGlv
bnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwKICAgICAgICAgeyB7ICJjZWlsIl9z
LCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9kZTo6Rmxvb3Ig
fSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwgeyAiaGFsZkV4cGFuZCJfcywg
Um91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0gfSwKQEAgLTUzOCw3ICs1MzUsNyBAQCBTdHJpbmcg
VGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSBvcHRpb25zVgogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAK
ICAgICAvLyBObyBuZWVkIHRvIG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUgZ2l2ZW4gZXhw
bGljaXQgZGVmYXVsdHMuCi0gICAgaWYgKCFkYXRhLnByZWNpc2lvbiAmJiByb3VuZGluZ01vZGUg
PT0gUm91bmRpbmdNb2RlOjpUcnVuYykKKyAgICBpZiAoc3RkOjpnZXQ8MD4oZGF0YS5wcmVjaXNp
b24pID09IFByZWNpc2lvbjo6QXV0byAmJiByb3VuZGluZ01vZGUgPT0gUm91bmRpbmdNb2RlOjpU
cnVuYykKICAgICAgICAgcmV0dXJuIHRvU3RyaW5nKCk7CiAKICAgICBTdWJkdXJhdGlvbnMgbmV3
U3ViZHVyYXRpb25zID0gbV9zdWJkdXJhdGlvbnM7CkBAIC01NDgsOSArNTQ1LDEwIEBAIFN0cmlu
ZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBKU1ZhbHVlIG9wdGlvbnNWCiAKIC8vIFRlbXBvcmFsRHVyYXRpb25Ub1N0cmluZyAoIHllYXJz
LCBtb250aHMsIHdlZWtzLCBkYXlzLCBob3VycywgbWludXRlcywgc2Vjb25kcywgbWlsbGlzZWNv
bmRzLCBtaWNyb3NlY29uZHMsIG5hbm9zZWNvbmRzLCBwcmVjaXNpb24gKQogLy8gaHR0cHM6Ly90
YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdGVtcG9yYWxkdXJhdGlvbnRv
c3RyaW5nCi1TdHJpbmcgVGVtcG9yYWxEdXJhdGlvbjo6dG9TdHJpbmcoY29uc3QgVGVtcG9yYWxE
dXJhdGlvbjo6U3ViZHVyYXRpb25zJiBzdWJkdXJhdGlvbnMsIHN0ZDo6b3B0aW9uYWw8dW5zaWdu
ZWQ+IHByZWNpc2lvbikKK1N0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhjb25zdCBU
ZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMmIHN1YmR1cmF0aW9ucywgc3RkOjp0dXBsZTxQ
cmVjaXNpb24sIHVuc2lnbmVkPiBwcmVjaXNpb24pCiB7Ci0gICAgQVNTRVJUKCFwcmVjaXNpb24g
fHwgcHJlY2lzaW9uLnZhbHVlKCkgPCAxMCk7CisgICAgYXV0byBbcHJlY2lzaW9uVHlwZSwgcHJl
Y2lzaW9uVmFsdWVdID0gcHJlY2lzaW9uOworICAgIEFTU0VSVChwcmVjaXNpb25UeXBlID09IFBy
ZWNpc2lvbjo6QXV0byB8fCBwcmVjaXNpb25WYWx1ZSA8IDEwKTsKIAogICAgIGF1dG8gYmFsYW5j
ZWRNaWNyb3NlY29uZHMgPSBzdWJkdXJhdGlvbnMubWljcm9zZWNvbmRzKCkgKyBzdGQ6OnRydW5j
KHN1YmR1cmF0aW9ucy5uYW5vc2Vjb25kcygpIC8gMTAwMCk7CiAgICAgYXV0byBiYWxhbmNlZE5h
bm9zZWNvbmRzID0gc3RkOjpmbW9kKHN1YmR1cmF0aW9ucy5uYW5vc2Vjb25kcygpLCAxMDAwKTsK
QEAgLTU5NywxMCArNTk1LDEwIEBAIFN0cmluZyBUZW1wb3JhbER1cmF0aW9uOjp0b1N0cmluZyhj
b25zdCBUZW1wb3JhbER1cmF0aW9uOjpTdWJkdXJhdGlvbnMmIHN1YmR1cmF0CiAgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKGZvcm1hdEludGVnZXIoYmFsYW5jZWRTZWNvbmRzKSk7CiAKICAgICAgICAg
YXV0byBmcmFjdGlvbiA9IHN0ZDo6YWJzKGJhbGFuY2VkTWlsbGlzZWNvbmRzKSAqIDFlNiArIHN0
ZDo6YWJzKGJhbGFuY2VkTWljcm9zZWNvbmRzKSAqIDFlMyArIHN0ZDo6YWJzKGJhbGFuY2VkTmFu
b3NlY29uZHMpOwotICAgICAgICBpZiAoKCFwcmVjaXNpb24gJiYgZnJhY3Rpb24pIHx8IChwcmVj
aXNpb24gJiYgcHJlY2lzaW9uLnZhbHVlKCkpKSB7CisgICAgICAgIGlmICgocHJlY2lzaW9uVHlw
ZSA9PSBQcmVjaXNpb246OkF1dG8gJiYgZnJhY3Rpb24pIHx8IChwcmVjaXNpb25UeXBlID09IFBy
ZWNpc2lvbjo6Rml4ZWQgJiYgcHJlY2lzaW9uVmFsdWUpKSB7CiAgICAgICAgICAgICBhdXRvIHBh
ZGRlZCA9IG1ha2VTdHJpbmcoJy4nLCBwYWQoJzAnLCA5LCBmcmFjdGlvbikpOwotICAgICAgICAg
ICAgaWYgKHByZWNpc2lvbikKLSAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdW
aWV3KHBhZGRlZCkubGVmdChwYWRkZWQubGVuZ3RoKCkgLSAoOSAtIHByZWNpc2lvbi52YWx1ZSgp
KSkpOworICAgICAgICAgICAgaWYgKHByZWNpc2lvblR5cGUgPT0gUHJlY2lzaW9uOjpGaXhlZCkK
KyAgICAgICAgICAgICAgICBidWlsZGVyLmFwcGVuZChTdHJpbmdWaWV3KHBhZGRlZCkubGVmdChw
YWRkZWQubGVuZ3RoKCkgLSAoOSAtIHByZWNpc2lvblZhbHVlKSkpOwogICAgICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICAgICAgYXV0byBsZW5ndGhXaXRob3V0VHJhaWxpbmdaZXJvZXMgPSBw
YWRkZWQubGVuZ3RoKCk7CiAgICAgICAgICAgICAgICAgd2hpbGUgKHBhZGRlZFtsZW5ndGhXaXRo
b3V0VHJhaWxpbmdaZXJvZXMgLSAxXSA9PSAnMCcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbER1cmF0aW9uLmgKaW5kZXggNTkyMDRkYzk1MzdhYWY3NjAxZTBl
OGQxNTcwNTZiZGExOWFmNzM1NS4uYmM0MzgzMzNjNTQwNTFkMmYxZGI1NTRlM2IzNDlkZTVhNGE5
YTQ2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxE
dXJhdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsRHVy
YXRpb24uaApAQCAtNjYsNyArNjYsMTUgQEAgY2xhc3MgVGVtcG9yYWxEdXJhdGlvbiBmaW5hbCA6
IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKICAgICBTdWJkdXJhdGlvbnMgcm91bmQoSlNHbG9i
YWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlvbnMpIGNvbnN0OwogICAgIGRvdWJsZSB0b3RhbChKU0ds
b2JhbE9iamVjdCosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CiAgICAgU3RyaW5nIHRvU3RyaW5n
KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKLSAgICBTdHJpbmcgdG9T
dHJpbmcoc3RkOjpvcHRpb25hbDx1bnNpZ25lZD4gcHJlY2lzaW9uID0gc3RkOjpudWxsb3B0KSBj
b25zdCB7IHJldHVybiB0b1N0cmluZyhtX3N1YmR1cmF0aW9ucywgcHJlY2lzaW9uKTsgfQorICAg
IFN0cmluZyB0b1N0cmluZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+IHByZWNpc2lv
biA9IHsgUHJlY2lzaW9uOjpBdXRvLCAwIH0pIGNvbnN0IHsgcmV0dXJuIHRvU3RyaW5nKG1fc3Vi
ZHVyYXRpb25zLCBwcmVjaXNpb24pOyB9CisKKyAgICBjb25zdCBTdWJkdXJhdGlvbnMmIHN1YmR1
cmF0aW9ucygpIGNvbnN0IHsgcmV0dXJuIG1fc3ViZHVyYXRpb25zOyB9CisKKyAgICBzdGF0aWMg
U3ViZHVyYXRpb25zIHRvRHVyYXRpb25SZWNvcmQoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsK
KworICAgIHN0YXRpYyBpbnQgc2lnbihjb25zdCBTdWJkdXJhdGlvbnMmKTsKKyAgICBzdGF0aWMg
ZG91YmxlIHJvdW5kKFN1YmR1cmF0aW9ucyYsIGRvdWJsZSBpbmNyZW1lbnQsIFRlbXBvcmFsVW5p
dCwgUm91bmRpbmdNb2RlKTsKKyAgICBzdGF0aWMgdm9pZCBiYWxhbmNlKFN1YmR1cmF0aW9ucyYs
IFRlbXBvcmFsVW5pdCBsYXJnZXN0VW5pdCk7CiAKIHByaXZhdGU6CiAgICAgVGVtcG9yYWxEdXJh
dGlvbihWTSYsIFN0cnVjdHVyZSosIFN1YmR1cmF0aW9ucyYmKTsKQEAgLTc0LDEyICs4Miw5IEBA
IGNsYXNzIFRlbXBvcmFsRHVyYXRpb24gZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7
CiAKICAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBDaGFyYWN0ZXJUeXBlPgogICAgIHN0YXRpYyBzdGQ6
Om9wdGlvbmFsPFN1YmR1cmF0aW9ucz4gcGFyc2UoU3RyaW5nUGFyc2luZ0J1ZmZlcjxDaGFyYWN0
ZXJUeXBlPiYpOwotICAgIHN0YXRpYyBTdWJkdXJhdGlvbnMgZnJvbU9iamVjdChKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0Kik7CisgICAgc3RhdGljIFN1YmR1cmF0aW9ucyBmcm9tTm9uRHVyYXRp
b25WYWx1ZShKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOwogCi0gICAgc3RhdGljIGludCBzaWdu
KGNvbnN0IFN1YmR1cmF0aW9ucyYpOwotICAgIHN0YXRpYyB2b2lkIGJhbGFuY2UoU3ViZHVyYXRp
b25zJiwgVGVtcG9yYWxVbml0IGxhcmdlc3RVbml0KTsKLSAgICBzdGF0aWMgZG91YmxlIHJvdW5k
KFN1YmR1cmF0aW9ucyYsIGRvdWJsZSBpbmNyZW1lbnQsIFRlbXBvcmFsVW5pdCwgUm91bmRpbmdN
b2RlKTsKLSAgICBzdGF0aWMgU3RyaW5nIHRvU3RyaW5nKGNvbnN0IFN1YmR1cmF0aW9ucyYsIHN0
ZDo6b3B0aW9uYWw8dW5zaWduZWQ+IHByZWNpc2lvbik7CisgICAgc3RhdGljIFN0cmluZyB0b1N0
cmluZyhjb25zdCBTdWJkdXJhdGlvbnMmLCBzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5zaWduZWQ+
IHByZWNpc2lvbik7CiAKICAgICBUZW1wb3JhbFVuaXQgbGFyZ2VzdFN1YmR1cmF0aW9uKCkgY29u
c3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
Tm93LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsTm93LmNwcApp
bmRleCBiMGE3ZWVlNGM0YTAxMzYwYmEzY2ZhNWFkNWU1YTQ3Yjk0YjY3MzNhLi43YzBmZWM1Mzkx
M2U4YzVkNjlkNWQ2M2ViYWE3ZmZkOTFkZmM4YjEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE5vdy5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvVGVtcG9yYWxOb3cuY3BwCkBAIC03Nyw3ICs3Nyw3IEBAIEpTQ19ERUZJTkVf
SE9TVF9GVU5DVElPTih0ZW1wb3JhbE5vd0Z1bmNUaW1lWm9uZSwgKEpTR2xvYmFsT2JqZWN0KiBn
bG9iYWxPYmplY3QsCiAgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOwogCiAgICAgU3Ry
aW5nIHRpbWVab25lU3RyaW5nID0gdm0uZGF0ZUNhY2hlLmRlZmF1bHRUaW1lWm9uZSgpOwotICAg
IHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IFRlbXBvcmFsVGltZVpvbmU6
OmlkRm9yVGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRp
bWVab25lSUQ+IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9u
ZVN0cmluZyk7CiAgICAgaWYgKCFpZGVudGlmaWVyKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKFRlbXBvcmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENPZmZzZXQodm0sIGdsb2JhbE9i
amVjdC0+dGltZVpvbmVTdHJ1Y3R1cmUoKSwgMCkpOwogICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoVGVtcG9yYWxUaW1lWm9uZTo6Y3JlYXRlRnJvbUlEKHZtLCBnbG9iYWxPYmplY3QtPnRpbWVa
b25lU3RydWN0dXJlKCksIGlkZW50aWZpZXIudmFsdWUoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuY3BwCmluZGV4IGIyNGUzYTllOWRhMjIw
MjZjMmEzYmZkYjI4YmFmN2NlZTNkM2VmOTcuLjhlMzdkN2NmZjM1Zjk4OWUzZWVmYWI0MDkzNTU4
MGFlMGI0ZGRlZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1Rl
bXBvcmFsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbE9iamVjdC5jcHAKQEAgLTMzLDYgKzMzLDggQEAKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0
aW9uQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uUHJvdG90eXBlLmgi
CiAjaW5jbHVkZSAiVGVtcG9yYWxOb3cuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZUNv
bnN0cnVjdG9yLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuaCIKICNp
bmNsdWRlICJUZW1wb3JhbFRpbWVab25lQ29uc3RydWN0b3IuaCIKICNpbmNsdWRlICJUZW1wb3Jh
bFRpbWVab25lUHJvdG90eXBlLmgiCiAKQEAgLTYxLDYgKzYzLDEzIEBAIHN0YXRpYyBKU1ZhbHVl
IGNyZWF0ZUR1cmF0aW9uQ29uc3RydWN0b3IoVk0mIHZtLCBKU09iamVjdCogb2JqZWN0KQogICAg
IHJldHVybiBUZW1wb3JhbER1cmF0aW9uQ29uc3RydWN0b3I6OmNyZWF0ZSh2bSwgVGVtcG9yYWxE
dXJhdGlvbkNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2JhbE9iamVjdCwgZ2xv
YmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PFRlbXBvcmFsRHVyYXRpb25Q
cm90b3R5cGUqPihnbG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCktPnN0b3JlZFByb3Rv
dHlwZU9iamVjdCgpKSk7CiB9CiAKK3N0YXRpYyBKU1ZhbHVlIGNyZWF0ZVBsYWluVGltZUNvbnN0
cnVjdG9yKFZNJiB2bSwgSlNPYmplY3QqIG9iamVjdCkKK3sKKyAgICBUZW1wb3JhbE9iamVjdCog
dGVtcG9yYWxPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxPYmplY3QqPihvYmplY3QpOworICAgIEpT
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSB0ZW1wb3JhbE9iamVjdC0+Z2xvYmFsT2JqZWN0
KHZtKTsKKyAgICByZXR1cm4gVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKHZt
LCBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGdsb2Jh
bE9iamVjdCwgZ2xvYmFsT2JqZWN0LT5mdW5jdGlvblByb3RvdHlwZSgpKSwganNDYXN0PFRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlKj4oZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUo
KS0+c3RvcmVkUHJvdG90eXBlT2JqZWN0KCkpKTsKK30KKwogc3RhdGljIEpTVmFsdWUgY3JlYXRl
VGltZVpvbmVDb25zdHJ1Y3RvcihWTSYgdm0sIEpTT2JqZWN0KiBvYmplY3QpCiB7CiAgICAgVGVt
cG9yYWxPYmplY3QqIHRlbXBvcmFsT2JqZWN0ID0ganNDYXN0PFRlbXBvcmFsT2JqZWN0Kj4ob2Jq
ZWN0KTsKQEAgLTc5LDYgKzg4LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAgIENhbGVuZGFyICAgICAg
IGNyZWF0ZUNhbGVuZGFyQ29uc3RydWN0b3IgICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFj
awogICBEdXJhdGlvbiAgICAgICBjcmVhdGVEdXJhdGlvbkNvbnN0cnVjdG9yICAgICAgIERvbnRF
bnVtfFByb3BlcnR5Q2FsbGJhY2sKICAgTm93ICAgICAgICAgICAgY3JlYXRlTm93T2JqZWN0ICAg
ICAgICAgICAgICAgICBEb250RW51bXxQcm9wZXJ0eUNhbGxiYWNrCisgIFBsYWluVGltZSAgICAg
IGNyZWF0ZVBsYWluVGltZUNvbnN0cnVjdG9yICAgICAgRG9udEVudW18UHJvcGVydHlDYWxsYmFj
awogICBUaW1lWm9uZSAgICAgICBjcmVhdGVUaW1lWm9uZUNvbnN0cnVjdG9yICAgICAgIERvbnRF
bnVtfFByb3BlcnR5Q2FsbGJhY2sKIEBlbmQKICovCkBAIC0yNDIsMTkgKzI1MiwyMSBAQCBQcmVj
aXNpb25EYXRhIHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9i
amVjdCwgSlNPYmplY3QqIG9wdAogICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKICAg
ICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CiAKLSAgICBhdXRvIHNtYWxs
ZXN0VW5pdCA9IHRlbXBvcmFsU21hbGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBU
ZW1wb3JhbFVuaXQ6OlllYXIsIFRlbXBvcmFsVW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2Vl
aywgVGVtcG9yYWxVbml0OjpEYXksIFRlbXBvcmFsVW5pdDo6SG91ciwgVGVtcG9yYWxVbml0OjpN
aW51dGUgfSk7CisgICAgYXV0byBzbWFsbGVzdFVuaXQgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChn
bG9iYWxPYmplY3QsIG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6
Ok1vbnRoLCBUZW1wb3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5LCBUZW1wb3JhbFVu
aXQ6OkhvdXIgfSk7CiAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAg
IGlmIChzbWFsbGVzdFVuaXQpIHsKICAgICAgICAgc3dpdGNoIChzbWFsbGVzdFVuaXQudmFsdWUo
KSkgeworICAgICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWludXRlOgorICAgICAgICAgICAgcmV0
dXJuIHsgeyBQcmVjaXNpb246Ok1pbnV0ZSwgMCB9LCBUZW1wb3JhbFVuaXQ6Ok1pbnV0ZSwgMSB9
OwogICAgICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6U2Vjb25kOgotICAgICAgICAgICAgcmV0dXJu
IHsgMCwgVGVtcG9yYWxVbml0OjpTZWNvbmQsIDEgfTsKKyAgICAgICAgICAgIHJldHVybiB7IHsg
UHJlY2lzaW9uOjpGaXhlZCwgMCB9LCBUZW1wb3JhbFVuaXQ6OlNlY29uZCwgMSB9OwogICAgICAg
ICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6Ci0gICAgICAgICAgICByZXR1cm4geyAz
LCBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLCAxIH07CisgICAgICAgICAgICByZXR1cm4geyB7
IFByZWNpc2lvbjo6Rml4ZWQsIDMgfSwgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZCwgMSB9Owog
ICAgICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6Ci0gICAgICAgICAgICByZXR1
cm4geyA2LCBUZW1wb3JhbFVuaXQ6Ok1pY3Jvc2Vjb25kLCAxIH07CisgICAgICAgICAgICByZXR1
cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIDYgfSwgVGVtcG9yYWxVbml0OjpNaWNyb3NlY29uZCwg
MSB9OwogICAgICAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZDoKLSAgICAgICAgICAg
IHJldHVybiB7IDksIFRlbXBvcmFsVW5pdDo6TmFub3NlY29uZCwgMSB9OworICAgICAgICAgICAg
cmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCA5IH0sIFRlbXBvcmFsVW5pdDo6TmFub3NlY29u
ZCwgMSB9OwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICAgICAgICAgIHJldHVybiB7IH07CkBAIC0yNjUsMjAgKzI3NywyNyBA
QCBQcmVjaXNpb25EYXRhIHNlY29uZHNTdHJpbmdQcmVjaXNpb24oSlNHbG9iYWxPYmplY3QqIGds
b2JhbE9iamVjdCwgSlNPYmplY3QqIG9wdAogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CiAKICAgICBpZiAoIXByZWNpc2lvbikKLSAgICAgICAgcmV0dXJuIHsgc3RkOjpudWxs
b3B0LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIDEgfTsKKyAgICAgICAgcmV0dXJuIHsgeyBQ
cmVjaXNpb246OkF1dG8sIDAgfSwgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25kLCAxIH07CisKKyAg
ICBhdXRvIHBvdzEwVW5zaWduZWQgPSBbXSh1bnNpZ25lZCBuKSAtPiB1bnNpZ25lZCB7CisgICAg
ICAgIHVuc2lnbmVkIHJlc3VsdCA9IDE7CisgICAgICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkg
PCBuOyArK2kpCisgICAgICAgICAgICByZXN1bHQgKj0gMTA7CisgICAgICAgIHJldHVybiByZXN1
bHQ7CisgICAgfTsKIAogICAgIHVuc2lnbmVkIGRpZ2l0cyA9IHByZWNpc2lvbi52YWx1ZSgpOwog
ICAgIGlmICghZGlnaXRzKQotICAgICAgICByZXR1cm4geyAwLCBUZW1wb3JhbFVuaXQ6OlNlY29u
ZCwgMSB9OworICAgICAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIDAgfSwgVGVtcG9y
YWxVbml0OjpTZWNvbmQsIDEgfTsKIAogICAgIGlmIChkaWdpdHMgPD0gMykKLSAgICAgICAgcmV0
dXJuIHsgZGlnaXRzLCBUZW1wb3JhbFVuaXQ6Ok1pbGxpc2Vjb25kLCBzdGQ6OnBvdygxMCwgMyAt
IGRpZ2l0cykgfTsKKyAgICAgICAgcmV0dXJuIHsgeyBQcmVjaXNpb246OkZpeGVkLCBkaWdpdHMg
fSwgVGVtcG9yYWxVbml0OjpNaWxsaXNlY29uZCwgcG93MTBVbnNpZ25lZCgzIC0gZGlnaXRzKSB9
OwogCiAgICAgaWYgKGRpZ2l0cyA8PSA2KQotICAgICAgICByZXR1cm4geyBkaWdpdHMsIFRlbXBv
cmFsVW5pdDo6TWljcm9zZWNvbmQsIHN0ZDo6cG93KDEwLCA2IC0gZGlnaXRzKSB9OworICAgICAg
ICByZXR1cm4geyB7IFByZWNpc2lvbjo6Rml4ZWQsIGRpZ2l0cyB9LCBUZW1wb3JhbFVuaXQ6Ok1p
Y3Jvc2Vjb25kLCBwb3cxMFVuc2lnbmVkKDYgLSBkaWdpdHMpIH07CiAKICAgICBBU1NFUlQoZGln
aXRzIDw9IDkpOwotICAgIHJldHVybiB7IGRpZ2l0cywgVGVtcG9yYWxVbml0OjpOYW5vc2Vjb25k
LCBzdGQ6OnBvdygxMCwgOSAtIGRpZ2l0cykgfTsKKyAgICByZXR1cm4geyB7IFByZWNpc2lvbjo6
Rml4ZWQsIGRpZ2l0cyB9LCBUZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQsIHBvdzEwVW5zaWduZWQo
OSAtIGRpZ2l0cykgfTsKIH0KIAogLy8gTWF4aW11bVRlbXBvcmFsRHVyYXRpb25Sb3VuZGluZ0lu
Y3JlbWVudCAoIHVuaXQgKQpAQCAtMzQyLDQgKzM2MSwxMSBAQCBkb3VibGUgcm91bmROdW1iZXJU
b0luY3JlbWVudChkb3VibGUgeCwgZG91YmxlIGluY3JlbWVudCwgUm91bmRpbmdNb2RlIG1vZGUp
CiAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAorVGVtcG9yYWxPdmVyZmxv
dyB0b1RlbXBvcmFsT3ZlcmZsb3coSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmpl
Y3QqIG9wdGlvbnMpCit7CisgICAgcmV0dXJuIGludGxPcHRpb248VGVtcG9yYWxPdmVyZmxvdz4o
Z2xvYmFsT2JqZWN0LCBvcHRpb25zLCBnbG9iYWxPYmplY3QtPnZtKCkucHJvcGVydHlOYW1lcy0+
b3ZlcmZsb3csCisgICAgICAgIHsgeyAiY29uc3RyYWluIl9zLCBUZW1wb3JhbE92ZXJmbG93OjpD
b25zdHJhaW4gfSwgeyAicmVqZWN0Il9zLCBUZW1wb3JhbE92ZXJmbG93OjpSZWplY3QgfSB9LAor
ICAgICAgICAib3ZlcmZsb3cgbXVzdCBiZSBlaXRoZXIgXCJjb25zdHJhaW5cIiBvciBcInJlamVj
dFwiIl9zLCBUZW1wb3JhbE92ZXJmbG93OjpDb25zdHJhaW4pOworfQorCiB9IC8vIG5hbWVzcGFj
ZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFs
T2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbE9iamVjdC5o
CmluZGV4IDcyNDNjOWJhNTg0MzI2MmQyZDBjYmI4MTkzM2Y0Y2RkMTMwOGZiNDguLjg5YTE1NmU4
YzE1YjgxMjVjMjA0NDEwYmVlMDRkYjdhZWQyYmEzODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxPYmplY3QuaApAQCAtMjEsMTQgKzIxLDExIEBACiAjcHJh
Z21hIG9uY2UKIAogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCisjaW5jbHVkZSA8d3RmL1ZhcmlhbnQu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CiAKLSNkZWZpbmUgSlNDX1RFTVBPUkFMX1VOSVRTKG1hY3Jv
KSBcCi0gICAgbWFjcm8oeWVhciwgWWVhcikgXAotICAgIG1hY3JvKG1vbnRoLCBNb250aCkgXAot
ICAgIG1hY3JvKHdlZWssIFdlZWspIFwKLSAgICBtYWNybyhkYXksIERheSkgXAorI2RlZmluZSBK
U0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhtYWNybykgXAogICAgIG1hY3JvKGhvdXIsIEhv
dXIpIFwKICAgICBtYWNybyhtaW51dGUsIE1pbnV0ZSkgXAogICAgIG1hY3JvKHNlY29uZCwgU2Vj
b25kKSBcCkBAIC0zNiw2ICszMywxNSBAQCBuYW1lc3BhY2UgSlNDIHsKICAgICBtYWNybyhtaWNy
b3NlY29uZCwgTWljcm9zZWNvbmQpIFwKICAgICBtYWNybyhuYW5vc2Vjb25kLCBOYW5vc2Vjb25k
KSBcCiAKKworI2RlZmluZSBKU0NfVEVNUE9SQUxfVU5JVFMobWFjcm8pIFwKKyAgICBtYWNybyh5
ZWFyLCBZZWFyKSBcCisgICAgbWFjcm8obW9udGgsIE1vbnRoKSBcCisgICAgbWFjcm8od2Vlaywg
V2VlaykgXAorICAgIG1hY3JvKGRheSwgRGF5KSBcCisgICAgSlNDX1RFTVBPUkFMX1BMQUlOX1RJ
TUVfVU5JVFMobWFjcm8pIFwKKworCiBlbnVtIGNsYXNzIFRlbXBvcmFsVW5pdCA6IHVpbnQ4X3Qg
ewogI2RlZmluZSBKU0NfREVGSU5FX1RFTVBPUkFMX1VOSVRfRU5VTShuYW1lLCBjYXBpdGFsaXpl
ZE5hbWUpIGNhcGl0YWxpemVkTmFtZSwKICAgICBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX0RFRklO
RV9URU1QT1JBTF9VTklUX0VOVU0pCkBAIC00Myw2ICs0OSw3IEBAIGVudW0gY2xhc3MgVGVtcG9y
YWxVbml0IDogdWludDhfdCB7CiB9OwogI2RlZmluZSBKU0NfQ09VTlRfVEVNUE9SQUxfVU5JVFMo
bmFtZSwgY2FwaXRhbGl6ZWROYW1lKSArIDEKIHN0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVt
YmVyT2ZUZW1wb3JhbFVuaXRzID0gMCBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX0NPVU5UX1RFTVBP
UkFMX1VOSVRTKTsKK3N0YXRpYyBjb25zdGV4cHIgdW5zaWduZWQgbnVtYmVyT2ZUZW1wb3JhbFBs
YWluVGltZVVuaXRzID0gMCBKU0NfVEVNUE9SQUxfUExBSU5fVElNRV9VTklUUyhKU0NfQ09VTlRf
VEVNUE9SQUxfVU5JVFMpOwogI3VuZGVmIEpTQ19DT1VOVF9URU1QT1JBTF9VTklUUwogCiBjbGFz
cyBUZW1wb3JhbE9iamVjdCBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKQEAgLTc0
LDEwICs4MSwxNiBAQCBlbnVtIGNsYXNzIFJvdW5kaW5nTW9kZSA6IHVpbnQ4X3QgewogICAgIEhh
bGZFeHBhbmQKIH07CiAKK2VudW0gY2xhc3MgUHJlY2lzaW9uIHsKKyAgICBNaW51dGUsCisgICAg
Rml4ZWQsCisgICAgQXV0bywKK307CisKIHN0cnVjdCBQcmVjaXNpb25EYXRhIHsKLSAgICBzdGQ6
Om9wdGlvbmFsPHVuc2lnbmVkPiBwcmVjaXNpb247CisgICAgc3RkOjp0dXBsZTxQcmVjaXNpb24s
IHVuc2lnbmVkPiBwcmVjaXNpb247CiAgICAgVGVtcG9yYWxVbml0IHVuaXQ7Ci0gICAgZG91Ymxl
IGluY3JlbWVudDsKKyAgICB1bnNpZ25lZCBpbmNyZW1lbnQ7CiB9OwogCiBzdGQ6Om9wdGlvbmFs
PFRlbXBvcmFsVW5pdD4gdGVtcG9yYWxVbml0VHlwZShTdHJpbmdWaWV3KTsKQEAgLTg5LDQgKzEw
MiwxMSBAQCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50KFRl
bXBvcmFsVW5pdCk7CiBkb3VibGUgdGVtcG9yYWxSb3VuZGluZ0luY3JlbWVudChKU0dsb2JhbE9i
amVjdCosIEpTT2JqZWN0KiBvcHRpb25zLCBzdGQ6Om9wdGlvbmFsPGRvdWJsZT4gZGl2aWRlbmQs
IGJvb2wgaW5jbHVzaXZlKTsKIGRvdWJsZSByb3VuZE51bWJlclRvSW5jcmVtZW50KGRvdWJsZSwg
ZG91YmxlIGluY3JlbWVudCwgUm91bmRpbmdNb2RlKTsKIAorZW51bSBjbGFzcyBUZW1wb3JhbE92
ZXJmbG93IDogdWludDhfdCB7CisgICAgQ29uc3RyYWluLAorICAgIFJlamVjdCwKK307CisKK1Rl
bXBvcmFsT3ZlcmZsb3cgdG9UZW1wb3JhbE92ZXJmbG93KEpTR2xvYmFsT2JqZWN0KiwgSlNPYmpl
Y3QqKTsKKwogfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2YyZmUyNDVhODdk
ZjY4YjA0M2E5NzI1NzI0NDBkMWQ2OTNhZmVmZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmNwcApAQCAtMCwwICsxLDY4
OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJ
QlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElU
UyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsg
T1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
bmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgorCisjaW5j
bHVkZSAiQWJzdHJhY3RTbG90VmlzaXRvci5oIgorI2luY2x1ZGUgIkludGxPYmplY3RJbmxpbmVz
LmgiCisjaW5jbHVkZSAiSlNDSW5saW5lcy5oIgorI2luY2x1ZGUgIkxhenlQcm9wZXJ0eUlubGlu
ZXMuaCIKKyNpbmNsdWRlICJUZW1wb3JhbER1cmF0aW9uLmgiCisjaW5jbHVkZSAiVk1UcmFwc0lu
bGluZXMuaCIKKworbmFtZXNwYWNlIEpTQyB7CituYW1lc3BhY2UgVGVtcG9yYWxQbGFpblRpbWVJ
bnRlcm5hbCB7CitzdGF0aWMgY29uc3RleHByIGJvb2wgdmVyYm9zZSA9IGZhbHNlOworfQorCitj
b25zdCBDbGFzc0luZm8gVGVtcG9yYWxQbGFpblRpbWU6OnNfaW5mbyA9IHsgIk9iamVjdCIsICZC
YXNlOjpzX2luZm8sIG51bGxwdHIsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9y
YWxQbGFpblRpbWUpIH07CisKK1RlbXBvcmFsUGxhaW5UaW1lKiBUZW1wb3JhbFBsYWluVGltZTo6
Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OlBsYWluVGltZSYm
IHBsYWluVGltZSkKK3sKKyAgICBhdXRvKiBvYmplY3QgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRl
Q2VsbDxUZW1wb3JhbFBsYWluVGltZT4odm0uaGVhcCkpIFRlbXBvcmFsUGxhaW5UaW1lKHZtLCBz
dHJ1Y3R1cmUsIFdURk1vdmUocGxhaW5UaW1lKSk7CisgICAgb2JqZWN0LT5maW5pc2hDcmVhdGlv
bih2bSk7CisgICAgcmV0dXJuIG9iamVjdDsKK30KKworU3RydWN0dXJlKiBUZW1wb3JhbFBsYWlu
VGltZTo6Y3JlYXRlU3RydWN0dXJlKFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVj
dCwgSlNWYWx1ZSBwcm90b3R5cGUpCit7CisgICAgcmV0dXJuIFN0cnVjdHVyZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2JqZWN0VHlwZSwgU3RydWN0dXJl
RmxhZ3MpLCBpbmZvKCkpOworfQorCitUZW1wb3JhbFBsYWluVGltZTo6VGVtcG9yYWxQbGFpblRp
bWUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgSVNPODYwMTo6UGxhaW5UaW1lJiYgcGxh
aW5UaW1lKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJlKQorICAgICwgbV9wbGFpblRpbWUoV1RG
TW92ZShwbGFpblRpbWUpKQoreworfQorCit2b2lkIFRlbXBvcmFsUGxhaW5UaW1lOjpmaW5pc2hD
cmVhdGlvbihWTSYgdm0pCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0pOworICAgIEFT
U0VSVChpbmhlcml0cyh2bSwgaW5mbygpKSk7CisgICAgbV9jYWxlbmRhci5pbml0TGF0ZXIoCisg
ICAgICAgIFtdIChjb25zdCBhdXRvJiBpbml0KSB7CisgICAgICAgICAgICBWTSYgdm0gPSBpbml0
LnZtOworICAgICAgICAgICAgYXV0byogcGxhaW5UaW1lID0ganNDYXN0PFRlbXBvcmFsUGxhaW5U
aW1lKj4oaW5pdC5vd25lcik7CisgICAgICAgICAgICBhdXRvKiBnbG9iYWxPYmplY3QgPSBwbGFp
blRpbWUtPmdsb2JhbE9iamVjdCh2bSk7CisgICAgICAgICAgICBhdXRvKiBjYWxlbmRhciA9IFRl
bXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5jYWxlbmRhclN0cnVjdHVy
ZSgpLCBpc284NjAxQ2FsZW5kYXJJRCgpKTsKKyAgICAgICAgICAgIGluaXQuc2V0KGNhbGVuZGFy
KTsKKyAgICAgICAgfSk7Cit9CisKK3RlbXBsYXRlPHR5cGVuYW1lIFZpc2l0b3I+Cit2b2lkIFRl
bXBvcmFsUGxhaW5UaW1lOjp2aXNpdENoaWxkcmVuSW1wbChKU0NlbGwqIGNlbGwsIFZpc2l0b3Im
IHZpc2l0b3IpCit7CisgICAgQmFzZTo6dmlzaXRDaGlsZHJlbihjZWxsLCB2aXNpdG9yKTsKKwor
ICAgIGF1dG8qIHRoaXNPYmplY3QgPSBqc0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPihjZWxsKTsK
KyAgICB0aGlzT2JqZWN0LT5tX2NhbGVuZGFyLnZpc2l0KHZpc2l0b3IpOworfQorCitERUZJTkVf
VklTSVRfQ0hJTERSRU4oVGVtcG9yYWxQbGFpblRpbWUpOworCisvLyBodHRwczovL3RjMzkuZXMv
cHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1pc3ZhbGlkdGltZQorc3RhdGljIElTTzg2
MDE6OlBsYWluVGltZSB0b1BsYWluVGltZShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBJ
U084NjAxOjpEdXJhdGlvbiYmIGR1cmF0aW9uKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVj
dC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAg
ICBkb3VibGUgaG91ciA9IGR1cmF0aW9uLmhvdXJzKCk7CisgICAgZG91YmxlIG1pbnV0ZSA9IGR1
cmF0aW9uLm1pbnV0ZXMoKTsKKyAgICBkb3VibGUgc2Vjb25kID0gZHVyYXRpb24uc2Vjb25kcygp
OworICAgIGRvdWJsZSBtaWxsaXNlY29uZCA9IGR1cmF0aW9uLm1pbGxpc2Vjb25kcygpOworICAg
IGRvdWJsZSBtaWNyb3NlY29uZCA9IGR1cmF0aW9uLm1pY3Jvc2Vjb25kcygpOworICAgIGRvdWJs
ZSBuYW5vc2Vjb25kID0gZHVyYXRpb24ubmFub3NlY29uZHMoKTsKKyAgICBpZiAoIShob3VyID49
IDAgJiYgaG91ciA8PSAyMykpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJob3VyIGlzIG91dCBvZiByYW5nZSJfcyk7CisgICAgICAgIHJldHVybiB7IH07
CisgICAgfQorICAgIGlmICghKG1pbnV0ZSA+PSAwICYmIG1pbnV0ZSA8PSA1OSkpIHsKKyAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJtaW51dGUgaXMgb3V0IG9m
IHJhbmdlIl9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisgICAgaWYgKCEoc2Vjb25k
ID49IDAgJiYgc2Vjb25kIDw9IDU5KSkgeworICAgICAgICB0aHJvd1JhbmdlRXJyb3IoZ2xvYmFs
T2JqZWN0LCBzY29wZSwgInNlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1
cm4geyB9OworICAgIH0KKyAgICBpZiAoIShtaWxsaXNlY29uZCA+PSAwICYmIG1pbGxpc2Vjb25k
IDw9IDk5OSkpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUs
ICJtaWxsaXNlY29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9Owor
ICAgIH0KKyAgICBpZiAoIShtaWNyb3NlY29uZCA+PSAwICYmIG1pY3Jvc2Vjb25kIDw9IDk5OSkp
IHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJtaWNyb3Nl
Y29uZCBpcyBvdXQgb2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAg
ICBpZiAoIShuYW5vc2Vjb25kID49IDAgJiYgbmFub3NlY29uZCA8PSA5OTkpKSB7CisgICAgICAg
IHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAibmFub3NlY29uZCBpcyBvdXQg
b2YgcmFuZ2UiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICByZXR1cm4gSVNP
ODYwMTo6UGxhaW5UaW1lIHsKKyAgICAgICAgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KGhvdXIpLAor
ICAgICAgICBzdGF0aWNfY2FzdDx1bnNpZ25lZD4obWludXRlKSwKKyAgICAgICAgc3RhdGljX2Nh
c3Q8dW5zaWduZWQ+KHNlY29uZCksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtaWxs
aXNlY29uZCksCisgICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihtaWNyb3NlY29uZCksCisg
ICAgICAgIHN0YXRpY19jYXN0PHVuc2lnbmVkPihuYW5vc2Vjb25kKQorICAgIH07Cit9CisKKy8v
IENyZWF0ZVRlbXBvcmFsUGxhaW5UaW1lICggeWVhcnMsIG1vbnRocywgd2Vla3MsIGRheXMsIGhv
dXJzLCBtaW51dGVzLCBzZWNvbmRzLCBtaWxsaXNlY29uZHMsIG1pY3Jvc2Vjb25kcywgbmFub3Nl
Y29uZHMgWyAsIG5ld1RhcmdldCBdICkKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1w
b3JhbC8jc2VjLXRlbXBvcmFsLWNyZWF0ZXRlbXBvcmFscGxhaW5UaW1lCitUZW1wb3JhbFBsYWlu
VGltZSogVGVtcG9yYWxQbGFpblRpbWU6OnRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgU3RydWN0dXJlKiBzdHJ1Y3R1cmUsIElTTzg2MDE6OkR1cmF0aW9uJiYg
ZHVyYXRpb24pCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8gcGxhaW5UaW1lID0g
dG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGR1cmF0aW9uKSk7CisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGlt
ZTo6Y3JlYXRlKHZtLCBzdHJ1Y3R1cmUsIFdURk1vdmUocGxhaW5UaW1lKSk7Cit9CisKK3N0YXRp
YyBkb3VibGUgbm9uTmVnYXRpdmVNb2R1bG8oZG91YmxlIHgsIGRvdWJsZSB5KQoreworICAgIGRv
dWJsZSByZXN1bHQgPSBzdGQ6OmZtb2QoeCwgeSk7CisgICAgaWYgKCFyZXN1bHQpCisgICAgICAg
IHJldHVybiAwOworICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICByZXN1bHQgKz0geTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3NlYy10ZW1wb3JhbC1iYWxhbmNldGltZQorc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIGJh
bGFuY2VUaW1lKGRvdWJsZSBob3VyLCBkb3VibGUgbWludXRlLCBkb3VibGUgc2Vjb25kLCBkb3Vi
bGUgbWlsbGlzZWNvbmQsIGRvdWJsZSBtaWNyb3NlY29uZCwgZG91YmxlIG5hbm9zZWNvbmQpCit7
CisgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3RjMzkvcHJvcG9zYWwtdGVtcG9yYWwvaXNzdWVz
LzE4MDQKKyAgICAvLyBVc2Ugbm9uLW5lZ2F0aXZlIG1vZHVsbyBvcGVyYXRpb24uCisgICAgbWlj
cm9zZWNvbmQgKz0gc3RkOjpmbG9vcihuYW5vc2Vjb25kIC8gMTAwMCk7CisgICAgbmFub3NlY29u
ZCA9IG5vbk5lZ2F0aXZlTW9kdWxvKG5hbm9zZWNvbmQsIDEwMDApOworICAgIG1pbGxpc2Vjb25k
ICs9IHN0ZDo6Zmxvb3IobWljcm9zZWNvbmQgLyAxMDAwKTsKKyAgICBtaWNyb3NlY29uZCA9IG5v
bk5lZ2F0aXZlTW9kdWxvKG1pY3Jvc2Vjb25kLCAxMDAwKTsKKyAgICBzZWNvbmQgKz0gc3RkOjpm
bG9vcihtaWxsaXNlY29uZCAvIDEwMDApOworICAgIG1pbGxpc2Vjb25kID0gbm9uTmVnYXRpdmVN
b2R1bG8obWlsbGlzZWNvbmQsIDEwMDApOworICAgIG1pbnV0ZSArPSBzdGQ6OmZsb29yKHNlY29u
ZCAvIDYwKTsKKyAgICBzZWNvbmQgPSBub25OZWdhdGl2ZU1vZHVsbyhzZWNvbmQsIDYwKTsKKyAg
ICBob3VyICs9IHN0ZDo6Zmxvb3IobWludXRlIC8gNjApOworICAgIG1pbnV0ZSA9IG5vbk5lZ2F0
aXZlTW9kdWxvKG1pbnV0ZSwgNjApOworICAgIGRvdWJsZSBkYXlzID0gc3RkOjpmbG9vcihob3Vy
IC8gMjQpOworICAgIGhvdXIgPSBub25OZWdhdGl2ZU1vZHVsbyhob3VyLCAyNCk7CisgICAgcmV0
dXJuIElTTzg2MDE6OkR1cmF0aW9uKDAsIDAsIDAsIGRheXMsIGhvdXIsIG1pbnV0ZSwgc2Vjb25k
LCBtaWxsaXNlY29uZCwgbWljcm9zZWNvbmQsIG5hbm9zZWNvbmQpOworfQorCisvLyBodHRwczov
L3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC1yb3VuZHRpbWUKK3N0YXRp
YyBJU084NjAxOjpEdXJhdGlvbiByb3VuZFRpbWUoSVNPODYwMTo6UGxhaW5UaW1lIHBsYWluVGlt
ZSwgZG91YmxlIGluY3JlbWVudCwgVGVtcG9yYWxVbml0IHVuaXQsIFJvdW5kaW5nTW9kZSByb3Vu
ZGluZ01vZGUsIHN0ZDo6b3B0aW9uYWw8ZG91YmxlPiBkYXlMZW5ndGhOcykKK3sKKyAgICBhdXRv
IGZyYWN0aW9uYWxTZWNvbmQgPSBbXShJU084NjAxOjpQbGFpblRpbWUgcGxhaW5UaW1lKSAtPiBk
b3VibGUgeworICAgICAgICByZXR1cm4gcGxhaW5UaW1lLnNlY29uZCgpICsgcGxhaW5UaW1lLm1p
bGxpc2Vjb25kKCkgKiAxZS0zICsgcGxhaW5UaW1lLm1pY3Jvc2Vjb25kKCkgKiAxZS02ICsgcGxh
aW5UaW1lLm5hbm9zZWNvbmQoKSAqIDFlLTk7CisgICAgfTsKKworICAgIGRvdWJsZSBxdWFudGl0
eSA9IDA7CisgICAgc3dpdGNoICh1bml0KSB7CisgICAgY2FzZSBUZW1wb3JhbFVuaXQ6OkRheTog
eworICAgICAgICBkb3VibGUgbGVuZ3RoID0gZGF5TGVuZ3RoTnMudmFsdWVfb3IoOC42NCAqIDFl
KzEzKTsKKyAgICAgICAgcXVhbnRpdHkgPSAoKCgocGxhaW5UaW1lLmhvdXIoKSAqIDYwLjAgKyBw
bGFpblRpbWUubWludXRlKCkpICogNjAuMCArIHBsYWluVGltZS5zZWNvbmQoKSkgKiAxMDAwLjAg
KyBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSkgKiAxMDAwLjAgKyBwbGFpblRpbWUubmFub3NlY29u
ZCgpKSAvIGxlbmd0aDsKKyAgICAgICAgYXV0byByZXN1bHQgPSByb3VuZE51bWJlclRvSW5jcmVt
ZW50KHF1YW50aXR5LCBpbmNyZW1lbnQsIHJvdW5kaW5nTW9kZSk7CisgICAgICAgIHJldHVybiBJ
U084NjAxOjpEdXJhdGlvbigwLCAwLCAwLCByZXN1bHQsIDAsIDAsIDAsIDAsIDAsIDApOworICAg
IH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6SG91cjogeworICAgICAgICBxdWFudGl0eSA9IChm
cmFjdGlvbmFsU2Vjb25kKHBsYWluVGltZSkgLyA2MC4wICsgcGxhaW5UaW1lLm1pbnV0ZSgpKSAv
IDYwLjAgKyBwbGFpblRpbWUuaG91cigpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVt
YmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAg
ICAgcmV0dXJuIGJhbGFuY2VUaW1lKHJlc3VsdCwgMCwgMCwgMCwgMCwgMCk7CisgICAgfQorICAg
IGNhc2UgVGVtcG9yYWxVbml0OjpNaW51dGU6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBmcmFjdGlv
bmFsU2Vjb25kKHBsYWluVGltZSkgLyA2MC4wICsgcGxhaW5UaW1lLm1pbnV0ZSgpOworICAgICAg
ICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVu
dCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5o
b3VyKCksIHJlc3VsdCwgMCwgMCwgMCwgMCk7CisgICAgfQorICAgIGNhc2UgVGVtcG9yYWxVbml0
OjpTZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBmcmFjdGlvbmFsU2Vjb25kKHBsYWluVGlt
ZSk7CisgICAgICAgIGF1dG8gcmVzdWx0ID0gcm91bmROdW1iZXJUb0luY3JlbWVudChxdWFudGl0
eSwgaW5jcmVtZW50LCByb3VuZGluZ01vZGUpOworICAgICAgICByZXR1cm4gYmFsYW5jZVRpbWUo
cGxhaW5UaW1lLmhvdXIoKSwgcGxhaW5UaW1lLm1pbnV0ZSgpLCByZXN1bHQsIDAsIDAsIDApOwor
ICAgIH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWlsbGlzZWNvbmQ6IHsKKyAgICAgICAgcXVh
bnRpdHkgPSBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSArIHBsYWluVGltZS5taWNyb3NlY29uZCgp
ICogMWUtMyArIHBsYWluVGltZS5uYW5vc2Vjb25kKCkgKiAxZS02OworICAgICAgICBhdXRvIHJl
c3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRp
bmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBs
YWluVGltZS5taW51dGUoKSwgcGxhaW5UaW1lLnNlY29uZCgpLCByZXN1bHQsIDAsIDApOworICAg
IH0KKyAgICBjYXNlIFRlbXBvcmFsVW5pdDo6TWljcm9zZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRp
dHkgPSBwbGFpblRpbWUubWljcm9zZWNvbmQoKSArIHBsYWluVGltZS5uYW5vc2Vjb25kKCkgKiAx
ZS0zOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1lbnQocXVhbnRp
dHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJhbGFuY2VUaW1l
KHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5taW51dGUoKSwgcGxhaW5UaW1lLnNlY29uZCgp
LCBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSwgcmVzdWx0LCAwKTsKKyAgICB9CisgICAgY2FzZSBU
ZW1wb3JhbFVuaXQ6Ok5hbm9zZWNvbmQ6IHsKKyAgICAgICAgcXVhbnRpdHkgPSBwbGFpblRpbWUu
bmFub3NlY29uZCgpOworICAgICAgICBhdXRvIHJlc3VsdCA9IHJvdW5kTnVtYmVyVG9JbmNyZW1l
bnQocXVhbnRpdHksIGluY3JlbWVudCwgcm91bmRpbmdNb2RlKTsKKyAgICAgICAgcmV0dXJuIGJh
bGFuY2VUaW1lKHBsYWluVGltZS5ob3VyKCksIHBsYWluVGltZS5taW51dGUoKSwgcGxhaW5UaW1l
LnNlY29uZCgpLCBwbGFpblRpbWUubWlsbGlzZWNvbmQoKSwgcGxhaW5UaW1lLm1pY3Jvc2Vjb25k
KCksIHJlc3VsdCk7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICAgIFJFTEVBU0VfQVNTRVJU
X05PVF9SRUFDSEVEKCk7CisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworSVNPODYwMTo6UGxh
aW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjpyb3VuZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2Jq
ZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxP
YmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwor
CisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9iYWxPYmpl
Y3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsK
KworICAgIGF1dG8gc21hbGxlc3QgPSB0ZW1wb3JhbFNtYWxsZXN0VW5pdChnbG9iYWxPYmplY3Qs
IG9wdGlvbnMsIHsgVGVtcG9yYWxVbml0OjpZZWFyLCBUZW1wb3JhbFVuaXQ6Ok1vbnRoLCBUZW1w
b3JhbFVuaXQ6OldlZWssIFRlbXBvcmFsVW5pdDo6RGF5IH0pOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisgICAgaWYgKCFzbWFsbGVzdCkgeworICAgICAgICB0aHJvd1Jh
bmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIkNhbm5vdCByb3VuZCB3aXRob3V0IGEgc21h
bGxlc3RVbml0IG9wdGlvbiJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorICAgIFRl
bXBvcmFsVW5pdCBzbWFsbGVzdFVuaXQgPSBzbWFsbGVzdC52YWx1ZSgpOworCisgICAgYXV0byBy
b3VuZGluZ01vZGUgPSBpbnRsT3B0aW9uPFJvdW5kaW5nTW9kZT4oZ2xvYmFsT2JqZWN0LCBvcHRp
b25zLCB2bS5wcm9wZXJ0eU5hbWVzLT5yb3VuZGluZ01vZGUsCisgICAgICAgIHsgeyAiY2VpbCJf
cywgUm91bmRpbmdNb2RlOjpDZWlsIH0sIHsgImZsb29yIl9zLCBSb3VuZGluZ01vZGU6OkZsb29y
IH0sIHsgInRydW5jIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jIH0sIHsgImhhbGZFeHBhbmQiX3Ms
IFJvdW5kaW5nTW9kZTo6SGFsZkV4cGFuZCB9IH0sCisgICAgICAgICJyb3VuZGluZ01vZGUgbXVz
dCBiZSBlaXRoZXIgXCJjZWlsXCIsIFwiZmxvb3JcIiwgXCJ0cnVuY1wiLCBvciBcImhhbGZFeHBh
bmRcIiJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5kaW5n
SW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bVJvdW5kaW5nSW5jcmVtZW50
KHNtYWxsZXN0VW5pdCksIGZhbHNlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgYXV0byBkdXJhdGlvbiA9IHJvdW5kVGltZShtX3BsYWluVGltZSwgaW5jcmVt
ZW50LCBzbWFsbGVzdFVuaXQsIHJvdW5kaW5nTW9kZSwgc3RkOjpudWxsb3B0KTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvUGxhaW5UaW1lKGdsb2JhbE9iamVjdCwgV1RGTW92ZShk
dXJhdGlvbikpKTsKK30KKworU3RyaW5nIFRlbXBvcmFsUGxhaW5UaW1lOjp0b1N0cmluZyhKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sK
KyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0
aW9uc09iamVjdChnbG9iYWxPYmplY3QsIG9wdGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VY
Q0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGlmICghb3B0aW9ucykKKyAgICAgICAgcmV0dXJu
IHRvU3RyaW5nKCk7CisKKyAgICBQcmVjaXNpb25EYXRhIGRhdGEgPSBzZWNvbmRzU3RyaW5nUHJl
Y2lzaW9uKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKworICAgIGF1dG8gcm91bmRpbmdNb2RlID0gaW50bE9wdGlvbjxSb3VuZGlu
Z01vZGU+KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgdm0ucHJvcGVydHlOYW1lcy0+cm91bmRpbmdN
b2RlLAorICAgICAgICB7IHsgImNlaWwiX3MsIFJvdW5kaW5nTW9kZTo6Q2VpbCB9LCB7ICJmbG9v
ciJfcywgUm91bmRpbmdNb2RlOjpGbG9vciB9LCB7ICJ0cnVuYyJfcywgUm91bmRpbmdNb2RlOjpU
cnVuYyB9LCB7ICJoYWxmRXhwYW5kIl9zLCBSb3VuZGluZ01vZGU6OkhhbGZFeHBhbmQgfSB9LAor
ICAgICAgICAicm91bmRpbmdNb2RlIG11c3QgYmUgZWl0aGVyIFwiY2VpbFwiLCBcImZsb29yXCIs
IFwidHJ1bmNcIiwgb3IgXCJoYWxmRXhwYW5kXCIiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMpOwor
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICAvLyBObyBuZWVkIHRv
IG1ha2UgYSBuZXcgb2JqZWN0IGlmIHdlIHdlcmUgZ2l2ZW4gZXhwbGljaXQgZGVmYXVsdHMuCisg
ICAgaWYgKHN0ZDo6Z2V0PDA+KGRhdGEucHJlY2lzaW9uKSA9PSBQcmVjaXNpb246OkF1dG8gJiYg
cm91bmRpbmdNb2RlID09IFJvdW5kaW5nTW9kZTo6VHJ1bmMpCisgICAgICAgIHJldHVybiB0b1N0
cmluZygpOworCisgICAgYXV0byBkdXJhdGlvbiA9IHJvdW5kVGltZShtX3BsYWluVGltZSwgZGF0
YS5pbmNyZW1lbnQsIGRhdGEudW5pdCwgcm91bmRpbmdNb2RlLCBzdGQ6Om51bGxvcHQpOworICAg
IGF1dG8gcGxhaW5UaW1lID0gdG9QbGFpblRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGR1cmF0
aW9uKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVy
biBJU084NjAxOjp0ZW1wb3JhbFRpbWVUb1N0cmluZyhwbGFpblRpbWUsIGRhdGEucHJlY2lzaW9u
KTsKK30KKworCitzdGF0aWMgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZShWTSYgdm0sIHVuc2ln
bmVkIGluZGV4KQoreworICAgIEFTU0VSVChpbmRleCA8IG51bWJlck9mVGVtcG9yYWxVbml0cyk7
CisgICAgc3dpdGNoIChzdGF0aWNfY2FzdDxUZW1wb3JhbFVuaXQ+KGluZGV4KSkgeworI2RlZmlu
ZSBKU0NfVEVNUE9SQUxfRFVSQVRJT05fUFJPUEVSVFlfTkFNRShuYW1lLCBjYXBpdGFsaXplZE5h
bWUpIGNhc2UgVGVtcG9yYWxVbml0OjpjYXBpdGFsaXplZE5hbWU6IHJldHVybiB2bS5wcm9wZXJ0
eU5hbWVzLT5uYW1lOworICAgICAgICBKU0NfVEVNUE9SQUxfVU5JVFMoSlNDX1RFTVBPUkFMX0RV
UkFUSU9OX1BST1BFUlRZX05BTUUpCisjdW5kZWYgSlNDX1RFTVBPUkFMX0RVUkFUSU9OX1BST1BF
UlRZX05BTUUKKyAgICB9CisKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworfQor
CitzdGF0aWMgSVNPODYwMTo6RHVyYXRpb24gdG9UZW1wb3JhbFRpbWVSZWNvcmQoSlNHbG9iYWxP
YmplY3QqIGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRlbXBvcmFsVGltZUxpa2UpCit7CisgICAg
Vk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RI
Uk9XX1NDT1BFKHZtKTsKKworICAgIElTTzg2MDE6OkR1cmF0aW9uIGR1cmF0aW9uIHsgfTsKKyAg
ICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZlRlbXBvcmFsUGxhaW5U
aW1lVW5pdHM7ICsraW5kZXgpIHsKKyAgICAgICAgdW5zaWduZWQgZHVyYXRpb25JbmRleCA9IGlu
ZGV4ICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+KFRlbXBvcmFsVW5pdDo6SG91cik7CisgICAgICAg
IGF1dG8gbmFtZSA9IHByb3BlcnR5TmFtZSh2bSwgZHVyYXRpb25JbmRleCk7CisgICAgICAgIEpT
VmFsdWUgdmFsdWUgPSB0ZW1wb3JhbFRpbWVMaWtlLT5nZXQoZ2xvYmFsT2JqZWN0LCBuYW1lKTsK
KyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgICAgICAvLyBX
ZSBhcmUgdGhyb3dpbmcgYW4gZXJyb3IgaGVyZSwgYnV0IHByb2JhYmx5IHRoaXMgaXMgYSBzcGVj
IGJ1Zy4KKyAgICAgICAgLy8gVHJhY2tlZCBpbiBodHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9w
b3NhbC10ZW1wb3JhbC9pc3N1ZXMvMTgwMy4KKyAgICAgICAgaWYgKHZhbHVlLmlzVW5kZWZpbmVk
KCkpIHsKKyAgICAgICAgICAgIHRocm93VHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsIG1h
a2VTdHJpbmcoJyInLCBTdHJpbmdWaWV3KG5hbWUudWlkKCkpLCAiXCIgZmllbGQgaXMgbWlzc2lu
ZyJfcykpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorCisgICAgICAgIGRv
dWJsZSBpbnRlZ2VyID0gdmFsdWUudG9JbnRlZ2VyT3JJbmZpbml0eShnbG9iYWxPYmplY3QpOwor
ICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICBpZiAoIXN0
ZDo6aXNmaW5pdGUoaW50ZWdlcikpIHsKKyAgICAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9i
YWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lIHByb3BlcnRpZXMgbXVzdCBiZSBm
aW5pdGUiX3MpOworICAgICAgICAgICAgcmV0dXJuIHsgfTsKKyAgICAgICAgfQorICAgICAgICBk
dXJhdGlvbltkdXJhdGlvbkluZGV4XSA9IGludGVnZXI7CisgICAgfQorICAgIHJldHVybiBkdXJh
dGlvbjsKK30KKworc3RhdGljIHN0ZDo6YXJyYXk8c3RkOjpvcHRpb25hbDxkb3VibGU+LCBudW1i
ZXJPZlRlbXBvcmFsUGxhaW5UaW1lVW5pdHM+IHRvUGFydGlhbFRpbWUoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgSlNPYmplY3QqIHRlbXBvcmFsVGltZUxpa2UpCit7CisgICAgVk0mIHZt
ID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1ND
T1BFKHZtKTsKKworICAgIGJvb2wgaGFzQW55RmllbGRzID0gZmFsc2U7CisgICAgc3RkOjphcnJh
eTxzdGQ6Om9wdGlvbmFsPGRvdWJsZT4sIG51bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0cz4g
cGFydGlhbFRpbWUgeyB9OworICAgIGZvciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IG51
bWJlck9mVGVtcG9yYWxQbGFpblRpbWVVbml0czsgKytpbmRleCkgeworICAgICAgICB1bnNpZ25l
ZCBkdXJhdGlvbkluZGV4ID0gaW5kZXggKyBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oVGVtcG9yYWxV
bml0OjpIb3VyKTsKKyAgICAgICAgYXV0byBuYW1lID0gcHJvcGVydHlOYW1lKHZtLCBkdXJhdGlv
bkluZGV4KTsKKyAgICAgICAgSlNWYWx1ZSB2YWx1ZSA9IHRlbXBvcmFsVGltZUxpa2UtPmdldChn
bG9iYWxPYmplY3QsIG5hbWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7
IH0pOworCisgICAgICAgIGlmICghdmFsdWUuaXNVbmRlZmluZWQoKSkgeworICAgICAgICAgICAg
aGFzQW55RmllbGRzID0gdHJ1ZTsKKyAgICAgICAgICAgIGRvdWJsZSBkb3VibGVWYWx1ZSA9IHZh
bHVlLnRvSW50ZWdlck9ySW5maW5pdHkoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgICAgICBpZiAoIXN0ZDo6aXNmaW5p
dGUoZG91YmxlVmFsdWUpKSB7CisgICAgICAgICAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2Jh
bE9iamVjdCwgc2NvcGUsICJ0b1BhcnRpYWxUaW1lIHByb3BlcnRpZXMgbXVzdCBiZSBmaW5pdGUi
X3MpOworICAgICAgICAgICAgICAgIHJldHVybiB7IH07CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICBwYXJ0aWFsVGltZVtpbmRleF0gPSBkb3VibGVWYWx1ZTsKKyAgICAgICAgfQorICAgIH0K
KyAgICBpZiAoIWhhc0FueUZpZWxkcykgeworICAgICAgICB0aHJvd1R5cGVFcnJvcihnbG9iYWxP
YmplY3QsIHNjb3BlLCAidG9QYXJ0aWFsVGltZSByZXF1aXJlcyBhdCBsZWFzdCBvbmUgcHJvcGVy
dHkiX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0KKyAgICByZXR1cm4gcGFydGlhbFRp
bWU7Cit9CisKK3N0YXRpYyBJU084NjAxOjpQbGFpblRpbWUgY29uc3RyYWludFRpbWUoSVNPODYw
MTo6RHVyYXRpb24mJiBkdXJhdGlvbikKK3sKKyAgICBhdXRvIGNvbnN0cmFpblRvUmFuZ2UgPSBb
XShkb3VibGUgdmFsdWUsIHVuc2lnbmVkIG1pbmltdW0sIHVuc2lnbmVkIG1heGltdW0pIC0+IHVu
c2lnbmVkIHsKKyAgICAgICAgaWYgKHN0ZDo6aXNuYW4odmFsdWUpKQorICAgICAgICAgICAgcmV0
dXJuIDA7CisgICAgICAgIHJldHVybiBzdGF0aWNfY2FzdDx1bnNpZ25lZD4oc3RkOjptaW48ZG91
YmxlPihzdGQ6Om1heDxkb3VibGU+KHZhbHVlLCBtaW5pbXVtKSwgbWF4aW11bSkpOworICAgIH07
CisgICAgcmV0dXJuIElTTzg2MDE6OlBsYWluVGltZSgKKyAgICAgICAgY29uc3RyYWluVG9SYW5n
ZShkdXJhdGlvbi5ob3VycygpLCAwLCAyMyksCisgICAgICAgIGNvbnN0cmFpblRvUmFuZ2UoZHVy
YXRpb24ubWludXRlcygpLCAwLCA1OSksCisgICAgICAgIGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRp
b24uc2Vjb25kcygpLCAwLCA1OSksCisgICAgICAgIGNvbnN0cmFpblRvUmFuZ2UoZHVyYXRpb24u
bWlsbGlzZWNvbmRzKCksIDAsIDEwMDApLAorICAgICAgICBjb25zdHJhaW5Ub1JhbmdlKGR1cmF0
aW9uLm1pY3Jvc2Vjb25kcygpLCAwLCAxMDAwKSwKKyAgICAgICAgY29uc3RyYWluVG9SYW5nZShk
dXJhdGlvbi5uYW5vc2Vjb25kcygpLCAwLCAxMDAwKSk7Cit9CisKK3N0YXRpYyBJU084NjAxOjpQ
bGFpblRpbWUgcmVndWxhdGVUaW1lKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIElTTzg2
MDE6OkR1cmF0aW9uJiYgZHVyYXRpb24sIFRlbXBvcmFsT3ZlcmZsb3cgb3ZlcmZsb3cpCit7Cisg
ICAgc3dpdGNoIChvdmVyZmxvdykgeworICAgIGNhc2UgVGVtcG9yYWxPdmVyZmxvdzo6Q29uc3Ry
YWluOgorICAgICAgICByZXR1cm4gY29uc3RyYWludFRpbWUoV1RGTW92ZShkdXJhdGlvbikpOwor
ICAgIGNhc2UgVGVtcG9yYWxPdmVyZmxvdzo6UmVqZWN0OgorICAgICAgICByZXR1cm4gdG9QbGFp
blRpbWUoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKGR1cmF0aW9uKSk7CisgICAgfQorICAgIHJldHVy
biB7IH07Cit9CisKK3N0YXRpYyBKU09iamVjdCogdG9UZW1wb3JhbENhbGVuZGFyV2l0aElTT0Rl
ZmF1bHQoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWYWx1ZSB0ZW1wb3JhbENhbGVu
ZGFyTGlrZSkKK3sKKyAgICBpZiAodGVtcG9yYWxDYWxlbmRhckxpa2UuaXNVbmRlZmluZWQoKSkK
KyAgICAgICAgcmV0dXJuIFRlbXBvcmFsQ2FsZW5kYXI6OmNyZWF0ZShnbG9iYWxPYmplY3QtPnZt
KCksIGdsb2JhbE9iamVjdC0+Y2FsZW5kYXJTdHJ1Y3R1cmUoKSwgaXNvODYwMUNhbGVuZGFySUQo
KSk7CisgICAgcmV0dXJuIFRlbXBvcmFsQ2FsZW5kYXI6OmZyb20oZ2xvYmFsT2JqZWN0LCB0ZW1w
b3JhbENhbGVuZGFyTGlrZSk7Cit9CisKK3N0YXRpYyBKU09iamVjdCogZ2V0VGVtcG9yYWxDYWxl
bmRhcldpdGhJU09EZWZhdWx0KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUg
aXRlbVZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBpZiAoaXRlbVZhbHVlLmlu
aGVyaXRzPFRlbXBvcmFsUGxhaW5UaW1lPih2bSkpCisgICAgICAgIHJldHVybiBqc0Nhc3Q8VGVt
cG9yYWxQbGFpblRpbWUqPihpdGVtVmFsdWUpLT5jYWxlbmRhcigpOworCisgICAgSlNWYWx1ZSBj
YWxlbmRhciA9IGl0ZW1WYWx1ZS5nZXQoZ2xvYmFsT2JqZWN0LCB2bS5wcm9wZXJ0eU5hbWVzLT5j
YWxlbmRhcik7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBSRUxF
QVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvVGVtcG9yYWxDYWxlbmRhcldpdGhJU09EZWZhdWx0KGds
b2JhbE9iamVjdCwgY2FsZW5kYXIpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2Fs
LXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwtdG90ZW1wb3JhbHRpbWUKK1RlbXBvcmFsUGxhaW5UaW1l
KiBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBK
U1ZhbHVlIGl0ZW1WYWx1ZSwgc3RkOjpvcHRpb25hbDxUZW1wb3JhbE92ZXJmbG93PiBvdmVyZmxv
d1ZhbHVlKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIG92ZXJmbG93ID0gb3Zl
cmZsb3dWYWx1ZS52YWx1ZV9vcihUZW1wb3JhbE92ZXJmbG93OjpDb25zdHJhaW4pOworCisgICAg
aWYgKGl0ZW1WYWx1ZS5pc09iamVjdCgpKSB7CisgICAgICAgIGlmIChpdGVtVmFsdWUuaW5oZXJp
dHM8VGVtcG9yYWxQbGFpblRpbWU+KHZtKSkKKyAgICAgICAgICAgIHJldHVybiBqc0Nhc3Q8VGVt
cG9yYWxQbGFpblRpbWUqPihpdGVtVmFsdWUpOworICAgICAgICBKU09iamVjdCogY2FsZW5kYXIg
PSBnZXRUZW1wb3JhbENhbGVuZGFyV2l0aElTT0RlZmF1bHQoZ2xvYmFsT2JqZWN0LCBpdGVtVmFs
dWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICBK
U1N0cmluZyogY2FsZW5kYXJTdHJpbmcgPSBjYWxlbmRhci0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0
KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICAgICAgU3Ry
aW5nIGNhbGVuZGFyV1RGU3RyaW5nID0gY2FsZW5kYXJTdHJpbmctPnZhbHVlKGdsb2JhbE9iamVj
dCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgICAgIGlm
IChjYWxlbmRhcldURlN0cmluZyAhPSAiaXNvODYwMSJfcykgeworICAgICAgICAgICAgdGhyb3dS
YW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJjYWxlbmRhciBpcyBub3QgaXNvODYwMSJf
cyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9CisgICAgICAgIGF1dG8gZHVy
YXRpb24gPSB0b1RlbXBvcmFsVGltZVJlY29yZChnbG9iYWxPYmplY3QsIGpzQ2FzdDxKU09iamVj
dCo+KGl0ZW1WYWx1ZSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworICAgICAgICBhdXRvIHBsYWluVGltZSA9IHJlZ3VsYXRlVGltZShnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoZHVyYXRpb24pLCBvdmVyZmxvdyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04o
c2NvcGUsIHsgfSk7CisgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZt
LCBnbG9iYWxPYmplY3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHBsYWluVGltZSkp
OworICAgIH0KKworICAgIGF1dG8gc3RyaW5nID0gaXRlbVZhbHVlLnRvV1RGU3RyaW5nKGdsb2Jh
bE9iamVjdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIGF1
dG8gdGltZSA9IElTTzg2MDE6OnBhcnNlVGltZShzdHJpbmcpOworICAgIGlmICh0aW1lKSB7Cisg
ICAgICAgIGF1dG8gW3BsYWluVGltZSwgdGltZVpvbmVPcHRpb25hbF0gPSB0aW1lLnZhbHVlKCk7
CisgICAgICAgIHJldHVybiBUZW1wb3JhbFBsYWluVGltZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmpl
Y3QtPnBsYWluVGltZVN0cnVjdHVyZSgpLCBXVEZNb3ZlKHBsYWluVGltZSkpOworICAgIH0KKwor
ICAgIGF1dG8gZGF0ZVRpbWUgPSBJU084NjAxOjpwYXJzZURhdGVUaW1lKHN0cmluZyk7CisgICAg
aWYgKGRhdGVUaW1lKSB7CisgICAgICAgIGF1dG8gW3BsYWluRGF0ZSwgcGxhaW5UaW1lT3B0aW9u
YWwsIHRpbWVab25lT3B0aW9uYWxdID0gZGF0ZVRpbWUudmFsdWUoKTsKKyAgICAgICAgaWYgKHBs
YWluVGltZU9wdGlvbmFsKQorICAgICAgICAgICAgcmV0dXJuIFRlbXBvcmFsUGxhaW5UaW1lOjpj
cmVhdGUodm0sIGdsb2JhbE9iamVjdC0+cGxhaW5UaW1lU3RydWN0dXJlKCksIFdURk1vdmUocGxh
aW5UaW1lT3B0aW9uYWwudmFsdWUoKSkpOworICAgIH0KKworICAgIHRocm93UmFuZ2VFcnJvcihn
bG9iYWxPYmplY3QsIHNjb3BlLCAiaW52YWxpZCB0aW1lIHN0cmluZyJfcyk7CisgICAgcmV0dXJu
IHsgfTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwtY29tcGFyZXRlbXBvcmFsdGltZQoraW50MzJfdCBUZW1wb3JhbFBsYWluVGltZTo6Y29t
cGFyZShUZW1wb3JhbFBsYWluVGltZSogcGxhaW5UaW1lMSwgVGVtcG9yYWxQbGFpblRpbWUqIHBs
YWluVGltZTIpCit7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHQxID0gcGxhaW5UaW1lMS0+cGxh
aW5UaW1lKCk7CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHQyID0gcGxhaW5UaW1lMi0+cGxhaW5U
aW1lKCk7CisgICAgaWYgKHQxLmhvdXIoKSA+IHQyLmhvdXIoKSkKKyAgICAgICAgcmV0dXJuIDE7
CisgICAgaWYgKHQxLmhvdXIoKSA8IHQyLmhvdXIoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAg
IGlmICh0MS5taW51dGUoKSA+IHQyLm1pbnV0ZSgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBp
ZiAodDEubWludXRlKCkgPCB0Mi5taW51dGUoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlm
ICh0MS5zZWNvbmQoKSA+IHQyLnNlY29uZCgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAo
dDEuc2Vjb25kKCkgPCB0Mi5zZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIC0xOworICAgIGlmICh0
MS5taWxsaXNlY29uZCgpID4gdDIubWlsbGlzZWNvbmQoKSkKKyAgICAgICAgcmV0dXJuIDE7Cisg
ICAgaWYgKHQxLm1pbGxpc2Vjb25kKCkgPCB0Mi5taWxsaXNlY29uZCgpKQorICAgICAgICByZXR1
cm4gLTE7CisgICAgaWYgKHQxLm1pY3Jvc2Vjb25kKCkgPiB0Mi5taWNyb3NlY29uZCgpKQorICAg
ICAgICByZXR1cm4gMTsKKyAgICBpZiAodDEubWljcm9zZWNvbmQoKSA8IHQyLm1pY3Jvc2Vjb25k
KCkpCisgICAgICAgIHJldHVybiAtMTsKKyAgICBpZiAodDEubmFub3NlY29uZCgpID4gdDIubmFu
b3NlY29uZCgpKQorICAgICAgICByZXR1cm4gMTsKKyAgICBpZiAodDEubmFub3NlY29uZCgpIDwg
dDIubmFub3NlY29uZCgpKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIDA7Cit9CisK
Ky8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLXRvbGlt
aXRlZHRlbXBvcmFsZHVyYXRpb24KK3N0YXRpYyBJU084NjAxOjpEdXJhdGlvbiB0b0xpbWl0ZWRU
ZW1wb3JhbER1cmF0aW9uKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgdGVt
cG9yYWxEdXJhdGlvbkxpa2UsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxUZW1wb3JhbFVuaXQ+IGRp
c2FsbG93ZWRGaWVsZHMpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIElTTzg2MDE6OkR1
cmF0aW9uIGR1cmF0aW9uOworICAgIGlmICghdGVtcG9yYWxEdXJhdGlvbkxpa2UuaXNPYmplY3Qo
KSkgeworICAgICAgICBTdHJpbmcgc3RyaW5nID0gdGVtcG9yYWxEdXJhdGlvbkxpa2UudG9XVEZT
dHJpbmcoZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
eyB9KTsKKyAgICAgICAgYXV0byBkdXJhdGlvbk9wdGlvbmFsID0gSVNPODYwMTo6cGFyc2VEdXJh
dGlvbihzdHJpbmcpOworICAgICAgICBpZiAoIWR1cmF0aW9uT3B0aW9uYWwpIHsKKyAgICAgICAg
ICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiQ291bGQgbm90IHBhcnNl
IER1cmF0aW9uIHN0cmluZyJfcyk7CisgICAgICAgICAgICByZXR1cm4geyB9OworICAgICAgICB9
CisgICAgICAgIGR1cmF0aW9uID0gZHVyYXRpb25PcHRpb25hbC52YWx1ZSgpOworICAgIH0gZWxz
ZSB7CisgICAgICAgIGR1cmF0aW9uID0gVGVtcG9yYWxEdXJhdGlvbjo6dG9EdXJhdGlvblJlY29y
ZChnbG9iYWxPYmplY3QsIHRlbXBvcmFsRHVyYXRpb25MaWtlKTsKKyAgICAgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICB9CisKKyAgICBpZiAoIUlTTzg2MDE6OmlzVmFs
aWREdXJhdGlvbihkdXJhdGlvbikpIHsKKyAgICAgICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9i
amVjdCwgc2NvcGUsICJUZW1wb3JhbC5EdXJhdGlvbiBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRl
IGFuZCBvZiBjb25zaXN0ZW50IHNpZ24iX3MpOworICAgICAgICByZXR1cm4geyB9OworICAgIH0K
KworICAgIGZvciAoc2l6ZV90IGluZGV4ID0gMDsgaW5kZXggPCBudW1iZXJPZlRlbXBvcmFsVW5p
dHM7IGluZGV4KyspIHsKKyAgICAgICAgaWYgKGR1cmF0aW9uW2luZGV4XSkgeworICAgICAgICAg
ICAgaWYgKGRpc2FsbG93ZWRGaWVsZHMuc2l6ZSgpICYmIHN0ZDo6ZmluZChkaXNhbGxvd2VkRmll
bGRzLmJlZ2luKCksIGRpc2FsbG93ZWRGaWVsZHMuZW5kKCksIHN0YXRpY19jYXN0PFRlbXBvcmFs
VW5pdD4oaW5kZXgpKSAhPSBkaXNhbGxvd2VkRmllbGRzLmVuZCgpKSB7CisgICAgICAgICAgICAg
ICAgdGhyb3dSYW5nZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJEdXJhdGlvbiBwcm9wZXJ0
aWVzIGluY2x1ZGUgZGlzYWxsb3dlZCBmaWVsZCJfcyk7CisgICAgICAgICAgICAgICAgcmV0dXJu
IHsgfTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBkdXJh
dGlvbjsKK30KKworc3RhdGljIElTTzg2MDE6OkR1cmF0aW9uIGFkZFRpbWUoY29uc3QgSVNPODYw
MTo6UGxhaW5UaW1lJiBwbGFpblRpbWUsIGNvbnN0IElTTzg2MDE6OkR1cmF0aW9uJiBkdXJhdGlv
bikKK3sKKyAgICByZXR1cm4gYmFsYW5jZVRpbWUoCisgICAgICAgIHBsYWluVGltZS5ob3VyKCkg
KyBkdXJhdGlvbi5ob3VycygpLAorICAgICAgICBwbGFpblRpbWUubWludXRlKCkgKyBkdXJhdGlv
bi5taW51dGVzKCksCisgICAgICAgIHBsYWluVGltZS5zZWNvbmQoKSArIGR1cmF0aW9uLnNlY29u
ZHMoKSwKKyAgICAgICAgcGxhaW5UaW1lLm1pbGxpc2Vjb25kKCkgKyBkdXJhdGlvbi5taWxsaXNl
Y29uZHMoKSwKKyAgICAgICAgcGxhaW5UaW1lLm1pY3Jvc2Vjb25kKCkgKyBkdXJhdGlvbi5taWNy
b3NlY29uZHMoKSwKKyAgICAgICAgcGxhaW5UaW1lLm5hbm9zZWNvbmQoKSArIGR1cmF0aW9uLm5h
bm9zZWNvbmRzKCkpOworfQorCitJU084NjAxOjpQbGFpblRpbWUgVGVtcG9yYWxQbGFpblRpbWU6
OmFkZChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRlbXBvcmFsRHVyYXRp
b25MaWtlKSBjb25zdAoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBh
dXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvIGR1cmF0aW9u
ID0gdG9MaW1pdGVkVGVtcG9yYWxEdXJhdGlvbihnbG9iYWxPYmplY3QsIHRlbXBvcmFsRHVyYXRp
b25MaWtlLCB7IH0pOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHRvUGxhaW5UaW1lKGdsb2JhbE9iamVjdCwgYWRk
VGltZShtX3BsYWluVGltZSwgZHVyYXRpb24pKSk7Cit9CisKK0lTTzg2MDE6OlBsYWluVGltZSBU
ZW1wb3JhbFBsYWluVGltZTo6c3VidHJhY3QoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
SlNWYWx1ZSB0ZW1wb3JhbER1cmF0aW9uTGlrZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9i
YWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0p
OworCisgICAgYXV0byBkdXJhdGlvbiA9IHRvTGltaXRlZFRlbXBvcmFsRHVyYXRpb24oZ2xvYmFs
T2JqZWN0LCB0ZW1wb3JhbER1cmF0aW9uTGlrZSwgeyB9KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCB0b1BsYWlu
VGltZShnbG9iYWxPYmplY3QsIGFkZFRpbWUobV9wbGFpblRpbWUsIC1kdXJhdGlvbikpKTsKK30K
KworSVNPODYwMTo6UGxhaW5UaW1lIFRlbXBvcmFsUGxhaW5UaW1lOjp3aXRoKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIEpTT2JqZWN0KiB0ZW1wb3JhbFRpbWVMaWtlLCBKU1ZhbHVlIG9w
dGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7Cisg
ICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgaWYgKHRlbXBv
cmFsVGltZUxpa2UtPmluaGVyaXRzPFRlbXBvcmFsUGxhaW5UaW1lPih2bSkpIHsKKyAgICAgICAg
dGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBtdXN0
IG5vdCBjYXJyeSBjYWxlbmRhciJfcyk7CisgICAgICAgIHJldHVybiB7IH07CisgICAgfQorCisg
ICAgSlNWYWx1ZSBjYWxlbmRhclByb3BlcnR5ID0gdGVtcG9yYWxUaW1lTGlrZS0+Z2V0KGdsb2Jh
bE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+Y2FsZW5kYXIpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisgICAgaWYgKCFjYWxlbmRhclByb3BlcnR5LmlzVW5kZWZpbmVk
KCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgImFyZ3Vt
ZW50IG9iamVjdCBtdXN0IG5vdCBjYXJyeSBjYWxlbmRhciJfcyk7CisgICAgICAgIHJldHVybiB7
IH07CisgICAgfQorCisgICAgSlNWYWx1ZSB0aW1lWm9uZVByb3BlcnR5ID0gdGVtcG9yYWxUaW1l
TGlrZS0+Z2V0KGdsb2JhbE9iamVjdCwgdm0ucHJvcGVydHlOYW1lcy0+dGltZVpvbmUpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgaWYgKCF0aW1lWm9uZVByb3Bl
cnR5LmlzVW5kZWZpbmVkKCkpIHsKKyAgICAgICAgdGhyb3dUeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgImFyZ3VtZW50IG9iamVjdCBtdXN0IG5vdCBjYXJyeSB0aW1lIHpvbmUiX3MpOwor
ICAgICAgICByZXR1cm4geyB9OworICAgIH0KKworICAgIGF1dG8gW2hvdXJPcHRpb25hbCwgbWlu
dXRlT3B0aW9uYWwsIHNlY29uZE9wdGlvbmFsLCBtaWxsaXNlY29uZE9wdGlvbmFsLCBtaWNyb3Nl
Y29uZE9wdGlvbmFsLCBuYW5vc2Vjb25kT3B0aW9uYWxdID0gdG9QYXJ0aWFsVGltZShnbG9iYWxP
YmplY3QsIHRlbXBvcmFsVGltZUxpa2UpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUs
IHsgfSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRPcHRpb25zT2JqZWN0KGds
b2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgVGVtcG9yYWxPdmVyZmxvdyBvdmVyZmxvdyA9IHRvVGVtcG9yYWxPdmVy
ZmxvdyhnbG9iYWxPYmplY3QsIG9wdGlvbnMpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisKKyAgICBJU084NjAxOjpEdXJhdGlvbiBkdXJhdGlvbiB7IH07CisgICAgZHVy
YXRpb24uc2V0SG91cnMoaG91ck9wdGlvbmFsLnZhbHVlX29yKGhvdXIoKSkpOworICAgIGR1cmF0
aW9uLnNldE1pbnV0ZXMobWludXRlT3B0aW9uYWwudmFsdWVfb3IobWludXRlKCkpKTsKKyAgICBk
dXJhdGlvbi5zZXRTZWNvbmRzKHNlY29uZE9wdGlvbmFsLnZhbHVlX29yKHNlY29uZCgpKSk7Cisg
ICAgZHVyYXRpb24uc2V0TWlsbGlzZWNvbmRzKG1pbGxpc2Vjb25kT3B0aW9uYWwudmFsdWVfb3Io
bWlsbGlzZWNvbmQoKSkpOworICAgIGR1cmF0aW9uLnNldE1pY3Jvc2Vjb25kcyhtaWNyb3NlY29u
ZE9wdGlvbmFsLnZhbHVlX29yKG1pY3Jvc2Vjb25kKCkpKTsKKyAgICBkdXJhdGlvbi5zZXROYW5v
c2Vjb25kcyhuYW5vc2Vjb25kT3B0aW9uYWwudmFsdWVfb3IobmFub3NlY29uZCgpKSk7CisKKyAg
ICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIHJlZ3VsYXRlVGltZShnbG9iYWxPYmplY3QsIFdU
Rk1vdmUoZHVyYXRpb24pLCBvdmVyZmxvdykpOworfQorCitzdGF0aWMgSVNPODYwMTo6RHVyYXRp
b24gZGlmZmVyZW5jZVRpbWUoSVNPODYwMTo6UGxhaW5UaW1lIHRpbWUxLCBJU084NjAxOjpQbGFp
blRpbWUgdGltZTIpCit7CisgICAgZG91YmxlIGhvdXJzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0
aW1lMi5ob3VyKCkpIC0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMS5ob3VyKCkpOworICAgIGRv
dWJsZSBtaW51dGVzID0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMi5taW51dGUoKSkgLSBzdGF0
aWNfY2FzdDxkb3VibGU+KHRpbWUxLm1pbnV0ZSgpKTsKKyAgICBkb3VibGUgc2Vjb25kcyA9IHN0
YXRpY19jYXN0PGRvdWJsZT4odGltZTIuc2Vjb25kKCkpIC0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0
aW1lMS5zZWNvbmQoKSk7CisgICAgZG91YmxlIG1pbGxpc2Vjb25kcyA9IHN0YXRpY19jYXN0PGRv
dWJsZT4odGltZTIubWlsbGlzZWNvbmQoKSkgLSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUxLm1p
bGxpc2Vjb25kKCkpOworICAgIGRvdWJsZSBtaWNyb3NlY29uZHMgPSBzdGF0aWNfY2FzdDxkb3Vi
bGU+KHRpbWUyLm1pY3Jvc2Vjb25kKCkpIC0gc3RhdGljX2Nhc3Q8ZG91YmxlPih0aW1lMS5taWNy
b3NlY29uZCgpKTsKKyAgICBkb3VibGUgbmFub3NlY29uZHMgPSBzdGF0aWNfY2FzdDxkb3VibGU+
KHRpbWUyLm5hbm9zZWNvbmQoKSkgLSBzdGF0aWNfY2FzdDxkb3VibGU+KHRpbWUxLm5hbm9zZWNv
bmQoKSk7CisgICAgZGF0YUxvZ0xuSWYoVGVtcG9yYWxQbGFpblRpbWVJbnRlcm5hbDo6dmVyYm9z
ZSwgIkRpZmYgIiwgaG91cnMsICIgIiwgbWludXRlcywgIiAiLCBzZWNvbmRzLCAiICIsIG1pbGxp
c2Vjb25kcywgIiAiLCBtaWNyb3NlY29uZHMsICIgIiwgbmFub3NlY29uZHMpOworICAgIGludDMy
X3Qgc2lnbiA9IFRlbXBvcmFsRHVyYXRpb246OnNpZ24oSVNPODYwMTo6RHVyYXRpb24oMCwgMCwg
MCwgMCwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIG1pbGxpc2Vjb25kcywgbWljcm9zZWNvbmRz
LCBuYW5vc2Vjb25kcykpOworICAgIGF1dG8gZHVyYXRpb24gPSBiYWxhbmNlVGltZShob3VycyAq
IHNpZ24sIG1pbnV0ZXMgKiBzaWduLCBzZWNvbmRzICogc2lnbiwgbWlsbGlzZWNvbmRzICogc2ln
biwgbWljcm9zZWNvbmRzICogc2lnbiwgbmFub3NlY29uZHMgKiBzaWduKTsKKyAgICBkYXRhTG9n
TG5JZihUZW1wb3JhbFBsYWluVGltZUludGVybmFsOjp2ZXJib3NlLCAiQmFsYW5jZWQgIiwgZHVy
YXRpb24uZGF5cygpLCAiICIsIGR1cmF0aW9uLmhvdXJzKCksICIgIiwgZHVyYXRpb24ubWludXRl
cygpLCAiICIsIGR1cmF0aW9uLnNlY29uZHMoKSwgIiAiLCBkdXJhdGlvbi5taWxsaXNlY29uZHMo
KSwgIiAiLCBkdXJhdGlvbi5taWNyb3NlY29uZHMoKSwgIiAiLCBkdXJhdGlvbi5uYW5vc2Vjb25k
cygpKTsKKyAgICBpZiAoc2lnbiA9PSAtMSkKKyAgICAgICAgcmV0dXJuIC1kdXJhdGlvbjsKKyAg
ICByZXR1cm4gZHVyYXRpb247Cit9CisKK3N0YXRpYyBzdGQ6OnR1cGxlPFRlbXBvcmFsVW5pdCwg
VGVtcG9yYWxVbml0LCBSb3VuZGluZ01vZGUsIGRvdWJsZT4gZXh0cmFjdERpZmZlcmVuY2VPcHRp
b25zKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgb3B0aW9uc1ZhbHVlKQor
eworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBKU09iamVjdCogb3B0aW9ucyA9IGludGxHZXRP
cHRpb25zT2JqZWN0KGdsb2JhbE9iamVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBzbWFsbGVzdCA9IHRlbXBvcmFsU21h
bGxlc3RVbml0KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgeyBUZW1wb3JhbFVuaXQ6OlllYXIsIFRl
bXBvcmFsVW5pdDo6TW9udGgsIFRlbXBvcmFsVW5pdDo6V2VlaywgVGVtcG9yYWxVbml0OjpEYXkg
fSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKyAgICBUZW1wb3JhbFVu
aXQgc21hbGxlc3RVbml0ID0gc21hbGxlc3QudmFsdWVfb3IoVGVtcG9yYWxVbml0OjpOYW5vc2Vj
b25kKTsKKworICAgIGF1dG8gbGFyZ2VzdCA9IHRlbXBvcmFsTGFyZ2VzdFVuaXQoZ2xvYmFsT2Jq
ZWN0LCBvcHRpb25zLCB7IFRlbXBvcmFsVW5pdDo6WWVhciwgVGVtcG9yYWxVbml0OjpNb250aCwg
VGVtcG9yYWxVbml0OjpXZWVrLCBUZW1wb3JhbFVuaXQ6OkRheSB9LCBUZW1wb3JhbFVuaXQ6Okhv
dXIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgVGVtcG9yYWxV
bml0IGxhcmdlc3RVbml0ID0gbGFyZ2VzdC52YWx1ZV9vcihUZW1wb3JhbFVuaXQ6OkhvdXIpOwor
CisgICAgaWYgKHNtYWxsZXN0VW5pdCA8IGxhcmdlc3RVbml0KSB7CisgICAgICAgIHRocm93UmFu
Z2VFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAic21hbGxlc3RVbml0IG11c3QgYmUgc21hbGxl
ciB0aGFuIGxhcmdlc3RVbml0Il9zKTsKKyAgICAgICAgcmV0dXJuIHsgfTsKKyAgICB9CisKKyAg
ICBhdXRvIHJvdW5kaW5nTW9kZSA9IGludGxPcHRpb248Um91bmRpbmdNb2RlPihnbG9iYWxPYmpl
Y3QsIG9wdGlvbnMsIHZtLnByb3BlcnR5TmFtZXMtPnJvdW5kaW5nTW9kZSwKKyAgICAgICAgeyB7
ICJjZWlsIl9zLCBSb3VuZGluZ01vZGU6OkNlaWwgfSwgeyAiZmxvb3IiX3MsIFJvdW5kaW5nTW9k
ZTo6Rmxvb3IgfSwgeyAidHJ1bmMiX3MsIFJvdW5kaW5nTW9kZTo6VHJ1bmMgfSwgeyAiaGFsZkV4
cGFuZCJfcywgUm91bmRpbmdNb2RlOjpIYWxmRXhwYW5kIH0gfSwKKyAgICAgICAgInJvdW5kaW5n
TW9kZSBtdXN0IGJlIGVpdGhlciBcImNlaWxcIiwgXCJmbG9vclwiLCBcInRydW5jXCIsIG9yIFwi
aGFsZkV4cGFuZFwiIl9zLCBSb3VuZGluZ01vZGU6OlRydW5jKTsKKyAgICBSRVRVUk5fSUZfRVhD
RVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgYXV0byBpbmNyZW1lbnQgPSB0ZW1wb3JhbFJvdW5k
aW5nSW5jcmVtZW50KGdsb2JhbE9iamVjdCwgb3B0aW9ucywgbWF4aW11bVJvdW5kaW5nSW5jcmVt
ZW50KHNtYWxsZXN0VW5pdCksIGZhbHNlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3Bl
LCB7IH0pOworCisgICAgcmV0dXJuIHsgc21hbGxlc3RVbml0LCBsYXJnZXN0VW5pdCwgcm91bmRp
bmdNb2RlLCBpbmNyZW1lbnQgfTsKK30KKworSVNPODYwMTo6RHVyYXRpb24gVGVtcG9yYWxQbGFp
blRpbWU6OnVudGlsKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFRlbXBvcmFsUGxhaW5U
aW1lKiBvdGhlciwgSlNWYWx1ZSBvcHRpb25zVmFsdWUpIGNvbnN0Cit7CisgICAgVk0mIHZtID0g
Z2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BF
KHZtKTsKKworICAgIGF1dG8gW3NtYWxsZXN0VW5pdCwgbGFyZ2VzdFVuaXQsIHJvdW5kaW5nTW9k
ZSwgaW5jcmVtZW50XSA9IGV4dHJhY3REaWZmZXJlbmNlT3B0aW9ucyhnbG9iYWxPYmplY3QsIG9w
dGlvbnNWYWx1ZSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAg
IGF1dG8gcmVzdWx0ID0gZGlmZmVyZW5jZVRpbWUocGxhaW5UaW1lKCksIG90aGVyLT5wbGFpblRp
bWUoKSk7CisgICAgcmVzdWx0LnNldFllYXJzKDApOworICAgIHJlc3VsdC5zZXRNb250aHMoMCk7
CisgICAgcmVzdWx0LnNldFdlZWtzKDApOworICAgIHJlc3VsdC5zZXREYXlzKDApOworICAgIFRl
bXBvcmFsRHVyYXRpb246OnJvdW5kKHJlc3VsdCwgaW5jcmVtZW50LCBzbWFsbGVzdFVuaXQsIHJv
dW5kaW5nTW9kZSk7CisgICAgVGVtcG9yYWxEdXJhdGlvbjo6YmFsYW5jZShyZXN1bHQsIGxhcmdl
c3RVbml0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitJU084NjAxOjpEdXJhdGlvbiBUZW1w
b3JhbFBsYWluVGltZTo6c2luY2UoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgVGVtcG9y
YWxQbGFpblRpbWUqIG90aGVyLCBKU1ZhbHVlIG9wdGlvbnNWYWx1ZSkgY29uc3QKK3sKKyAgICBW
TSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhS
T1dfU0NPUEUodm0pOworCisgICAgYXV0byBbc21hbGxlc3RVbml0LCBsYXJnZXN0VW5pdCwgcm91
bmRpbmdNb2RlLCBpbmNyZW1lbnRdID0gZXh0cmFjdERpZmZlcmVuY2VPcHRpb25zKGdsb2JhbE9i
amVjdCwgb3B0aW9uc1ZhbHVlKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworCisgICAgYXV0byByZXN1bHQgPSBkaWZmZXJlbmNlVGltZShvdGhlci0+cGxhaW5UaW1lKCks
IHBsYWluVGltZSgpKTsKKyAgICByZXN1bHQgPSAtcmVzdWx0OworICAgIHJlc3VsdC5zZXRZZWFy
cygwKTsKKyAgICByZXN1bHQuc2V0TW9udGhzKDApOworICAgIHJlc3VsdC5zZXRXZWVrcygwKTsK
KyAgICByZXN1bHQuc2V0RGF5cygwKTsKKyAgICBUZW1wb3JhbER1cmF0aW9uOjpyb3VuZChyZXN1
bHQsIGluY3JlbWVudCwgc21hbGxlc3RVbml0LCByb3VuZGluZ01vZGUpOworICAgIHJlc3VsdCA9
IC1yZXN1bHQ7CisgICAgcmVzdWx0LnNldERheXMoMCk7CisgICAgVGVtcG9yYWxEdXJhdGlvbjo6
YmFsYW5jZShyZXN1bHQsIGxhcmdlc3RVbml0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCit9
IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL1RlbXBvcmFsUGxhaW5UaW1lLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9U
ZW1wb3JhbFBsYWluVGltZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQ5OTcwMDBkOGUwOGQyODQ2ZWYyZGMwMzY1
YTk5MTM0MWY3ZGMzYmYKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9UZW1wb3JhbFBsYWluVGltZS5oCkBAIC0wLDAgKzEsOTAgQEAKKy8qCisgKiBDb3B5
cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIklTTzg2MDEuaCIKKyNpbmNsdWRlICJMYXp5UHJvcGVydHkuaCIKKyNpbmNsdWRlICJU
ZW1wb3JhbENhbGVuZGFyLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbFBs
YWluVGltZSBmaW5hbCA6IHB1YmxpYyBKU05vbkZpbmFsT2JqZWN0IHsKK3B1YmxpYzoKKyAgICB1
c2luZyBCYXNlID0gSlNOb25GaW5hbE9iamVjdDsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENl
bGxUeXBlLCBTdWJzcGFjZUFjY2VzcyBtb2RlPgorICAgIHN0YXRpYyBJc29TdWJzcGFjZSogc3Vi
c3BhY2VGb3IoVk0mIHZtKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHZtLnRlbXBvcmFsUGxhaW5U
aW1lU3BhY2U8bW9kZT4oKTsKKyAgICB9CisKKyAgICBzdGF0aWMgVGVtcG9yYWxQbGFpblRpbWUq
IGNyZWF0ZShWTSYsIFN0cnVjdHVyZSosIElTTzg2MDE6OlBsYWluVGltZSYmKTsKKyAgICBzdGF0
aWMgVGVtcG9yYWxQbGFpblRpbWUqIHRyeUNyZWF0ZUlmVmFsaWQoSlNHbG9iYWxPYmplY3QqLCBT
dHJ1Y3R1cmUqLCBJU084NjAxOjpEdXJhdGlvbiYmKTsKKyAgICBzdGF0aWMgU3RydWN0dXJlKiBj
cmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisgICAgREVD
TEFSRV9JTkZPOworCisgICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1lKiBmcm9tKEpTR2xvYmFs
T2JqZWN0KiwgSlNWYWx1ZSwgc3RkOjpvcHRpb25hbDxUZW1wb3JhbE92ZXJmbG93Pik7CisgICAg
c3RhdGljIGludDMyX3QgY29tcGFyZShUZW1wb3JhbFBsYWluVGltZSosIFRlbXBvcmFsUGxhaW5U
aW1lKik7CisKKyAgICBUZW1wb3JhbENhbGVuZGFyKiBjYWxlbmRhcigpIHsgcmV0dXJuIG1fY2Fs
ZW5kYXIuZ2V0KHRoaXMpOyB9CisgICAgSVNPODYwMTo6UGxhaW5UaW1lIHBsYWluVGltZSgpIGNv
bnN0IHsgcmV0dXJuIG1fcGxhaW5UaW1lOyB9CisKKyNkZWZpbmUgSlNDX0RFRklORV9URU1QT1JB
TF9QTEFJTl9USU1FX0ZJRUxEKG5hbWUsIGNhcGl0YWxpemVkTmFtZSkgXAorICAgIHVuc2lnbmVk
IG5hbWUoKSBjb25zdCB7IHJldHVybiBtX3BsYWluVGltZS5uYW1lKCk7IH0KKyAgICBKU0NfVEVN
UE9SQUxfUExBSU5fVElNRV9VTklUUyhKU0NfREVGSU5FX1RFTVBPUkFMX1BMQUlOX1RJTUVfRklF
TEQpOworI3VuZGVmIEpTQ19ERUZJTkVfVEVNUE9SQUxfUExBSU5fVElNRV9GSUVMRAorCisgICAg
SVNPODYwMTo6UGxhaW5UaW1lIHdpdGgoSlNHbG9iYWxPYmplY3QqLCBKU09iamVjdCogdGVtcG9y
YWxUaW1lTGlrZSwgSlNWYWx1ZSBvcHRpb25zKSBjb25zdDsKKyAgICBJU084NjAxOjpQbGFpblRp
bWUgYWRkKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSVNPODYwMTo6UGxh
aW5UaW1lIHN1YnRyYWN0KEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSkgY29uc3Q7CisgICAgSVNP
ODYwMTo6UGxhaW5UaW1lIHJvdW5kKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSBvcHRpb25zKSBj
b25zdDsKKyAgICBTdHJpbmcgdG9TdHJpbmcoSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlIG9wdGlv
bnMpIGNvbnN0OworICAgIFN0cmluZyB0b1N0cmluZyhzdGQ6OnR1cGxlPFByZWNpc2lvbiwgdW5z
aWduZWQ+IHByZWNpc2lvbiA9IHsgUHJlY2lzaW9uOjpBdXRvLCAwIH0pIGNvbnN0CisgICAgewor
ICAgICAgICByZXR1cm4gSVNPODYwMTo6dGVtcG9yYWxUaW1lVG9TdHJpbmcobV9wbGFpblRpbWUs
IHByZWNpc2lvbik7CisgICAgfQorCisgICAgSVNPODYwMTo6RHVyYXRpb24gdW50aWwoSlNHbG9i
YWxPYmplY3QqLCBUZW1wb3JhbFBsYWluVGltZSosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7Cisg
ICAgSVNPODYwMTo6RHVyYXRpb24gc2luY2UoSlNHbG9iYWxPYmplY3QqLCBUZW1wb3JhbFBsYWlu
VGltZSosIEpTVmFsdWUgb3B0aW9ucykgY29uc3Q7CisKKyAgICBERUNMQVJFX1ZJU0lUX0NISUxE
UkVOOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsUGxhaW5UaW1lKFZNJiwgU3RydWN0dXJlKiwg
SVNPODYwMTo6UGxhaW5UaW1lJiYpOworICAgIHZvaWQgZmluaXNoQ3JlYXRpb24oVk0mKTsKKwor
ICAgIHRlbXBsYXRlPHR5cGVuYW1lIENoYXJhY3RlclR5cGU+CisgICAgc3RhdGljIHN0ZDo6b3B0
aW9uYWw8SVNPODYwMTo6UGxhaW5UaW1lPiBwYXJzZShTdHJpbmdQYXJzaW5nQnVmZmVyPENoYXJh
Y3RlclR5cGU+Jik7CisgICAgc3RhdGljIElTTzg2MDE6OlBsYWluVGltZSBmcm9tT2JqZWN0KEpT
R2xvYmFsT2JqZWN0KiwgSlNPYmplY3QqKTsKKworICAgIFRlbXBvcmFsVW5pdCBsYXJnZXN0U3Vi
cGxhaW5UaW1lKCkgY29uc3Q7CisKKyAgICBJU084NjAxOjpQbGFpblRpbWUgbV9wbGFpblRpbWU7
CisgICAgTGF6eVByb3BlcnR5PFRlbXBvcmFsUGxhaW5UaW1lLCBUZW1wb3JhbENhbGVuZGFyPiBt
X2NhbGVuZGFyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0
b3IuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmFmNDY5MDk4Njk1MjJmZDE4MThkY2NiNWVkZDhhYzRkMGQzZTFm
ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmNwcApAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIENv
cHlyaWdodCAoQykgMjAyMSBBcHBsZSBJbmMuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcu
aCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmgiCisKKyNpbmNsdWRl
ICJKU0NJbmxpbmVzLmgiCisjaW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWUuaCIKKyNpbmNsdWRl
ICJUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworU1RB
VElDX0FTU0VSVF9JU19UUklWSUFMTFlfREVTVFJVQ1RJQkxFKFRlbXBvcmFsUGxhaW5UaW1lQ29u
c3RydWN0b3IpOworCitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBs
YWluVGltZUNvbnN0cnVjdG9yRnVuY0Zyb20pOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVO
Q1RJT04odGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNDb21wYXJlKTsKKworfQorCisj
aW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3Rvci5sdXQuaCIKKworbmFtZXNwYWNl
IEpTQyB7CisKK2NvbnN0IENsYXNzSW5mbyBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpz
X2luZm8gPSB7ICJGdW5jdGlvbiIsICZCYXNlOjpzX2luZm8sICZ0ZW1wb3JhbFBsYWluVGltZUNv
bnN0cnVjdG9yVGFibGUsIG51bGxwdHIsIENSRUFURV9NRVRIT0RfVEFCTEUoVGVtcG9yYWxQbGFp
blRpbWVDb25zdHJ1Y3RvcikgfTsKKworLyogU291cmNlIGZvciBUZW1wb3JhbFBsYWluVGltZUNv
bnN0cnVjdG9yLmx1dC5oCitAYmVnaW4gdGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvclRhYmxl
CisgIGZyb20gICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNGcm9t
ICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgY29tcGFyZSAgICAgICAgICB0ZW1w
b3JhbFBsYWluVGltZUNvbnN0cnVjdG9yRnVuY0NvbXBhcmUgICAgICAgICAgRG9udEVudW18RnVu
Y3Rpb24gMgorQGVuZAorKi8KKworVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvciogVGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3Rvcjo6Y3JlYXRlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1Y3R1
cmUsIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKiBwbGFpblRpbWVQcm90b3R5cGUpCit7Cisg
ICAgYXV0byogY29uc3RydWN0b3IgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxUZW1wb3Jh
bFBsYWluVGltZUNvbnN0cnVjdG9yPih2bS5oZWFwKSkgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1
Y3Rvcih2bSwgc3RydWN0dXJlKTsKKyAgICBjb25zdHJ1Y3Rvci0+ZmluaXNoQ3JlYXRpb24odm0s
IHBsYWluVGltZVByb3RvdHlwZSk7CisgICAgcmV0dXJuIGNvbnN0cnVjdG9yOworfQorCitTdHJ1
Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OmNyZWF0ZVN0cnVjdHVyZShWTSYg
dm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEpTVmFsdWUgcHJvdG90eXBlKQorewor
ICAgIHJldHVybiBTdHJ1Y3R1cmU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBwcm90b3R5cGUs
IFR5cGVJbmZvKEludGVybmFsRnVuY3Rpb25UeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7
Cit9CisKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKGNhbGxUZW1wb3JhbFBsYWlu
VGltZSk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTihjb25zdHJ1Y3RUZW1wb3Jh
bFBsYWluVGltZSk7CisKK1RlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3I6OlRlbXBvcmFsUGxh
aW5UaW1lQ29uc3RydWN0b3IoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSkKKyAgICA6IEJh
c2Uodm0sIHN0cnVjdHVyZSwgY2FsbFRlbXBvcmFsUGxhaW5UaW1lLCBjb25zdHJ1Y3RUZW1wb3Jh
bFBsYWluVGltZSkKK3sKK30KKwordm9pZCBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yOjpm
aW5pc2hDcmVhdGlvbihWTSYgdm0sIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKiBwbGFpblRp
bWVQcm90b3R5cGUpCit7CisgICAgQmFzZTo6ZmluaXNoQ3JlYXRpb24odm0sIDAsICJQbGFpblRp
bWUiX3MsIFByb3BlcnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7
CisgICAgcHV0RGlyZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnBy
b3RvdHlwZSwgcGxhaW5UaW1lUHJvdG90eXBlLCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0g
fCBQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udERlbGV0ZSB8IFByb3BlcnR5QXR0cmlidXRlOjpSZWFk
T25seSk7CisgICAgcGxhaW5UaW1lUHJvdG90eXBlLT5wdXREaXJlY3RXaXRob3V0VHJhbnNpdGlv
bih2bSwgdm0ucHJvcGVydHlOYW1lcy0+Y29uc3RydWN0b3IsIHRoaXMsIHN0YXRpY19jYXN0PHVu
c2lnbmVkPihQcm9wZXJ0eUF0dHJpYnV0ZTo6RG9udEVudW0pKTsKK30KKworSlNDX0RFRklORV9I
T1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsUGxhaW5UaW1lLCAoSlNHbG9iYWxPYmplY3Qq
IGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGds
b2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKKyAgICBKU09iamVjdCogbmV3VGFyZ2V0ID0gYXNPYmplY3QoY2FsbEZyYW1lLT5uZXdU
YXJnZXQoKSk7CisgICAgU3RydWN0dXJlKiBzdHJ1Y3R1cmUgPSBKU0NfR0VUX0RFUklWRURfU1RS
VUNUVVJFKHZtLCBwbGFpblRpbWVTdHJ1Y3R1cmUsIG5ld1RhcmdldCwgY2FsbEZyYW1lLT5qc0Nh
bGxlZSgpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgSVNP
ODYwMTo6RHVyYXRpb24gZHVyYXRpb24geyB9OworICAgIGF1dG8gY291bnQgPSBzdGQ6Om1pbjxz
aXplX3Q+KGNhbGxGcmFtZS0+YXJndW1lbnRDb3VudCgpLCBudW1iZXJPZlRlbXBvcmFsUGxhaW5U
aW1lVW5pdHMpOworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Cisg
ICAgICAgIHVuc2lnbmVkIGR1cmF0aW9uSW5kZXggPSBpICsgc3RhdGljX2Nhc3Q8dW5zaWduZWQ+
KFRlbXBvcmFsVW5pdDo6SG91cik7CisgICAgICAgIGR1cmF0aW9uW2R1cmF0aW9uSW5kZXhdID0g
Y2FsbEZyYW1lLT51bmNoZWNrZWRBcmd1bWVudChpKS50b0ludGVnZXJPckluZmluaXR5KGdsb2Jh
bE9iamVjdCk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAg
ICAgIGlmICghc3RkOjppc2Zpbml0ZShkdXJhdGlvbltkdXJhdGlvbkluZGV4XSkpCisgICAgICAg
ICAgICByZXR1cm4gdGhyb3dWTVJhbmdlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBv
cmFsLlBsYWluVGltZSBwcm9wZXJ0aWVzIG11c3QgYmUgZmluaXRlIl9zKTsKKyAgICB9CisgICAg
UkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRp
bWU6OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBzdHJ1Y3R1cmUsIFdURk1vdmUoZHVy
YXRpb24pKSkpOworfQorCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04oY2FsbFRlbXBvcmFsUGxh
aW5UaW1lLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKikpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhyb3dDb25z
dHJ1Y3RvckNhbm5vdEJlQ2FsbGVkQXNGdW5jdGlvblR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiUGxhaW5UaW1lIikpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUuZnJvbQorSlNDX0RFRklORV9IT1NUX0ZVTkNU
SU9OKHRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3JGdW5jRnJvbSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBn
bG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUo
dm0pOworCisgICAgSlNPYmplY3QqIG9wdGlvbnMgPSBpbnRsR2V0T3B0aW9uc09iamVjdChnbG9i
YWxPYmplY3QsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisKKyAgICBUZW1wb3JhbE92ZXJmbG93IG92ZXJmbG93ID0gdG9UZW1w
b3JhbE92ZXJmbG93KGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIEpTVmFsdWUgaXRlbVZhbHVlID0gY2FsbEZyYW1lLT5h
cmd1bWVudCgwKTsKKworICAgIGlmIChpdGVtVmFsdWUuaW5oZXJpdHM8VGVtcG9yYWxQbGFpblRp
bWU+KHZtKSkKKyAgICAgICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNv
ZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVT
dHJ1Y3R1cmUoKSwganNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4oaXRlbVZhbHVlKS0+cGxhaW5U
aW1lKCkpKSk7CisKKyAgICBSRUxFQVNFX0FORF9SRVRVUk4oc2NvcGUsIEpTVmFsdWU6OmVuY29k
ZShUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxPYmplY3QsIGl0ZW1WYWx1ZSwgb3ZlcmZs
b3cpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRl
bXBvcmFsLnBsYWludGltZS5jb21wYXJlCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9y
YWxQbGFpblRpbWVDb25zdHJ1Y3RvckZ1bmNDb21wYXJlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2Jh
bE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9i
amVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisK
KyAgICBhdXRvKiBvbmUgPSBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNh
bGxGcmFtZS0+YXJndW1lbnQoMCksIHN0ZDo6bnVsbG9wdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQ
VElPTihzY29wZSwgeyB9KTsKKworICAgIGF1dG8qIHR3byA9IFRlbXBvcmFsUGxhaW5UaW1lOjpm
cm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSwgc3RkOjpudWxsb3B0KTsK
KyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZShqc051bWJlcihUZW1wb3JhbFBsYWluVGltZTo6Y29tcGFyZShvbmUsIHR3bykp
KTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmggYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZUNvbnN0cnVjdG9yLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMC4uOTJhOTM2NWUxNTBkNTM5ODY1YWY1ZWYzMjMxNjFjZWJkYzFmMDVmNAotLS0gL2Rldi9u
dWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsUGxhaW5UaW1l
Q29uc3RydWN0b3IuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIx
IEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBP
UgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4K
KyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0Ug
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJJbnRlcm5h
bEZ1bmN0aW9uLmgiCisKK25hbWVzcGFjZSBKU0MgeworCitjbGFzcyBUZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZTsKKworY2xhc3MgVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvciBmaW5hbCA6
IHB1YmxpYyBJbnRlcm5hbEZ1bmN0aW9uIHsKK3B1YmxpYzoKKyAgICB1c2luZyBCYXNlID0gSW50
ZXJuYWxGdW5jdGlvbjsKKyAgICBzdGF0aWMgY29uc3RleHByIHVuc2lnbmVkIFN0cnVjdHVyZUZs
YWdzID0gQmFzZTo6U3RydWN0dXJlRmxhZ3MgfCBIYXNTdGF0aWNQcm9wZXJ0eVRhYmxlOworCisg
ICAgc3RhdGljIFRlbXBvcmFsUGxhaW5UaW1lQ29uc3RydWN0b3IqIGNyZWF0ZShWTSYsIFN0cnVj
dHVyZSosIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlKik7CisgICAgc3RhdGljIFN0cnVjdHVy
ZSogY3JlYXRlU3RydWN0dXJlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBKU1ZhbHVlKTsKKworICAg
IERFQ0xBUkVfSU5GTzsKKworcHJpdmF0ZToKKyAgICBUZW1wb3JhbFBsYWluVGltZUNvbnN0cnVj
dG9yKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIFRlbXBv
cmFsUGxhaW5UaW1lUHJvdG90eXBlKik7Cit9OworU1RBVElDX0FTU0VSVF9JU09fU1VCU1BBQ0Vf
U0hBUkFCTEUoVGVtcG9yYWxQbGFpblRpbWVDb25zdHJ1Y3RvciwgSW50ZXJuYWxGdW5jdGlvbik7
CisKK30gLy8gbmFtZXNwYWNlIEpTQwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUuY3BwCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjhjNjBmNzQ1ZjJhNzAyZDc4MDUzY2IyM2MyYzA2ZjRlNjY4ODgxN2YKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZS5jcHAKQEAgLTAsMCArMSwzODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBw
bGUgSW5jLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiVGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGUuaCIKKworI2luY2x1ZGUgIkpTQ0lubGluZXMuaCIKKyNpbmNs
dWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgorCituYW1lc3BhY2UgSlNDIHsKKworc3RhdGljIEpT
Q19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jQWRk
KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJv
dG90eXBlRnVuY1N1YnRyYWN0KTsKK3N0YXRpYyBKU0NfREVDTEFSRV9IT1NUX0ZVTkNUSU9OKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1dpdGgpOworc3RhdGljIEpTQ19ERUNMQVJFX0hP
U1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVW50aWwpOworc3RhdGlj
IEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5j
U2luY2UpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGVGdW5jUm91bmQpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04o
dGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jRXF1YWxzKTsKK3N0YXRpYyBKU0NfREVDTEFS
RV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0dldElTT0ZpZWxk
cyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZUZ1bmNUb1N0cmluZyk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfSE9TVF9GVU5DVElPTih0
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0pTT04pOworc3RhdGljIEpTQ19ERUNMQVJF
X0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9Mb2NhbGVTdHJp
bmcpOworc3RhdGljIEpTQ19ERUNMQVJFX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGVGdW5jVmFsdWVPZik7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dFVFRFUih0
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlckhvdXIpOworc3RhdGljIEpTQ19ERUNMQVJF
X0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaW51dGUpOwor
c3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVHZXR0ZXJTZWNvbmQpOworc3RhdGljIEpTQ19ERUNMQVJFX0NVU1RPTV9HRVRURVIodGVtcG9y
YWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaWxsaXNlY29uZCk7CitzdGF0aWMgSlNDX0RFQ0xB
UkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pY3Jvc2Vj
b25kKTsKK3N0YXRpYyBKU0NfREVDTEFSRV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1l
UHJvdG90eXBlR2V0dGVyTmFub3NlY29uZCk7CitzdGF0aWMgSlNDX0RFQ0xBUkVfQ1VTVE9NX0dF
VFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlckNhbGVuZGFyKTsKKworfQorCisj
aW5jbHVkZSAiVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUubHV0LmgiCisKK25hbWVzcGFjZSBK
U0MgeworCitjb25zdCBDbGFzc0luZm8gVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGU6OnNfaW5m
byA9IHsgIlRlbXBvcmFsLlBsYWluVGltZSIsICZCYXNlOjpzX2luZm8sICZwbGFpblRpbWVQcm90
b3R5cGVUYWJsZSwgbnVsbHB0ciwgQ1JFQVRFX01FVEhPRF9UQUJMRShUZW1wb3JhbFBsYWluVGlt
ZVByb3RvdHlwZSkgfTsKKworLyogU291cmNlIGZvciBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZS5sdXQuaAorQGJlZ2luIHBsYWluVGltZVByb3RvdHlwZVRhYmxlCisgIGFkZCAgICAgICAgICAg
ICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jQWRkICAgICAgICAgICAgICAgIERvbnRF
bnVtfEZ1bmN0aW9uIDEKKyAgc3VidHJhY3QgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3Rv
dHlwZUZ1bmNTdWJ0cmFjdCAgICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICB3aXRoICAg
ICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1dpdGggICAgICAgICAgICAg
ICBEb250RW51bXxGdW5jdGlvbiAxCisgIHVudGlsICAgICAgICAgICAgdGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGVGdW5jVW50aWwgICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAg
c2luY2UgICAgICAgICAgICB0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNTaW5jZSAgICAg
ICAgICAgICAgRG9udEVudW18RnVuY3Rpb24gMQorICByb3VuZCAgICAgICAgICAgIHRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlRnVuY1JvdW5kICAgICAgICAgICAgICBEb250RW51bXxGdW5jdGlv
biAxCisgIGVxdWFscyAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jRXF1
YWxzICAgICAgICAgICAgIERvbnRFbnVtfEZ1bmN0aW9uIDEKKyAgZ2V0SVNPRmllbGRzICAgICB0
ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNHZXRJU09GaWVsZHMgICAgICAgRG9udEVudW18
RnVuY3Rpb24gMAorICB0b1N0cmluZyAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
RnVuY1RvU3RyaW5nICAgICAgICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIHRvSlNPTiAgICAg
ICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVG9KU09OICAgICAgICAgICAgIERv
bnRFbnVtfEZ1bmN0aW9uIDAKKyAgdG9Mb2NhbGVTdHJpbmcgICB0ZW1wb3JhbFBsYWluVGltZVBy
b3RvdHlwZUZ1bmNUb0xvY2FsZVN0cmluZyAgICAgRG9udEVudW18RnVuY3Rpb24gMAorICB2YWx1
ZU9mICAgICAgICAgIHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY1ZhbHVlT2YgICAgICAg
ICAgICBEb250RW51bXxGdW5jdGlvbiAwCisgIGhvdXIgICAgICAgICAgICAgdGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyICAgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1
c3RvbUFjY2Vzc29yCisgIG1pbnV0ZSAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVHZXR0ZXJNaW51dGUgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29y
CisgIHNlY29uZCAgICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJTZWNv
bmQgICAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG1pbGxpc2Vj
b25kICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaWxsaXNlY29uZCAgICAg
IERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG1pY3Jvc2Vjb25kICAgICAgdGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGVHZXR0ZXJNaWNyb3NlY29uZCAgICAgIERvbnRFbnVtfFJl
YWRPbmx5fEN1c3RvbUFjY2Vzc29yCisgIG5hbm9zZWNvbmQgICAgICAgdGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGVHZXR0ZXJOYW5vc2Vjb25kICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3Rv
bUFjY2Vzc29yCisgIGNhbGVuZGFyICAgICAgICAgdGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVH
ZXR0ZXJDYWxlbmRhciAgICAgICAgIERvbnRFbnVtfFJlYWRPbmx5fEN1c3RvbUFjY2Vzc29yCitA
ZW5kCisqLworCitUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGU6OmNyZWF0ZShWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIFN0
cnVjdHVyZSogc3RydWN0dXJlKQoreworICAgIGF1dG8qIHByb3RvdHlwZSA9IG5ldyAoTm90TnVs
bCwgYWxsb2NhdGVDZWxsPFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlPih2bS5oZWFwKSkgVGVt
cG9yYWxQbGFpblRpbWVQcm90b3R5cGUodm0sIHN0cnVjdHVyZSk7CisgICAgcHJvdG90eXBlLT5m
aW5pc2hDcmVhdGlvbih2bSwgZ2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gcHJvdG90eXBlOwor
fQorCitTdHJ1Y3R1cmUqIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpjcmVhdGVTdHJ1Y3R1
cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHByb3RvdHlw
ZSkKK3sKKyAgICByZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJv
dG90eXBlLCBUeXBlSW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7Cit9
CisKK1RlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpUZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQorICAgIDogQmFzZSh2bSwgc3RydWN0dXJl
KQoreworfQorCit2b2lkIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlOjpmaW5pc2hDcmVhdGlv
bihWTSYgdm0sIEpTR2xvYmFsT2JqZWN0KikKK3sKKyAgICBCYXNlOjpmaW5pc2hDcmVhdGlvbih2
bSk7CisgICAgQVNTRVJUKGluaGVyaXRzKHZtLCBpbmZvKCkpKTsKKyAgICBKU0NfVE9fU1RSSU5H
X1RBR19XSVRIT1VUX1RSQU5TSVRJT04oKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bv
c2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS5hZGQKK0pTQ19E
RUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNBZGQsIChK
U0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7Cisg
ICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8
VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYg
KCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVj
dCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLmFkZCBjYWxsZWQgb24gdmFs
dWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBhdXRvIHJlc3VsdCA9IHBsYWlu
VGltZS0+YWRkKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1lLT5hcmd1bWVudCgwKSk7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVT
dHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9w
cm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUuc3VidHJh
Y3QKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1
bmNTdWJ0cmFjdCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2Fs
bEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBz
Y29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0g
anNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1
ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuc3Vi
dHJhY3QgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAg
YXV0byByZXN1bHQgPSBwbGFpblRpbWUtPnN1YnRyYWN0KGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKwor
ICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZSh2bSwg
Z2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9
CisKKy8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBs
YWludGltZS5wcm90b3R5cGUud2l0aAorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFs
UGxhaW5UaW1lUHJvdG90eXBlRnVuY1dpdGgsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0
LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52
bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1
dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2Fs
bEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRp
bWUucHJvdG90eXBlLndpdGggY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUi
X3MpOworCisgICAgSlNWYWx1ZSB0ZW1wb3JhbFRpbWVMaWtlICA9IGNhbGxGcmFtZS0+YXJndW1l
bnQoMCk7CisgICAgaWYgKCF0ZW1wb3JhbFRpbWVMaWtlLmlzT2JqZWN0KCkpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJGaXJzdCBhcmd1bWVu
dCB0byBUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLndpdGggbXVzdCBiZSBhbiBvYmplY3Qi
X3MpOworCisgICAgYXV0byByZXN1bHQgPSBwbGFpblRpbWUtPndpdGgoZ2xvYmFsT2JqZWN0LCBh
c09iamVjdCh0ZW1wb3JhbFRpbWVMaWtlKSwgY2FsbEZyYW1lLT5hcmd1bWVudCgxKSk7CisgICAg
UkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjpl
bmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRp
bWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShyZXN1bHQpKSk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUudW50
aWwKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1
bmNVbnRpbCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUudW50aWwg
Y2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgYXV0byog
b3RoZXIgPSBUZW1wb3JhbFBsYWluVGltZTo6ZnJvbShnbG9iYWxPYmplY3QsIGNhbGxGcmFtZS0+
YXJndW1lbnQoMCksIHN0ZDo6bnVsbG9wdCk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIGF1dG8gcmVzdWx0ID0gcGxhaW5UaW1lLT51bnRpbChnbG9iYWxPYmpl
Y3QsIG90aGVyLCBjYWxsRnJhbWUtPmFyZ3VtZW50KDEpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBU
SU9OKHNjb3BlLCB7IH0pOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShUZW1wb3JhbER1
cmF0aW9uOjp0cnlDcmVhdGVJZlZhbGlkKGdsb2JhbE9iamVjdCwgV1RGTW92ZShyZXN1bHQpLCBn
bG9iYWxPYmplY3QtPmR1cmF0aW9uU3RydWN0dXJlKCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5
LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS5z
aW5jZQorSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBl
RnVuY1NpbmNlLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2FsbEZyYW1lKiBjYWxs
RnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNj
b3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBq
c0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFtZS0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJv
cihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5zaW5j
ZSBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICBhdXRv
KiBvdGhlciA9IFRlbXBvcmFsUGxhaW5UaW1lOjpmcm9tKGdsb2JhbE9iamVjdCwgY2FsbEZyYW1l
LT5hcmd1bWVudCgwKSwgc3RkOjpudWxsb3B0KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNj
b3BlLCB7IH0pOworCisgICAgYXV0byByZXN1bHQgPSBwbGFpblRpbWUtPnNpbmNlKGdsb2JhbE9i
amVjdCwgb3RoZXIsIGNhbGxGcmFtZS0+YXJndW1lbnQoMSkpOworICAgIFJFVFVSTl9JRl9FWENF
UFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFs
RHVyYXRpb246OnRyeUNyZWF0ZUlmVmFsaWQoZ2xvYmFsT2JqZWN0LCBXVEZNb3ZlKHJlc3VsdCks
IGdsb2JhbE9iamVjdC0+ZHVyYXRpb25TdHJ1Y3R1cmUoKSkpOworfQorCisvLyBodHRwczovL3Rj
MzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBl
LnJvdW5kCitKU0NfREVGSU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5
cGVGdW5jUm91bmQsIChKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNh
bGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xvYmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8g
c2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9
IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRpbWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFs
dWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnJv
dW5kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIGF1
dG8gb3B0aW9ucyA9IGNhbGxGcmFtZS0+YXJndW1lbnQoMCk7CisgICAgaWYgKG9wdGlvbnMuaXNV
bmRlZmluZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0
LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUucm91bmQgcmVxdWlyZXMgYW4g
b3B0aW9ucyBhcmd1bWVudCJfcyk7CisKKyAgICBhdXRvIHJvdW5kZWQgPSBwbGFpblRpbWUtPnJv
dW5kKGdsb2JhbE9iamVjdCwgb3B0aW9ucyk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoVGVtcG9yYWxQbGFpblRpbWU6
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LT5wbGFpblRpbWVTdHJ1Y3R1cmUoKSwgV1RGTW92ZShy
b3VuZGVkKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9yYWwvI3Nl
Yy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLmVxdWFscworSlNDX0RFRklORV9IT1NUX0ZV
TkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0VxdWFscywgKEpTR2xvYmFsT2Jq
ZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0g
PSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NP
UEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBs
YWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGlt
ZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwg
IlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuZXF1YWxzIGNhbGxlZCBvbiB2YWx1ZSB0aGF0
J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIGF1dG8qIG90aGVyID0gVGVtcG9yYWxQbGFp
blRpbWU6OmZyb20oZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDApLCBzdGQ6Om51
bGxvcHQpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisKKyAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihwbGFpblRpbWUtPnBsYWluVGltZSgpID09IG90
aGVyLT5wbGFpblRpbWUoKSkpOworfQorCisvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVt
cG9yYWwvI3NlYy10ZW1wb3JhbC5wbGFpbnRpbWUucHJvdG90eXBlLmdldGlzb2ZpZWxkcworSlND
X0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlRnVuY0dldElT
T0ZpZWxkcywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZy
YW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29w
ZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNE
eW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNWYWx1ZSgp
KTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
Z2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuZXF1YWxz
IGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIEpTT2Jq
ZWN0KiBmaWVsZHMgPSBjb25zdHJ1Y3RFbXB0eU9iamVjdChnbG9iYWxPYmplY3QpOworICAgIGZp
ZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jYWxlbmRhciwgcGxhaW5UaW1l
LT5jYWxlbmRhcigpKTsKKyAgICBmaWVsZHMtPnB1dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1l
cy0+aXNvSG91ciwganNOdW1iZXIocGxhaW5UaW1lLT5ob3VyKCkpKTsKKyAgICBmaWVsZHMtPnB1
dERpcmVjdCh2bSwgdm0ucHJvcGVydHlOYW1lcy0+aXNvTWljcm9zZWNvbmQsIGpzTnVtYmVyKHBs
YWluVGltZS0+bWljcm9zZWNvbmQoKSkpOworICAgIGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5w
cm9wZXJ0eU5hbWVzLT5pc29NaWxsaXNlY29uZCwganNOdW1iZXIocGxhaW5UaW1lLT5taWxsaXNl
Y29uZCgpKSk7CisgICAgZmllbGRzLT5wdXREaXJlY3Qodm0sIHZtLnByb3BlcnR5TmFtZXMtPmlz
b01pbnV0ZSwganNOdW1iZXIocGxhaW5UaW1lLT5taW51dGUoKSkpOworICAgIGZpZWxkcy0+cHV0
RGlyZWN0KHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5pc29OYW5vc2Vjb25kLCBqc051bWJlcihwbGFp
blRpbWUtPm5hbm9zZWNvbmQoKSkpOworICAgIGZpZWxkcy0+cHV0RGlyZWN0KHZtLCB2bS5wcm9w
ZXJ0eU5hbWVzLT5pc29TZWNvbmQsIGpzTnVtYmVyKHBsYWluVGltZS0+c2Vjb25kKCkpKTsKKyAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGZpZWxkcyk7Cit9CisKKy8vIGh0dHBzOi8vdGMzOS5l
cy9wcm9wb3NhbC10ZW1wb3JhbC8jc2VjLXRlbXBvcmFsLnBsYWludGltZS5wcm90b3R5cGUudG9z
dHJpbmcKK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElPTih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlw
ZUZ1bmNUb1N0cmluZywgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSog
Y2FsbEZyYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0
byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1l
ID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBjYWxsRnJhbWUtPnRoaXNW
YWx1ZSgpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUu
dG9TdHJpbmcgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisg
ICAgUkVMRUFTRV9BTkRfUkVUVVJOKHNjb3BlLCBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcodm0s
IHBsYWluVGltZS0+dG9TdHJpbmcoZ2xvYmFsT2JqZWN0LCBjYWxsRnJhbWUtPmFyZ3VtZW50KDAp
KSkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVt
cG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS50b2pzb24KK0pTQ19ERUZJTkVfSE9TVF9GVU5DVElP
Tih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUZ1bmNUb0pTT04sIChKU0dsb2JhbE9iamVjdCog
Z2xvYmFsT2JqZWN0LCBDYWxsRnJhbWUqIGNhbGxGcmFtZSkpCit7CisgICAgVk0mIHZtID0gZ2xv
YmFsT2JqZWN0LT52bSgpOworICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZt
KTsKKworICAgIGF1dG8qIHBsYWluVGltZSA9IGpzRHluYW1pY0Nhc3Q8VGVtcG9yYWxQbGFpblRp
bWUqPih2bSwgY2FsbEZyYW1lLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisg
ICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1w
b3JhbC5QbGFpblRpbWUucHJvdG90eXBlLnRvSlNPTiBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5v
dCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5n
KHZtLCBwbGFpblRpbWUtPnRvU3RyaW5nKCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3By
b3Bvc2FsLXRlbXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS50b2xvY2Fs
ZXN0cmluZworSlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlRnVuY1RvTG9jYWxlU3RyaW5nLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgQ2Fs
bEZyYW1lKiBjYWxsRnJhbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBw
bGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIGNhbGxGcmFt
ZS0+dGhpc1ZhbHVlKCkpOworICAgIGlmICghcGxhaW5UaW1lKQorICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNjb3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnBy
b3RvdHlwZS50b0xvY2FsZVN0cmluZyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWlu
VGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzU3RyaW5nKHZtLCBwbGFp
blRpbWUtPnRvU3RyaW5nKCkpKTsKK30KKworLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRl
bXBvcmFsLyNzZWMtdGVtcG9yYWwucGxhaW50aW1lLnByb3RvdHlwZS52YWx1ZW9mCitKU0NfREVG
SU5FX0hPU1RfRlVOQ1RJT04odGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVGdW5jVmFsdWVPZiwg
KEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSopKQoreworICAgIFZNJiB2
bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19T
Q09QRSh2bSk7CisKKyAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihnbG9iYWxPYmplY3QsIHNj
b3BlLCAiVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS52YWx1ZU9mIG11c3Qgbm90IGJlIGNh
bGxlZC4gVG8gY29tcGFyZSBQbGFpblRpbWUgdmFsdWVzLCB1c2UgVGVtcG9yYWwuUGxhaW5UaW1l
LmNvbXBhcmUiX3MpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFp
blRpbWVQcm90b3R5cGVHZXR0ZXJIb3VyLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwg
RW5jb2RlZEpTVmFsdWUgdGhpc1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9
IGdsb2JhbE9iamVjdC0+dm0oKTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09Q
RSh2bSk7CisKKyAgICBhdXRvKiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxh
aW5UaW1lKj4odm0sIEpTVmFsdWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWlu
VGltZSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29w
ZSwgIlRlbXBvcmFsLlBsYWluVGltZS5wcm90b3R5cGUuaG91ciBjYWxsZWQgb24gdmFsdWUgdGhh
dCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHBsYWluVGltZS0+aG91cigpKSk7Cit9CisKK0pTQ19ERUZJTkVfQ1VTVE9NX0dFVFRF
Uih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pbnV0ZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWlj
Q2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1pbnV0ZSBj
YWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBhIHBsYWluVGltZSJfcyk7CisKKyAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzTnVtYmVyKHBsYWluVGltZS0+bWludXRlKCkpKTsKK30KKworSlND
X0RFRklORV9DVVNUT01fR0VUVEVSKHRlbXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyU2Vj
b25kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhpc1Zh
bHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0oKTsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRvKiBw
bGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFsdWU6
OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWluVGlt
ZS5wcm90b3R5cGUuc2Vjb25kIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1l
Il9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5z
ZWNvbmQoKSkpOworfQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRp
bWVQcm90b3R5cGVHZXR0ZXJNaWxsaXNlY29uZCwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmpl
Y3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYg
dm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1df
U0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3Jh
bFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFw
bGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwg
c2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm1pbGxpc2Vjb25kIGNhbGxlZCBv
biB2YWx1ZSB0aGF0J3Mgbm90IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNOdW1iZXIocGxhaW5UaW1lLT5taWxsaXNlY29uZCgpKSk7Cit9CisKK0pTQ19E
RUZJTkVfQ1VTVE9NX0dFVFRFUih0ZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZUdldHRlck1pY3Jv
c2Vjb25kLCAoSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRW5jb2RlZEpTVmFsdWUgdGhp
c1ZhbHVlLCBQcm9wZXJ0eU5hbWUpKQoreworICAgIFZNJiB2bSA9IGdsb2JhbE9iamVjdC0+dm0o
KTsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKKyAgICBhdXRv
KiBwbGFpblRpbWUgPSBqc0R5bmFtaWNDYXN0PFRlbXBvcmFsUGxhaW5UaW1lKj4odm0sIEpTVmFs
dWU6OmRlY29kZSh0aGlzVmFsdWUpKTsKKyAgICBpZiAoIXBsYWluVGltZSkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZ2xvYmFsT2JqZWN0LCBzY29wZSwgIlRlbXBvcmFsLlBsYWlu
VGltZS5wcm90b3R5cGUubWljcm9zZWNvbmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBw
bGFpblRpbWUiX3MpOworCisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFp
blRpbWUtPm1pY3Jvc2Vjb25kKCkpKTsKK30KKworSlNDX0RFRklORV9DVVNUT01fR0VUVEVSKHRl
bXBvcmFsUGxhaW5UaW1lUHJvdG90eXBlR2V0dGVyTmFub3NlY29uZCwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1ZhbHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkK
K3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmplY3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERF
Q0xBUkVfVEhST1dfU0NPUEUodm0pOworCisgICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWlj
Q2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZtLCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7
CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGds
b2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3JhbC5QbGFpblRpbWUucHJvdG90eXBlLm5hbm9zZWNv
bmQgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYSBwbGFpblRpbWUiX3MpOworCisgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc051bWJlcihwbGFpblRpbWUtPm5hbm9zZWNvbmQoKSkpOwor
fQorCitKU0NfREVGSU5FX0NVU1RPTV9HRVRURVIodGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGVH
ZXR0ZXJDYWxlbmRhciwgKEpTR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QsIEVuY29kZWRKU1Zh
bHVlIHRoaXNWYWx1ZSwgUHJvcGVydHlOYW1lKSkKK3sKKyAgICBWTSYgdm0gPSBnbG9iYWxPYmpl
Y3QtPnZtKCk7CisgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOworCisg
ICAgYXV0byogcGxhaW5UaW1lID0ganNEeW5hbWljQ2FzdDxUZW1wb3JhbFBsYWluVGltZSo+KHZt
LCBKU1ZhbHVlOjpkZWNvZGUodGhpc1ZhbHVlKSk7CisgICAgaWYgKCFwbGFpblRpbWUpCisgICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGdsb2JhbE9iamVjdCwgc2NvcGUsICJUZW1wb3Jh
bC5QbGFpblRpbWUucHJvdG90eXBlLmNhbGVuZGFyIGNhbGxlZCBvbiB2YWx1ZSB0aGF0J3Mgbm90
IGEgcGxhaW5UaW1lIl9zKTsKKworICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUocGxhaW5UaW1l
LT5jYWxlbmRhcigpKTsKK30KKworfSAvLyBuYW1lc3BhY2UgSlNDCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZS5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQbGFpblRpbWVQcm90b3R5cGUu
aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yZWEyMjlhN2JkNTE5NGJiNDYxNmZhNDcyYzJmYWQ2MTRkM2FlNThlCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxQ
bGFpblRpbWVQcm90b3R5cGUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDIxIEFwcGxlIEluYy4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJK
U09iamVjdC5oIgorCituYW1lc3BhY2UgSlNDIHsKKworY2xhc3MgVGVtcG9yYWxQbGFpblRpbWVQ
cm90b3R5cGUgZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CitwdWJsaWM6CisgICAg
dXNpbmcgQmFzZSA9IEpTTm9uRmluYWxPYmplY3Q7CisgICAgc3RhdGljIGNvbnN0ZXhwciB1bnNp
Z25lZCBTdHJ1Y3R1cmVGbGFncyA9IEJhc2U6OlN0cnVjdHVyZUZsYWdzIHwgSGFzU3RhdGljUHJv
cGVydHlUYWJsZTsKKworICAgIHRlbXBsYXRlPHR5cGVuYW1lIENlbGxUeXBlLCBTdWJzcGFjZUFj
Y2Vzcz4KKyAgICBzdGF0aWMgSXNvU3Vic3BhY2UqIHN1YnNwYWNlRm9yKFZNJiB2bSkKKyAgICB7
CisgICAgICAgIFNUQVRJQ19BU1NFUlRfSVNPX1NVQlNQQUNFX1NIQVJBQkxFKFRlbXBvcmFsUGxh
aW5UaW1lUHJvdG90eXBlLCBCYXNlKTsKKyAgICAgICAgcmV0dXJuICZ2bS5wbGFpbk9iamVjdFNw
YWNlOworICAgIH0KKworICAgIHN0YXRpYyBUZW1wb3JhbFBsYWluVGltZVByb3RvdHlwZSogY3Jl
YXRlKFZNJiwgSlNHbG9iYWxPYmplY3QqLCBTdHJ1Y3R1cmUqKTsKKyAgICBzdGF0aWMgU3RydWN0
dXJlKiBjcmVhdGVTdHJ1Y3R1cmUoVk0mLCBKU0dsb2JhbE9iamVjdCosIEpTVmFsdWUpOworCisg
ICAgREVDTEFSRV9JTkZPOworCitwcml2YXRlOgorICAgIFRlbXBvcmFsUGxhaW5UaW1lUHJvdG90
eXBlKFZNJiwgU3RydWN0dXJlKik7CisgICAgdm9pZCBmaW5pc2hDcmVhdGlvbihWTSYsIEpTR2xv
YmFsT2JqZWN0Kik7Cit9OworCit9IC8vIG5hbWVzcGFjZSBKU0MKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKaW5kZXggNjRlMTdhN2Y4
M2Y5NDlhNDdkYmMzNjA5NGIxZjE2OTY3YTZkZTE1NS4uYTA1NjJjZjA0NThjODU1ZWFhMTliZWRh
NmVhMTRiMmM2ZWRiODk5YyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvVGVtcG9yYWxUaW1lWm9uZS5jcHAKQEAgLTU4LDE3ICs1OCw2IEBAIFRlbXBvcmFsVGltZVpv
bmU6OlRlbXBvcmFsVGltZVpvbmUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgVGltZVpv
bmUgdGltZVpvCiB7CiB9CiAKLS8vIGh0dHBzOi8vdGMzOS5lcy9wcm9wb3NhbC10ZW1wb3JhbC8j
c3VwLWlzdmFsaWR0aW1lem9uZW5hbWUKLXN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gVGVtcG9y
YWxUaW1lWm9uZTo6aWRGb3JUaW1lWm9uZU5hbWUoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAg
Y29uc3QgYXV0byYgdGltZVpvbmVzID0gaW50bEF2YWlsYWJsZVRpbWVab25lcygpOwotICAgIGZv
ciAodW5zaWduZWQgaW5kZXggPSAwOyBpbmRleCA8IHRpbWVab25lcy5zaXplKCk7ICsraW5kZXgp
IHsKLSAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdBU0NJSUNhc2UodGltZVpvbmVzW2luZGV4XSwg
c3RyaW5nKSkKLSAgICAgICAgICAgIHJldHVybiBpbmRleDsKLSAgICB9Ci0gICAgcmV0dXJuIHN0
ZDo6bnVsbG9wdDsKLX0KLQogLy8gaHR0cHM6Ly90YzM5LmVzL3Byb3Bvc2FsLXRlbXBvcmFsLyNz
ZWMtdGVtcG9yYWwtcGFyc2V0ZW1wb3JhbHRpbWVab25lc3RyaW5nCiBzdGF0aWMgc3RkOjpvcHRp
b25hbDxpbnQ2NF90PiBwYXJzZVRlbXBvcmFsVGltZVpvbmVTdHJpbmcoU3RyaW5nVmlldykKIHsK
QEAgLTExMSw3ICsxMDAsNyBAQCBKU09iamVjdCogVGVtcG9yYWxUaW1lWm9uZTo6ZnJvbShKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1ZhbHVlIHRpbWVab25lTAogICAgIGlmICh1dGNP
ZmZzZXQpCiAgICAgICAgIHJldHVybiBUZW1wb3JhbFRpbWVab25lOjpjcmVhdGVGcm9tVVRDT2Zm
c2V0KHZtLCBnbG9iYWxPYmplY3QtPnRpbWVab25lU3RydWN0dXJlKCksIHV0Y09mZnNldC52YWx1
ZSgpKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IGlkRm9y
VGltZVpvbmVOYW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25l
SUQ+IGlkZW50aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmlu
Zyk7CiAgICAgaWYgKGlkZW50aWZpZXIpCiAgICAgICAgIHJldHVybiBUZW1wb3JhbFRpbWVab25l
OjpjcmVhdGVGcm9tSUQodm0sIGdsb2JhbE9iamVjdC0+dGltZVpvbmVTdHJ1Y3R1cmUoKSwgaWRl
bnRpZmllci52YWx1ZSgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvVGVtcG9yYWxUaW1lWm9uZS5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
VGVtcG9yYWxUaW1lWm9uZS5oCmluZGV4IGJjMjgxNTNiN2ZkMjViYjc2NWUyNTA2ZmQ5NmZhNzZi
NWU1MTBhZGIuLmU1NzllYTNhNjNmNjIxZmRmNDMyNjExMzI5NzQ5YmYzYzQ3NDZhNmQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmUuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lLmgKQEAg
LTI1LDYgKzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJJU084NjAxLmgiCiAj
aW5jbHVkZSAiSW50bE9iamVjdC5oIgogI2luY2x1ZGUgIkpTT2JqZWN0LmgiCiAjaW5jbHVkZSA8
d3RmL1ZhcmlhbnQuaD4KQEAgLTQ3LDEwICs0OCw5IEBAIGNsYXNzIFRlbXBvcmFsVGltZVpvbmUg
ZmluYWwgOiBwdWJsaWMgSlNOb25GaW5hbE9iamVjdCB7CiAKICAgICBERUNMQVJFX0lORk87CiAK
LSAgICB1c2luZyBUaW1lWm9uZSA9IFZhcmlhbnQ8VGltZVpvbmVJRCwgaW50NjRfdD47Ci0gICAg
VGltZVpvbmUgdGltZVpvbmUoKSBjb25zdCB7IHJldHVybiBtX3RpbWVab25lOyB9CisgICAgdXNp
bmcgVGltZVpvbmUgPSBJU084NjAxOjpUaW1lWm9uZTsKIAotICAgIHN0YXRpYyBzdGQ6Om9wdGlv
bmFsPFRpbWVab25lSUQ+IGlkRm9yVGltZVpvbmVOYW1lKFN0cmluZ1ZpZXcpOworICAgIFRpbWVa
b25lIHRpbWVab25lKCkgY29uc3QgeyByZXR1cm4gbV90aW1lWm9uZTsgfQogCiAgICAgc3RhdGlj
IEpTT2JqZWN0KiBmcm9tKEpTR2xvYmFsT2JqZWN0KiwgSlNWYWx1ZSk7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rv
ci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9UZW1wb3JhbFRpbWVab25lQ29u
c3RydWN0b3IuY3BwCmluZGV4IDk5MzM2NWFiMzMyZjhmZmFkODc1ODgwMDA4MTBjZDMwZWRkYTYx
ZDcuLjZkMjNlOGYwNTlkYzc5YmNmYTI5ZDljNjVhMDVlZWU4M2IzYTVjYzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1RlbXBvcmFsVGltZVpvbmVDb25zdHJ1Y3Rv
ci5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVGVtcG9yYWxUaW1lWm9u
ZUNvbnN0cnVjdG9yLmNwcApAQCAtNzQsNiArNzQsNyBAQCB2b2lkIFRlbXBvcmFsVGltZVpvbmVD
b25zdHJ1Y3Rvcjo6ZmluaXNoQ3JlYXRpb24oVk0mIHZtLCBUZW1wb3JhbFRpbWVab25lUHJvdG90
eQogewogICAgIEJhc2U6OmZpbmlzaENyZWF0aW9uKHZtLCAwLCAiVGltZVpvbmUiX3MsIFByb3Bl
cnR5QWRkaXRpb25Nb2RlOjpXaXRob3V0U3RydWN0dXJlVHJhbnNpdGlvbik7CiAgICAgcHV0RGly
ZWN0V2l0aG91dFRyYW5zaXRpb24odm0sIHZtLnByb3BlcnR5TmFtZXMtPnByb3RvdHlwZSwgdGVt
cG9yYWxUaW1lWm9uZVByb3RvdHlwZSwgUHJvcGVydHlBdHRyaWJ1dGU6OkRvbnRFbnVtIHwgUHJv
cGVydHlBdHRyaWJ1dGU6OkRvbnREZWxldGUgfCBQcm9wZXJ0eUF0dHJpYnV0ZTo6UmVhZE9ubHkp
OworICAgIHRlbXBvcmFsVGltZVpvbmVQcm90b3R5cGUtPnB1dERpcmVjdFdpdGhvdXRUcmFuc2l0
aW9uKHZtLCB2bS5wcm9wZXJ0eU5hbWVzLT5jb25zdHJ1Y3RvciwgdGhpcywgc3RhdGljX2Nhc3Q8
dW5zaWduZWQ+KFByb3BlcnR5QXR0cmlidXRlOjpEb250RW51bSkpOwogfQogCiBKU0NfREVGSU5F
X0hPU1RfRlVOQ1RJT04oY29uc3RydWN0VGVtcG9yYWxUaW1lWm9uZSwgKEpTR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QsIENhbGxGcmFtZSogY2FsbEZyYW1lKSkKQEAgLTkyLDcgKzkzLDcgQEAg
SlNDX0RFRklORV9IT1NUX0ZVTkNUSU9OKGNvbnN0cnVjdFRlbXBvcmFsVGltZVpvbmUsIChKU0ds
b2JhbE9iamVjdCogZ2xvYmFsT2JqZWMKICAgICBpZiAodXRjT2Zmc2V0KQogICAgICAgICByZXR1
cm4gSlNWYWx1ZTo6ZW5jb2RlKFRlbXBvcmFsVGltZVpvbmU6OmNyZWF0ZUZyb21VVENPZmZzZXQo
dm0sIHN0cnVjdHVyZSwgdXRjT2Zmc2V0LnZhbHVlKCkpKTsKIAotICAgIHN0ZDo6b3B0aW9uYWw8
VGltZVpvbmVJRD4gaWRlbnRpZmllciA9IFRlbXBvcmFsVGltZVpvbmU6OmlkRm9yVGltZVpvbmVO
YW1lKHRpbWVab25lU3RyaW5nKTsKKyAgICBzdGQ6Om9wdGlvbmFsPFRpbWVab25lSUQ+IGlkZW50
aWZpZXIgPSBJU084NjAxOjppZEZvclRpbWVab25lTmFtZSh0aW1lWm9uZVN0cmluZyk7CiAgICAg
aWYgKCFpZGVudGlmaWVyKSB7CiAgICAgICAgIHRocm93UmFuZ2VFcnJvcihnbG9iYWxPYmplY3Qs
IHNjb3BlLCAiYXJndW1lbnQgbmVlZHMgdG8gYmUgVVRDIG9mZnNldCBzdHJpbmcgb3IgVGltZVpv
bmUgaWRlbnRpZmllciJfcyk7CiAgICAgICAgIHJldHVybiB7IH07CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9WTS5jcHAKaW5kZXggMDJmMTg5N2IwZjM5MTg1NjBiNTA1MzE5ZDZlNDYxYmRiNWQ3
MTBkZC4uMTVkZGIyYWZhZTUyMzc3N2FlOTA2NmIzMWIwZDcxMDU0NmI3ZDg3MiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL1ZNLmNwcApAQCAtMTY0LDYgKzE2NCw3IEBACiAjaW5jbHVkZSAi
U3ltYm9sT2JqZWN0LmgiCiAjaW5jbHVkZSAiVGVtcG9yYWxDYWxlbmRhci5oIgogI2luY2x1ZGUg
IlRlbXBvcmFsRHVyYXRpb24uaCIKKyNpbmNsdWRlICJUZW1wb3JhbFBsYWluVGltZS5oIgogI2lu
Y2x1ZGUgIlRlbXBvcmFsVGltZVpvbmUuaCIKICNpbmNsdWRlICJUZXN0UnVubmVyVXRpbHMuaCIK
ICNpbmNsdWRlICJUaHVua0dlbmVyYXRvcnMuaCIKQEAgLTE1ODgsNiArMTU4OSw4IEBAIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhzeW1ib2xTcGFjZSwgZGVzdHJ1Y3Rp
YmxlQ2VsbEhlYXBDZWxsVHlwCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coc3ltYm9sT2JqZWN0U3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFN5bWJvbE9iamVj
dCkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wbGF0ZU9iamVj
dERlc2NyaXB0b3JTcGFjZSwgZGVzdHJ1Y3RpYmxlQ2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgSlNU
ZW1wbGF0ZU9iamVjdERlc2NyaXB0b3IpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVN
QkVSX1NMT1codGVtcG9yYWxDYWxlbmRhclNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBU
ZW1wb3JhbENhbGVuZGFyKQorRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUl9TTE9X
KHRlbXBvcmFsRHVyYXRpb25TcGFjZSwgY2VsbEhlYXBDZWxsVHlwZS5nZXQoKSwgVGVtcG9yYWxE
dXJhdGlvbikKK0RZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3Jh
bFBsYWluVGltZVNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3JhbFBsYWluVGlt
ZSkKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyh0ZW1wb3JhbFRpbWVa
b25lU3BhY2UsIGNlbGxIZWFwQ2VsbFR5cGUuZ2V0KCksIFRlbXBvcmFsVGltZVpvbmUpCiBEWU5B
TUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NMT1codWludDhBcnJheVNwYWNlLCBjZWxs
SGVhcENlbGxUeXBlLmdldCgpLCBKU1VpbnQ4QXJyYXkpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9E
RUZJTkVfTUVNQkVSX1NMT1codWludDhDbGFtcGVkQXJyYXlTcGFjZSwgY2VsbEhlYXBDZWxsVHlw
ZS5nZXQoKSwgSlNVaW50OENsYW1wZWRBcnJheSkKQEAgLTE2MjIsNyArMTYyNSw2IEBAIERZTkFN
SUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVJfU0xPVyhpbnRsUmVsYXRpdmVUaW1lRm9ybWF0
U3BhY2UsIGludGxSZWxhdGl2CiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1coaW50bFNlZ21lbnRJdGVyYXRvclNwYWNlLCBpbnRsU2VnbWVudEl0ZXJhdG9ySGVhcENlbGxU
eXBlLmdldCgpLCBJbnRsU2VnbWVudEl0ZXJhdG9yKQogRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVG
SU5FX01FTUJFUl9TTE9XKGludGxTZWdtZW50ZXJTcGFjZSwgaW50bFNlZ21lbnRlckhlYXBDZWxs
VHlwZS5nZXQoKSwgSW50bFNlZ21lbnRlcikKIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9N
RU1CRVJfU0xPVyhpbnRsU2VnbWVudHNTcGFjZSwgaW50bFNlZ21lbnRzSGVhcENlbGxUeXBlLmdl
dCgpLCBJbnRsU2VnbWVudHMpCi1EWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVfTUVNQkVSX1NM
T1codGVtcG9yYWxEdXJhdGlvblNwYWNlLCBjZWxsSGVhcENlbGxUeXBlLmdldCgpLCBUZW1wb3Jh
bER1cmF0aW9uKQogI2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIERZTkFNSUNfSVNPX1NVQlNQQUNF
X0RFRklORV9NRU1CRVJfU0xPVyhqc1RvV2FzbUlDQ2FsbGVlU3BhY2UsIGNlbGxIZWFwQ2VsbFR5
cGUuZ2V0KCksIEpTVG9XYXNtSUNDYWxsZWUpCiBEWU5BTUlDX0lTT19TVUJTUEFDRV9ERUZJTkVf
TUVNQkVSX1NMT1cod2ViQXNzZW1ibHlDb2RlQmxvY2tTcGFjZSwgd2ViQXNzZW1ibHlDb2RlQmxv
Y2tIZWFwQ2VsbFR5cGUuZ2V0KCksIEpTV2ViQXNzZW1ibHlDb2RlQmxvY2spIC8vIEhhc2g6MHg5
YWQ5OTVjZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0uaCBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1ZNLmgKaW5kZXggMWU3MjVjZTM3NDg3M2Uw
MDdkMWIwM2Y1NDk1NmM1MDIzMDRjNmIzNy4uN2E1OGIyNzllNjcwYTg0MDNkMWYzOTQxMjM1N2Q1
ZTc3MTEzZjU3OCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvVk0u
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9WTS5oCkBAIC0xOTUsNiArMTk1
LDcgQEAgY2xhc3MgVW5saW5rZWRNb2R1bGVQcm9ncmFtQ29kZUJsb2NrOwogY2xhc3MgVmlydHVh
bFJlZ2lzdGVyOwogY2xhc3MgVk1FbnRyeVNjb3BlOwogY2xhc3MgVGVtcG9yYWxDYWxlbmRhcjsK
K2NsYXNzIFRlbXBvcmFsUGxhaW5UaW1lOwogY2xhc3MgVGVtcG9yYWxUaW1lWm9uZTsKIGNsYXNz
IFRvcExldmVsR2xvYmFsT2JqZWN0U2NvcGU7CiBjbGFzcyBUeXBlUHJvZmlsZXI7CkBAIC01OTUs
NiArNTk2LDggQEAgY2xhc3MgVk0gOiBwdWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8Vk0+LCBw
dWJsaWMgRG91Ymx5TGlua2VkTGlzdE5vZGU8Vk0+IHsKICAgICBEWU5BTUlDX0lTT19TVUJTUEFD
RV9ERUZJTkVfTUVNQkVSKHN5bWJvbE9iamVjdFNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQ
QUNFX0RFRklORV9NRU1CRVIodGVtcGxhdGVPYmplY3REZXNjcmlwdG9yU3BhY2UpCiAgICAgRFlO
QU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbENhbGVuZGFyU3BhY2UpCisg
ICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbER1cmF0aW9uU3Bh
Y2UpCisgICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01FTUJFUih0ZW1wb3JhbFBsYWlu
VGltZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIodGVtcG9y
YWxUaW1lWm9uZVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
dWludDhBcnJheVNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
dWludDhDbGFtcGVkQXJyYXlTcGFjZSkKQEAgLTYyMCw3ICs2MjMsNiBAQCBjbGFzcyBWTSA6IHB1
YmxpYyBUaHJlYWRTYWZlUmVmQ291bnRlZDxWTT4sIHB1YmxpYyBEb3VibHlMaW5rZWRMaXN0Tm9k
ZTxWTT4gewogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoaW50bFNlZ21l
bnRJdGVyYXRvclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIo
aW50bFNlZ21lbnRlclNwYWNlKQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1C
RVIoaW50bFNlZ21lbnRzU3BhY2UpCi0gICAgRFlOQU1JQ19JU09fU1VCU1BBQ0VfREVGSU5FX01F
TUJFUih0ZW1wb3JhbER1cmF0aW9uU3BhY2UpCiAjaWYgRU5BQkxFKFdFQkFTU0VNQkxZKQogICAg
IERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIoanNUb1dhc21JQ0NhbGxlZVNwYWNl
KQogICAgIERZTkFNSUNfSVNPX1NVQlNQQUNFX0RFRklORV9NRU1CRVIod2ViQXNzZW1ibHlDb2Rl
QmxvY2tTcGFjZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nUGFyc2lu
Z0J1ZmZlci5oIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmgKaW5k
ZXggZjBhODRmNzU3ZTNlZmU3YjBhN2RhY2FlZjA1NmZiYjhhYjk0MjU0Ny4uNTJhOWJhZGJlMDcz
Y2M1NjA0NWU0NmIzZTk5ZGIwMjc3YWFiMWUzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dURi93dGYv
dGV4dC9TdHJpbmdQYXJzaW5nQnVmZmVyLmgKKysrIGIvU291cmNlL1dURi93dGYvdGV4dC9TdHJp
bmdQYXJzaW5nQnVmZmVyLmgKQEAgLTYxLDkgKzYxLDkgQEAgY2xhc3MgU3RyaW5nUGFyc2luZ0J1
ZmZlciBmaW5hbCB7CiAKICAgICBjb25zdGV4cHIgdW5zaWduZWQgbGVuZ3RoUmVtYWluaW5nKCkg
Y29uc3QgeyByZXR1cm4gbV9lbmQgLSBtX3Bvc2l0aW9uOyB9CiAKLSAgICBTdHJpbmdWaWV3IHN0
cmluZ1ZpZXdPZkNoYXJhY3RlcnNSZW1haW5pbmcoKSB7IHJldHVybiB7IG1fcG9zaXRpb24sIGxl
bmd0aFJlbWFpbmluZygpIH07IH0KKyAgICBTdHJpbmdWaWV3IHN0cmluZ1ZpZXdPZkNoYXJhY3Rl
cnNSZW1haW5pbmcoKSBjb25zdCB7IHJldHVybiB7IG1fcG9zaXRpb24sIGxlbmd0aFJlbWFpbmlu
ZygpIH07IH0KIAotICAgIENoYXJhY3RlclR5cGUgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKQorICAg
IENoYXJhY3RlclR5cGUgb3BlcmF0b3JbXSh1bnNpZ25lZCBpKSBjb25zdAogICAgIHsKICAgICAg
ICAgQVNTRVJUKGkgPCBsZW5ndGhSZW1haW5pbmcoKSk7CiAgICAgICAgIHJldHVybiBtX3Bvc2l0
aW9uW2ldOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxv
ZwppbmRleCBhZTA1MDQxOGI1MWY4ZTlhNzA3MTBkMGRhMTBhMDI2N2U5NzdhNzI1Li4xZWZiNWNl
MGZiOWQ3ZGZjYjljZTJlZDRlOTQzYmUxNDBiMDA5YzY5IDEwMDY0NAotLS0gYS9KU1Rlc3RzL0No
YW5nZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2IEBACisyMDIxLTA5
LTA3ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10g
SW1wbGVtZW50IFRlbXBvcmFsLlBsYWluVGltZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjI5ODkyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBzdHJlc3MvdGVtcG9yYWwtY2FsZW5kYXIuanM6CisgICAg
ICAgICogc3RyZXNzL3RlbXBvcmFsLWR1cmF0aW9uLmpzOgorICAgICAgICAqIHN0cmVzcy90ZW1w
b3JhbC1wbGFpbnRpbWUuanM6IEFkZGVkLgorICAgICAgICAoc2hvdWxkQmUpOgorICAgICAgICAo
c2hvdWxkVGhyb3cpOgorICAgICAgICAoc2hvdWxkQmUuU3RyaW5nLlRlbXBvcmFsLlBsYWluVGlt
ZS5mcm9tKToKKyAgICAgICAgKGxldC50aW1lLlRlbXBvcmFsLlBsYWluVGltZS5mcm9tLnNob3Vs
ZEJlKToKKyAgICAgICAgKGxldC50ZXh0Lm9mLmZhaWx1cmVzLnNob3VsZFRocm93KToKKyAgICAg
ICAgKHByaW50KToKKyAgICAgICAgKHNob3VsZEJlLlRlbXBvcmFsLlBsYWluVGltZS5mcm9tKToK
KyAgICAgICAgKG5ldy5UZW1wb3JhbC5QbGFpblRpbWUudmFsdWVPZik6CisgICAgICAgIChzaG91
bGRCZS5TdHJpbmcudGltZS51bnRpbC5UZW1wb3JhbC5QbGFpblRpbWUuZnJvbSk6CisgICAgICAg
ICogc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzOgorICAgICAgICAobGV0LnRleHQub2YuZmFp
bHVyZXMuc2hvdWxkVGhyb3cpOiBEZWxldGVkLgorICAgICAgICAqIHRlc3QyNjIvY29uZmlnLnlh
bWw6CisKIDIwMjEtMDktMDcgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFwcGxlLmNvbT4KIAog
ICAgICAgICBNYXRoLmh5cG90IGNoZWNrcyBmb3IgaW5maW5pdGUgdmFsdWVzIHByZW1hdHVyZWx5
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1jYWxlbmRhci5qcyBiL0pTVGVz
dHMvc3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzCmluZGV4IGVmMGFjMTExYTViOGI3M2MzYTAx
NzVkYWE3NzkzNmMwODlhZmNmNDQuLjM1MDk3MWNlM2NhMGNkMTM5NTE5Njk4ODRiZDQ1YjE2YjE5
Y2IzOWQgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzCisr
KyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWNhbGVuZGFyLmpzCkBAIC0xOCw2ICsxOCwxMyBA
QCBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3NhZ2UpIHsKICAgICAg
ICAgc2hvdWxkQmUoU3RyaW5nKGVycm9yKSwgbWVzc2FnZSk7CiB9CiAKK3Nob3VsZEJlKFRlbXBv
cmFsLkNhbGVuZGFyIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworc2hvdWxkQmUoVGVtcG9y
YWwuQ2FsZW5kYXIubGVuZ3RoLCAwKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURl
c2NyaXB0b3IoVGVtcG9yYWwuQ2FsZW5kYXIsICdwcm90b3R5cGUnKS53cml0YWJsZSwgZmFsc2Up
Oworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5DYWxl
bmRhciwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuQ2FsZW5kYXIsICdwcm90b3R5cGUnKS5j
b25maWd1cmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLkNhbGVuZGFyLnByb3RvdHlw
ZS5jb25zdHJ1Y3RvciwgVGVtcG9yYWwuQ2FsZW5kYXIpOworCiB7CiAgICAgbGV0IGNhbGVuZGFy
ID0gbmV3IFRlbXBvcmFsLkNhbGVuZGFyKCJpc284NjAxIik7CiAgICAgc2hvdWxkQmUoY2FsZW5k
YXIuaWQsIGBpc284NjAxYCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1k
dXJhdGlvbi5qcyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWR1cmF0aW9uLmpzCmluZGV4IGY2
NTIyNzBhMDgyOGVmNGY5OWY5NGI0YzM2NWJiN2M4ZWM4MTM4OTcuLmYyNzk3ODFmYWM2NWM3OWQ5
MGE3N2RlMjQyYWMxYzBmY2IwMDk2MmIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3RlbXBv
cmFsLWR1cmF0aW9uLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLWR1cmF0aW9uLmpz
CkBAIC0yNyw2ICsyNyw3IEBAIGZ1bmN0aW9uIHNob3VsZFRocm93KGZ1bmMsIGVycm9yVHlwZSkg
ewogc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5EdXJh
dGlvbiwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKIHNob3VsZEJlKE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuRHVyYXRpb24sICdwcm90b3R5cGUnKS5j
b25maWd1cmFibGUsIGZhbHNlKTsKIHNob3VsZFRocm93KCgpID0+IFRlbXBvcmFsLkR1cmF0aW9u
KCksIFR5cGVFcnJvcik7CitzaG91bGRCZShUZW1wb3JhbC5EdXJhdGlvbi5wcm90b3R5cGUuY29u
c3RydWN0b3IsIFRlbXBvcmFsLkR1cmF0aW9uKTsKIAogc2hvdWxkQmUobmV3IFRlbXBvcmFsLkR1
cmF0aW9uKCkgaW5zdGFuY2VvZiBUZW1wb3JhbC5EdXJhdGlvbiwgdHJ1ZSk7CiB7CmRpZmYgLS1n
aXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC1wbGFpbnRpbWUuanMgYi9KU1Rlc3RzL3N0cmVz
cy90ZW1wb3JhbC1wbGFpbnRpbWUuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYWQ1ZjI0NGQ5MTQzOGZkZWYzMWE3
MmVmYzI2ZDQzM2VmYTNlZDFiOQotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvc3RyZXNzL3Rl
bXBvcmFsLXBsYWludGltZS5qcwpAQCAtMCwwICsxLDM2MyBAQAorLy9AIHJlcXVpcmVPcHRpb25z
KCItLXVzZVRlbXBvcmFsPTEiKQorCitmdW5jdGlvbiBzaG91bGRCZShhY3R1YWwsIGV4cGVjdGVk
KSB7CisgICAgaWYgKGFjdHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IG5ldyBFcnJv
cihgZXhwZWN0ZWQgJHtleHBlY3RlZH0gYnV0IGdvdCAke2FjdHVhbH1gKTsKK30KKworZnVuY3Rp
b24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CisgICAgbGV0IGVycm9y
OworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
IGVycm9yID0gZTsKKyAgICB9CisKKyAgICBpZiAoIShlcnJvciBpbnN0YW5jZW9mIGVycm9yVHlw
ZSkpCisgICAgICAgIHRocm93IG5ldyBFcnJvcihgRXhwZWN0ZWQgJHtlcnJvclR5cGUubmFtZX0h
YCk7CisgICAgaWYgKG1lc3NhZ2UgIT09IHVuZGVmaW5lZCkKKyAgICAgICAgc2hvdWxkQmUoU3Ry
aW5nKGVycm9yKSwgbWVzc2FnZSk7Cit9CisKK3Nob3VsZEJlKFRlbXBvcmFsLlBsYWluVGltZSBp
bnN0YW5jZW9mIEZ1bmN0aW9uLCB0cnVlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLlBsYWluVGltZS5s
ZW5ndGgsIDApOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1w
b3JhbC5QbGFpblRpbWUsICdwcm90b3R5cGUnKS53cml0YWJsZSwgZmFsc2UpOworc2hvdWxkQmUo
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihUZW1wb3JhbC5QbGFpblRpbWUsICdwcm90
b3R5cGUnKS5lbnVtZXJhYmxlLCBmYWxzZSk7CitzaG91bGRCZShPYmplY3QuZ2V0T3duUHJvcGVy
dHlEZXNjcmlwdG9yKFRlbXBvcmFsLlBsYWluVGltZSwgJ3Byb3RvdHlwZScpLmNvbmZpZ3VyYWJs
ZSwgZmFsc2UpOworc2hvdWxkQmUoVGVtcG9yYWwuUGxhaW5UaW1lLnByb3RvdHlwZS5jb25zdHJ1
Y3RvciwgVGVtcG9yYWwuUGxhaW5UaW1lKTsKKworeworICAgIGxldCB0aW1lID0gbmV3IFRlbXBv
cmFsLlBsYWluVGltZSgwLCAxLCAyLCAzLCA0LCA1LCA2LCA3KTsKKyAgICBzaG91bGRCZShTdHJp
bmcodGltZSksIGAwMDowMTowMi4wMDMwMDQwMDVgKTsKKyAgICBzaG91bGRCZSh0aW1lLmhvdXIs
IDApOworICAgIHNob3VsZEJlKHRpbWUubWludXRlLCAxKTsKKyAgICBzaG91bGRCZSh0aW1lLnNl
Y29uZCwgMik7CisgICAgc2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwgMyk7CisgICAgc2hvdWxk
QmUodGltZS5taWNyb3NlY29uZCwgNCk7CisgICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCA1
KTsKK30KKworeworICAgIGxldCB0aW1lID0gbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAw
LCAwLCAwLCAwKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZSksIGAwMDowMDowMGApOworICAg
IHNob3VsZEJlKHRpbWUuaG91ciwgMCk7CisgICAgc2hvdWxkQmUodGltZS5taW51dGUsIDApOwor
ICAgIHNob3VsZEJlKHRpbWUuc2Vjb25kLCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbGxpc2Vj
b25kLCAwKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pY3Jvc2Vjb25kLCAwKTsKKyAgICBzaG91bGRC
ZSh0aW1lLm5hbm9zZWNvbmQsIDApOworfQorCit7CisgICAgbGV0IHRpbWUgPSBuZXcgVGVtcG9y
YWwuUGxhaW5UaW1lKDIzLCA1OSwgNTksIDk5OSwgOTk5LCA5OTkpOworICAgIHNob3VsZEJlKFN0
cmluZyh0aW1lKSwgYDIzOjU5OjU5Ljk5OTk5OTk5OWApOworICAgIHNob3VsZEJlKHRpbWUuaG91
ciwgMjMpOworICAgIHNob3VsZEJlKHRpbWUubWludXRlLCA1OSk7CisgICAgc2hvdWxkQmUodGlt
ZS5zZWNvbmQsIDU5KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCA5OTkpOworICAg
IHNob3VsZEJlKHRpbWUubWljcm9zZWNvbmQsIDk5OSk7CisgICAgc2hvdWxkQmUodGltZS5uYW5v
c2Vjb25kLCA5OTkpOworfQorCit7CisgICAgbGV0IHRpbWUgPSBuZXcgVGVtcG9yYWwuUGxhaW5U
aW1lKDIzLCA1OSwgNTksIDk5OSwgOTk5LCA5OTkpOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1l
KSwgYDIzOjU5OjU5Ljk5OTk5OTk5OWApOworICAgIHNob3VsZEJlKHRpbWUuaG91ciwgMjMpOwor
ICAgIHNob3VsZEJlKHRpbWUubWludXRlLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5zZWNvbmQs
IDU5KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJl
KHRpbWUubWljcm9zZWNvbmQsIDk5OSk7CisgICAgc2hvdWxkQmUodGltZS5uYW5vc2Vjb25kLCA5
OTkpOworfQorCit7CisgICAgLy8gV2UgYWNjZXB0IDYwIHNlY29uZHMsIGJ1dCBpbnRlcnByZXQg
aXQgYXMgNTkgc2Vjb25kcy4KKyAgICAvLyBodHRwczovL3RjMzkuZXMvcHJvcG9zYWwtdGVtcG9y
YWwvI3NlYy10ZW1wb3JhbC1wYXJzZWlzb2RhdGV0aW1lIHN0ZXAgMTMKKyAgICBsZXQgdGltZSA9
IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCIyMzo1OTo2MC45OTk5OTk5OTkiKTsKKyAgICBzaG91
bGRCZShTdHJpbmcodGltZSksIGAyMzo1OTo1OS45OTk5OTk5OTlgKTsKKyAgICBzaG91bGRCZSh0
aW1lLmhvdXIsIDIzKTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbnV0ZSwgNTkpOworICAgIHNob3Vs
ZEJlKHRpbWUuc2Vjb25kLCA1OSk7CisgICAgc2hvdWxkQmUodGltZS5taWxsaXNlY29uZCwgOTk5
KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pY3Jvc2Vjb25kLCA5OTkpOworICAgIHNob3VsZEJlKHRp
bWUubmFub3NlY29uZCwgOTk5KTsKK30KKworeworICAgIGxldCB0aW1lID0gVGVtcG9yYWwuUGxh
aW5UaW1lLmZyb20oIjIwMjEtMDktMDRUMjM6MTQ6MjYuMTAwMjAwMzAwIik7CisgICAgc2hvdWxk
QmUoU3RyaW5nKHRpbWUpLCBgMjM6MTQ6MjYuMTAwMjAwM2ApOworICAgIHNob3VsZEJlKHRpbWUu
aG91ciwgMjMpOworICAgIHNob3VsZEJlKHRpbWUubWludXRlLCAxNCk7CisgICAgc2hvdWxkQmUo
dGltZS5zZWNvbmQsIDI2KTsKKyAgICBzaG91bGRCZSh0aW1lLm1pbGxpc2Vjb25kLCAxMDApOwor
ICAgIHNob3VsZEJlKHRpbWUubWljcm9zZWNvbmQsIDIwMCk7CisgICAgc2hvdWxkQmUodGltZS5u
YW5vc2Vjb25kLCAzMDApOworfQorCitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1l
LmZyb20oJzAzJykpLCBgMDM6MDA6MDBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFp
blRpbWUuZnJvbSgnMDMxNCcpKSwgYDAzOjE0OjAwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9y
YWwuUGxhaW5UaW1lLmZyb20oJzAzMTQxNScpKSwgYDAzOjE0OjE1YCk7CitzaG91bGRCZShTdHJp
bmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzAzOjE0JykpLCBgMDM6MTQ6MDBgKTsKK3Nob3Vs
ZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMDM6MTQ6MTUnKSksIGAwMzoxNDox
NWApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMzoyNDozMCcp
KSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20o
JzIwMjAtMDEnKSksIGAyMDoyMDowMGApOyAvLyAtMDEgVVRDIG9mZnNldAorc2hvdWxkQmUoU3Ry
aW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcwMS0wMScpKSwgYDAxOjAwOjAwYCk7IC8vIC0w
MSBVVEMgb2Zmc2V0CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5
OTUtMTItMDdUMDM6MjQ6MzAnKSksIGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBv
cmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3dDAzOjI0OjMwJykpLCBgMDM6MjQ6MzBgKTsK
K3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wNyAwMzoy
NDozMCcpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1l
LmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzBaJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0
cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCsyMDoyMDo1
OScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZy
b20oJzE5OTUtMTItMDdUMDM6MjQ6MzAtMjA6MjA6NTknKSksIGAwMzoyNDozMGApOworc2hvdWxk
QmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwXHUy
MjEyMjA6MjA6NTknKSksIGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBs
YWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzEwJykpLCBgMDM6MjQ6MzBgKTsKK3No
b3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDoz
MCsxMDIwJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRp
bWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCsxMDIwMzAnKSksIGAwMzoyNDozMGApOworc2hv
dWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMw
KzEwOjIwOjMwLjA1JykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5Q
bGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCsxMDoyMDozMC4xMjM0NTY3ODknKSks
IGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcx
OTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW0V1cm9wZS9CcnVzc2Vsc10nKSksIGAwMzoyNDozMGAp
Oworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3IDAz
OjI0OjMwKzAxOjAwW0V1cm9wZS9CcnVzc2Vsc10nKSksIGAwMzoyNDozMGApOworc2hvdWxkQmUo
U3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAw
W1VOS05PV05dJykpLCBgMDM6MjQ6MzBgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGln
bm9yZWQuCitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTIt
MDdUMDM6MjQ6MzArMDE6MDBbLmhleV0nKSksIGAwMzoyNDozMGApOyAvLyBUaW1lWm9uZSBlcnJv
ciBzaG91bGQgYmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUu
ZnJvbSgnMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtfXScpKSwgYDAzOjI0OjMwYCk7IC8vIFRp
bWVab25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFs
LlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW18tXScpKSwgYDAzOjI0
OjMwYCk7IC8vIFRpbWVab25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3Ry
aW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW18v
X10nKSksIGAwMzoyNDozMGApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQgYmUgaWdub3JlZC4K
K3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wN1QwMzoy
NDozMCswMTowMFtfLS4vXy0uXScpKSwgYDAzOjI0OjMwYCk7IC8vIFRpbWVab25lIGVycm9yIHNo
b3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9t
KCcxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwW18uLi9fLi5dJykpLCBgMDM6MjQ6MzBgKTsgLy8g
VGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRCZShTdHJpbmcoVGVtcG9y
YWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbXy4vXy5dJykpLCBg
MDM6MjQ6MzBgKTsgLy8gVGltZVpvbmUgZXJyb3Igc2hvdWxkIGJlIGlnbm9yZWQuCitzaG91bGRC
ZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDdUMDM6MjQ6MzArMDE6
MDBbRXRjL0dNVCsyMF0nKSksIGAwMzoyNDozMGApOyAvLyBUaW1lWm9uZSBlcnJvciBzaG91bGQg
YmUgaWdub3JlZC4KK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5
NS0xMi0wN1QwMzoyNDozMCswMTowMFtFdGMvR01ULTIwXScpKSwgYDAzOjI0OjMwYCk7IC8vIFRp
bWVab25lIGVycm9yIHNob3VsZCBiZSBpZ25vcmVkLgorc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFs
LlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3IDAzOjI0OjMwKzAxOjAwWyswMV0nKSksIGAwMzoy
NDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEy
LTA3IDAzOjI0OjMwKzAxOjAwWyswMTowMF0nKSksIGAwMzoyNDozMGApOworc2hvdWxkQmUoU3Ry
aW5nKFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3IDAzOjI0OjMwKzAxOjAwWysw
MTowMDowMF0nKSksIGAwMzoyNDozMGApOworc2hvdWxkQmUoU3RyaW5nKFRlbXBvcmFsLlBsYWlu
VGltZS5mcm9tKCcxOTk1LTEyLTA3IDAzOjI0OjMwKzAxOjAwWyswMTowMDowMC4xMjNdJykpLCBg
MDM6MjQ6MzBgKTsKK3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5
NS0xMi0wNyAwMzoyNDozMCswMTowMFsrMDE6MDA6MDAuMTIzNDVdJykpLCBgMDM6MjQ6MzBgKTsK
K3Nob3VsZEJlKFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wNyAwMzoy
NDozMCswMTowMFsrMDE6MDA6MDAuMTIzNDU2NzhdJykpLCBgMDM6MjQ6MzBgKTsKK3Nob3VsZEJl
KFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk5NS0xMi0wNyAwMzoyNDozMCswMTow
MFsrMDE6MDA6MDAuMTIzNDU2Nzg5XScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmco
VGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OTUtMTItMDcgMDM6MjQ6MzArMDE6MDBbLTAxOjAw
XScpKSwgYDAzOjI0OjMwYCk7CitzaG91bGRCZShTdHJpbmcoVGVtcG9yYWwuUGxhaW5UaW1lLmZy
b20oJzE5OTUtMTItMDcgMDM6MjQ6MzArMDE6MDBbXHUyMjEyMDE6MDBdJykpLCBgMDM6MjQ6MzBg
KTsKK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTk1LTEyLTA3
VDAzOjI0OjMwKzAxOjAwW0V1cm9wZS9CcnVzc2Vsc10nKQorICAgIHNob3VsZEJlKHRpbWUgPT09
IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHRpbWUpLCBmYWxzZSk7Cit9Cit7CisgICAgbGV0IHRp
bWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh7CisgICAgICBob3VyOiAxOSwKKyAgICAgIG1p
bnV0ZTogMzksCisgICAgICBzZWNvbmQ6IDksCisgICAgICBtaWxsaXNlY29uZDogNjgsCisgICAg
ICBtaWNyb3NlY29uZDogMzQ2LAorICAgICAgbmFub3NlY29uZDogMjA1CisgICAgfSk7CisgICAg
c2hvdWxkQmUoU3RyaW5nKHRpbWUpLCBgMTk6Mzk6MDkuMDY4MzQ2MjA1YCk7CisKKyAgICAvLyBU
aGlzIGlzIHNwZWMgYnVnLiBDdXJyZW50bHkgdGhpcyB0aHJvd3MgYW4gZXJyb3IuIEJ1dCBwb3Nz
aWJseSB0aGlzIHNob3VsZCBub3QgdGhyb3cgYW4gZXJyb3IuCisgICAgLy8gVHJhY2tlZCBpbiBo
dHRwczovL2dpdGh1Yi5jb20vdGMzOS9wcm9wb3NhbC10ZW1wb3JhbC9pc3N1ZXMvMTgwMy4KKyAg
ICBzaG91bGRUaHJvdygoKSA9PiB7CisgICAgICAgIFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsg
aG91cjogMTksIG1pbnV0ZTogMzksIHNlY29uZDogOSB9KTsKKyAgICB9LCBUeXBlRXJyb3IpOwor
fQoreworICAgIC8vIERpZmZlcmVudCBvdmVyZmxvdyBtb2RlcworICAgIHNob3VsZEJlKFN0cmlu
ZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh7IGhvdXI6IDE1LCBtaW51dGU6IDYwLCBzZWNvbmQ6
IDAsIG1pbGxpc2Vjb25kOiAwLCBtaWNyb3NlY29uZDogMCwgbmFub3NlY29uZDogMCB9LCB7IG92
ZXJmbG93OiAnY29uc3RyYWluJyB9KSksIGAxNTo1OTowMGApOworICAgIHNob3VsZEJlKFN0cmlu
ZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh7IGhvdXI6IDE1LCBtaW51dGU6IC0xLCBzZWNvbmQ6
IDAsIG1pbGxpc2Vjb25kOiAwLCBtaWNyb3NlY29uZDogMCwgbmFub3NlY29uZDogMCB9LCB7IG92
ZXJmbG93OiAnY29uc3RyYWluJyB9KSksIGAxNTowMDowMGApOworfQorc2hvdWxkVGhyb3coKCkg
PT4geworICAgIFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKHsgaG91cjogMTUsIG1pbnV0ZTogNjAs
IHNlY29uZDogMCwgbWlsbGlzZWNvbmQ6IDAsIG1pY3Jvc2Vjb25kOiAwLCBuYW5vc2Vjb25kOiAw
IH0sIHsgb3ZlcmZsb3c6ICdyZWplY3QnIH0pOworfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJv
dygoKSA9PiB7CisgICAgVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oeyBob3VyOiAxNSwgbWludXRl
OiAtMSwgc2Vjb25kOiAwLCBtaWxsaXNlY29uZDogMCwgbWljcm9zZWNvbmQ6IDAsIG5hbm9zZWNv
bmQ6IDAgfSwgeyBvdmVyZmxvdzogJ3JlamVjdCcgfSk7Cit9LCBSYW5nZUVycm9yKTsKKworc2hv
dWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKC0xKTsgfSwgUmFuZ2VFcnJv
cik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMjUpOyB9LCBS
YW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgy
NCk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxh
aW5UaW1lKDMwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1w
b3JhbC5QbGFpblRpbWUoSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgp
ID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsK
Kworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIC0xKTsgfSwg
UmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUo
MCwgNjApOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFs
LlBsYWluVGltZSgwLCA2MSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBu
ZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDc3KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJv
dygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMTAwKTsgfSwgUmFuZ2VFcnJvcik7
CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgSW5maW5pdHkp
OyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWlu
VGltZSgwLCAtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4g
eyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIC0xKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgNjApOyB9LCBSYW5n
ZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAw
LCA2MSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwu
UGxhaW5UaW1lKDAsIDAsIDc3KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7
IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMTAwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91
bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgSW5maW5pdHkpOyB9
LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGlt
ZSgwLCAwLCAtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKworc2hvdWxkVGhyb3coKCkgPT4g
eyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIC0xKTsgfSwgUmFuZ2VFcnJvcik7Citz
aG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMTAwMCk7
IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5U
aW1lKDAsIDAsIDAsIDEwMDEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsg
bmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCA1MDAwMCk7IH0sIFJhbmdlRXJyb3IpOwor
c2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDk5OTk5
OTk5OTkpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFs
LlBsYWluVGltZSgwLCAwLCAwLCBJbmZpbml0eSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhy
b3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIC1JbmZpbml0eSk7IH0s
IFJhbmdlRXJyb3IpOworCitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRp
bWUoMCwgMCwgMCwgMCwgLTEpOyB9LCBSYW5nZUVycm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsg
bmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAxMDAwKTsgfSwgUmFuZ2VFcnJvcik7
CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwg
MTAwMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwu
UGxhaW5UaW1lKDAsIDAsIDAsIDAsIDUwMDAwKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJv
dygoKSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgOTk5OTk5OTk5OSk7
IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4geyBuZXcgVGVtcG9yYWwuUGxhaW5U
aW1lKDAsIDAsIDAsIDAsIEluZmluaXR5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygo
KSA9PiB7IG5ldyBUZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgLUluZmluaXR5KTsgfSwg
UmFuZ2VFcnJvcik7CisKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGlt
ZSgwLCAwLCAwLCAwLCAwLCAtMSk7IH0sIFJhbmdlRXJyb3IpOworc2hvdWxkVGhyb3coKCkgPT4g
eyBuZXcgVGVtcG9yYWwuUGxhaW5UaW1lKDAsIDAsIDAsIDAsIDAsIDEwMDApOyB9LCBSYW5nZUVy
cm9yKTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAw
LCAwLCAwLCAxMDAxKTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBU
ZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgNTAwMDApOyB9LCBSYW5nZUVycm9yKTsK
K3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAwLCAw
LCA5OTk5OTk5OTk5KTsgfSwgUmFuZ2VFcnJvcik7CitzaG91bGRUaHJvdygoKSA9PiB7IG5ldyBU
ZW1wb3JhbC5QbGFpblRpbWUoMCwgMCwgMCwgMCwgMCwgSW5maW5pdHkpOyB9LCBSYW5nZUVycm9y
KTsKK3Nob3VsZFRocm93KCgpID0+IHsgbmV3IFRlbXBvcmFsLlBsYWluVGltZSgwLCAwLCAwLCAw
LCAwLCAtSW5maW5pdHkpOyB9LCBSYW5nZUVycm9yKTsKKworbGV0IGZhaWx1cmVzID0gWworICAg
ICIiLAorICAgICIyMDIwLTAxLTAxIiwKKyAgICAiMjM6NTk6NjEuOTk5OTk5OTk5IiwKKyAgICAi
MTk5NS0xMjA3VDAzOjI0OjMwIiwKKyAgICAiMTk5NTEyLTA3VDAzOjI0OjMwIiwKKyAgICAiMTk5
NS0xMi0wN1QwMzoyNDozMCsyMDoyMDo2MCIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMjA6
MjA1MCIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArOiIsCisgICAgIjE5OTUtMTItMDdUMDM6
MjQ6MzArMjo1MCIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbL10iLAorICAgICIx
OTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwWy8vL10iLAorICAgICIxOTk1LTEyLTA3VDAzOjI0OjMw
KzAxOjAwW0hleS9IZWxsbyIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbXSIsCisg
ICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbSGV5L10iLAorICAgICIxOTk1LTEyLTA3VDAz
OjI0OjMwKzAxOjAwWy4uXSIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbLl0iLAor
ICAgICIxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwWy4vLl0iLAorICAgICIxOTk1LTEyLTA3VDAz
OjI0OjMwKzAxOjAwWy4uLy4uXSIsCisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbLUhl
eS9IZWxsb10iLAorICAgICIxOTk1LTEyLTA3VDAzOjI0OjMwKzAxOjAwWy1dIiwKKyAgICAiMTk5
NS0xMi0wN1QwMzoyNDozMCswMTowMFstL19dIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCsw
MTowMFtfLy1dIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtDb2NvYUNhcHB1Y2Np
bm9NYXRjaGFdIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDozMCswMTowMFtFdGMvR01UKzUwXSIs
CisgICAgIjE5OTUtMTItMDdUMDM6MjQ6MzArMDE6MDBbRXRjL0dNVCswXSIsCisgICAgIjE5OTUt
MTItMDdUMDM6MjQ6MzArMDE6MDBbRXRjL0dNVDBdIiwKKyAgICAiMTk5NS0xMi0wN1QwMzoyNDoz
MCsxMDoyMDozMC4wMTIzNDU2Nzg5IiwKKyAgICAiMTk5NS0xMi0wNyAwMzoyNDozMCswMTowMFtF
dGMvR01UXHUyMjEyMDFdIiwKKyAgICAiMTk5NS0xMi0wNyAwMzoyNDozMCswMTowMFsrMDI6MDA6
MDAuMDEyMzQ1Njc4OV0iLAorICAgICIxOTk1LTEyLTA3IDAzOjI0OjMwKzAxOjAwWzAyOjAwOjAw
LjEyMzQ1Njc4OV0iLAorICAgICIxOTk1LTEyLTA3IDAzOjI0OjMwKzAxOjAwWzAyOjAwMDAuMTIz
NDU2Nzg5XSIsCisgICAgIjE5OTUtMTItMDcgMDM6MjQ6MzArMDE6MDBbMDIwMDowMC4xMjM0NTY3
ODldIiwKKyAgICAiMTk5NS0xMi0wNyAwMzoyNDozMCswMTowMFswMjowMDo2MC4xMjM0NTY3ODld
IiwKK107CisKK2ZvciAobGV0IHRleHQgb2YgZmFpbHVyZXMpIHsKKyAgICBzaG91bGRUaHJvdygo
KSA9PiB7CisgICAgICAgIHByaW50KFN0cmluZyhUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh0ZXh0
KSkpOworICAgIH0sIFJhbmdlRXJyb3IpOworfQorCit7CisgICAgbGV0IG9uZSA9IFRlbXBvcmFs
LlBsYWluVGltZS5mcm9tKCcwMzoyNCcpOworICAgIGxldCB0d28gPSBUZW1wb3JhbC5QbGFpblRp
bWUuZnJvbSgnMDE6MjQnKTsKKyAgICBsZXQgdGhyZWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJv
bSgnMDE6MjQ6MDUnKTsKKyAgICBsZXQgc29ydGVkID0gW29uZSwgdHdvLCB0aHJlZV0uc29ydChU
ZW1wb3JhbC5QbGFpblRpbWUuY29tcGFyZSk7CisgICAgc2hvdWxkQmUoc29ydGVkLmpvaW4oJyAn
KSwgYDAxOjI0OjAwIDAxOjI0OjA1IDAzOjI0OjAwYCk7Cit9CisKK3Nob3VsZEJlKFN0cmluZyhU
ZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgiMjA6MzQiKS5jYWxlbmRhciksIGBpc284NjAxYCk7Citz
aG91bGRCZShUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgiMjA6MzQiKS5jYWxlbmRhciBpbnN0YW5j
ZW9mIFRlbXBvcmFsLkNhbGVuZGFyLCB0cnVlKTsKK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFs
LlBsYWluVGltZS5mcm9tKCIyMDozNCIpOworICAgIHNob3VsZEJlKHRpbWUuY2FsZW5kYXIsIHRp
bWUuY2FsZW5kYXIpOworfQorCit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUu
ZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUucm91
bmQoeyBzbWFsbGVzdFVuaXQ6ICdob3VyJyB9KSksIGAyMDowMDowMGApOworICAgIHNob3VsZEJl
KFN0cmluZyh0aW1lLnJvdW5kKHsgcm91bmRpbmdJbmNyZW1lbnQ6IDMwLCBzbWFsbGVzdFVuaXQ6
ICdtaW51dGUnIH0pKSwgYDE5OjMwOjAwYCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUucm91
bmQoeyByb3VuZGluZ0luY3JlbWVudDogMzAsIHNtYWxsZXN0VW5pdDogJ21pbnV0ZScsIHJvdW5k
aW5nTW9kZTogJ2NlaWwnIH0pKSwgYDIwOjAwOjAwYCk7Cit9Cit7CisgICAgbGV0IHRpbWUgPSBU
ZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgbGV0IG90
aGVyID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzIwOjEzOjIwLjk3MTM5ODA5OScpOworICAg
IHNob3VsZEJlKHRpbWUuZXF1YWxzKG90aGVyKSwgZmFsc2UpOworICAgIHNob3VsZEJlKHRpbWUu
ZXF1YWxzKHRpbWUpLCB0cnVlKTsKK30KK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWlu
VGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYyMDUnKTsKKyAgICBzaG91bGRCZSh0aW1lLnRvU3Ry
aW5nKCksIGAxOTozOTowOS4wNjgzNDYyMDVgKTsKKworICAgIHNob3VsZEJlKHRpbWUudG9TdHJp
bmcoeyBzbWFsbGVzdFVuaXQ6ICdtaW51dGUnIH0pLCBgMTk6MzlgKTsKKyAgICBzaG91bGRCZSh0
aW1lLnRvU3RyaW5nKHsgZnJhY3Rpb25hbFNlY29uZERpZ2l0czogMCB9KSwgYDE5OjM5OjA5YCk7
CisgICAgc2hvdWxkQmUodGltZS50b1N0cmluZyh7IGZyYWN0aW9uYWxTZWNvbmREaWdpdHM6IDQg
fSksIGAxOTozOTowOS4wNjgzYCk7CisgICAgc2hvdWxkQmUodGltZS50b1N0cmluZyh7IGZyYWN0
aW9uYWxTZWNvbmREaWdpdHM6IDUsIHJvdW5kaW5nTW9kZTogJ2hhbGZFeHBhbmQnIH0pLCBgMTk6
Mzk6MDkuMDY4MzVgKTsKKyAgICBzaG91bGRCZShUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6
Mzk6MDkuMDAwMDAwMjA1JykudG9TdHJpbmcoeyBmcmFjdGlvbmFsU2Vjb25kRGlnaXRzOiA0IH0p
LCBgMTk6Mzk6MDkuMDAwMGApOworfQoreworICAgIGNvbnN0IHdvcmtCcmVhayA9IHsKKyAgICAg
IHR5cGU6ICdtYW5kYXRvcnknLAorICAgICAgbmFtZTogJ0x1bmNoJywKKyAgICAgIHN0YXJ0VGlt
ZTogbmV3IFRlbXBvcmFsLlBsYWluVGltZSgxMiksCisgICAgICBlbmRUaW1lOiBuZXcgVGVtcG9y
YWwuUGxhaW5UaW1lKDEzKQorICAgIH07CisgICAgY29uc3Qgc3RyID0gSlNPTi5zdHJpbmdpZnko
d29ya0JyZWFrKTsKKyAgICBzaG91bGRCZShzdHIsIGB7InR5cGUiOiJtYW5kYXRvcnkiLCJuYW1l
IjoiTHVuY2giLCJzdGFydFRpbWUiOiIxMjowMDowMCIsImVuZFRpbWUiOiIxMzowMDowMCJ9YCk7
CisgICAgZnVuY3Rpb24gcmV2aXZlcihrZXksIHZhbHVlKSB7CisgICAgICBpZiAoa2V5LmVuZHNX
aXRoKCdUaW1lJykpIHJldHVybiBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSh2YWx1ZSk7CisgICAg
ICByZXR1cm4gdmFsdWU7CisgICAgfQorICAgIGxldCBvYmplY3QgPSBKU09OLnBhcnNlKHN0ciwg
cmV2aXZlcik7CisgICAgc2hvdWxkQmUob2JqZWN0LnN0YXJ0VGltZSBpbnN0YW5jZW9mIFRlbXBv
cmFsLlBsYWluVGltZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoU3RyaW5nKG9iamVjdC5zdGFydFRp
bWUpLCBgMTI6MDA6MDBgKTsKKyAgICBzaG91bGRCZShvYmplY3QuZW5kVGltZSBpbnN0YW5jZW9m
IFRlbXBvcmFsLlBsYWluVGltZSwgdHJ1ZSk7CisgICAgc2hvdWxkQmUoU3RyaW5nKG9iamVjdC5l
bmRUaW1lKSwgYDEzOjAwOjAwYCk7Cit9CitzaG91bGRUaHJvdygoKSA9PiB7CisgICAgbmV3IFRl
bXBvcmFsLlBsYWluVGltZSgxMikudmFsdWVPZigpOworfSwgVHlwZUVycm9yKTsKK3sKKyAgICBs
ZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYyMDUnKTsK
KyAgICBzaG91bGRCZShKU09OLnN0cmluZ2lmeSh0aW1lLmdldElTT0ZpZWxkcygpKSwgYHsiY2Fs
ZW5kYXIiOiJpc284NjAxIiwiaXNvSG91ciI6MTksImlzb01pY3Jvc2Vjb25kIjozNDYsImlzb01p
bGxpc2Vjb25kIjo2OCwiaXNvTWludXRlIjozOSwiaXNvTmFub3NlY29uZCI6MjA1LCJpc29TZWNv
bmQiOjl9YCk7Cit9Cit7CisgICAgbGV0IG1heCA9IDEgKiogNTM7CisgICAgbGV0IHRpbWUgPSBU
ZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1Jyk7CisgICAgc2hvdWxk
QmUoU3RyaW5nKHRpbWUuYWRkKHsgbWludXRlczogNSwgbmFub3NlY29uZHM6IDgwMCB9KSksIGAx
OTo0NDowOS4wNjgzNDcwMDVgKTsKKyAgICB0aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20o
JzE5OjM5OjA5LjA2ODM0NjIwNScpOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLmFkZCh7IGhv
dXJzOiBtYXgsIG1pbnV0ZXM6IG1heCwgc2Vjb25kczogbWF4LCBtaWxsaXNlY29uZHM6IG1heCwg
bWljcm9zZWNvbmRzOiBtYXgsIG5hbm9zZWNvbmRzOiBtYXggfSkpLCBgMjA6NDA6MTAuMDY5MzQ3
MjA2YCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUuYWRkKG5ldyBUZW1wb3JhbC5EdXJhdGlv
bigxLCAxLCAxLCAxKSkpLCBgMTk6Mzk6MDkuMDY4MzQ2MjA1YCk7CisgICAgc2hvdWxkQmUoU3Ry
aW5nKHRpbWUuYWRkKG5ldyBUZW1wb3JhbC5EdXJhdGlvbigxLCAxLCAxLCAxLCAxLCAxLCAxLCAx
KSkpLCBgMjA6NDA6MTAuMDY5MzQ2MjA1YCk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUuYWRk
KG5ldyBUZW1wb3JhbC5EdXJhdGlvbigwLCAwLCAwLCAwLCAzMCwgMSwgMSwgMSkpKSwgYDAxOjQw
OjEwLjA2OTM0NjIwNWApOworfQoreworICAgIGxldCBtYXggPSAxICoqIDUzOworICAgIGxldCB0
aW1lID0gVGVtcG9yYWwuUGxhaW5UaW1lLmZyb20oJzE5OjM5OjA5LjA2ODM0NjIwNScpOworICAg
IHNob3VsZEJlKFN0cmluZyh0aW1lLnN1YnRyYWN0KHsgbWludXRlczogNSwgbmFub3NlY29uZHM6
IDgwMCB9KSksIGAxOTozNDowOS4wNjgzNDU0MDVgKTsKKyAgICB0aW1lID0gVGVtcG9yYWwuUGxh
aW5UaW1lLmZyb20oJzE5OjM5OjA5LjA2ODM0NjIwNScpOworICAgIHNob3VsZEJlKFN0cmluZyh0
aW1lLnN1YnRyYWN0KHsgaG91cnM6IG1heCwgbWludXRlczogbWF4LCBzZWNvbmRzOiBtYXgsIG1p
bGxpc2Vjb25kczogbWF4LCBtaWNyb3NlY29uZHM6IG1heCwgbmFub3NlY29uZHM6IG1heCB9KSks
IGAxODozODowOC4wNjczNDUyMDRgKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZS5zdWJ0cmFj
dChuZXcgVGVtcG9yYWwuRHVyYXRpb24oMSwgMSwgMSwgMSkpKSwgYDE5OjM5OjA5LjA2ODM0NjIw
NWApOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnN1YnRyYWN0KG5ldyBUZW1wb3JhbC5EdXJh
dGlvbigxLCAxLCAxLCAxLCAxLCAxLCAxLCAxKSkpLCBgMTg6Mzg6MDguMDY3MzQ2MjA1YCk7Cisg
ICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUuc3VidHJhY3QobmV3IFRlbXBvcmFsLkR1cmF0aW9uKDAs
IDAsIDAsIDAsIDMwLCAxLCAxLCAxKSkpLCBgMTM6Mzg6MDguMDY3MzQ2MjA1YCk7Cit9Cit7Cisg
ICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1
Jyk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUuYWRkKHsgaG91cnM6IDEgfSkud2l0aCh7Cisg
ICAgICBtaW51dGU6IDAsCisgICAgICBzZWNvbmQ6IDAsCisgICAgICBtaWxsaXNlY29uZDogMCwK
KyAgICAgIG1pY3Jvc2Vjb25kOiAwLAorICAgICAgbmFub3NlY29uZDogMAorICAgIH0pKSwgYDIw
OjAwOjAwYCk7Cit9Cit7CisgICAgbGV0IHRpbWUgPSBUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgn
MjA6MTM6MjAuOTcxMzk4MDk5Jyk7CisgICAgc2hvdWxkQmUoU3RyaW5nKHRpbWUudW50aWwoVGVt
cG9yYWwuUGxhaW5UaW1lLmZyb20oJzIyOjM5OjA5LjA2ODM0NjIwNScpKSksIGBQVDJIMjVNNDgu
MDk2OTQ4MTA2U2ApOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnVudGlsKFRlbXBvcmFsLlBs
YWluVGltZS5mcm9tKCcxOTozOTowOS4wNjgzNDYyMDUnKSkpLCBgLVBUMzRNMTEuOTAzMDUxODk0
U2ApOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnVudGlsKFRlbXBvcmFsLlBsYWluVGltZS5m
cm9tKCcyMjozOTowOS4wNjgzNDYyMDUnKSwgeyBzbWFsbGVzdFVuaXQ6ICdzZWNvbmQnIH0pKSwg
YFBUMkgyNU00OFNgKTsKK30KK3sKKyAgICBsZXQgdGltZSA9IFRlbXBvcmFsLlBsYWluVGltZS5m
cm9tKCcyMDoxMzoyMC45NzEzOTgwOTknKTsKKyAgICBzaG91bGRCZShTdHJpbmcodGltZS5zaW5j
ZShUZW1wb3JhbC5QbGFpblRpbWUuZnJvbSgnMTk6Mzk6MDkuMDY4MzQ2MjA1JykpKSwgYFBUMzRN
MTEuOTAzMDUxODk0U2ApOworICAgIHNob3VsZEJlKFN0cmluZyh0aW1lLnNpbmNlKFRlbXBvcmFs
LlBsYWluVGltZS5mcm9tKCcyMjozOTowOS4wNjgzNDYyMDUnKSkpLCBgLVBUMkgyNU00OC4wOTY5
NDgxMDZTYCk7Cit9CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy90ZW1wb3JhbC10aW1lem9u
ZS5qcyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzCmluZGV4IGQ4OGY4Yzg4
N2U4NDRhZTJmMDMwOWVhZjE1MWVjYTIyMDE0NDE5NTYuLmY0ODE1OTY2MmZiNzlmOWE2MWM5MTdi
OTJkYjAyZjEwODcyMTNhY2UgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRp
bWV6b25lLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL3RlbXBvcmFsLXRpbWV6b25lLmpzCkBAIC0x
OCw2ICsxOCwxMyBAQCBmdW5jdGlvbiBzaG91bGRUaHJvdyhmdW5jLCBlcnJvclR5cGUsIG1lc3Nh
Z2UpIHsKICAgICAgICAgc2hvdWxkQmUoU3RyaW5nKGVycm9yKSwgbWVzc2FnZSk7CiB9CiAKK3No
b3VsZEJlKFRlbXBvcmFsLlRpbWVab25lIGluc3RhbmNlb2YgRnVuY3Rpb24sIHRydWUpOworc2hv
dWxkQmUoVGVtcG9yYWwuVGltZVpvbmUubGVuZ3RoLCAwKTsKK3Nob3VsZEJlKE9iamVjdC5nZXRP
d25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuVGltZVpvbmUsICdwcm90b3R5cGUnKS53cml0
YWJsZSwgZmFsc2UpOworc2hvdWxkQmUoT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihU
ZW1wb3JhbC5UaW1lWm9uZSwgJ3Byb3RvdHlwZScpLmVudW1lcmFibGUsIGZhbHNlKTsKK3Nob3Vs
ZEJlKE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoVGVtcG9yYWwuVGltZVpvbmUsICdw
cm90b3R5cGUnKS5jb25maWd1cmFibGUsIGZhbHNlKTsKK3Nob3VsZEJlKFRlbXBvcmFsLlRpbWVa
b25lLnByb3RvdHlwZS5jb25zdHJ1Y3RvciwgVGVtcG9yYWwuVGltZVpvbmUpOworCiBsZXQgZmFp
bHVyZXMgPSBbCiAgICAgIiIsCiAgICAgIisiLApAQCAtMjYsOSArMzMsMjIgQEAgZnVuY3Rpb24g
c2hvdWxkVGhyb3coZnVuYywgZXJyb3JUeXBlLCBtZXNzYWdlKSB7CiAgICAgIisyNCIsCiAgICAg
IisyMzoiLAogICAgICIyMDowMCIsCisgICAgIisyOjAwIiwKKyAgICAiKzMyOjAwIiwKKyAgICAi
KzIzOjAwMSIsCisgICAgIisyMzo5OSIsCisgICAgIisyMzo5OTAiLAorICAgICIrMjM6NTk6OTki
LAorICAgICIrMjM6NTk6MDAxIiwKKyAgICAiKzIzOjU5Ojk5OSIsCisgICAgIisyMzo1OTo1OS4i
LAorICAgICIrMjM6NTk6NTksIiwKKyAgICAiKzIzOjU5OjU5YSIsCisgICAgIisyMzo1OTo1OS5h
IiwKICAgICAiKzIwOjAwMDAiLAogICAgICIrMjA6NjAiLAogICAgICIrMjA6NTk6IiwKKyAgICAi
KzIwOjU5OjYwIiwKICAgICAiMjA1OTowMCIsCiAgICAgIisyMDU5OjAwIiwKICAgICAiKzIwOjU5
MDAiLApAQCAtNTIsNiArNzIsMTAgQEAgZnVuY3Rpb24gc2hvdWxkVGhyb3coZnVuYywgZXJyb3JU
eXBlLCBtZXNzYWdlKSB7CiBzaG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OToz
MC4xMjM0NTAwMDAiKS5pZCwgYC0wMTo1OTozMC4xMjM0NWApOwogc2hvdWxkQmUobmV3IFRlbXBv
cmFsLlRpbWVab25lKCItMDE6NTk6MzAuMDAwMDAwMDAxIikuaWQsIGAtMDE6NTk6MzAuMDAwMDAw
MDAxYCk7CiBzaG91bGRCZShuZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTY3
ODkiKS5pZCwgYC0wMTo1OTozMC4xMjM0NTY3ODlgKTsKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5U
aW1lWm9uZSgiLTAxOjU5OjMwLjAwMTAwMjAwMyIpLmlkLCBgLTAxOjU5OjMwLjAwMTAwMjAwM2Ap
Oworc2hvdWxkQmUobmV3IFRlbXBvcmFsLlRpbWVab25lKCItMDE6NTk6MzAuMDAwMDAwMDAwIiku
aWQsIGAtMDE6NTk6MzBgKTsKK3Nob3VsZEJlKG5ldyBUZW1wb3JhbC5UaW1lWm9uZSgiLTAxOjU5
OjAwLjAwMDAwMDAwMCIpLmlkLCBgLTAxOjU5YCk7CitzaG91bGRCZShuZXcgVGVtcG9yYWwuVGlt
ZVpvbmUoIi0wMTowMDowMC4wMDAwMDAwMDAiKS5pZCwgYC0wMTowMGApOwogCiBsZXQgdHogPSBu
ZXcgVGVtcG9yYWwuVGltZVpvbmUoIi0wMTo1OTozMC4xMjM0NTY3ODkiKQogc2hvdWxkQmUodHou
aWQsIFN0cmluZyh0eikpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1s
IGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmluZGV4IDEwNWZkZjQyNTM5NjUzNzI4NWE3
MTc4MDI1MDlmOGRlMjkwZmFiNmMuLmE2YzhhMTFkZWJlM2RiNTdmMTFlMDUxZDljN2Q2NjgyZGYw
NTJlMTIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbAorKysgYi9KU1Rl
c3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTI3LDcgKzI3LDggQEAgc2tpcDoKICAgICAtIHRl
c3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluRGF0ZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVt
cG9yYWwvUGxhaW5EYXRlVGltZQogICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5N
b250aERheQotICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lCisgICAgLSB0
ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9QbGFpblRpbWUvcHJvdG90eXBlL3RvUGxhaW5EYXRlVGlt
ZQorICAgIC0gdGVzdC9idWlsdC1pbnMvVGVtcG9yYWwvUGxhaW5UaW1lL3Byb3RvdHlwZS90b1pv
bmVkRGF0ZVRpbWUKICAgICAtIHRlc3QvYnVpbHQtaW5zL1RlbXBvcmFsL1BsYWluWWVhck1vbnRo
CiAgICAgLSB0ZXN0L2J1aWx0LWlucy9UZW1wb3JhbC9UaW1lWm9uZQogICAgIC0gdGVzdC9idWls
dC1pbnMvVGVtcG9yYWwvWm9uZWREYXRlVGltZQo=
</data>
<flag name="review"
          id="460712"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>