<?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>152448</bug_id>
          
          <creation_ts>2015-12-18 15:50:21 -0800</creation_ts>
          <short_desc>Intl.Collator uses POSIX locale (detected by js/intl-collator.html on iOS Simulator)</short_desc>
          <delta_ts>2016-11-17 12:55:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>90906</blocked>
    
    <blocked>152130</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryan Haddad">ryanhaddad</reporter>
          <assigned_to name="Andy VanWagoner">andy</assigned_to>
          <cc>andy</cc>
    
    <cc>ap</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sukolsak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1150416</commentid>
    <comment_count>0</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2015-12-18 15:50:21 -0800</bug_when>
    <thetext>[iOS Simulator] js/intl-collator.html failing

&lt;https://build.webkit.org/results/Apple%20iOS%209%20Simulator%20Release%20WK2%20(Tests)/r194295%20(1860)/results.html&gt;

--- /Volumes/Data/slave/ios-simulator-9-release-tests-wk2/build/layout-test-results/js/intl-collator-expected.txt
+++ /Volumes/Data/slave/ios-simulator-9-release-tests-wk2/build/layout-test-results/js/intl-collator-actual.txt
@@ -119,10 +119,10 @@
 PASS badCalls is 0
 PASS Intl.Collator.prototype.compare(&apos;a&apos;, { toString() { throw Error(&apos;8&apos;) } }) threw exception Error: 8.
 PASS Intl.Collator.prototype.compare.call(null, &apos;a&apos;, &apos;b&apos;) is -1
-PASS Intl.Collator.prototype.compare.call(Intl.Collator(&apos;en&apos;, { sensitivity:&apos;base&apos; }), &apos;A&apos;, &apos;a&apos;) is 1
+FAIL Intl.Collator.prototype.compare.call(Intl.Collator(&apos;en&apos;, { sensitivity:&apos;base&apos; }), &apos;A&apos;, &apos;a&apos;) should be 1. Was -1.
 PASS Intl.Collator.prototype.compare.call(5, &apos;a&apos;, &apos;b&apos;) is -1
 PASS new Intl.Collator().compare.call(null, &apos;a&apos;, &apos;b&apos;) is -1
-PASS new Intl.Collator().compare.call(Intl.Collator(&apos;en&apos;, { sensitivity:&apos;base&apos; }), &apos;A&apos;, &apos;a&apos;) is 1
+FAIL new Intl.Collator().compare.call(Intl.Collator(&apos;en&apos;, { sensitivity:&apos;base&apos; }), &apos;A&apos;, &apos;a&apos;) should be 1. Was -1.
 PASS new Intl.Collator().compare.call(5, &apos;a&apos;, &apos;b&apos;) is -1
 PASS Intl.Collator.prototype.compare() is 0
 PASS Intl.Collator.prototype.compare(&apos;undefinec&apos;) is -1</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150463</commentid>
    <comment_count>1</comment_count>
      <attachid>267667</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-12-18 18:12:58 -0800</bug_when>
    <thetext>Created attachment 267667
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150470</commentid>
    <comment_count>2</comment_count>
      <attachid>267671</attachid>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-12-18 18:18:51 -0800</bug_when>
    <thetext>Created attachment 267671
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150501</commentid>
    <comment_count>3</comment_count>
      <attachid>267671</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-18 22:13:50 -0800</bug_when>
    <thetext>Comment on attachment 267671
Patch

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

&gt; LayoutTests/ChangeLog:8
&gt; +        On iOS simulator with en-US as the default locale, uloc_getDefault()

Is this a WebKitTestRunner bug? There is no way the actual system default on iOS would be Posix - and WKTR does some work for setting the locale, and it also has an Info.plist that could specify something relevant.

&gt; LayoutTests/ChangeLog:11
&gt; +        Make the test not rely on the default locale of the system.

Yes, WKTR is supposed to set the locale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150506</commentid>
    <comment_count>4</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-12-18 22:46:20 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 267671 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=267671&amp;action=review
&gt; 
&gt; &gt; LayoutTests/ChangeLog:8
&gt; &gt; +        On iOS simulator with en-US as the default locale, uloc_getDefault()
&gt; 
&gt; Is this a WebKitTestRunner bug? There is no way the actual system default on
&gt; iOS would be Posix - and WKTR does some work for setting the locale, and it
&gt; also has an Info.plist that could specify something relevant.

I don&apos;t know. I didn&apos;t use WebKitTestRunner. I created an iOS project in Xcode, linked it with ICU (libicucore.tbd), and printed out uloc_getDefault() in the simulator. It printed &quot;en_US_POSIX&quot;. But if I print out uloc_getDefault() in WebKit on OS X, I get &quot;en_US&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150512</commentid>
    <comment_count>5</comment_count>
      <attachid>267671</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-19 00:06:50 -0800</bug_when>
    <thetext>Comment on attachment 267671
Patch

I meant to r- the patch. Having these different between OS X and iOS would have a long-term maintenance cost, so we should avoid that unless there is a really good reason why the platforms need to be different in this respect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150515</commentid>
    <comment_count>6</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-19 00:19:40 -0800</bug_when>
    <thetext>Looking through ICU source code, it&apos;s not really clear where the difference comes from. en_US_POSIX may be the last resort fallback in uprv_getPOSIXID, so perhaps setlocale(LC_ALL, &quot;&quot;) works differently?

Seems like this needs some experimenting.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150521</commentid>
    <comment_count>7</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-12-19 01:57:30 -0800</bug_when>
    <thetext>Looks like it has nothing to do with the difference between iOS and OS X. I tried creating a command line tool project in Xcode and printing out uloc_getDefault(). When I ran it via Xcode, it printed &quot;en_US_POSIX&quot;. But when I ran it via command line, it printed &quot;en_US&quot;.

It seems to have something to do with the environment variable LANG. Here&apos;s a script I created to test it:

$ cat test.c
#include &lt;stdio.h&gt;
const char* uloc_getDefault();
int main() {
    printf(&quot;%s\n&quot;, uloc_getDefault());
    return 0;
}

$ echo $LANG
en_US.UTF-8
$ gcc test.c -licucore -o test
$ ./test
en_US
$ unset LANG; ./test
en_US_POSIX
$ LANG=en_US.UTF-8 ./test
en_US
$ LANG=abcdef.UTF-8 ./test
abcdef

So, I think this patch is the right thing to do. We should never assume that the default locale is English anyway. Let me know what you think. If you agree, I will fix the change log.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150582</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-19 14:05:50 -0800</bug_when>
    <thetext>&gt; We should never assume that the default locale is English anyway.

Why are you saying that? Tests should run in a predictable environment - we don&apos;t them to fail for people whose computers are configured to use a different language or locale.

&gt; It seems to have something to do with the environment variable LANG.

The ICU function that I mentioned does check LANG as part of fallback, so this is definitely one of the ways to make it use what we want. Other things that it checks are LC_ALL and LC_CTYPE environment variables, and the current POSIX locale.

The question is how to most cleanly make WebKitTestRunner use a consistent locale in all of the processes (including WebProcess and NetworkProcess). Given that it&apos;s an app, I suggest looking if Info.plist and/or localization changes can achieve that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150590</commentid>
    <comment_count>9</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-12-19 14:57:33 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; We should never assume that the default locale is English anyway.
&gt; 
&gt; Why are you saying that? Tests should run in a predictable environment - we
&gt; don&apos;t them to fail for people whose computers are configured to use a
&gt; different language or locale.

That is what this patch is trying to do. The currently existing test will fail if the user uses a different locale that has a different order for &apos;a&apos; and &apos;A&apos;.

&quot;new Intl.Collator()&quot; returns a collator with the default locale. We cannot predict the value of &quot;new Intl.Collator().compare(&apos;a&apos;, &apos;A&apos;)&quot;.

&quot;new Intl.Collator(&apos;en&apos;)&quot; returns a collator with the English locale. We can predict the value of &quot;new Intl.Collator(&apos;en&apos;).compare(&apos;a&apos;, &apos;A&apos;)&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150594</commentid>
    <comment_count>10</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-19 19:13:15 -0800</bug_when>
    <thetext>&gt; &quot;new Intl.Collator()&quot; returns a collator with the default locale. We cannot predict the value of &quot;new Intl.Collator().compare(&apos;a&apos;, &apos;A&apos;)&quot;.

We need to test that &quot;new Intl.Collator()&quot; works, can&apos;t just remove the test for this functionality.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150611</commentid>
    <comment_count>11</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-12-19 22:34:57 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; &gt; &quot;new Intl.Collator()&quot; returns a collator with the default locale. We cannot predict the value of &quot;new Intl.Collator().compare(&apos;a&apos;, &apos;A&apos;)&quot;.
&gt; 
&gt; We need to test that &quot;new Intl.Collator()&quot; works, can&apos;t just remove the test
&gt; for this functionality.

We have tests for &quot;new Intl.Collator()&quot;, including &quot;shouldBe(&quot;new Intl.Collator().compare.call(null, &apos;a&apos;, &apos;b&apos;)&quot;, &quot;-1&quot;)&quot;. We can test that because any sensible language will likely have &apos;a&apos; before &apos;b&apos;. It can still be wrong, but it&apos;s extremely unlikely.

Testing compare(&apos;a&apos;, &apos;A&apos;) with an unknown locale is harder to predict. If we do really want to test it, we could do

shouldBeTrue(&quot;var collator = new Intl.Collator(); collator.resolvedOptions().locale != &apos;en-US&apos; || collator.compare.call(Intl.Collator(&apos;en&apos;, { sensitivity:&apos;base&apos; }), &apos;A&apos;, &apos;a&apos;) == 1&quot;);

But that&apos;s not the point of this test case, if you look at the comment above it. The point of this test case is to test that calling compare() with any &quot;this&quot; has no effect on it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150612</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-19 22:54:01 -0800</bug_when>
    <thetext>I&apos;m not really sure what you are arguing for.

It seems pretty obvious that the test harness should not depend on user&apos;s locale. It also seems pretty obvious that tests should not need to account for technical differences in how the harness is implemented on various platforms (command line vs. app, for example).

Do you disagree with the above? Or if you agree with that, do you think that the patch is the right way to fix the problem nonetheless?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150613</commentid>
    <comment_count>13</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-12-19 23:11:47 -0800</bug_when>
    <thetext>(In reply to comment #12)
&gt; I&apos;m not really sure what you are arguing for.
&gt; 
&gt; It seems pretty obvious that the test harness should not depend on user&apos;s
&gt; locale. It also seems pretty obvious that tests should not need to account
&gt; for technical differences in how the harness is implemented on various
&gt; platforms (command line vs. app, for example).
&gt; 
&gt; Do you disagree with the above? Or if you agree with that, do you think that
&gt; the patch is the right way to fix the problem nonetheless?

I agree with that. My point is that the currently existing test depends on user&apos;s locale, because it uses &quot;new Intl.Collator()&quot;. My patch is trying to make the test not depend on user&apos;s locale.

&quot;new Intl.Collator()&quot; will always depend on user&apos;s locale. That&apos;s what the spec says.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150614</commentid>
    <comment_count>14</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-19 23:30:08 -0800</bug_when>
    <thetext>The right way to fix this is to make the test harness isolate tests from user&apos;s locale, and from details of the harness implementation. Will you be willing to do that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150615</commentid>
    <comment_count>15</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2015-12-19 23:56:09 -0800</bug_when>
    <thetext>(In reply to comment #14)
&gt; The right way to fix this is to make the test harness isolate tests from
&gt; user&apos;s locale, and from details of the harness implementation. Will you be
&gt; willing to do that?

Ok, I think I misunderstood what &quot;test harness&quot; meant. Does that mean there should be no way for tests to read the default locale of the system that is running the harness? If so, I don&apos;t want to work on it as I am not so familiar with it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1150745</commentid>
    <comment_count>16</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-21 09:18:28 -0800</bug_when>
    <thetext>&gt; Does that mean there should be no way for tests to read the default locale of the system that is running the harness?

Obviously, tests should work the same on all machines. We don&apos;t really have the setup to run the tests with different system locales anyway, so a dependence on system settings would be only confusing, not helpful.

When tests need non-default system language and locale, they should use testRunner or internals APIs to do that.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151347</commentid>
    <comment_count>17</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-25 18:28:02 -0800</bug_when>
    <thetext>This is actually a bug in Intl.Collator implementation, not in tools. WebKit should never fall back to uloc_getDefault, because it&apos;s not expected to be correct on OS X or iOS. We should get the locale using Cocoa.

Having said this, the difference between WebKitTestRunner and WebKitTestRunnerApp is caused by code in Tools/Scripts/webkitpy/common/host.py (see _engage_awesome_locale_hacks), which sets some language variables to override host tools&apos; output. These happen to be inherited by WebKitTestRunner too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1151348</commentid>
    <comment_count>18</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2015-12-25 18:37:05 -0800</bug_when>
    <thetext>This is somewhat tricky problem, because OS X has separate notions of locale and language, and it&apos;s not really clear which one we should use in the browser.

For the first cut, we should probably call out to WebCore&apos;s defaultLanguage(). That&apos;s not really the locale, but exposing the true system locale is likely both unnecessary and harmful for privacy.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157076</commentid>
    <comment_count>19</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-01-20 15:17:56 -0800</bug_when>
    <thetext>(In reply to comment #18)
&gt; For the first cut, we should probably call out to WebCore&apos;s
&gt; defaultLanguage().

Can JSC depend on WebCore in that way?

I agree that the user&apos;s preferred language should be the default locale.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157081</commentid>
    <comment_count>20</comment_count>
    <who name="Sukolsak Sakshuwong">sukolsak</who>
    <bug_when>2016-01-20 15:25:27 -0800</bug_when>
    <thetext>Can we do something similar to copyDefaultLocale() in WTF/wtf/unicode/icu/CollatorICU.cpp?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157126</commentid>
    <comment_count>21</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-01-20 17:07:53 -0800</bug_when>
    <thetext>&gt; Can JSC depend on WebCore in that way?

It can have a generic client callback (there are a few already), that WebCore would implement.

&gt; Can we do something similar to copyDefaultLocale() in WTF/wtf/unicode/icu/CollatorICU.cpp?

This doesn&apos;t seem to respect testing overrides, and thus may need to change itself. There are several code paths for overriding the language though, so I&apos;m not 100% certain.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158681</commentid>
    <comment_count>22</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-01-25 20:00:56 -0800</bug_when>
    <thetext>(In reply to comment #21)
&gt; &gt; Can JSC depend on WebCore in that way?
&gt; 
&gt; It can have a generic client callback (there are a few already), that
&gt; WebCore would implement.

If you can point out an example, I can take a shot at this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1158828</commentid>
    <comment_count>23</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-01-26 09:17:44 -0800</bug_when>
    <thetext>&gt; If you can point out an example, I can take a shot at this.

I could find a few:

- ConsoleClient, implemented in WebCore as PageConsoleClient;
- everything in JSVMClientData;
- everything in GlobalObjectMethodTable.

CC&apos;ing JS folks who may have better guidance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165916</commentid>
    <comment_count>24</comment_count>
      <attachid>271630</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-02-17 22:04:25 -0800</bug_when>
    <thetext>Created attachment 271630
Add defaultLanguage to globalObjectMethodTable</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1165917</commentid>
    <comment_count>25</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-17 22:06:22 -0800</bug_when>
    <thetext>Attachment 271630 did not pass style-queue:


ERROR: Source/WebCore/bindings/js/JSWorkerGlobalScopeBase.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 1 in 20 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1166053</commentid>
    <comment_count>26</comment_count>
      <attachid>271630</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2016-02-18 09:08:57 -0800</bug_when>
    <thetext>Comment on attachment 271630
Add defaultLanguage to globalObjectMethodTable

Thank you! This direction makes sense to me; a JSC person should probably do an actual review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168508</commentid>
    <comment_count>27</comment_count>
      <attachid>271630</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-26 08:34:59 -0800</bug_when>
    <thetext>Comment on attachment 271630
Add defaultLanguage to globalObjectMethodTable

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

&gt; Source/JavaScriptCore/runtime/IntlObject.cpp:656
&gt; +String defaultLocale(GlobalObjectMethodTable::DefaultLanguageFunctionPtr defaultLanguage)
&gt; +{
&gt; +    // 6.2.4 DefaultLocale ()
&gt; +    if (defaultLanguage) {
&gt; +        String locale = defaultLanguage();
&gt; +        if (!locale.isEmpty())
&gt; +            return canonicalizeLanguageTag(locale);
&gt; +    }
&gt; +    String locale = uloc_getDefault();
&gt; +    convertICULocaleToBCP47LanguageTag(locale);
&gt; +    return locale;
&gt; +}

I think this is the wrong idiom. This long type name in multiple functions is a bad code smell that halves make it clear we are doing this wrong. The idiomatic way to do it is to add an ExecState&amp; argument as the first argument to the various functions and then do the work to get to the global object method in the lowest level function where we need the function pointer, not up at the caller.

The code would then be something like this:

    if (auto defaultLanguageMethod = state.callee()-&gt;globalObject()-&gt;globalObjectMethodTable()-&gt;defaultLanguage) {
        String defaultLanguage = defaultLanguageMethod();
        if (!defaultLanguage.isEmpty())
            return canonicalizeLanguageTag(defaultLanguage);
    }

I also think it’s a bit peculiar to call a language a locale since they are not the same thing, but that’s not something new to this patch.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:177
&gt; +    typedef String (*DefaultLanguageFunctionPtr)(void);

The &quot;(void)&quot; here is unnecessary in C++ code that is not also used in C, so please just use &quot;()&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168509</commentid>
    <comment_count>28</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-02-26 08:35:37 -0800</bug_when>
    <thetext>&quot;helps make it clear&quot;, not &quot;halves make it clear&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168878</commentid>
    <comment_count>29</comment_count>
      <attachid>272419</attachid>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-02-27 10:28:07 -0800</bug_when>
    <thetext>Created attachment 272419
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168881</commentid>
    <comment_count>30</comment_count>
    <who name="Andy VanWagoner">andy</who>
    <bug_when>2016-02-27 10:43:58 -0800</bug_when>
    <thetext>(In reply to comment #27)
&gt; Comment on attachment 271630 [details]
&gt; Add defaultLanguage to globalObjectMethodTable
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=271630&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/IntlObject.cpp:656
&gt; &gt; +String defaultLocale(GlobalObjectMethodTable::DefaultLanguageFunctionPtr defaultLanguage)
&gt; &gt; +{
&gt; &gt; +    // 6.2.4 DefaultLocale ()
&gt; &gt; +    if (defaultLanguage) {
&gt; &gt; +        String locale = defaultLanguage();
&gt; &gt; +        if (!locale.isEmpty())
&gt; &gt; +            return canonicalizeLanguageTag(locale);
&gt; &gt; +    }
&gt; &gt; +    String locale = uloc_getDefault();
&gt; &gt; +    convertICULocaleToBCP47LanguageTag(locale);
&gt; &gt; +    return locale;
&gt; &gt; +}
&gt; 
&gt; I think this is the wrong idiom. This long type name in multiple functions
&gt; is a bad code smell that halves make it clear we are doing this wrong. The
&gt; idiomatic way to do it is to add an ExecState&amp; argument as the first
&gt; argument to the various functions and then do the work to get to the global
&gt; object method in the lowest level function where we need the function
&gt; pointer, not up at the caller.
&gt; 
&gt; The code would then be something like this:
&gt; 
&gt;     if (auto defaultLanguageMethod =
&gt; state.callee()-&gt;globalObject()-&gt;globalObjectMethodTable()-&gt;defaultLanguage) {
&gt;         String defaultLanguage = defaultLanguageMethod();
&gt;         if (!defaultLanguage.isEmpty())
&gt;             return canonicalizeLanguageTag(defaultLanguage);
&gt;     }
&gt; 

Done.

&gt; I also think it’s a bit peculiar to call a language a locale since they are
&gt; not the same thing, but that’s not something new to this patch.
&gt; 

I agree it&apos;s confusing. I made the global method match the name of the only implementation currently being passed to it. The Intl spec uses locale frequently, which is why it is the term in the Intl code.

As is stands, the language identifier in WebCore is BCP 47 Language Tag. The Intl spec also uses the same language tags, but refers to variables containing such a tag as locale. So while the terms are not really synonyms, in this context they are the same thing.

&gt; &gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:177
&gt; &gt; +    typedef String (*DefaultLanguageFunctionPtr)(void);
&gt; 
&gt; The &quot;(void)&quot; here is unnecessary in C++ code that is not also used in C, so
&gt; please just use &quot;()&quot;.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168924</commentid>
    <comment_count>31</comment_count>
      <attachid>272419</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-27 16:35:55 -0800</bug_when>
    <thetext>Comment on attachment 272419
Patch

Clearing flags on attachment: 272419

Committed r197261: &lt;http://trac.webkit.org/changeset/197261&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1168925</commentid>
    <comment_count>32</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-02-27 16:36:02 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252409</commentid>
    <comment_count>33</comment_count>
      <attachid>295073</attachid>
    <who name="rurumi663@gmail.com">rurumi663</who>
    <bug_when>2016-11-17 12:55:30 -0800</bug_when>
    <thetext>Created attachment 295073
/Applications/Safari\ Technology\ Preview.app</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267667</attachid>
            <date>2015-12-18 18:12:58 -0800</date>
            <delta_ts>2015-12-18 18:18:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152448-20151218181350.patch</filename>
            <type>text/plain</type>
            <size>2101</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MjUzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjQ4MDk4NDQ4Mzc5MmMzZjBkNDNj
OTZkNmQzMGI4OThjODU4N2Y2Yi4uMDQ4NTA4ZGE0ZGQyYTQ2NmJmZDI4YmU2NDcxY2UxODVhODVm
ODdlYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDE1LTEyLTE4ICBTdWtvbHNhayBTYWtzaHV3
b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgorCisgICAgICAgIFtpT1MgU2ltdWxhdG9yXSBqcy9p
bnRsLWNvbGxhdG9yLmh0bWwgZmFpbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgT24gaU9TIHNpbXVsYXRvciB3aXRoIGVuLVVTIGFzIHRoZSBkZWZh
dWx0IGxvY2FsZSwgdWxvY19nZXREZWZhdWx0KCkKKyAgICAgICAgcmV0dXJucyAiZW5fVVNfUE9T
SVgiIGluc3RlYWQgb2YgImVuX1VTIiBsaWtlIG9uIE9TIFguIEluIGVuLVVTLVBPU0lYCisgICAg
ICAgIHNvcnRpbmcsICdBJyBjb21lcyBiZWZvcmUgJ2EnLiBJbiBlbi1VUyBzb3J0aW5nLCAnYScg
Y29tZXMgYmVmb3JlICdBJy4KKyAgICAgICAgTWFrZSB0aGUgdGVzdCBub3QgcmVseSBvbiB0aGUg
ZGVmYXVsdCBsb2NhbGUgb2YgdGhlIHN5c3RlbS4KKworICAgICAgICAqIGpzL3NjcmlwdC10ZXN0
cy9pbnRsLWNvbGxhdG9yLmpzOgorCiAyMDE1LTEyLTE3ICBTdWtvbHNhayBTYWtzaHV3b25nICA8
c3Vrb2xzYWtAZ21haWwuY29tPgogCiAgICAgICAgIFtJTlRMXSBJbXBsZW1lbnQgQ29sbGF0b3Ig
Q29tcGFyZSBGdW5jdGlvbnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9pbnRsLWNvbGxhdG9yLmpzIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtY29s
bGF0b3IuanMKaW5kZXggNTI3MjlkMWQwYmM2YzAwY2FmYmU3YmMzZTZiMjdkZjBkN2RjZDlhOS4u
MWEwZTg3NjM4NWM2ODQwMjBjMmExNDExNGFiMzU0OWE1MzZmYTcxMiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtY29sbGF0b3IuanMKKysrIGIvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2ludGwtY29sbGF0b3IuanMKQEAgLTIyOCwxMSArMjI4LDEwIEBA
IHNob3VsZFRocm93KCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlKCdhJywgeyB0b1N0
cmluZygpIHsgdGhyb3cgRXJyb3IoJzgnCiAKIC8vIENvbXBhcmUgaXMgYm91bmQsIHNvIGNhbGxp
bmcgd2l0aCBhbHRlcm5hdGUgInRoaXMiIGhhcyBubyBlZmZlY3QuCiBzaG91bGRCZSgiSW50bC5D
b2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5jYWxsKG51bGwsICdhJywgJ2InKSIsICItMSIpOwot
c2hvdWxkQmUoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUuY2FsbChJbnRsLkNvbGxh
dG9yKCdlbicsIHsgc2Vuc2l0aXZpdHk6J2Jhc2UnIH0pLCAnQScsICdhJykiLCAiMSIpOwogc2hv
dWxkQmUoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUuY2FsbCg1LCAnYScsICdiJyki
LCAiLTEiKTsKIHNob3VsZEJlKCJuZXcgSW50bC5Db2xsYXRvcigpLmNvbXBhcmUuY2FsbChudWxs
LCAnYScsICdiJykiLCAiLTEiKTsKLXNob3VsZEJlKCJuZXcgSW50bC5Db2xsYXRvcigpLmNvbXBh
cmUuY2FsbChJbnRsLkNvbGxhdG9yKCdlbicsIHsgc2Vuc2l0aXZpdHk6J2Jhc2UnIH0pLCAnQScs
ICdhJykiLCAiMSIpOwogc2hvdWxkQmUoIm5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZS5jYWxs
KDUsICdhJywgJ2InKSIsICItMSIpOworc2hvdWxkQmUoIm5ldyBJbnRsLkNvbGxhdG9yKCdlbicp
LmNvbXBhcmUuY2FsbChJbnRsLkNvbGxhdG9yKCdlbicsIHsgc2Vuc2l0aXZpdHk6J2Jhc2UnIH0p
LCAnQScsICdhJykiLCAiMSIpOwogCiAvLyBUZXN0IGNvbXBhcmluZyB1bmRlZmluZWRzLgogc2hv
dWxkQmUoIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUoKSIsICIwIik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>267671</attachid>
            <date>2015-12-18 18:18:51 -0800</date>
            <delta_ts>2015-12-21 09:25:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152448-20151218181943.patch</filename>
            <type>text/plain</type>
            <size>3372</size>
            <attacher name="Sukolsak Sakshuwong">sukolsak</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk0MjUzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggZjQ4MDk4NDQ4Mzc5MmMzZjBkNDNj
OTZkNmQzMGI4OThjODU4N2Y2Yi4uZDcyYjQwNjZjYzk4MDY1MmU5ZTQ2YWRlNDBkMjhhNTc3MjNm
MjBmNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDE1LTEyLTE4ICBTdWtvbHNhayBTYWtzaHV3
b25nICA8c3Vrb2xzYWtAZ21haWwuY29tPgorCisgICAgICAgIFtpT1MgU2ltdWxhdG9yXSBqcy9p
bnRsLWNvbGxhdG9yLmh0bWwgZmFpbGluZworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDQ4CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgT24gaU9TIHNpbXVsYXRvciB3aXRoIGVuLVVTIGFzIHRoZSBkZWZh
dWx0IGxvY2FsZSwgdWxvY19nZXREZWZhdWx0KCkKKyAgICAgICAgcmV0dXJucyAiZW5fVVNfUE9T
SVgiIGluc3RlYWQgb2YgImVuX1VTIiBsaWtlIG9uIE9TIFguIEluIGVuLVVTLVBPU0lYCisgICAg
ICAgIHNvcnRpbmcsICdBJyBjb21lcyBiZWZvcmUgJ2EnLiBJbiBlbi1VUyBzb3J0aW5nLCAnYScg
Y29tZXMgYmVmb3JlICdBJy4KKyAgICAgICAgTWFrZSB0aGUgdGVzdCBub3QgcmVseSBvbiB0aGUg
ZGVmYXVsdCBsb2NhbGUgb2YgdGhlIHN5c3RlbS4KKworICAgICAgICAqIGpzL2ludGwtY29sbGF0
b3ItZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGpzL3NjcmlwdC10ZXN0cy9pbnRsLWNvbGxhdG9y
LmpzOgorCiAyMDE1LTEyLTE3ICBTdWtvbHNhayBTYWtzaHV3b25nICA8c3Vrb2xzYWtAZ21haWwu
Y29tPgogCiAgICAgICAgIFtJTlRMXSBJbXBsZW1lbnQgQ29sbGF0b3IgQ29tcGFyZSBGdW5jdGlv
bnMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pzL2ludGwtY29sbGF0b3ItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRvci1leHBlY3RlZC50eHQKaW5kZXggNzEyYmJk
NjQ0NTYxMDA3ZjU0MWU4YzIxMWFlNzRhNjdlNDg2ZTViZC4uNGFkYWI3NTI3NDc3OTdmNjhiYWM0
ODIzMGVmN2Y4YTAxM2JiMjczYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xs
YXRvci1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRvci1leHBl
Y3RlZC50eHQKQEAgLTExOSwxMSArMTE5LDEwIEBAIFBBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5
cGUuY29tcGFyZSh7IHRvU3RyaW5nKCkgeyB0aHJvdyBFcnJvcignNicpIH0gfSwgeyB0b1N0CiBQ
QVNTIGJhZENhbGxzIGlzIDAKIFBBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSgn
YScsIHsgdG9TdHJpbmcoKSB7IHRocm93IEVycm9yKCc4JykgfSB9KSB0aHJldyBleGNlcHRpb24g
RXJyb3I6IDguCiBQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUuY2FsbChudWxs
LCAnYScsICdiJykgaXMgLTEKLVBBU1MgSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5j
YWxsKEludGwuQ29sbGF0b3IoJ2VuJywgeyBzZW5zaXRpdml0eTonYmFzZScgfSksICdBJywgJ2En
KSBpcyAxCiBQQVNTIEludGwuQ29sbGF0b3IucHJvdG90eXBlLmNvbXBhcmUuY2FsbCg1LCAnYScs
ICdiJykgaXMgLTEKIFBBU1MgbmV3IEludGwuQ29sbGF0b3IoKS5jb21wYXJlLmNhbGwobnVsbCwg
J2EnLCAnYicpIGlzIC0xCi1QQVNTIG5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZS5jYWxsKElu
dGwuQ29sbGF0b3IoJ2VuJywgeyBzZW5zaXRpdml0eTonYmFzZScgfSksICdBJywgJ2EnKSBpcyAx
CiBQQVNTIG5ldyBJbnRsLkNvbGxhdG9yKCkuY29tcGFyZS5jYWxsKDUsICdhJywgJ2InKSBpcyAt
MQorUEFTUyBuZXcgSW50bC5Db2xsYXRvcignZW4nKS5jb21wYXJlLmNhbGwoSW50bC5Db2xsYXRv
cignZW4nLCB7IHNlbnNpdGl2aXR5OidiYXNlJyB9KSwgJ0EnLCAnYScpIGlzIDEKIFBBU1MgSW50
bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSgpIGlzIDAKIFBBU1MgSW50bC5Db2xsYXRvci5w
cm90b3R5cGUuY29tcGFyZSgndW5kZWZpbmVjJykgaXMgLTEKIFBBU1MgSW50bC5Db2xsYXRvci5w
cm90b3R5cGUuY29tcGFyZSgndW5kZWZpbmVlJykgaXMgMQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvanMvc2NyaXB0LXRlc3RzL2ludGwtY29sbGF0b3IuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcwppbmRleCA1MjcyOWQxZDBiYzZjMDBjYWZiZTdiYzNl
NmIyN2RmMGQ3ZGNkOWE5Li4xYTBlODc2Mzg1YzY4NDAyMGMyYTE0MTE0YWIzNTQ5YTUzNmZhNzEy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5q
cworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcwpAQCAt
MjI4LDExICsyMjgsMTAgQEAgc2hvdWxkVGhyb3coIkludGwuQ29sbGF0b3IucHJvdG90eXBlLmNv
bXBhcmUoJ2EnLCB7IHRvU3RyaW5nKCkgeyB0aHJvdyBFcnJvcignOCcKIAogLy8gQ29tcGFyZSBp
cyBib3VuZCwgc28gY2FsbGluZyB3aXRoIGFsdGVybmF0ZSAidGhpcyIgaGFzIG5vIGVmZmVjdC4K
IHNob3VsZEJlKCJJbnRsLkNvbGxhdG9yLnByb3RvdHlwZS5jb21wYXJlLmNhbGwobnVsbCwgJ2En
LCAnYicpIiwgIi0xIik7Ci1zaG91bGRCZSgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFy
ZS5jYWxsKEludGwuQ29sbGF0b3IoJ2VuJywgeyBzZW5zaXRpdml0eTonYmFzZScgfSksICdBJywg
J2EnKSIsICIxIik7CiBzaG91bGRCZSgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZS5j
YWxsKDUsICdhJywgJ2InKSIsICItMSIpOwogc2hvdWxkQmUoIm5ldyBJbnRsLkNvbGxhdG9yKCku
Y29tcGFyZS5jYWxsKG51bGwsICdhJywgJ2InKSIsICItMSIpOwotc2hvdWxkQmUoIm5ldyBJbnRs
LkNvbGxhdG9yKCkuY29tcGFyZS5jYWxsKEludGwuQ29sbGF0b3IoJ2VuJywgeyBzZW5zaXRpdml0
eTonYmFzZScgfSksICdBJywgJ2EnKSIsICIxIik7CiBzaG91bGRCZSgibmV3IEludGwuQ29sbGF0
b3IoKS5jb21wYXJlLmNhbGwoNSwgJ2EnLCAnYicpIiwgIi0xIik7CitzaG91bGRCZSgibmV3IElu
dGwuQ29sbGF0b3IoJ2VuJykuY29tcGFyZS5jYWxsKEludGwuQ29sbGF0b3IoJ2VuJywgeyBzZW5z
aXRpdml0eTonYmFzZScgfSksICdBJywgJ2EnKSIsICIxIik7CiAKIC8vIFRlc3QgY29tcGFyaW5n
IHVuZGVmaW5lZHMuCiBzaG91bGRCZSgiSW50bC5Db2xsYXRvci5wcm90b3R5cGUuY29tcGFyZSgp
IiwgIjAiKTsK
</data>
<flag name="review"
          id="292692"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>271630</attachid>
            <date>2016-02-17 22:04:25 -0800</date>
            <delta_ts>2016-02-27 10:28:03 -0800</delta_ts>
            <desc>Add defaultLanguage to globalObjectMethodTable</desc>
            <filename>bug-152448-20160217230406.patch</filename>
            <type>text/plain</type>
            <size>27072</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk2NzM4CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAw
NzlkNzUxZjJiMGEyOWU3NDRkODIwZmY0ODI2ZTliNDQyZTJjM2VmLi5kMWEzZWVjNmNjNWU0ZDdh
MzZkOTEzYmNiM2U2ODAyMmQyMTJhMzU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNi0wMi0xNyAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgorCisgICAgICAgIEludGwuQ29sbGF0b3IgdXNlcyBQT1NJWCBsb2NhbGUgKGRl
dGVjdGVkIGJ5IGpzL2ludGwtY29sbGF0b3IuaHRtbCBvbiBpT1MgU2ltdWxhdG9yKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDQ4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGRlZmF1bHRMYW5n
dWFnZSB0byB0aGUgZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgYW5kIHVzZSBpdCBmb3IgdGhlCisg
ICAgICAgIGRlZmF1bHQgbG9jYWxlIGluIEludGwgb2JqZWN0IGluaXRpYWxpemF0aW9ucy4gRmFs
bCBiYWNrIHRvIElDVSBkZWZhdWx0CisgICAgICAgIGxvY2FsZSBvbmx5IGlmIHRoZSBkZWZhdWx0
TGFuZ3VhZ2UgZnVuY3Rpb24gaXMgbnVsbCwgb3IgcmV0dXJucyBhbgorICAgICAgICBlbXB0eSBz
dHJpbmcuCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjppbml0aWFsaXplQ29sbGF0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmRlZmF1bHRMb2NhbGUpOgorICAgICAgICAoSlND
Ojpsb29rdXBNYXRjaGVyKToKKyAgICAgICAgKEpTQzo6YmVzdEZpdE1hdGNoZXIpOgorICAgICAg
ICAoSlNDOjpyZXNvbHZlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjp0b0xvY2FsZUNhc2UpOgorCiAyMDE2LTAyLTE3ICBCZW5qYW1pbiBQ
b3VsYWluICA8YnBvdWxhaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIEFSTTY0OiBTdXBw
b3J0IHRoZSBpbW1lZGlhdGUgZm9ybWF0IHVzZWQgZm9yIGJpdCBvcGVyYXRpb25zIGluIEFpcgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hh
bmdlTG9nCmluZGV4IDFkMmJkODA1MzQzMzFjNTExYTMwYjg2MDEyNDU5MzMzZTk0NGIxYTQuLmVh
ZmQ0NzdlNzQ5NGI3Mjc5YzM4Njc3ZjNiOTVlYTc2OTMzYjExYjQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwxNiBAQAorMjAxNi0wMi0xNyAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgorCisgICAgICAgIEludGwuQ29sbGF0b3IgdXNlcyBQT1NJWCBsb2NhbGUgKGRl
dGVjdGVkIGJ5IGpzL2ludGwtY29sbGF0b3IuaHRtbCBvbiBpT1MgU2ltdWxhdG9yKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDQ4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUGFzcyBkZWZhdWx0TGFu
Z3VhZ2UgZnJvbSBMYW5ndWFnZS5oIHRvIHRoZSBnbG9iYWxPYmplY3RNZXRob2RUYWJsZSB0bwor
ICAgICAgICBlbnN1cmUgSW50bCBvYmplY3RzIGNhbiBiZSBpbml0aWFsaXplZCB3aXRoIHRoZSBj
b3JyZWN0IGRlZmF1bHQgbG9jYWxlLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01XaW5k
b3dCYXNlLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFz
ZS5jcHA6CisKIDIwMTYtMDItMTcgIERlYW4gSmFja3NvbiAgPGRpbm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYktpdENTU01hdHJpeCB0cmFuc2Zvcm1MaXN0IHdpdGggY2FsY3VsYXRlZCByZWxh
dGl2ZSBsZW5ndGggY3Jhc2hlcyBTYWZhcmkuCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvanNjLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCmluZGV4IDgwODU2
MTExMmJmY2NhMTAyNzAzYzIxYjBjYmRjOGQ5NzA1OTU2NTIuLjBkNDQyNjMzOWRjMWE5NmRlZGI2
MTFlODkzZWQ4ZjVkZWRkMjc3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCkBAIC03NzcsNyArNzc3
LDcgQEAgcHJvdGVjdGVkOgogfTsKIAogY29uc3QgQ2xhc3NJbmZvIEdsb2JhbE9iamVjdDo6c19p
bmZvID0geyAiZ2xvYmFsIiwgJkpTR2xvYmFsT2JqZWN0OjpzX2luZm8sIG51bGxwdHIsIENSRUFU
RV9NRVRIT0RfVEFCTEUoR2xvYmFsT2JqZWN0KSB9OwotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dz
QWNjZXNzRnJvbSwgJnN1cHBvcnRzTGVnYWN5UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNl
SW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIDAs
ICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0LCAmbW9kdWxlTG9hZGVyUmVzb2x2
ZSwgJm1vZHVsZUxvYWRlckZldGNoLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyIH07Citjb25z
dCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBHbG9iYWxPYmplY3Q6OnNfZ2xvYmFsT2JqZWN0TWV0
aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNMZWdhY3lQcm9maWxpbmcs
ICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNj
cmlwdFJ1bnRpbWVGbGFncywgMCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQs
ICZtb2R1bGVMb2FkZXJSZXNvbHZlLCAmbW9kdWxlTG9hZGVyRmV0Y2gsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIgfTsKIAogCiBHbG9iYWxPYmplY3Q6Okdsb2JhbE9iamVjdChW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvci5jcHAKaW5kZXggMmI5ZDQxZDdlNjcwOGI1NDIxMTM5MmU4Nzkx
MTcwNmY5YjM0Y2Q4Ni4uNmZiN2ZlMzQ4OTk1OGVhM2I5MDlhNDE1MWUxNmMyMzcxZjM2ODljNCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsQ29sbGF0b3IuY3BwCkBA
IC0yNTAsNyArMjUwLDggQEAgdm9pZCBJbnRsQ29sbGF0b3I6OmluaXRpYWxpemVDb2xsYXRvcihF
eGVjU3RhdGUmIHN0YXRlLCBKU1ZhbHVlIGxvY2FsZXMsIEpTVmFsdWUKICAgICAvLyAxNy4gTGV0
IHJlbGV2YW50RXh0ZW5zaW9uS2V5cyBiZSB0aGUgdmFsdWUgb2YgJUNvbGxhdG9yJS5bW3JlbGV2
YW50RXh0ZW5zaW9uS2V5c11dLgogICAgIC8vIDE4LiBMZXQgciBiZSBSZXNvbHZlTG9jYWxlKCVD
b2xsYXRvciUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgcmVs
ZXZhbnRFeHRlbnNpb25LZXlzLCBsb2NhbGVEYXRhKS4KICAgICBhdXRvJiBhdmFpbGFibGVMb2Nh
bGVzID0gc3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5pbnRsQ29sbGF0b3JBdmFpbGFi
bGVMb2NhbGVzKCk7Ci0gICAgYXV0byByZXN1bHQgPSByZXNvbHZlTG9jYWxlKGF2YWlsYWJsZUxv
Y2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIG9wdCwgcmVsZXZhbnRFeHRlbnNpb25LZXlzLCBXVEZf
QVJSQVlfTEVOR1RIKHJlbGV2YW50RXh0ZW5zaW9uS2V5cyksIGxvY2FsZURhdGEpOworICAgIGF1
dG8gZGVmYXVsdExhbmd1YWdlID0gc3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5nbG9i
YWxPYmplY3RNZXRob2RUYWJsZSgpLT5kZWZhdWx0TGFuZ3VhZ2U7CisgICAgYXV0byByZXN1bHQg
PSByZXNvbHZlTG9jYWxlKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGRlZmF1
bHRMYW5ndWFnZSwgb3B0LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgo
cmVsZXZhbnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CiAKICAgICAvLyAxOS4gU2V0IGNv
bGxhdG9yLltbbG9jYWxlXV0gdG8gdGhlIHZhbHVlIG9mIHIuW1tsb2NhbGVdXS4KICAgICBtX2xv
Y2FsZSA9IHJlc3VsdC5nZXQoQVNDSUlMaXRlcmFsKCJsb2NhbGUiKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAppbmRleCBh
YTUzYzg1MzNhZWEyZjBhMWJkYjdhZDk2MWQ3MTE4ZjBmMThhMzc5Li5hNDM4Y2JhMDE5MTI0ZjQ2
MWZkYTRmMGVhMDc1MjY5MmZlNGVmZGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKQEAgLTQ1Myw4ICs0NTMsOSBAQCB2
b2lkIEludGxEYXRlVGltZUZvcm1hdDo6aW5pdGlhbGl6ZURhdGVUaW1lRm9ybWF0KEV4ZWNTdGF0
ZSYgZXhlYywgSlNWYWx1ZSBsb2NhbAogCiAgICAgLy8gMTEuIExldCBsb2NhbGVEYXRhIGJlIHRo
ZSB2YWx1ZSBvZiAlRGF0ZVRpbWVGb3JtYXQlLltbbG9jYWxlRGF0YV1dLgogICAgIC8vIDEyLiBM
ZXQgciBiZSBSZXNvbHZlTG9jYWxlKCAlRGF0ZVRpbWVGb3JtYXQlLltbYXZhaWxhYmxlTG9jYWxl
c11dLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsICVEYXRlVGltZUZvcm1hdCUuW1tyZWxldmFudEV4
dGVuc2lvbktleXNdXSwgbG9jYWxlRGF0YSkuCi0gICAgY29uc3QgSGFzaFNldDxTdHJpbmc+IGF2
YWlsYWJsZUxvY2FsZXMgPSBleGVjLmxleGljYWxHbG9iYWxPYmplY3QoKS0+aW50bERhdGVUaW1l
Rm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOwotICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJl
c29sdmVkID0gcmVzb2x2ZUxvY2FsZShhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVz
LCBsb2NhbGVPcHQsIHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xFTkdUSChyZWxl
dmFudEV4dGVuc2lvbktleXMpLCBsb2NhbGVEYXRhKTsKKyAgICBjb25zdCBIYXNoU2V0PFN0cmlu
Zz4gYXZhaWxhYmxlTG9jYWxlcyA9IGV4ZWMuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5pbnRs
RGF0ZVRpbWVGb3JtYXRBdmFpbGFibGVMb2NhbGVzKCk7CisgICAgYXV0byBkZWZhdWx0TGFuZ3Vh
Z2UgPSBleGVjLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUoKS0+ZGVmYXVsdExhbmd1YWdlOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJlc29s
dmVkID0gcmVzb2x2ZUxvY2FsZShhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBk
ZWZhdWx0TGFuZ3VhZ2UsIGxvY2FsZU9wdCwgcmVsZXZhbnRFeHRlbnNpb25LZXlzLCBXVEZfQVJS
QVlfTEVOR1RIKHJlbGV2YW50RXh0ZW5zaW9uS2V5cyksIGxvY2FsZURhdGEpOwogCiAgICAgLy8g
MTMuIFNldCBkYXRlVGltZUZvcm1hdC5bW2xvY2FsZV1dIHRvIHRoZSB2YWx1ZSBvZiByLltbbG9j
YWxlXV0uCiAgICAgbV9sb2NhbGUgPSByZXNvbHZlZC5nZXQodm0ucHJvcGVydHlOYW1lcy0+bG9j
YWxlLnN0cmluZygpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0ludGxOdW1iZXJGb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE51bWJlckZvcm1hdC5jcHAKaW5kZXggNjc0ZjNkNGIyNDUzMDdmN2ZhZTlkNzM5MjBlYWRlNzYw
ODEwYTBmOC4uODEyMjEwZGFlMzE2MTJkZjUyMDRhYTljNWI4ZmY1NmM2MGJhOWUzYSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHAK
QEAgLTE5MCw3ICsxOTAsOCBAQCB2b2lkIEludGxOdW1iZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1i
ZXJGb3JtYXQoRXhlY1N0YXRlJiBzdGF0ZSwgSlNWYWx1ZSBsb2NhbGVzLAogICAgIC8vIDExLiBM
ZXQgbG9jYWxlRGF0YSBiZSAlTnVtYmVyRm9ybWF0JS5bW2xvY2FsZURhdGFdXS4KICAgICAvLyAx
Mi4gTGV0IHIgYmUgUmVzb2x2ZUxvY2FsZSglTnVtYmVyRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2Fs
ZXNdXSwgcmVxdWVzdGVkTG9jYWxlcywgb3B0LCAlTnVtYmVyRm9ybWF0JS5bW3JlbGV2YW50RXh0
ZW5zaW9uS2V5c11dLCBsb2NhbGVEYXRhKS4KICAgICBhdXRvJiBhdmFpbGFibGVMb2NhbGVzID0g
c3RhdGUuY2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5pbnRsTnVtYmVyRm9ybWF0QXZhaWxhYmxl
TG9jYWxlcygpOwotICAgIGF1dG8gcmVzdWx0ID0gcmVzb2x2ZUxvY2FsZShhdmFpbGFibGVMb2Nh
bGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FS
UkFZX0xFTkdUSChyZWxldmFudEV4dGVuc2lvbktleXMpLCBsb2NhbGVEYXRhKTsKKyAgICBhdXRv
IGRlZmF1bHRMYW5ndWFnZSA9IHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+Z2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUoKS0+ZGVmYXVsdExhbmd1YWdlOworICAgIGF1dG8gcmVzdWx0ID0g
cmVzb2x2ZUxvY2FsZShhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBkZWZhdWx0
TGFuZ3VhZ2UsIG9wdCwgcmVsZXZhbnRFeHRlbnNpb25LZXlzLCBXVEZfQVJSQVlfTEVOR1RIKHJl
bGV2YW50RXh0ZW5zaW9uS2V5cyksIGxvY2FsZURhdGEpOwogCiAgICAgLy8gMTMuIFNldCBudW1i
ZXJGb3JtYXQuW1tsb2NhbGVdXSB0byB0aGUgdmFsdWUgb2Ygci5bW2xvY2FsZV1dLgogICAgIG1f
bG9jYWxlID0gcmVzdWx0LmdldChBU0NJSUxpdGVyYWwoImxvY2FsZSIpKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5jcHAKaW5kZXggMzk1YTA0MzBjN2YwOGIy
MjA1MWIxZWFjNTRmOWZjMDBiNzk2MmVlNC4uYjVmNTJjM2Y4NTQ1NTdlZjYyMWM2OTc5Y2NhZTc2
OTNmMWU0YTlhYyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50
bE9iamVjdC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVj
dC5jcHAKQEAgLTExNCwxNCArMTE0LDYgQEAgU3RydWN0dXJlKiBJbnRsT2JqZWN0OjpjcmVhdGVT
dHJ1Y3R1cmUoVk0mIHZtLCBKU0dsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0LCBKU1YKICAgICBy
ZXR1cm4gU3RydWN0dXJlOjpjcmVhdGUodm0sIGdsb2JhbE9iamVjdCwgcHJvdG90eXBlLCBUeXBl
SW5mbyhPYmplY3RUeXBlLCBTdHJ1Y3R1cmVGbGFncyksIGluZm8oKSk7CiB9CiAKLVN0cmluZyBk
ZWZhdWx0TG9jYWxlKCkKLXsKLSAgICAvLyA2LjIuNCBEZWZhdWx0TG9jYWxlICgpCi0gICAgU3Ry
aW5nIGxvY2FsZSA9IHVsb2NfZ2V0RGVmYXVsdCgpOwotICAgIGNvbnZlcnRJQ1VMb2NhbGVUb0JD
UDQ3TGFuZ3VhZ2VUYWcobG9jYWxlKTsKLSAgICByZXR1cm4gbG9jYWxlOwotfQotCiB2b2lkIGNv
bnZlcnRJQ1VMb2NhbGVUb0JDUDQ3TGFuZ3VhZ2VUYWcoU3RyaW5nJiBsb2NhbGUpCiB7CiAgICAg
bG9jYWxlLnJlcGxhY2UoJ18nLCAnLScpOwpAQCAtNjUwLDYgKzY0MiwxOSBAQCBTdHJpbmcgYmVz
dEF2YWlsYWJsZUxvY2FsZShjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMs
IGNvbnN0IFN0cmluZwogICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAorU3RyaW5nIGRlZmF1bHRM
b2NhbGUoR2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OkRlZmF1bHRMYW5ndWFnZUZ1bmN0aW9uUHRy
IGRlZmF1bHRMYW5ndWFnZSkKK3sKKyAgICAvLyA2LjIuNCBEZWZhdWx0TG9jYWxlICgpCisgICAg
aWYgKGRlZmF1bHRMYW5ndWFnZSkgeworICAgICAgICBTdHJpbmcgbG9jYWxlID0gZGVmYXVsdExh
bmd1YWdlKCk7CisgICAgICAgIGlmICghbG9jYWxlLmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJl
dHVybiBjYW5vbmljYWxpemVMYW5ndWFnZVRhZyhsb2NhbGUpOworICAgIH0KKyAgICBTdHJpbmcg
bG9jYWxlID0gdWxvY19nZXREZWZhdWx0KCk7CisgICAgY29udmVydElDVUxvY2FsZVRvQkNQNDdM
YW5ndWFnZVRhZyhsb2NhbGUpOworICAgIHJldHVybiBsb2NhbGU7Cit9CisKIFN0cmluZyByZW1v
dmVVbmljb2RlTG9jYWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogewogICAgIFZl
Y3RvcjxTdHJpbmc+IHBhcnRzOwpAQCAtNjcyLDcgKzY3Nyw3IEBAIFN0cmluZyByZW1vdmVVbmlj
b2RlTG9jYWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbG9jYWxlKQogICAgIHJldHVybiBidWls
ZGVyLnRvU3RyaW5nKCk7CiB9CiAKLXN0YXRpYyBNYXRjaGVyUmVzdWx0IGxvb2t1cE1hdGNoZXIo
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcmVxdWVzdGVkTG9jYWxlcykKK3N0YXRpYyBNYXRjaGVyUmVzdWx0IGxvb2t1cE1hdGNo
ZXIoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBWZWN0b3I8
U3RyaW5nPiYgcmVxdWVzdGVkTG9jYWxlcywgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OkRlZmF1
bHRMYW5ndWFnZUZ1bmN0aW9uUHRyIGRlZmF1bHRMYW5ndWFnZSkKIHsKICAgICAvLyA5LjIuMyBM
b29rdXBNYXRjaGVyIChhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzKSAoRUNNQS00
MDIgMi4wKQogICAgIFN0cmluZyBsb2NhbGU7CkBAIC03MDksMjUgKzcxNCwyNSBAQCBzdGF0aWMg
TWF0Y2hlclJlc3VsdCBsb29rdXBNYXRjaGVyKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxh
YmxlTG9jYWxlcywgY29ucwogICAgICAgICAgICAgcmVzdWx0LmV4dGVuc2lvbkluZGV4ID0gZXh0
ZW5zaW9uSW5kZXg7CiAgICAgICAgIH0KICAgICB9IGVsc2UKLSAgICAgICAgcmVzdWx0LmxvY2Fs
ZSA9IGRlZmF1bHRMb2NhbGUoKTsKKyAgICAgICAgcmVzdWx0LmxvY2FsZSA9IGRlZmF1bHRMb2Nh
bGUoZGVmYXVsdExhbmd1YWdlKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1zdGF0aWMgTWF0
Y2hlclJlc3VsdCBiZXN0Rml0TWF0Y2hlcihjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJs
ZUxvY2FsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXF1ZXN0ZWRMb2NhbGVzKQorc3RhdGlj
IE1hdGNoZXJSZXN1bHQgYmVzdEZpdE1hdGNoZXIoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFp
bGFibGVMb2NhbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVxdWVzdGVkTG9jYWxlcywgR2xv
YmFsT2JqZWN0TWV0aG9kVGFibGU6OkRlZmF1bHRMYW5ndWFnZUZ1bmN0aW9uUHRyIGRlZmF1bHRM
YW5ndWFnZSkKIHsKICAgICAvLyA5LjIuNCBCZXN0Rml0TWF0Y2hlciAoYXZhaWxhYmxlTG9jYWxl
cywgcmVxdWVzdGVkTG9jYWxlcykgKEVDTUEtNDAyIDIuMCkKICAgICAvLyBGSVhNRTogSW1wbGVt
ZW50IHNvbWV0aGluZyBiZXR0ZXIgdGhhbiBsb29rdXAuCi0gICAgcmV0dXJuIGxvb2t1cE1hdGNo
ZXIoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcyk7CisgICAgcmV0dXJuIGxvb2t1
cE1hdGNoZXIoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgZGVmYXVsdExhbmd1
YWdlKTsKIH0KIAotSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZUxvY2FsZShjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBy
ZXF1ZXN0ZWRMb2NhbGVzLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgb3B0aW9ucywg
Y29uc3QgY2hhciogY29uc3QgcmVsZXZhbnRFeHRlbnNpb25LZXlzW10sIHNpemVfdCByZWxldmFu
dEV4dGVuc2lvbktleUNvdW50LCBWZWN0b3I8U3RyaW5nPiAoKmxvY2FsZURhdGEpKGNvbnN0IFN0
cmluZyYsIHNpemVfdCkpCitIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlTG9jYWxlKGNv
bnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcywgY29uc3QgVmVjdG9yPFN0cmlu
Zz4mIHJlcXVlc3RlZExvY2FsZXMsIEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpEZWZhdWx0TGFu
Z3VhZ2VGdW5jdGlvblB0ciBkZWZhdWx0TGFuZ3VhZ2UsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBT
dHJpbmc+JiBvcHRpb25zLCBjb25zdCBjaGFyKiBjb25zdCByZWxldmFudEV4dGVuc2lvbktleXNb
XSwgc2l6ZV90IHJlbGV2YW50RXh0ZW5zaW9uS2V5Q291bnQsIFZlY3RvcjxTdHJpbmc+ICgqbG9j
YWxlRGF0YSkoY29uc3QgU3RyaW5nJiwgc2l6ZV90KSkKIHsKICAgICAvLyA5LjIuNSBSZXNvbHZl
TG9jYWxlIChhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHRpb25zLCByZWxl
dmFudEV4dGVuc2lvbktleXMsIGxvY2FsZURhdGEpIChFQ01BLTQwMiAyLjApCiAgICAgLy8gMS4g
TGV0IG1hdGNoZXIgYmUgdGhlIHZhbHVlIG9mIG9wdGlvbnMuW1tsb2NhbGVNYXRjaGVyXV0uCiAg
ICAgY29uc3QgU3RyaW5nJiBtYXRjaGVyID0gb3B0aW9ucy5nZXQoQVNDSUlMaXRlcmFsKCJsb2Nh
bGVNYXRjaGVyIikpOwogCiAgICAgLy8gMi4gSWYgbWF0Y2hlciBpcyAibG9va3VwIiwgdGhlbgot
ICAgIE1hdGNoZXJSZXN1bHQgKCptYXRjaGVyT3BlcmF0aW9uKShjb25zdCBIYXNoU2V0PFN0cmlu
Zz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIE1hdGNoZXJSZXN1bHQgKCptYXRjaGVy
T3BlcmF0aW9uKShjb25zdCBIYXNoU2V0PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYs
IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlOjpEZWZhdWx0TGFuZ3VhZ2VGdW5jdGlvblB0cik7CiAg
ICAgaWYgKG1hdGNoZXIgPT0gImxvb2t1cCIpIHsKICAgICAgICAgLy8gYS4gTGV0IE1hdGNoZXJP
cGVyYXRpb24gYmUgdGhlIGFic3RyYWN0IG9wZXJhdGlvbiBMb29rdXBNYXRjaGVyLgogICAgICAg
ICBtYXRjaGVyT3BlcmF0aW9uID0gbG9va3VwTWF0Y2hlcjsKQEAgLTczNyw3ICs3NDIsNyBAQCBI
YXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlTG9jYWxlKGNvbnN0IEhhc2hTZXQ8U3RyaW5n
PiYgYXZhaWxhYmxlTG9jYWxlcywgYwogICAgIH0KIAogICAgIC8vIDQuIExldCByIGJlIE1hdGNo
ZXJPcGVyYXRpb24oYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcykuCi0gICAgTWF0
Y2hlclJlc3VsdCBtYXRjaGVyUmVzdWx0ID0gbWF0Y2hlck9wZXJhdGlvbihhdmFpbGFibGVMb2Nh
bGVzLCByZXF1ZXN0ZWRMb2NhbGVzKTsKKyAgICBNYXRjaGVyUmVzdWx0IG1hdGNoZXJSZXN1bHQg
PSBtYXRjaGVyT3BlcmF0aW9uKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMsIGRl
ZmF1bHRMYW5ndWFnZSk7CiAKICAgICAvLyA1LiBMZXQgZm91bmRMb2NhbGUgYmUgdGhlIHZhbHVl
IG9mIHIuW1tsb2NhbGVdXS4KICAgICBTdHJpbmcgZm91bmRMb2NhbGUgPSBtYXRjaGVyUmVzdWx0
LmxvY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxP
YmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRl
eCA1MmM3ODExMTYxMTI4MzcwNDIxMTI0YWM2NWIxM2JjMTEwNmJkNzM3Li43ZmU3YjRkNTUyYTQ4
Y2IxMDY0NmY5YzJmZmZjMGVkOWU2MGIwNjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1
bnRpbWUvSW50bE9iamVjdC5oCkBAIC01NywxMyArNTcsMTMgQEAgcHJpdmF0ZToKICAgICBJbnRs
T2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiB9OwogCi1TdHJpbmcgZGVmYXVsdExvY2FsZSgpOwor
U3RyaW5nIGRlZmF1bHRMb2NhbGUoR2xvYmFsT2JqZWN0TWV0aG9kVGFibGU6OkRlZmF1bHRMYW5n
dWFnZUZ1bmN0aW9uUHRyKTsKIHZvaWQgY29udmVydElDVUxvY2FsZVRvQkNQNDdMYW5ndWFnZVRh
ZyhTdHJpbmcmIGxvY2FsZSk7CiBib29sIGludGxCb29sZWFuT3B0aW9uKEV4ZWNTdGF0ZSYsIEpT
VmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lLCBib29sJiB1c2VzRmFsbGJhY2spOwogU3RyaW5n
IGludGxTdHJpbmdPcHRpb24oRXhlY1N0YXRlJiwgSlNWYWx1ZSBvcHRpb25zLCBQcm9wZXJ0eU5h
bWUsIHN0ZDo6aW5pdGlhbGl6ZXJfbGlzdDxjb25zdCBjaGFyKj4gdmFsdWVzLCBjb25zdCBjaGFy
KiBub3RGb3VuZCwgY29uc3QgY2hhciogZmFsbGJhY2spOwogdW5zaWduZWQgaW50bE51bWJlck9w
dGlvbihFeGVjU3RhdGUmLCBKU1ZhbHVlIG9wdGlvbnMsIFByb3BlcnR5TmFtZSwgdW5zaWduZWQg
bWluaW11bSwgdW5zaWduZWQgbWF4aW11bSwgdW5zaWduZWQgZmFsbGJhY2spOwogVmVjdG9yPFN0
cmluZz4gY2Fub25pY2FsaXplTG9jYWxlTGlzdChFeGVjU3RhdGUmLCBKU1ZhbHVlIGxvY2FsZXMp
OwotSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZUxvY2FsZShjb25zdCBIYXNoU2V0PFN0
cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXF1ZXN0ZWRM
b2NhbGVzLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiYgb3B0aW9ucywgY29uc3QgY2hh
ciogY29uc3QgcmVsZXZhbnRFeHRlbnNpb25LZXlzW10sIHNpemVfdCByZWxldmFudEV4dGVuc2lv
bktleUNvdW50LCBWZWN0b3I8U3RyaW5nPiAoKmxvY2FsZURhdGEpKGNvbnN0IFN0cmluZyYsIHNp
emVfdCkpOworSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2ZUxvY2FsZShjb25zdCBIYXNo
U2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXF1
ZXN0ZWRMb2NhbGVzLCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZTo6RGVmYXVsdExhbmd1YWdlRnVu
Y3Rpb25QdHIsIGNvbnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBvcHRpb25zLCBjb25zdCBj
aGFyKiBjb25zdCByZWxldmFudEV4dGVuc2lvbktleXNbXSwgc2l6ZV90IHJlbGV2YW50RXh0ZW5z
aW9uS2V5Q291bnQsIFZlY3RvcjxTdHJpbmc+ICgqbG9jYWxlRGF0YSkoY29uc3QgU3RyaW5nJiwg
c2l6ZV90KSk7CiBKU1ZhbHVlIHN1cHBvcnRlZExvY2FsZXMoRXhlY1N0YXRlJiwgY29uc3QgSGFz
aFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVx
dWVzdGVkTG9jYWxlcywgSlNWYWx1ZSBvcHRpb25zKTsKIFN0cmluZyByZW1vdmVVbmljb2RlTG9j
YWxlRXh0ZW5zaW9uKGNvbnN0IFN0cmluZyYgbG9jYWxlKTsKIFN0cmluZyBiZXN0QXZhaWxhYmxl
TG9jYWxlKGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcywgY29uc3QgU3Ry
aW5nJiByZXF1ZXN0ZWRMb2NhbGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuY3BwCmluZGV4IDg1NWExMTRkNjNjNDhjYTMwMWY0MDMzNTAyN2Q2
NjFhNDhiZTg5Y2YuLjgzYTFiNTI2NmIzYWM5ZTA2N2I0M2QyZmY2OGQyNWVmMTgwOGQ0YjUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAK
QEAgLTE3Niw3ICsxNzYsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY29uc3QgQ2xhc3NJbmZvIEpT
R2xvYmFsT2JqZWN0OjpzX2luZm8gPSB7ICJHbG9iYWxPYmplY3QiLCAmQmFzZTo6c19pbmZvLCAm
Z2xvYmFsT2JqZWN0VGFibGUsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNHbG9iYWxPYmplY3QpIH07
CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0OjpzX2dsb2Jh
bE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzTGVnYWN5
UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlw
dCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZzaG91bGRJbnRlcnJ1cHRTY3Jp
cHRCZWZvcmVUaW1lb3V0LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyIH07Citjb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBKU0dsb2JhbE9iamVjdDo6c19n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zyb20sICZzdXBwb3J0c0xl
Z2FjeVByb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZzaG91bGRJbnRlcnJ1cHRT
Y3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCBudWxscHRyLCAmc2hvdWxkSW50ZXJydXB0
U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwg
bnVsbHB0ciwgbnVsbHB0ciB9OwogCiAvKiBTb3VyY2UgZm9yIEpTR2xvYmFsT2JqZWN0Lmx1dC5o
CiBAYmVnaW4gZ2xvYmFsT2JqZWN0VGFibGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5oCmluZGV4IGViOWQ0Y2I2NGUyMDhkOGI2MDAwMTViY2Q3MGVm
NTAwNjdhM2NkZjcuLjQxYjQxNmI5ZjFjZTkwNGViYmRiZTk3Yjc5MWQ5M2JhZDFlMzllZGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaApAQCAt
MTczLDYgKzE3Myw5IEBAIHN0cnVjdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSB7CiAKICAgICB0
eXBlZGVmIEpTVmFsdWUgKCpNb2R1bGVMb2FkZXJFdmFsdWF0ZVB0cikoSlNHbG9iYWxPYmplY3Qq
LCBFeGVjU3RhdGUqLCBKU1ZhbHVlLCBKU1ZhbHVlKTsKICAgICBNb2R1bGVMb2FkZXJFdmFsdWF0
ZVB0ciBtb2R1bGVMb2FkZXJFdmFsdWF0ZTsKKworICAgIHR5cGVkZWYgU3RyaW5nICgqRGVmYXVs
dExhbmd1YWdlRnVuY3Rpb25QdHIpKHZvaWQpOworICAgIERlZmF1bHRMYW5ndWFnZUZ1bmN0aW9u
UHRyIGRlZmF1bHRMYW5ndWFnZTsKIH07CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0IDogcHVibGlj
IEpTU2VnbWVudGVkVmFyaWFibGVPYmplY3QgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90eXBlLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAKaW5kZXggZDhiOTliY2EyNjgyMTI2Y2NmM2Yw
MTliOGEzNGZkZjI5NGE1ODZmMy4uNzNkYmE3Yzc2MTdhZjRmNTBiODdjMDA5YzllODBiODdkNjQ4
Yzc2YSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJv
dG90eXBlLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9TdHJpbmdQcm90
b3R5cGUuY3BwCkBAIC0xNTAwLDcgKzE1MDAsOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgdG9M
b2NhbGVDYXNlKEV4ZWNTdGF0ZSogc3RhdGUsIGludDMyX3QgKCpjb252ZXJ0Q2FzZSkoVUNoYQog
ICAgIC8vIGEuIExldCByZXF1ZXN0ZWRMb2NhbGUgYmUgdGhlIGZpcnN0IGVsZW1lbnQgb2YgcmVx
dWVzdGVkTG9jYWxlcy4KICAgICAvLyA4LiBFbHNlCiAgICAgLy8gYS4gTGV0IHJlcXVlc3RlZExv
Y2FsZSBiZSBEZWZhdWx0TG9jYWxlKCkuCi0gICAgU3RyaW5nIHJlcXVlc3RlZExvY2FsZSA9IGxl
biA+IDAgPyByZXF1ZXN0ZWRMb2NhbGVzLmZpcnN0KCkgOiBkZWZhdWx0TG9jYWxlKCk7CisgICAg
YXV0byBkZWZhdWx0TGFuZ3VhZ2UgPSBzdGF0ZS0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5n
bG9iYWxPYmplY3RNZXRob2RUYWJsZSgpLT5kZWZhdWx0TGFuZ3VhZ2U7CisgICAgU3RyaW5nIHJl
cXVlc3RlZExvY2FsZSA9IGxlbiA+IDAgPyByZXF1ZXN0ZWRMb2NhbGVzLmZpcnN0KCkgOiBkZWZh
dWx0TG9jYWxlKGRlZmF1bHRMYW5ndWFnZSk7CiAKICAgICAvLyA5LiBMZXQgbm9FeHRlbnNpb25z
TG9jYWxlIGJlIHRoZSBTdHJpbmcgdmFsdWUgdGhhdCBpcyByZXF1ZXN0ZWRMb2NhbGUgd2l0aCBh
bGwgVW5pY29kZSBsb2NhbGUgZXh0ZW5zaW9uIHNlcXVlbmNlcyAoNi4yLjEpIHJlbW92ZWQuCiAg
ICAgU3RyaW5nIG5vRXh0ZW5zaW9uc0xvY2FsZSA9IHJlbW92ZVVuaWNvZGVMb2NhbGVFeHRlbnNp
b24ocmVxdWVzdGVkTG9jYWxlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RP
TVdpbmRvd0Jhc2UuY3BwCmluZGV4IGU3ZWIyYzcyOTQ4OWNjMDllOWE0YzYyYjU3NmY3MjRhZTA3
OTMxM2UuLjE5ZmNhMjUwNTliNTY2OTgxZDhkMjhkNDdkNTkzNjdkNjRkYmRkNzIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmNwcApAQCAtMzQsNiAr
MzQsNyBAQAogI2luY2x1ZGUgIkpTTWFpblRocmVhZEV4ZWNTdGF0ZS5oIgogI2luY2x1ZGUgIkpT
TW9kdWxlTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNOb2RlLmgiCisjaW5jbHVkZSAiTGFuZ3VhZ2Uu
aCIKICNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiUGFnZS5oIgogI2luY2x1ZGUgIlJ1
bnRpbWVBcHBsaWNhdGlvbkNoZWNrcy5oIgpAQCAtNjMsNyArNjQsNyBAQCBzdGF0aWMgYm9vbCBz
aG91bGRBbGxvd0FjY2Vzc0Zyb20oY29uc3QgSlNHbG9iYWxPYmplY3QqIHRoaXNPYmplY3QsIEV4
ZWNTdGF0ZSogZQogCiBjb25zdCBDbGFzc0luZm8gSlNET01XaW5kb3dCYXNlOjpzX2luZm8gPSB7
ICJXaW5kb3ciLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9U
QUJMRShKU0RPTVdpbmRvd0Jhc2UpIH07CiAKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxl
IEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJnNob3VsZEFs
bG93QWNjZXNzRnJvbSwgJnN1cHBvcnRzTGVnYWN5UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291
cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3Ms
ICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVv
dXQsICZtb2R1bGVMb2FkZXJSZXNvbHZlLCAmbW9kdWxlTG9hZGVyRmV0Y2gsIG51bGxwdHIsIG51
bGxwdHIsICZtb2R1bGVMb2FkZXJFdmFsdWF0ZSB9OworY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9k
VGFibGUgSlNET01XaW5kb3dCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmc2hv
dWxkQWxsb3dBY2Nlc3NGcm9tLCAmc3VwcG9ydHNMZWdhY3lQcm9maWxpbmcsICZzdXBwb3J0c1Jp
Y2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVG
bGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3Jl
VGltZW91dCwgJm1vZHVsZUxvYWRlclJlc29sdmUsICZtb2R1bGVMb2FkZXJGZXRjaCwgbnVsbHB0
ciwgbnVsbHB0ciwgJm1vZHVsZUxvYWRlckV2YWx1YXRlLCAmZGVmYXVsdExhbmd1YWdlIH07CiAK
IEpTRE9NV2luZG93QmFzZTo6SlNET01XaW5kb3dCYXNlKFZNJiB2bSwgU3RydWN0dXJlKiBzdHJ1
Y3R1cmUsIFBhc3NSZWZQdHI8RE9NV2luZG93PiB3aW5kb3csIEpTRE9NV2luZG93U2hlbGwqIHNo
ZWxsKQogICAgIDogSlNET01HbG9iYWxPYmplY3Qodm0sIHN0cnVjdHVyZSwgJnNoZWxsLT53b3Js
ZCgpLCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcAppbmRleCAzYzFlZjcy
YjcxMDIzMDU2Y2Q1MWRhZTg3NmQzYzZiMDNiNDE1OGVlLi5jNTAyMmE2Y2U4MzQ0MmM3ZGYyMDli
OWU2M2ZmZDkwNmEwNjg5ZjcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCkBAIC0zMCw2ICszMCw3IEBACiAjaW5j
bHVkZSAiSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuaCIKIAogI2luY2x1ZGUgIkRPTVdyYXBwZXJX
b3JsZC5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgiCiAjaW5jbHVkZSAiSlNET01HbG9iYWxPYmpl
Y3RUYXNrLmgiCiAjaW5jbHVkZSAiSlNEZWRpY2F0ZWRXb3JrZXJHbG9iYWxTY29wZS5oIgogI2lu
Y2x1ZGUgIkpTV29ya2VyR2xvYmFsU2NvcGUuaCIKQEAgLTQzLDcgKzQ0LDcgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjb25zdCBDbGFzc0luZm8gSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNf
aW5mbyA9IHsgIldvcmtlckdsb2JhbFNjb3BlIiwgJkpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8s
IDAsIENSRUFURV9NRVRIT0RfVEFCTEUoSlNXb3JrZXJHbG9iYWxTY29wZUJhc2UpIH07CiAKLWNv
bnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTV29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2ds
b2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzTGVn
YWN5UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNj
cmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNo
b3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVvdXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxw
dHIsIG51bGxwdHIsIG51bGxwdHIgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpT
V29ya2VyR2xvYmFsU2NvcGVCYXNlOjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxs
b3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzTGVnYWN5UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291
cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3Ms
ICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRpbWVv
dXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsICZkZWZhdWx0
TGFuZ3VhZ2UgfTsKIAogSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OkpTV29ya2VyR2xvYmFsU2Nv
cGVCYXNlKEpTQzo6Vk0mIHZtLCBKU0M6OlN0cnVjdHVyZSogc3RydWN0dXJlLCBQYXNzUmVmUHRy
PFdvcmtlckdsb2JhbFNjb3BlPiBpbXBsKQogICAgIDogSlNET01HbG9iYWxPYmplY3Qodm0sIHN0
cnVjdHVyZSwgJm5vcm1hbFdvcmxkKHZtKSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
aW5kZXggMWM3YjRmZDMyYzY1YmE3YTUyNTM3ZTU3MDY0N2IzMDc4NmRlZTAwOC4uMDc3OWM1NDYx
MmQ0M2EwOTNiYTNkZmEyNWQ5NjI1NzNmNjliNjBkZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisy
MDE2LTAyLTE3ICBBbmR5IFZhbldhZ29uZXIgIDx0aGV0YWxlY3JhZnRlckBnbWFpbC5jb20+CisK
KyAgICAgICAgSW50bC5Db2xsYXRvciB1c2VzIFBPU0lYIGxvY2FsZSAoZGV0ZWN0ZWQgYnkganMv
aW50bC1jb2xsYXRvci5odG1sIG9uIGlPUyBTaW11bGF0b3IpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTI0NDgKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGQgdGVzdHMgZm9yIGRlZmF1bHQgbG9jYWxl
IGluIHRlc3QgcnVubmVyIHRvIGJlIGVuLVVTLgorCisgICAgICAgICoganMvaW50bC1jb2xsYXRv
ci1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvaW50bC1kYXRldGltZWZvcm1hdC1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICoganMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGpzL3NjcmlwdC10ZXN0cy9pbnRsLWNvbGxhdG9yLmpzOgorICAgICAgICAqIGpzL3Nj
cmlwdC10ZXN0cy9pbnRsLWRhdGV0aW1lZm9ybWF0LmpzOgorICAgICAgICAqIGpzL3NjcmlwdC10
ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC5qczoKKwogMjAxNi0wMi0xNyAgRGVhbiBKYWNrc29uICA8
ZGlub0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViS2l0Q1NTTWF0cml4IHRyYW5zZm9ybUxpc3Qg
d2l0aCBjYWxjdWxhdGVkIHJlbGF0aXZlIGxlbmd0aCBjcmFzaGVzIFNhZmFyaS4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2pzL2ludGwtY29sbGF0b3ItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVz
dHMvanMvaW50bC1jb2xsYXRvci1leHBlY3RlZC50eHQKaW5kZXggNzEyYmJkNjQ0NTYxMDA3ZjU0
MWU4YzIxMWFlNzRhNjdlNDg2ZTViZC4uOTA1YTE4YjVjNGNmZjU0OTAzMWMzMTc0ZWI4ZjdhMzU2
MjgwOTFmNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRvci1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRvci1leHBlY3RlZC50eHQKQEAg
LTE5LDYgKzE5LDcgQEAgUEFTUyBjbGFzcyBEZXJpdmVkQ29sbGF0b3IgZXh0ZW5kcyBJbnRsLkNv
bGxhdG9yIHt9OyhuZXcgRGVyaXZlZENvbGxhdG9yKSBpbnN0YW4KIFBBU1MgY2xhc3MgRGVyaXZl
ZENvbGxhdG9yIGV4dGVuZHMgSW50bC5Db2xsYXRvciB7fTtuZXcgRGVyaXZlZENvbGxhdG9yKCku
Y29tcGFyZSgnYScsICdiJykgPT09IC0xIGlzIHRydWUKIFBBU1MgY2xhc3MgRGVyaXZlZENvbGxh
dG9yIGV4dGVuZHMgSW50bC5Db2xsYXRvciB7fTtPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERl
cml2ZWRDb2xsYXRvcikgPT09IERlcml2ZWRDb2xsYXRvci5wcm90b3R5cGUgaXMgdHJ1ZQogUEFT
UyBjbGFzcyBEZXJpdmVkQ29sbGF0b3IgZXh0ZW5kcyBJbnRsLkNvbGxhdG9yIHt9O09iamVjdC5n
ZXRQcm90b3R5cGVPZihPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERlcml2ZWRDb2xsYXRvcikp
ID09PSBJbnRsLkNvbGxhdG9yLnByb3RvdHlwZSBpcyB0cnVlCitQQVNTIHRlc3RDb2xsYXRvcihJ
bnRsLkNvbGxhdG9yKCksIFt7bG9jYWxlOiAnZW4tVVMnfV0pIGlzIHRydWUKIFBBU1MgdGVzdENv
bGxhdG9yKEludGwuQ29sbGF0b3IoJ2VuJyksIFt7bG9jYWxlOiAnZW4nfV0pIGlzIHRydWUKIFBB
U1MgdGVzdENvbGxhdG9yKEludGwuQ29sbGF0b3IoJ2VOLXVTJyksIFt7bG9jYWxlOiAnZW4tVVMn
fV0pIGlzIHRydWUKIFBBU1MgdGVzdENvbGxhdG9yKEludGwuQ29sbGF0b3IoWydlbicsICdkZSdd
KSwgW3tsb2NhbGU6ICdlbid9XSkgaXMgdHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMv
aW50bC1kYXRldGltZWZvcm1hdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWRh
dGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4dAppbmRleCBhNTg0ZTg0ZTNhOWYyNjA3ZDU5NWFjYTVh
ODJkZjQ2MmE0YTZmMmVjLi5mNThkNGE5YjJjNzQ5NWQ1YWE4NGQzMGZjMzY5ZmY1OTc1OTM4ZGVh
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4
dApAQCAtODMsNiArODMsNyBAQCBQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJl
c29sdmVkT3B0aW9ucygpID09PSBJbnRsLkRhdGVUaW1lRm9ybWF0LnBybwogUEFTUyBJbnRsLkRh
dGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSB0aHJldyBleGNl
cHRpb24gVHlwZUVycm9yOiBJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5yZXNvbHZlZE9w
dGlvbnMgY2FsbGVkIG9uIHZhbHVlIHRoYXQncyBub3QgYW4gb2JqZWN0IGluaXRpYWxpemVkIGFz
IGEgRGF0ZVRpbWVGb3JtYXQuCiBQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQoJyQnKSB0aHJldyBl
eGNlcHRpb24gUmFuZ2VFcnJvcjogaW52YWxpZCBsYW5ndWFnZSB0YWc6ICQuCiBQQVNTIEludGwu
RGF0ZVRpbWVGb3JtYXQoJ2VuJywgbnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogbnVs
bCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICdJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbics
IG51bGwpJykuCitQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5s
b2NhbGUgaXMgJ2VuLVVTJwogUEFTUyBJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbicpLnJlc29sdmVk
T3B0aW9ucygpLndlZWtkYXkgaXMgdW5kZWZpbmVkCiBQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQo
J2VuJykucmVzb2x2ZWRPcHRpb25zKCkuZXJhIGlzIHVuZGVmaW5lZAogUEFTUyBJbnRsLkRhdGVU
aW1lRm9ybWF0KCdlbicpLnJlc29sdmVkT3B0aW9ucygpLm1vbnRoIGlzICdudW1lcmljJwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0CmluZGV4IGRhZmQ3
ZjhjMDAwMzBkNTQwYThlYjE0YzBiZWI5ZjdjMDk4N2Y0MjAuLmM0M2YyNTNlYzRiMGJlN2NmNWQ2
YjhjYWUyYjU2MTE5ODJlZmYyZjYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2ludGwtbnVt
YmVyZm9ybWF0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZv
cm1hdC1leHBlY3RlZC50eHQKQEAgLTEyLDYgKzEyLDcgQEAgUEFTUyBjbGFzcyBEZXJpdmVkTnVt
YmVyRm9ybWF0IGV4dGVuZHMgSW50bC5OdW1iZXJGb3JtYXQge307KG5ldyBEZXJpdmVkTnVtYmVy
Rm8KIFBBU1MgY2xhc3MgRGVyaXZlZE51bWJlckZvcm1hdCBleHRlbmRzIEludGwuTnVtYmVyRm9y
bWF0IHt9O25ldyBEZXJpdmVkTnVtYmVyRm9ybWF0KCkuZm9ybWF0KDEpID09PSAnMScgaXMgdHJ1
ZQogUEFTUyBjbGFzcyBEZXJpdmVkTnVtYmVyRm9ybWF0IGV4dGVuZHMgSW50bC5OdW1iZXJGb3Jt
YXQge307T2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBEZXJpdmVkTnVtYmVyRm9ybWF0KSA9PT0g
RGVyaXZlZE51bWJlckZvcm1hdC5wcm90b3R5cGUgaXMgdHJ1ZQogUEFTUyBjbGFzcyBEZXJpdmVk
TnVtYmVyRm9ybWF0IGV4dGVuZHMgSW50bC5OdW1iZXJGb3JtYXQge307T2JqZWN0LmdldFByb3Rv
dHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZE51bWJlckZvcm1hdCkpID09
PSBJbnRsLk51bWJlckZvcm1hdC5wcm90b3R5cGUgaXMgdHJ1ZQorUEFTUyB0ZXN0TnVtYmVyRm9y
bWF0KEludGwuTnVtYmVyRm9ybWF0KCksIFt7bG9jYWxlOiAnZW4tVVMnfV0pIGlzIHRydWUKIFBB
U1MgdGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nKSwgW3tsb2NhbGU6ICdl
bid9XSkgaXMgdHJ1ZQogUEFTUyB0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9ybWF0KCdl
Ti11UycpLCBbe2xvY2FsZTogJ2VuLVVTJ31dKSBpcyB0cnVlCiBQQVNTIHRlc3ROdW1iZXJGb3Jt
YXQoSW50bC5OdW1iZXJGb3JtYXQoWydlbicsICdkZSddKSwgW3tsb2NhbGU6ICdlbid9XSkgaXMg
dHJ1ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtY29sbGF0
b3IuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcwppbmRl
eCA1MjcyOWQxZDBiYzZjMDBjYWZiZTdiYzNlNmIyN2RmMGQ3ZGNkOWE5Li5lMTU0OGVhYThhMDZm
YzAxY2I4NmM2MDk4MWJhOTQzNmY3OTExOGM4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQt
dGVzdHMvaW50bC1jb2xsYXRvci5qcwpAQCAtNDMsNiArNDMsNyBAQCB2YXIgdGVzdENvbGxhdG9y
ID0gZnVuY3Rpb24oY29sbGF0b3IsIHBvc3NpYmxlT3B0aW9uRGlmZmVyZW5jZXMpIHsKIH0KIAog
Ly8gTG9jYWxlIGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkuCitzaG91bGRCZVRydWUoInRlc3RDb2xs
YXRvcihJbnRsLkNvbGxhdG9yKCksIFt7bG9jYWxlOiAnZW4tVVMnfV0pIik7CiBzaG91bGRCZVRy
dWUoInRlc3RDb2xsYXRvcihJbnRsLkNvbGxhdG9yKCdlbicpLCBbe2xvY2FsZTogJ2VuJ31dKSIp
Owogc2hvdWxkQmVUcnVlKCJ0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcignZU4tdVMnKSwgW3ts
b2NhbGU6ICdlbi1VUyd9XSkiKTsKIHNob3VsZEJlVHJ1ZSgidGVzdENvbGxhdG9yKEludGwuQ29s
bGF0b3IoWydlbicsICdkZSddKSwgW3tsb2NhbGU6ICdlbid9XSkiKTsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLWRhdGV0aW1lZm9ybWF0LmpzIGIvTGF5b3V0
VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMKaW5kZXggNWZjYjU4
NzkxMDNkMTEwMjAxZDczNTAxMzM5MmVhN2M5ZGY4NjQxYS4uOTI3YTkzMGJlZTUyNzBhNDI3NTkx
NzUyNGRlODg3NGIzNmY1ZTk5OCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRl
c3RzL2ludGwtZGF0ZXRpbWVmb3JtYXQuanMKQEAgLTE2NCw2ICsxNjQsOSBAQCBzaG91bGRUaHJv
dygiSW50bC5EYXRlVGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zLmNhbGwoNSki
LCAiJ1R5cGVFcnJvcgogc2hvdWxkVGhyb3coIkludGwuRGF0ZVRpbWVGb3JtYXQoJyQnKSIsICIn
UmFuZ2VFcnJvcjogaW52YWxpZCBsYW5ndWFnZSB0YWc6ICQnIik7CiBzaG91bGRUaHJvdygiSW50
bC5EYXRlVGltZUZvcm1hdCgnZW4nLCBudWxsKSIsICciVHlwZUVycm9yOiBudWxsIGlzIG5vdCBh
biBvYmplY3QgKGV2YWx1YXRpbmcgXCdJbnRsLkRhdGVUaW1lRm9ybWF0KFwnZW5cJywgbnVsbClc
JykiJyk7CiAKKy8vIERlZmF1bHRzIHRvIGVuLVVTIGxvY2FsZSBpbiB0ZXN0IHJ1bm5lcgorc2hv
dWxkQmUoIkludGwuRGF0ZVRpbWVGb3JtYXQoKS5yZXNvbHZlZE9wdGlvbnMoKS5sb2NhbGUiLCAi
J2VuLVVTJyIpOworCiAvLyBEZWZhdWx0cyB0byBtb250aCwgZGF5LCB5ZWFyLgogc2hvdWxkQmUo
IkludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuJykucmVzb2x2ZWRPcHRpb25zKCkud2Vla2RheSIsICJ1
bmRlZmluZWQiKTsKIHNob3VsZEJlKCJJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbicpLnJlc29sdmVk
T3B0aW9ucygpLmVyYSIsICJ1bmRlZmluZWQiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2pz
L3NjcmlwdC10ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC5qcyBiL0xheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC5qcwppbmRleCBmZGIwYTc4MjlhZWIzYjIxMWI5YTQw
MzNhNzExOTNmNzcxNDVjNzEyLi42ZTU5ZDA3N2E3ODlhN2FiOWE5MjAyYjk1MzM3MjI3ZTQyOTQ5
NzgzIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1udW1iZXJm
b3JtYXQuanMKKysrIGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9y
bWF0LmpzCkBAIC00MSw2ICs0MSw3IEBAIGZ1bmN0aW9uIHRlc3ROdW1iZXJGb3JtYXQobnVtYmVy
Rm9ybWF0LCBwb3NzaWJsZURpZmZlcmVuY2VzKSB7CiB9CiAKIC8vIExvY2FsZSBpcyBwcm9jZXNz
ZWQgY29ycmVjdGx5Lgorc2hvdWxkQmVUcnVlKCJ0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVy
Rm9ybWF0KCksIFt7bG9jYWxlOiAnZW4tVVMnfV0pIik7CiBzaG91bGRCZVRydWUoInRlc3ROdW1i
ZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VuJyksIFt7bG9jYWxlOiAnZW4nfV0pIik7CiBz
aG91bGRCZVRydWUoInRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VOLXVTJyks
IFt7bG9jYWxlOiAnZW4tVVMnfV0pIik7CiBzaG91bGRCZVRydWUoInRlc3ROdW1iZXJGb3JtYXQo
SW50bC5OdW1iZXJGb3JtYXQoWydlbicsICdkZSddKSwgW3tsb2NhbGU6ICdlbid9XSkiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>272419</attachid>
            <date>2016-02-27 10:28:07 -0800</date>
            <delta_ts>2016-02-27 16:35:55 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-152448-20160227112750.patch</filename>
            <type>text/plain</type>
            <size>26354</size>
            <attacher name="Andy VanWagoner">andy</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTk2ZDM2YjFmZDg5Yjk3MmU0ZmI4NWZmNDdiM2Q2Yjc0MzliNTNlLi5mMzQ0MWNjYzRlNGIxNDRm
ZjQzYjYwZWZjMDE3NWQ4ODBlMjk5YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNi0wMi0yNyAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgorCisgICAgICAgIEludGwuQ29sbGF0b3IgdXNlcyBQT1NJWCBsb2NhbGUgKGRl
dGVjdGVkIGJ5IGpzL2ludGwtY29sbGF0b3IuaHRtbCBvbiBpT1MgU2ltdWxhdG9yKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDQ4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGRlZmF1bHRMYW5n
dWFnZSB0byB0aGUgZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgYW5kIHVzZSBpdCBmb3IgdGhlCisg
ICAgICAgIGRlZmF1bHQgbG9jYWxlIGluIEludGwgb2JqZWN0IGluaXRpYWxpemF0aW9ucy4gRmFs
bCBiYWNrIHRvIElDVSBkZWZhdWx0CisgICAgICAgIGxvY2FsZSBvbmx5IGlmIHRoZSBkZWZhdWx0
TGFuZ3VhZ2UgZnVuY3Rpb24gaXMgbnVsbCwgb3IgcmV0dXJucyBhbgorICAgICAgICBlbXB0eSBz
dHJpbmcuCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjppbml0aWFsaXplQ29sbGF0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmRlZmF1bHRMb2NhbGUpOgorICAgICAgICAoSlND
Ojpsb29rdXBNYXRjaGVyKToKKyAgICAgICAgKEpTQzo6YmVzdEZpdE1hdGNoZXIpOgorICAgICAg
ICAoSlNDOjpyZXNvbHZlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjp0b0xvY2FsZUNhc2UpOgorCiAyMDE2LTAyLTI2ICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBvbiBkZW1hbmQgZXhl
Y3V0YWJsZSBhbGxvY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxYzUzY2UyOTllNWI4YTNhZjg4MDhiOWI5
YzkwYTZlNDc3ODUxOGM3Li42NjczMWEzNGYwODEwZDk5ODc1OTBhZDYxZTY3NmUwNzc2MGNmZjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDItMjcgIEFuZHkgVmFuV2Fnb25l
ciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbnRsLkNvbGxhdG9yIHVz
ZXMgUE9TSVggbG9jYWxlIChkZXRlY3RlZCBieSBqcy9pbnRsLWNvbGxhdG9yLmh0bWwgb24gaU9T
IFNpbXVsYXRvcikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjQ0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFBhc3MgZGVmYXVsdExhbmd1YWdlIGZyb20gTGFuZ3VhZ2UuaCB0byB0aGUgZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgdG8KKyAgICAgICAgZW5zdXJlIEludGwgb2JqZWN0cyBjYW4gYmUgaW5p
dGlhbGl6ZWQgd2l0aCB0aGUgY29ycmVjdCBkZWZhdWx0IGxvY2FsZS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorCiAyMDE2LTAyLTI2ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBOZXR3b3JrIGNhY2hlOiBvbGQg
cGFnZXMgcmV0dXJuZWQgYnkgZGlzayBjYWNoZSBvbiBoaXN0b3J5IG5hdmlnYXRpb24gYWZ0ZXIg
c2Vzc2lvbiBpcyByZXN0b3JlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBlMzE2ZjM4ODI3ZjA5
ZmM4ZjE3NDYxNGQ1YjdjNWE3YTk1MzJiODkyLi4zMDAwOTM5ZDlhZjQ1Njg0MjcwMzNkZDA5ZWJj
MWE2NmI2N2IyMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNzc5LDcgKzc3OSw3IEBAIHBy
b3RlY3RlZDoKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsg
Imdsb2JhbCIsICZKU0dsb2JhbE9iamVjdDo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEdsb2JhbE9iamVjdCkgfTsKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEds
b2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zy
b20sICZzdXBwb3J0c0xlZ2FjeVByb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZz
aG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAwLCAmc2hvdWxk
SW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgJm1vZHVsZUxvYWRlclJlc29sdmUsICZtb2R1
bGVMb2FkZXJGZXRjaCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworY29uc3QgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxl
ID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzTGVnYWN5UHJvZmlsaW5nLCAmc3VwcG9y
dHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50
aW1lRmxhZ3MsIDAsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0LCAmbW9kdWxl
TG9hZGVyUmVzb2x2ZSwgJm1vZHVsZUxvYWRlckZldGNoLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyIH07CiAKIAogR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsQ29sbGF0b3IuY3BwCmluZGV4IDYxZDM1YTUzZThmZDNlZTI0OTFhNzc2MmFhYWFjNzZkMDFh
ODJmM2YuLjQ1N2VhYWJlM2NkZDJhZTU1OGMwNTUyMzY4ZDdlM2I1NTAyYmQyZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAtMjUwLDcg
KzI1MCw3IEBAIHZvaWQgSW50bENvbGxhdG9yOjppbml0aWFsaXplQ29sbGF0b3IoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlCiAgICAgLy8gMTcuIExldCByZWxldmFu
dEV4dGVuc2lvbktleXMgYmUgdGhlIHZhbHVlIG9mICVDb2xsYXRvciUuW1tyZWxldmFudEV4dGVu
c2lvbktleXNdXS4KICAgICAvLyAxOC4gTGV0IHIgYmUgUmVzb2x2ZUxvY2FsZSglQ29sbGF0b3Il
LltbYXZhaWxhYmxlTG9jYWxlc11dLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIHJlbGV2YW50RXh0
ZW5zaW9uS2V5cywgbG9jYWxlRGF0YSkuCiAgICAgYXV0byYgYXZhaWxhYmxlTG9jYWxlcyA9IHN0
YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+aW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxl
cygpOwotICAgIGF1dG8gcmVzdWx0ID0gcmVzb2x2ZUxvY2FsZShhdmFpbGFibGVMb2NhbGVzLCBy
ZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xF
TkdUSChyZWxldmFudEV4dGVuc2lvbktleXMpLCBsb2NhbGVEYXRhKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IHJlc29sdmVMb2NhbGUoc3RhdGUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2Fs
ZXMsIG9wdCwgcmVsZXZhbnRFeHRlbnNpb25LZXlzLCBXVEZfQVJSQVlfTEVOR1RIKHJlbGV2YW50
RXh0ZW5zaW9uS2V5cyksIGxvY2FsZURhdGEpOwogCiAgICAgLy8gMTkuIFNldCBjb2xsYXRvci5b
W2xvY2FsZV1dIHRvIHRoZSB2YWx1ZSBvZiByLltbbG9jYWxlXV0uCiAgICAgbV9sb2NhbGUgPSBy
ZXN1bHQuZ2V0KEFTQ0lJTGl0ZXJhbCgibG9jYWxlIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggZmI2OWQ5MTJi
MWExZTAxOTcyYjg5ZDY4YjljOWI4MDQ3YjNkNDIxZS4uZmM4ODI4ZTFlOGY2YjM2YTljYzRkNzY3
ZmM4OTk2OTY4ZjU5NWNhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC00NDksOCArNDQ5LDggQEAgdm9pZCBJbnRs
RGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUmIGV4ZWMs
IEpTVmFsdWUgbG9jYWwKIAogICAgIC8vIDExLiBMZXQgbG9jYWxlRGF0YSBiZSB0aGUgdmFsdWUg
b2YgJURhdGVUaW1lRm9ybWF0JS5bW2xvY2FsZURhdGFdXS4KICAgICAvLyAxMi4gTGV0IHIgYmUg
UmVzb2x2ZUxvY2FsZSggJURhdGVUaW1lRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVx
dWVzdGVkTG9jYWxlcywgb3B0LCAlRGF0ZVRpbWVGb3JtYXQlLltbcmVsZXZhbnRFeHRlbnNpb25L
ZXlzXV0sIGxvY2FsZURhdGEpLgotICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVM
b2NhbGVzID0gZXhlYy5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmludGxEYXRlVGltZUZvcm1hdEF2
YWlsYWJsZUxvY2FsZXMoKTsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlZCA9
IHJlc29sdmVMb2NhbGUoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgbG9jYWxl
T3B0LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgocmVsZXZhbnRFeHRl
bnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CisgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+IGF2YWls
YWJsZUxvY2FsZXMgPSBleGVjLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+aW50bERhdGVUaW1l
Rm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJl
c29sdmVkID0gcmVzb2x2ZUxvY2FsZShleGVjLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRM
b2NhbGVzLCBsb2NhbGVPcHQsIHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xFTkdU
SChyZWxldmFudEV4dGVuc2lvbktleXMpLCBsb2NhbGVEYXRhKTsKIAogICAgIC8vIDEzLiBTZXQg
ZGF0ZVRpbWVGb3JtYXQuW1tsb2NhbGVdXSB0byB0aGUgdmFsdWUgb2Ygci5bW2xvY2FsZV1dLgog
ICAgIG1fbG9jYWxlID0gcmVzb2x2ZWQuZ2V0KHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZS5zdHJp
bmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwCmluZGV4IDliYzkxOWQ3NjE5ZWRmOGI4ZDU1MGI1NjAxZWI5ZTRkNDRkMzU1YTMu
LjRlMzZmY2IwMDhiZWViMjA2MTExMzU5YmEzNGI2NzFjNDI1Y2JkZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0xOTYs
NyArMTk2LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgbG9jYWxlcywKICAgICAvLyAxMS4gTGV0IGxvY2Fs
ZURhdGEgYmUgJU51bWJlckZvcm1hdCUuW1tsb2NhbGVEYXRhXV0uCiAgICAgLy8gMTIuIExldCBy
IGJlIFJlc29sdmVMb2NhbGUoJU51bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJl
cXVlc3RlZExvY2FsZXMsIG9wdCwgJU51bWJlckZvcm1hdCUuW1tyZWxldmFudEV4dGVuc2lvbktl
eXNdXSwgbG9jYWxlRGF0YSkuCiAgICAgYXV0byYgYXZhaWxhYmxlTG9jYWxlcyA9IHN0YXRlLmNh
bGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+aW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMo
KTsKLSAgICBhdXRvIHJlc3VsdCA9IHJlc29sdmVMb2NhbGUoYXZhaWxhYmxlTG9jYWxlcywgcmVx
dWVzdGVkTG9jYWxlcywgb3B0LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5H
VEgocmVsZXZhbnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CisgICAgYXV0byByZXN1bHQg
PSByZXNvbHZlTG9jYWxlKHN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVz
LCBvcHQsIHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xFTkdUSChyZWxldmFudEV4
dGVuc2lvbktleXMpLCBsb2NhbGVEYXRhKTsKIAogICAgIC8vIDEzLiBTZXQgbnVtYmVyRm9ybWF0
LltbbG9jYWxlXV0gdG8gdGhlIHZhbHVlIG9mIHIuW1tsb2NhbGVdXS4KICAgICBtX2xvY2FsZSA9
IHJlc3VsdC5nZXQoQVNDSUlMaXRlcmFsKCJsb2NhbGUiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IGY4ZmM1NmY2ZDI2MzlmNDVlZTI1YzIy
YzMxMDdmYTJjNDIwZGYyNjkuLjYwYmIzOGQwNDExZGQ4YzM3NWM4NTIxNzEwMjk2MDdhMDcxYTBh
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBA
IC0xMTQsMTQgKzExNCw2IEBAIFN0cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWCiAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi1TdHJpbmcgZGVmYXVsdExv
Y2FsZSgpCi17Ci0gICAgLy8gNi4yLjQgRGVmYXVsdExvY2FsZSAoKQotICAgIFN0cmluZyBsb2Nh
bGUgPSB1bG9jX2dldERlZmF1bHQoKTsKLSAgICBjb252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1
YWdlVGFnKGxvY2FsZSk7Ci0gICAgcmV0dXJuIGxvY2FsZTsKLX0KLQogdm9pZCBjb252ZXJ0SUNV
TG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKFN0cmluZyYgbG9jYWxlKQogewogICAgIGxvY2FsZS5y
ZXBsYWNlKCdfJywgJy0nKTsKQEAgLTY1MCw2ICs2NDIsMTkgQEAgU3RyaW5nIGJlc3RBdmFpbGFi
bGVMb2NhbGUoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBT
dHJpbmcKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBkZWZhdWx0TG9jYWxlKEV4
ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgLy8gNi4yLjQgRGVmYXVsdExvY2FsZSAoKQorICAgIGlm
IChhdXRvIGRlZmF1bHRMYW5ndWFnZSA9IHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+ZGVmYXVsdExhbmd1YWdlKSB7CisgICAgICAgIFN0
cmluZyBsb2NhbGUgPSBkZWZhdWx0TGFuZ3VhZ2UoKTsKKyAgICAgICAgaWYgKCFsb2NhbGUuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKGxvY2Fs
ZSk7CisgICAgfQorICAgIFN0cmluZyBsb2NhbGUgPSB1bG9jX2dldERlZmF1bHQoKTsKKyAgICBj
b252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKGxvY2FsZSk7CisgICAgcmV0dXJuIGxv
Y2FsZTsKK30KKwogU3RyaW5nIHJlbW92ZVVuaWNvZGVMb2NhbGVFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBsb2NhbGUpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcGFydHM7CkBAIC02NzIsNyArNjc3
LDcgQEAgU3RyaW5nIHJlbW92ZVVuaWNvZGVMb2NhbGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBs
b2NhbGUpCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAotc3RhdGljIE1hdGNo
ZXJSZXN1bHQgbG9va3VwTWF0Y2hlcihjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxv
Y2FsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXF1ZXN0ZWRMb2NhbGVzKQorc3RhdGljIE1h
dGNoZXJSZXN1bHQgbG9va3VwTWF0Y2hlcihFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBIYXNoU2V0
PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXF1ZXN0
ZWRMb2NhbGVzKQogewogICAgIC8vIDkuMi4zIExvb2t1cE1hdGNoZXIgKGF2YWlsYWJsZUxvY2Fs
ZXMsIHJlcXVlc3RlZExvY2FsZXMpIChFQ01BLTQwMiAyLjApCiAgICAgU3RyaW5nIGxvY2FsZTsK
QEAgLTcwOSwyNSArNzE0LDI1IEBAIHN0YXRpYyBNYXRjaGVyUmVzdWx0IGxvb2t1cE1hdGNoZXIo
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zCiAgICAgICAgICAg
ICByZXN1bHQuZXh0ZW5zaW9uSW5kZXggPSBleHRlbnNpb25JbmRleDsKICAgICAgICAgfQogICAg
IH0gZWxzZQotICAgICAgICByZXN1bHQubG9jYWxlID0gZGVmYXVsdExvY2FsZSgpOworICAgICAg
ICByZXN1bHQubG9jYWxlID0gZGVmYXVsdExvY2FsZShzdGF0ZSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotc3RhdGljIE1hdGNoZXJSZXN1bHQgYmVzdEZpdE1hdGNoZXIoY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVxdWVz
dGVkTG9jYWxlcykKK3N0YXRpYyBNYXRjaGVyUmVzdWx0IGJlc3RGaXRNYXRjaGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHJlcXVlc3RlZExvY2FsZXMpCiB7CiAgICAgLy8gOS4yLjQgQmVzdEZp
dE1hdGNoZXIgKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMpIChFQ01BLTQwMiAy
LjApCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzb21ldGhpbmcgYmV0dGVyIHRoYW4gbG9va3Vw
LgotICAgIHJldHVybiBsb29rdXBNYXRjaGVyKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExv
Y2FsZXMpOworICAgIHJldHVybiBsb29rdXBNYXRjaGVyKHN0YXRlLCBhdmFpbGFibGVMb2NhbGVz
LCByZXF1ZXN0ZWRMb2NhbGVzKTsKIH0KIAotSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2
ZUxvY2FsZShjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiByZXF1ZXN0ZWRMb2NhbGVzLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiYgb3B0aW9ucywgY29uc3QgY2hhciogY29uc3QgcmVsZXZhbnRFeHRlbnNpb25LZXlzW10s
IHNpemVfdCByZWxldmFudEV4dGVuc2lvbktleUNvdW50LCBWZWN0b3I8U3RyaW5nPiAoKmxvY2Fs
ZURhdGEpKGNvbnN0IFN0cmluZyYsIHNpemVfdCkpCitIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBy
ZXNvbHZlTG9jYWxlKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZh
aWxhYmxlTG9jYWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcXVlc3RlZExvY2FsZXMsIGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBvcHRpb25zLCBjb25zdCBjaGFyKiBjb25zdCBy
ZWxldmFudEV4dGVuc2lvbktleXNbXSwgc2l6ZV90IHJlbGV2YW50RXh0ZW5zaW9uS2V5Q291bnQs
IFZlY3RvcjxTdHJpbmc+ICgqbG9jYWxlRGF0YSkoY29uc3QgU3RyaW5nJiwgc2l6ZV90KSkKIHsK
ICAgICAvLyA5LjIuNSBSZXNvbHZlTG9jYWxlIChhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRM
b2NhbGVzLCBvcHRpb25zLCByZWxldmFudEV4dGVuc2lvbktleXMsIGxvY2FsZURhdGEpIChFQ01B
LTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IG1hdGNoZXIgYmUgdGhlIHZhbHVlIG9mIG9wdGlvbnMu
W1tsb2NhbGVNYXRjaGVyXV0uCiAgICAgY29uc3QgU3RyaW5nJiBtYXRjaGVyID0gb3B0aW9ucy5n
ZXQoQVNDSUlMaXRlcmFsKCJsb2NhbGVNYXRjaGVyIikpOwogCiAgICAgLy8gMi4gSWYgbWF0Y2hl
ciBpcyAibG9va3VwIiwgdGhlbgotICAgIE1hdGNoZXJSZXN1bHQgKCptYXRjaGVyT3BlcmF0aW9u
KShjb25zdCBIYXNoU2V0PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIE1h
dGNoZXJSZXN1bHQgKCptYXRjaGVyT3BlcmF0aW9uKShFeGVjU3RhdGUmLCBjb25zdCBIYXNoU2V0
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIGlmIChtYXRjaGVyID09ICJs
b29rdXAiKSB7CiAgICAgICAgIC8vIGEuIExldCBNYXRjaGVyT3BlcmF0aW9uIGJlIHRoZSBhYnN0
cmFjdCBvcGVyYXRpb24gTG9va3VwTWF0Y2hlci4KICAgICAgICAgbWF0Y2hlck9wZXJhdGlvbiA9
IGxvb2t1cE1hdGNoZXI7CkBAIC03MzcsNyArNzQyLDcgQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gcmVzb2x2ZUxvY2FsZShjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMs
IGMKICAgICB9CiAKICAgICAvLyA0LiBMZXQgciBiZSBNYXRjaGVyT3BlcmF0aW9uKGF2YWlsYWJs
ZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMpLgotICAgIE1hdGNoZXJSZXN1bHQgbWF0Y2hlclJl
c3VsdCA9IG1hdGNoZXJPcGVyYXRpb24oYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxl
cyk7CisgICAgTWF0Y2hlclJlc3VsdCBtYXRjaGVyUmVzdWx0ID0gbWF0Y2hlck9wZXJhdGlvbihz
dGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcyk7CiAKICAgICAvLyA1LiBM
ZXQgZm91bmRMb2NhbGUgYmUgdGhlIHZhbHVlIG9mIHIuW1tsb2NhbGVdXS4KICAgICBTdHJpbmcg
Zm91bmRMb2NhbGUgPSBtYXRjaGVyUmVzdWx0LmxvY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCA1MmM3ODExMTYxMTI4MzcwNDIxMTI0YWM2NWIx
M2JjMTEwNmJkNzM3Li5hNjJhYjZhMWMwNjlhOTNiMGU1NDhhMjMyMjc2MDE1YjgwYWIxOWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC01NywxMyAr
NTcsMTMgQEAgcHJpdmF0ZToKICAgICBJbnRsT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiB9Owog
Ci1TdHJpbmcgZGVmYXVsdExvY2FsZSgpOworU3RyaW5nIGRlZmF1bHRMb2NhbGUoRXhlY1N0YXRl
Jik7CiB2b2lkIGNvbnZlcnRJQ1VMb2NhbGVUb0JDUDQ3TGFuZ3VhZ2VUYWcoU3RyaW5nJiBsb2Nh
bGUpOwogYm9vbCBpbnRsQm9vbGVhbk9wdGlvbihFeGVjU3RhdGUmLCBKU1ZhbHVlIG9wdGlvbnMs
IFByb3BlcnR5TmFtZSwgYm9vbCYgdXNlc0ZhbGxiYWNrKTsKIFN0cmluZyBpbnRsU3RyaW5nT3B0
aW9uKEV4ZWNTdGF0ZSYsIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lLCBzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91bmQsIGNv
bnN0IGNoYXIqIGZhbGxiYWNrKTsKIHVuc2lnbmVkIGludGxOdW1iZXJPcHRpb24oRXhlY1N0YXRl
JiwgSlNWYWx1ZSBvcHRpb25zLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIG1pbmltdW0sIHVuc2ln
bmVkIG1heGltdW0sIHVuc2lnbmVkIGZhbGxiYWNrKTsKIFZlY3RvcjxTdHJpbmc+IGNhbm9uaWNh
bGl6ZUxvY2FsZUxpc3QoRXhlY1N0YXRlJiwgSlNWYWx1ZSBsb2NhbGVzKTsKLUhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+IHJlc29sdmVMb2NhbGUoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFi
bGVMb2NhbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVxdWVzdGVkTG9jYWxlcywgY29uc3Qg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIG9wdGlvbnMsIGNvbnN0IGNoYXIqIGNvbnN0IHJlbGV2
YW50RXh0ZW5zaW9uS2V5c1tdLCBzaXplX3QgcmVsZXZhbnRFeHRlbnNpb25LZXlDb3VudCwgVmVj
dG9yPFN0cmluZz4gKCpsb2NhbGVEYXRhKShjb25zdCBTdHJpbmcmLCBzaXplX3QpKTsKK0hhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IHJlc29sdmVMb2NhbGUoRXhlY1N0YXRlJiwgY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVxdWVz
dGVkTG9jYWxlcywgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIG9wdGlvbnMsIGNvbnN0
IGNoYXIqIGNvbnN0IHJlbGV2YW50RXh0ZW5zaW9uS2V5c1tdLCBzaXplX3QgcmVsZXZhbnRFeHRl
bnNpb25LZXlDb3VudCwgVmVjdG9yPFN0cmluZz4gKCpsb2NhbGVEYXRhKShjb25zdCBTdHJpbmcm
LCBzaXplX3QpKTsKIEpTVmFsdWUgc3VwcG9ydGVkTG9jYWxlcyhFeGVjU3RhdGUmLCBjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBy
ZXF1ZXN0ZWRMb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnMpOwogU3RyaW5nIHJlbW92ZVVuaWNvZGVM
b2NhbGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBsb2NhbGUpOwogU3RyaW5nIGJlc3RBdmFpbGFi
bGVMb2NhbGUoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RlZExvY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTIzOWJiZmE4NTU3ZjkyNGZiYjkxYTRjYzAx
MGY5ZjBlMmYwZTEzMi4uNmI2YzA3NWEyZmE3YTI4ZGRhYTlmNjk5N2MzNzRhZjcyZTllNTVhYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cApAQCAtMTc2LDcgKzE3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8g
SlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9iamVjdCIsICZCYXNlOjpzX2luZm8s
ICZnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dsb2JhbE9iamVjdCkg
fTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNfZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNMZWdh
Y3lQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2Ny
aXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgbnVsbHB0ciwgJnNob3VsZEludGVycnVwdFNj
cmlwdEJlZm9yZVRpbWVvdXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0Ojpz
X2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRz
TGVnYWN5UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVw
dFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZzaG91bGRJbnRlcnJ1
cHRTY3JpcHRCZWZvcmVUaW1lb3V0LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyIH07CiAKIC8qIFNvdXJjZSBmb3IgSlNHbG9iYWxPYmplY3QubHV0
LmgKIEBiZWdpbiBnbG9iYWxPYmplY3RUYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggNmIzNzU3MjRiNTgwNmYzOGM2OWM4MTllNDll
Y2FjYjNjYzAwZWY0MS4uOWZjNjU5Nzk0YjI5ZTdhYjgwOGFjMWM4YzI5OTM3OTFjZTA2YjJkMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC0xNzMsNiArMTczLDkgQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKIAogICAg
IHR5cGVkZWYgSlNWYWx1ZSAoKk1vZHVsZUxvYWRlckV2YWx1YXRlUHRyKShKU0dsb2JhbE9iamVj
dCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIE1vZHVsZUxvYWRlckV2YWx1
YXRlUHRyIG1vZHVsZUxvYWRlckV2YWx1YXRlOworCisgICAgdHlwZWRlZiBTdHJpbmcgKCpEZWZh
dWx0TGFuZ3VhZ2VGdW5jdGlvblB0cikoKTsKKyAgICBEZWZhdWx0TGFuZ3VhZ2VGdW5jdGlvblB0
ciBkZWZhdWx0TGFuZ3VhZ2U7CiB9OwogCiBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGQ4Yjk5YmNhMjY4MjEyNmNjZjNmMDE5
YjhhMzRmZGYyOTRhNTg2ZjMuLmQ4MzAyNTUyNDA1NzIyZjEyMmQ4ZDA0ZmFmYTdlMGU4M2U0YTgw
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcApAQCAtMTUwMCw3ICsxNTAwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9j
YWxlQ2FzZShFeGVjU3RhdGUqIHN0YXRlLCBpbnQzMl90ICgqY29udmVydENhc2UpKFVDaGEKICAg
ICAvLyBhLiBMZXQgcmVxdWVzdGVkTG9jYWxlIGJlIHRoZSBmaXJzdCBlbGVtZW50IG9mIHJlcXVl
c3RlZExvY2FsZXMuCiAgICAgLy8gOC4gRWxzZQogICAgIC8vIGEuIExldCByZXF1ZXN0ZWRMb2Nh
bGUgYmUgRGVmYXVsdExvY2FsZSgpLgotICAgIFN0cmluZyByZXF1ZXN0ZWRMb2NhbGUgPSBsZW4g
PiAwID8gcmVxdWVzdGVkTG9jYWxlcy5maXJzdCgpIDogZGVmYXVsdExvY2FsZSgpOworICAgIFN0
cmluZyByZXF1ZXN0ZWRMb2NhbGUgPSBsZW4gPiAwID8gcmVxdWVzdGVkTG9jYWxlcy5maXJzdCgp
IDogZGVmYXVsdExvY2FsZSgqc3RhdGUpOwogCiAgICAgLy8gOS4gTGV0IG5vRXh0ZW5zaW9uc0xv
Y2FsZSBiZSB0aGUgU3RyaW5nIHZhbHVlIHRoYXQgaXMgcmVxdWVzdGVkTG9jYWxlIHdpdGggYWxs
IFVuaWNvZGUgbG9jYWxlIGV4dGVuc2lvbiBzZXF1ZW5jZXMgKDYuMi4xKSByZW1vdmVkLgogICAg
IFN0cmluZyBub0V4dGVuc2lvbnNMb2NhbGUgPSByZW1vdmVVbmljb2RlTG9jYWxlRXh0ZW5zaW9u
KHJlcXVlc3RlZExvY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAppbmRleCBlN2ViMmM3Mjk0ODljYzA5ZTlhNGM2MmI1NzZmNzI0YWUwNzkz
MTNlLi4xOWZjYTI1MDU5YjU2Njk4MWQ4ZDI4ZDQ3ZDU5MzY3ZDY0ZGJkZDcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJKU01v
ZHVsZUxvYWRlci5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaCIKQEAgLTYzLDcgKzY0LDcgQEAgc3RhdGljIGJvb2wgc2hv
dWxkQWxsb3dBY2Nlc3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVj
U3RhdGUqIGUKIAogY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93QmFzZTo6c19pbmZvID0geyAi
V2luZG93IiwgJkpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNET01XaW5kb3dCYXNlKSB9OwogCi1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBK
U0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZzaG91bGRBbGxv
d0FjY2Vzc0Zyb20sICZzdXBwb3J0c0xlZ2FjeVByb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJj
ZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAm
cXVldWVUYXNrVG9FdmVudExvb3AsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0
LCAmbW9kdWxlTG9hZGVyUmVzb2x2ZSwgJm1vZHVsZUxvYWRlckZldGNoLCBudWxscHRyLCBudWxs
cHRyLCAmbW9kdWxlTG9hZGVyRXZhbHVhdGUgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlIEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJnNob3Vs
ZEFsbG93QWNjZXNzRnJvbSwgJnN1cHBvcnRzTGVnYWN5UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNo
U291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxh
Z3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRp
bWVvdXQsICZtb2R1bGVMb2FkZXJSZXNvbHZlLCAmbW9kdWxlTG9hZGVyRmV0Y2gsIG51bGxwdHIs
IG51bGxwdHIsICZtb2R1bGVMb2FkZXJFdmFsdWF0ZSwgJmRlZmF1bHRMYW5ndWFnZSB9OwogCiBK
U0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVs
bCkKICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZzaGVsbC0+d29ybGQo
KSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggM2MxZWY3MmI3
MTAyMzA1NmNkNTFkYWU4NzZkM2M2YjAzYjQxNThlZS4uMzlhMWVmOWQ4MDNmNTU2NmUzOTJjYTc0
ZWVmYzM0ZTM0YmI3YTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVk
ZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL01pY3JvdGFz
ay5oPgpAQCAtNDMsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IENsYXNz
SW5mbyBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19pbmZvID0geyAiV29ya2VyR2xvYmFsU2Nv
cGUiLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZSkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7
ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNMZWdhY3lQcm9maWxpbmcsICZzdXBwb3J0c1Jp
Y2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVG
bGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3Jl
VGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9Owor
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNf
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNM
ZWdhY3lQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0
U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAm
c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJmRlZmF1bHRMYW5ndWFnZSB9OwogCiBKU1dvcmtlckds
b2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGltcGwp
CiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCAmbm9ybWFsV29ybGQodm0p
LCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YzBkNDBiYzI2Yzc2YjcxYjEy
YjdhZGIwYzk0YmNiMjE1ZDViYTE0Li43MmJkYmVkZmNjZTlhMjBiYmM3NDk2N2EwZGQyMDA2OWI2
YTE1ZDVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDItMjcgIEFuZHkgVmFuV2Fnb25l
ciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbnRsLkNvbGxhdG9yIHVz
ZXMgUE9TSVggbG9jYWxlIChkZXRlY3RlZCBieSBqcy9pbnRsLWNvbGxhdG9yLmh0bWwgb24gaU9T
IFNpbXVsYXRvcikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjQ0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCB0ZXN0cyBmb3IgZGVmYXVsdCBsb2NhbGUgaW4gdGVzdCBydW5uZXIgdG8gYmUgZW4t
VVMuCisKKyAgICAgICAgKiBqcy9pbnRsLWNvbGxhdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBqcy9pbnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9pbnRs
LW51bWJlcmZvcm1hdC1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2lu
dGwtY29sbGF0b3IuanM6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2ludGwtZGF0ZXRpbWVm
b3JtYXQuanM6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0Lmpz
OgorCiAyMDE2LTAyLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IHRoZSBiZWhhdmlvciBvZiByZWZsZWN0aW5nIElETCBhdHRyaWJ1dGVzIG9mIHR5cGUg
dW5zaWduZWQgbG9uZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRvci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWNvbGxhdG9yLWV4cGVjdGVkLnR4dApp
bmRleCA3MTJiYmQ2NDQ1NjEwMDdmNTQxZThjMjExYWU3NGE2N2U0ODZlNWJkLi45MDVhMThiNWM0
Y2ZmNTQ5MDMxYzMxNzRlYjhmN2EzNTYyODA5MWY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9q
cy9pbnRsLWNvbGxhdG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWNv
bGxhdG9yLWV4cGVjdGVkLnR4dApAQCAtMTksNiArMTksNyBAQCBQQVNTIGNsYXNzIERlcml2ZWRD
b2xsYXRvciBleHRlbmRzIEludGwuQ29sbGF0b3Ige307KG5ldyBEZXJpdmVkQ29sbGF0b3IpIGlu
c3RhbgogUEFTUyBjbGFzcyBEZXJpdmVkQ29sbGF0b3IgZXh0ZW5kcyBJbnRsLkNvbGxhdG9yIHt9
O25ldyBEZXJpdmVkQ29sbGF0b3IoKS5jb21wYXJlKCdhJywgJ2InKSA9PT0gLTEgaXMgdHJ1ZQog
UEFTUyBjbGFzcyBEZXJpdmVkQ29sbGF0b3IgZXh0ZW5kcyBJbnRsLkNvbGxhdG9yIHt9O09iamVj
dC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZENvbGxhdG9yKSA9PT0gRGVyaXZlZENvbGxhdG9y
LnByb3RvdHlwZSBpcyB0cnVlCiBQQVNTIGNsYXNzIERlcml2ZWRDb2xsYXRvciBleHRlbmRzIElu
dGwuQ29sbGF0b3Ige307T2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVP
ZihuZXcgRGVyaXZlZENvbGxhdG9yKSkgPT09IEludGwuQ29sbGF0b3IucHJvdG90eXBlIGlzIHRy
dWUKK1BBU1MgdGVzdENvbGxhdG9yKEludGwuQ29sbGF0b3IoKSwgW3tsb2NhbGU6ICdlbi1VUyd9
XSkgaXMgdHJ1ZQogUEFTUyB0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcignZW4nKSwgW3tsb2Nh
bGU6ICdlbid9XSkgaXMgdHJ1ZQogUEFTUyB0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcignZU4t
dVMnKSwgW3tsb2NhbGU6ICdlbi1VUyd9XSkgaXMgdHJ1ZQogUEFTUyB0ZXN0Q29sbGF0b3IoSW50
bC5Db2xsYXRvcihbJ2VuJywgJ2RlJ10pLCBbe2xvY2FsZTogJ2VuJ31dKSBpcyB0cnVlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2ludGwtZGF0ZXRpbWVmb3JtYXQtZXhwZWN0ZWQudHh0CmluZGV4IGE1
ODRlODRlM2E5ZjI2MDdkNTk1YWNhNWE4MmRmNDYyYTRhNmYyZWMuLmY1OGQ0YTliMmM3NDk1ZDVh
YTg0ZDMwZmMzNjlmZjU5NzU5MzhkZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2ludGwt
ZGF0ZXRpbWVmb3JtYXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2ludGwtZGF0
ZXRpbWVmb3JtYXQtZXhwZWN0ZWQudHh0CkBAIC04Myw2ICs4Myw3IEBAIFBBU1MgSW50bC5EYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgPT09IEludGwuRGF0ZVRpbWVG
b3JtYXQucHJvCiBQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0
aW9ucy5jYWxsKDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
biBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdC4KIFBBU1MgSW50bC5EYXRl
VGltZUZvcm1hdCgnJCcpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBpbnZhbGlkIGxhbmd1
YWdlIHRhZzogJC4KIFBBU1MgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4nLCBudWxsKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0lu
dGwuRGF0ZVRpbWVGb3JtYXQoJ2VuJywgbnVsbCknKS4KK1BBU1MgSW50bC5EYXRlVGltZUZvcm1h
dCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSBpcyAnZW4tVVMnCiBQQVNTIEludGwuRGF0ZVRp
bWVGb3JtYXQoJ2VuJykucmVzb2x2ZWRPcHRpb25zKCkud2Vla2RheSBpcyB1bmRlZmluZWQKIFBB
U1MgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4nKS5yZXNvbHZlZE9wdGlvbnMoKS5lcmEgaXMgdW5k
ZWZpbmVkCiBQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuJykucmVzb2x2ZWRPcHRpb25zKCku
bW9udGggaXMgJ251bWVyaWMnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJl
cmZvcm1hdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC1l
eHBlY3RlZC50eHQKaW5kZXggNTQ1ZmVhYWZhOGFkNzZlNWE0Y2VlNjViYTNkZWI3OTEwNWMxYTRh
NS4uZGY4Y2I4ZWEzMWNjYTkzNjY2YTZhMDM2YjJmNjg4NTZkNTFhZGY0YyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2pzL2ludGwtbnVtYmVyZm9ybWF0LWV4cGVjdGVkLnR4dApAQCAtMTIsNiArMTIsNyBA
QCBQQVNTIGNsYXNzIERlcml2ZWROdW1iZXJGb3JtYXQgZXh0ZW5kcyBJbnRsLk51bWJlckZvcm1h
dCB7fTsobmV3IERlcml2ZWROdW1iZXJGbwogUEFTUyBjbGFzcyBEZXJpdmVkTnVtYmVyRm9ybWF0
IGV4dGVuZHMgSW50bC5OdW1iZXJGb3JtYXQge307bmV3IERlcml2ZWROdW1iZXJGb3JtYXQoKS5m
b3JtYXQoMSkgPT09ICcxJyBpcyB0cnVlCiBQQVNTIGNsYXNzIERlcml2ZWROdW1iZXJGb3JtYXQg
ZXh0ZW5kcyBJbnRsLk51bWJlckZvcm1hdCB7fTtPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERl
cml2ZWROdW1iZXJGb3JtYXQpID09PSBEZXJpdmVkTnVtYmVyRm9ybWF0LnByb3RvdHlwZSBpcyB0
cnVlCiBQQVNTIGNsYXNzIERlcml2ZWROdW1iZXJGb3JtYXQgZXh0ZW5kcyBJbnRsLk51bWJlckZv
cm1hdCB7fTtPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBE
ZXJpdmVkTnVtYmVyRm9ybWF0KSkgPT09IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSBpcyB0
cnVlCitQQVNTIHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoKSwgW3tsb2NhbGU6
ICdlbi1VUyd9XSkgaXMgdHJ1ZQogUEFTUyB0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9y
bWF0KCdlbicpLCBbe2xvY2FsZTogJ2VuJ31dKSBpcyB0cnVlCiBQQVNTIHRlc3ROdW1iZXJGb3Jt
YXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VOLXVTJyksIFt7bG9jYWxlOiAnZW4tVVMnfV0pIGlzIHRy
dWUKIFBBU1MgdGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdChbJ2VuJywgJ2RlJ10p
LCBbe2xvY2FsZTogJ2VuJ31dKSBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9pbnRsLWNvbGxhdG9yLmpzCmluZGV4IDUyNzI5ZDFkMGJjNmMwMGNhZmJlN2JjM2U2YjI3ZGYw
ZDdkY2Q5YTkuLmUxNTQ4ZWFhOGEwNmZjMDFjYjg2YzYwOTgxYmE5NDM2Zjc5MTE4YzggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLWNvbGxhdG9yLmpzCisrKyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLWNvbGxhdG9yLmpzCkBAIC00Myw2ICs0
Myw3IEBAIHZhciB0ZXN0Q29sbGF0b3IgPSBmdW5jdGlvbihjb2xsYXRvciwgcG9zc2libGVPcHRp
b25EaWZmZXJlbmNlcykgewogfQogCiAvLyBMb2NhbGUgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4K
K3Nob3VsZEJlVHJ1ZSgidGVzdENvbGxhdG9yKEludGwuQ29sbGF0b3IoKSwgW3tsb2NhbGU6ICdl
bi1VUyd9XSkiKTsKIHNob3VsZEJlVHJ1ZSgidGVzdENvbGxhdG9yKEludGwuQ29sbGF0b3IoJ2Vu
JyksIFt7bG9jYWxlOiAnZW4nfV0pIik7CiBzaG91bGRCZVRydWUoInRlc3RDb2xsYXRvcihJbnRs
LkNvbGxhdG9yKCdlTi11UycpLCBbe2xvY2FsZTogJ2VuLVVTJ31dKSIpOwogc2hvdWxkQmVUcnVl
KCJ0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcihbJ2VuJywgJ2RlJ10pLCBbe2xvY2FsZTogJ2Vu
J31dKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtZGF0
ZXRpbWVmb3JtYXQuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRldGlt
ZWZvcm1hdC5qcwppbmRleCA1ZmNiNTg3OTEwM2QxMTAyMDFkNzM1MDEzMzkyZWE3YzlkZjg2NDFh
Li45MjdhOTMwYmVlNTI3MGE0Mjc1OTE3NTI0ZGU4ODc0YjM2ZjVlOTk4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qcworKysgYi9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qcwpAQCAtMTY0
LDYgKzE2NCw5IEBAIHNob3VsZFRocm93KCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSIsICInVHlwZUVycm9yCiBzaG91bGRUaHJvdygiSW50bC5E
YXRlVGltZUZvcm1hdCgnJCcpIiwgIidSYW5nZUVycm9yOiBpbnZhbGlkIGxhbmd1YWdlIHRhZzog
JCciKTsKIHNob3VsZFRocm93KCJJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbicsIG51bGwpIiwgJyJU
eXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyBcJ0ludGwuRGF0ZVRp
bWVGb3JtYXQoXCdlblwnLCBudWxsKVwnKSInKTsKIAorLy8gRGVmYXVsdHMgdG8gZW4tVVMgbG9j
YWxlIGluIHRlc3QgcnVubmVyCitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29s
dmVkT3B0aW9ucygpLmxvY2FsZSIsICInZW4tVVMnIik7CisKIC8vIERlZmF1bHRzIHRvIG1vbnRo
LCBkYXksIHllYXIuCiBzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdCgnZW4nKS5yZXNvbHZl
ZE9wdGlvbnMoKS53ZWVrZGF5IiwgInVuZGVmaW5lZCIpOwogc2hvdWxkQmUoIkludGwuRGF0ZVRp
bWVGb3JtYXQoJ2VuJykucmVzb2x2ZWRPcHRpb25zKCkuZXJhIiwgInVuZGVmaW5lZCIpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0Lmpz
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0LmpzCmluZGV4
IDEyZTQ4NjA3YmExNzljNmNmMDUyZWVkMDFhODUxMWY2YjRlMzIyYzguLjgxMjc5NDQ1OTU4NWY2
YTc5ZDU1ZmRiODljOGM0Y2ZjZDcxNTMzOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvaW50bC1udW1iZXJmb3JtYXQuanMKQEAgLTQxLDYgKzQxLDcgQEAgZnVuY3Rpb24g
dGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIH0K
IAogLy8gTG9jYWxlIGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkuCitzaG91bGRCZVRydWUoInRlc3RO
dW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoKSwgW3tsb2NhbGU6ICdlbi1VUyd9XSkiKTsK
IHNob3VsZEJlVHJ1ZSgidGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nKSwg
W3tsb2NhbGU6ICdlbid9XSkiKTsKIHNob3VsZEJlVHJ1ZSgidGVzdE51bWJlckZvcm1hdChJbnRs
Lk51bWJlckZvcm1hdCgnZU4tdVMnKSwgW3tsb2NhbGU6ICdlbi1VUyd9XSkiKTsKIHNob3VsZEJl
VHJ1ZSgidGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdChbJ2VuJywgJ2RlJ10pLCBb
e2xvY2FsZTogJ2VuJ31dKSIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>295073</attachid>
            <date>2016-11-17 12:55:30 -0800</date>
            <delta_ts>2016-11-17 12:55:30 -0800</delta_ts>
            <desc>/Applications/Safari\ Technology\ Preview.app</desc>
            <filename>attachment.cgi.patch</filename>
            <type>text/plain</type>
            <size>26354</size>
            <attacher name="rurumi663@gmail.com">rurumi663</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk3MjQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBm
ZTk2ZDM2YjFmZDg5Yjk3MmU0ZmI4NWZmNDdiM2Q2Yjc0MzliNTNlLi5mMzQ0MWNjYzRlNGIxNDRm
ZjQzYjYwZWZjMDE3NWQ4ODBlMjk5YjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAxNi0wMi0yNyAgQW5keSBWYW5XYWdvbmVyICA8dGhldGFsZWNyYWZ0ZXJA
Z21haWwuY29tPgorCisgICAgICAgIEludGwuQ29sbGF0b3IgdXNlcyBQT1NJWCBsb2NhbGUgKGRl
dGVjdGVkIGJ5IGpzL2ludGwtY29sbGF0b3IuaHRtbCBvbiBpT1MgU2ltdWxhdG9yKQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUyNDQ4CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGRlZmF1bHRMYW5n
dWFnZSB0byB0aGUgZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgYW5kIHVzZSBpdCBmb3IgdGhlCisg
ICAgICAgIGRlZmF1bHQgbG9jYWxlIGluIEludGwgb2JqZWN0IGluaXRpYWxpemF0aW9ucy4gRmFs
bCBiYWNrIHRvIElDVSBkZWZhdWx0CisgICAgICAgIGxvY2FsZSBvbmx5IGlmIHRoZSBkZWZhdWx0
TGFuZ3VhZ2UgZnVuY3Rpb24gaXMgbnVsbCwgb3IgcmV0dXJucyBhbgorICAgICAgICBlbXB0eSBz
dHJpbmcuCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAqIHJ1bnRpbWUvSW50bENvbGxh
dG9yLmNwcDoKKyAgICAgICAgKEpTQzo6SW50bENvbGxhdG9yOjppbml0aWFsaXplQ29sbGF0b3Ip
OgorICAgICAgICAqIHJ1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcDoKKyAgICAgICAgKEpT
Qzo6SW50bERhdGVUaW1lRm9ybWF0Ojppbml0aWFsaXplRGF0ZVRpbWVGb3JtYXQpOgorICAgICAg
ICAqIHJ1bnRpbWUvSW50bE51bWJlckZvcm1hdC5jcHA6CisgICAgICAgIChKU0M6OkludGxOdW1i
ZXJGb3JtYXQ6OmluaXRpYWxpemVOdW1iZXJGb3JtYXQpOgorICAgICAgICAqIHJ1bnRpbWUvSW50
bE9iamVjdC5jcHA6CisgICAgICAgIChKU0M6OmRlZmF1bHRMb2NhbGUpOgorICAgICAgICAoSlND
Ojpsb29rdXBNYXRjaGVyKToKKyAgICAgICAgKEpTQzo6YmVzdEZpdE1hdGNoZXIpOgorICAgICAg
ICAoSlNDOjpyZXNvbHZlTG9jYWxlKToKKyAgICAgICAgKiBydW50aW1lL0ludGxPYmplY3QuaDoK
KyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNwcDoKKyAgICAgICAgKiBydW50aW1l
L0pTR2xvYmFsT2JqZWN0Lmg6CisgICAgICAgICogcnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3Bw
OgorICAgICAgICAoSlNDOjp0b0xvY2FsZUNhc2UpOgorCiAyMDE2LTAyLTI2ICBPbGl2ZXIgSHVu
dCAgPG9saXZlckBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIHRoZSBvbiBkZW1hbmQgZXhl
Y3V0YWJsZSBhbGxvY2F0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBi
L1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxYzUzY2UyOTllNWI4YTNhZjg4MDhiOWI5
YzkwYTZlNDc3ODUxOGM3Li42NjczMWEzNGYwODEwZDk5ODc1OTBhZDYxZTY3NmUwNzc2MGNmZjRj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMDItMjcgIEFuZHkgVmFuV2Fnb25l
ciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbnRsLkNvbGxhdG9yIHVz
ZXMgUE9TSVggbG9jYWxlIChkZXRlY3RlZCBieSBqcy9pbnRsLWNvbGxhdG9yLmh0bWwgb24gaU9T
IFNpbXVsYXRvcikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjQ0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIFBhc3MgZGVmYXVsdExhbmd1YWdlIGZyb20gTGFuZ3VhZ2UuaCB0byB0aGUgZ2xvYmFsT2Jq
ZWN0TWV0aG9kVGFibGUgdG8KKyAgICAgICAgZW5zdXJlIEludGwgb2JqZWN0cyBjYW4gYmUgaW5p
dGlhbGl6ZWQgd2l0aCB0aGUgY29ycmVjdCBkZWZhdWx0IGxvY2FsZS4KKworICAgICAgICAqIGJp
bmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHA6CisgICAgICAgICogYmluZGluZ3MvanMvSlNX
b3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwOgorCiAyMDE2LTAyLTI2ICBDYXJsb3MgR2FyY2lhIENh
bXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KIAogICAgICAgICBOZXR3b3JrIGNhY2hlOiBvbGQg
cGFnZXMgcmV0dXJuZWQgYnkgZGlzayBjYWNoZSBvbiBoaXN0b3J5IG5hdmlnYXRpb24gYWZ0ZXIg
c2Vzc2lvbiBpcyByZXN0b3JlZApkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2pz
Yy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAppbmRleCBlMzE2ZjM4ODI3ZjA5
ZmM4ZjE3NDYxNGQ1YjdjNWE3YTk1MzJiODkyLi4zMDAwOTM5ZDlhZjQ1Njg0MjcwMzNkZDA5ZWJj
MWE2NmI2N2IyMWJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAtNzc5LDcgKzc3OSw3IEBAIHBy
b3RlY3RlZDoKIH07CiAKIGNvbnN0IENsYXNzSW5mbyBHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsg
Imdsb2JhbCIsICZKU0dsb2JhbE9iamVjdDo6c19pbmZvLCBudWxscHRyLCBDUkVBVEVfTUVUSE9E
X1RBQkxFKEdsb2JhbE9iamVjdCkgfTsKLWNvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEds
b2JhbE9iamVjdDo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJmFsbG93c0FjY2Vzc0Zy
b20sICZzdXBwb3J0c0xlZ2FjeVByb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJjZUluZm8sICZz
aG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAwLCAmc2hvdWxk
SW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgJm1vZHVsZUxvYWRlclJlc29sdmUsICZtb2R1
bGVMb2FkZXJGZXRjaCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9OworY29uc3QgR2xvYmFs
T2JqZWN0TWV0aG9kVGFibGUgR2xvYmFsT2JqZWN0OjpzX2dsb2JhbE9iamVjdE1ldGhvZFRhYmxl
ID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRzTGVnYWN5UHJvZmlsaW5nLCAmc3VwcG9y
dHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50
aW1lRmxhZ3MsIDAsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0LCAmbW9kdWxl
TG9hZGVyUmVzb2x2ZSwgJm1vZHVsZUxvYWRlckZldGNoLCBudWxscHRyLCBudWxscHRyLCBudWxs
cHRyLCBudWxscHRyIH07CiAKIAogR2xvYmFsT2JqZWN0OjpHbG9iYWxPYmplY3QoVk0mIHZtLCBT
dHJ1Y3R1cmUqIHN0cnVjdHVyZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0ludGxDb2xsYXRvci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9J
bnRsQ29sbGF0b3IuY3BwCmluZGV4IDYxZDM1YTUzZThmZDNlZTI0OTFhNzc2MmFhYWFjNzZkMDFh
ODJmM2YuLjQ1N2VhYWJlM2NkZDJhZTU1OGMwNTUyMzY4ZDdlM2I1NTAyYmQyZjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxDb2xsYXRvci5jcHAKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bENvbGxhdG9yLmNwcApAQCAtMjUwLDcg
KzI1MCw3IEBAIHZvaWQgSW50bENvbGxhdG9yOjppbml0aWFsaXplQ29sbGF0b3IoRXhlY1N0YXRl
JiBzdGF0ZSwgSlNWYWx1ZSBsb2NhbGVzLCBKU1ZhbHVlCiAgICAgLy8gMTcuIExldCByZWxldmFu
dEV4dGVuc2lvbktleXMgYmUgdGhlIHZhbHVlIG9mICVDb2xsYXRvciUuW1tyZWxldmFudEV4dGVu
c2lvbktleXNdXS4KICAgICAvLyAxOC4gTGV0IHIgYmUgUmVzb2x2ZUxvY2FsZSglQ29sbGF0b3Il
LltbYXZhaWxhYmxlTG9jYWxlc11dLCByZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIHJlbGV2YW50RXh0
ZW5zaW9uS2V5cywgbG9jYWxlRGF0YSkuCiAgICAgYXV0byYgYXZhaWxhYmxlTG9jYWxlcyA9IHN0
YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+aW50bENvbGxhdG9yQXZhaWxhYmxlTG9jYWxl
cygpOwotICAgIGF1dG8gcmVzdWx0ID0gcmVzb2x2ZUxvY2FsZShhdmFpbGFibGVMb2NhbGVzLCBy
ZXF1ZXN0ZWRMb2NhbGVzLCBvcHQsIHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xF
TkdUSChyZWxldmFudEV4dGVuc2lvbktleXMpLCBsb2NhbGVEYXRhKTsKKyAgICBhdXRvIHJlc3Vs
dCA9IHJlc29sdmVMb2NhbGUoc3RhdGUsIGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2Fs
ZXMsIG9wdCwgcmVsZXZhbnRFeHRlbnNpb25LZXlzLCBXVEZfQVJSQVlfTEVOR1RIKHJlbGV2YW50
RXh0ZW5zaW9uS2V5cyksIGxvY2FsZURhdGEpOwogCiAgICAgLy8gMTkuIFNldCBjb2xsYXRvci5b
W2xvY2FsZV1dIHRvIHRoZSB2YWx1ZSBvZiByLltbbG9jYWxlXV0uCiAgICAgbV9sb2NhbGUgPSBy
ZXN1bHQuZ2V0KEFTQ0lJTGl0ZXJhbCgibG9jYWxlIikpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0ludGxEYXRlVGltZUZvcm1hdC5jcHAKaW5kZXggZmI2OWQ5MTJi
MWExZTAxOTcyYjg5ZDY4YjljOWI4MDQ3YjNkNDIxZS4uZmM4ODI4ZTFlOGY2YjM2YTljYzRkNzY3
ZmM4OTk2OTY4ZjU5NWNhMyAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSW50bERhdGVUaW1lRm9ybWF0LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9JbnRsRGF0ZVRpbWVGb3JtYXQuY3BwCkBAIC00NDksOCArNDQ5LDggQEAgdm9pZCBJbnRs
RGF0ZVRpbWVGb3JtYXQ6OmluaXRpYWxpemVEYXRlVGltZUZvcm1hdChFeGVjU3RhdGUmIGV4ZWMs
IEpTVmFsdWUgbG9jYWwKIAogICAgIC8vIDExLiBMZXQgbG9jYWxlRGF0YSBiZSB0aGUgdmFsdWUg
b2YgJURhdGVUaW1lRm9ybWF0JS5bW2xvY2FsZURhdGFdXS4KICAgICAvLyAxMi4gTGV0IHIgYmUg
UmVzb2x2ZUxvY2FsZSggJURhdGVUaW1lRm9ybWF0JS5bW2F2YWlsYWJsZUxvY2FsZXNdXSwgcmVx
dWVzdGVkTG9jYWxlcywgb3B0LCAlRGF0ZVRpbWVGb3JtYXQlLltbcmVsZXZhbnRFeHRlbnNpb25L
ZXlzXV0sIGxvY2FsZURhdGEpLgotICAgIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiBhdmFpbGFibGVM
b2NhbGVzID0gZXhlYy5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPmludGxEYXRlVGltZUZvcm1hdEF2
YWlsYWJsZUxvY2FsZXMoKTsKLSAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiByZXNvbHZlZCA9
IHJlc29sdmVMb2NhbGUoYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcywgbG9jYWxl
T3B0LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5HVEgocmVsZXZhbnRFeHRl
bnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CisgICAgY29uc3QgSGFzaFNldDxTdHJpbmc+IGF2YWls
YWJsZUxvY2FsZXMgPSBleGVjLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+aW50bERhdGVUaW1l
Rm9ybWF0QXZhaWxhYmxlTG9jYWxlcygpOworICAgIEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+IHJl
c29sdmVkID0gcmVzb2x2ZUxvY2FsZShleGVjLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRM
b2NhbGVzLCBsb2NhbGVPcHQsIHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xFTkdU
SChyZWxldmFudEV4dGVuc2lvbktleXMpLCBsb2NhbGVEYXRhKTsKIAogICAgIC8vIDEzLiBTZXQg
ZGF0ZVRpbWVGb3JtYXQuW1tsb2NhbGVdXSB0byB0aGUgdmFsdWUgb2Ygci5bW2xvY2FsZV1dLgog
ICAgIG1fbG9jYWxlID0gcmVzb2x2ZWQuZ2V0KHZtLnByb3BlcnR5TmFtZXMtPmxvY2FsZS5zdHJp
bmcoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsTnVt
YmVyRm9ybWF0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJG
b3JtYXQuY3BwCmluZGV4IDliYzkxOWQ3NjE5ZWRmOGI4ZDU1MGI1NjAxZWI5ZTRkNDRkMzU1YTMu
LjRlMzZmY2IwMDhiZWViMjA2MTExMzU5YmEzNGI2NzFjNDI1Y2JkZjMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxOdW1iZXJGb3JtYXQuY3BwCkBAIC0xOTYs
NyArMTk2LDcgQEAgdm9pZCBJbnRsTnVtYmVyRm9ybWF0Ojppbml0aWFsaXplTnVtYmVyRm9ybWF0
KEV4ZWNTdGF0ZSYgc3RhdGUsIEpTVmFsdWUgbG9jYWxlcywKICAgICAvLyAxMS4gTGV0IGxvY2Fs
ZURhdGEgYmUgJU51bWJlckZvcm1hdCUuW1tsb2NhbGVEYXRhXV0uCiAgICAgLy8gMTIuIExldCBy
IGJlIFJlc29sdmVMb2NhbGUoJU51bWJlckZvcm1hdCUuW1thdmFpbGFibGVMb2NhbGVzXV0sIHJl
cXVlc3RlZExvY2FsZXMsIG9wdCwgJU51bWJlckZvcm1hdCUuW1tyZWxldmFudEV4dGVuc2lvbktl
eXNdXSwgbG9jYWxlRGF0YSkuCiAgICAgYXV0byYgYXZhaWxhYmxlTG9jYWxlcyA9IHN0YXRlLmNh
bGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+aW50bE51bWJlckZvcm1hdEF2YWlsYWJsZUxvY2FsZXMo
KTsKLSAgICBhdXRvIHJlc3VsdCA9IHJlc29sdmVMb2NhbGUoYXZhaWxhYmxlTG9jYWxlcywgcmVx
dWVzdGVkTG9jYWxlcywgb3B0LCByZWxldmFudEV4dGVuc2lvbktleXMsIFdURl9BUlJBWV9MRU5H
VEgocmVsZXZhbnRFeHRlbnNpb25LZXlzKSwgbG9jYWxlRGF0YSk7CisgICAgYXV0byByZXN1bHQg
PSByZXNvbHZlTG9jYWxlKHN0YXRlLCBhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRMb2NhbGVz
LCBvcHQsIHJlbGV2YW50RXh0ZW5zaW9uS2V5cywgV1RGX0FSUkFZX0xFTkdUSChyZWxldmFudEV4
dGVuc2lvbktleXMpLCBsb2NhbGVEYXRhKTsKIAogICAgIC8vIDEzLiBTZXQgbnVtYmVyRm9ybWF0
LltbbG9jYWxlXV0gdG8gdGhlIHZhbHVlIG9mIHIuW1tsb2NhbGVdXS4KICAgICBtX2xvY2FsZSA9
IHJlc3VsdC5nZXQoQVNDSUlMaXRlcmFsKCJsb2NhbGUiKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCmluZGV4IGY4ZmM1NmY2ZDI2MzlmNDVlZTI1YzIy
YzMxMDdmYTJjNDIwZGYyNjkuLjYwYmIzOGQwNDExZGQ4YzM3NWM4NTIxNzEwMjk2MDdhMDcxYTBh
MTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuY3BwCkBA
IC0xMTQsMTQgKzExNCw2IEBAIFN0cnVjdHVyZSogSW50bE9iamVjdDo6Y3JlYXRlU3RydWN0dXJl
KFZNJiB2bSwgSlNHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgSlNWCiAgICAgcmV0dXJuIFN0
cnVjdHVyZTo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHByb3RvdHlwZSwgVHlwZUluZm8oT2Jq
ZWN0VHlwZSwgU3RydWN0dXJlRmxhZ3MpLCBpbmZvKCkpOwogfQogCi1TdHJpbmcgZGVmYXVsdExv
Y2FsZSgpCi17Ci0gICAgLy8gNi4yLjQgRGVmYXVsdExvY2FsZSAoKQotICAgIFN0cmluZyBsb2Nh
bGUgPSB1bG9jX2dldERlZmF1bHQoKTsKLSAgICBjb252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1
YWdlVGFnKGxvY2FsZSk7Ci0gICAgcmV0dXJuIGxvY2FsZTsKLX0KLQogdm9pZCBjb252ZXJ0SUNV
TG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKFN0cmluZyYgbG9jYWxlKQogewogICAgIGxvY2FsZS5y
ZXBsYWNlKCdfJywgJy0nKTsKQEAgLTY1MCw2ICs2NDIsMTkgQEAgU3RyaW5nIGJlc3RBdmFpbGFi
bGVMb2NhbGUoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBT
dHJpbmcKICAgICByZXR1cm4gU3RyaW5nKCk7CiB9CiAKK1N0cmluZyBkZWZhdWx0TG9jYWxlKEV4
ZWNTdGF0ZSYgc3RhdGUpCit7CisgICAgLy8gNi4yLjQgRGVmYXVsdExvY2FsZSAoKQorICAgIGlm
IChhdXRvIGRlZmF1bHRMYW5ndWFnZSA9IHN0YXRlLmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUoKS0+ZGVmYXVsdExhbmd1YWdlKSB7CisgICAgICAgIFN0
cmluZyBsb2NhbGUgPSBkZWZhdWx0TGFuZ3VhZ2UoKTsKKyAgICAgICAgaWYgKCFsb2NhbGUuaXNF
bXB0eSgpKQorICAgICAgICAgICAgcmV0dXJuIGNhbm9uaWNhbGl6ZUxhbmd1YWdlVGFnKGxvY2Fs
ZSk7CisgICAgfQorICAgIFN0cmluZyBsb2NhbGUgPSB1bG9jX2dldERlZmF1bHQoKTsKKyAgICBj
b252ZXJ0SUNVTG9jYWxlVG9CQ1A0N0xhbmd1YWdlVGFnKGxvY2FsZSk7CisgICAgcmV0dXJuIGxv
Y2FsZTsKK30KKwogU3RyaW5nIHJlbW92ZVVuaWNvZGVMb2NhbGVFeHRlbnNpb24oY29uc3QgU3Ry
aW5nJiBsb2NhbGUpCiB7CiAgICAgVmVjdG9yPFN0cmluZz4gcGFydHM7CkBAIC02NzIsNyArNjc3
LDcgQEAgU3RyaW5nIHJlbW92ZVVuaWNvZGVMb2NhbGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBs
b2NhbGUpCiAgICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKIH0KIAotc3RhdGljIE1hdGNo
ZXJSZXN1bHQgbG9va3VwTWF0Y2hlcihjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxv
Y2FsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXF1ZXN0ZWRMb2NhbGVzKQorc3RhdGljIE1h
dGNoZXJSZXN1bHQgbG9va3VwTWF0Y2hlcihFeGVjU3RhdGUmIHN0YXRlLCBjb25zdCBIYXNoU2V0
PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiByZXF1ZXN0
ZWRMb2NhbGVzKQogewogICAgIC8vIDkuMi4zIExvb2t1cE1hdGNoZXIgKGF2YWlsYWJsZUxvY2Fs
ZXMsIHJlcXVlc3RlZExvY2FsZXMpIChFQ01BLTQwMiAyLjApCiAgICAgU3RyaW5nIGxvY2FsZTsK
QEAgLTcwOSwyNSArNzE0LDI1IEBAIHN0YXRpYyBNYXRjaGVyUmVzdWx0IGxvb2t1cE1hdGNoZXIo
Y29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zCiAgICAgICAgICAg
ICByZXN1bHQuZXh0ZW5zaW9uSW5kZXggPSBleHRlbnNpb25JbmRleDsKICAgICAgICAgfQogICAg
IH0gZWxzZQotICAgICAgICByZXN1bHQubG9jYWxlID0gZGVmYXVsdExvY2FsZSgpOworICAgICAg
ICByZXN1bHQubG9jYWxlID0gZGVmYXVsdExvY2FsZShzdGF0ZSk7CiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAotc3RhdGljIE1hdGNoZXJSZXN1bHQgYmVzdEZpdE1hdGNoZXIoY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVxdWVz
dGVkTG9jYWxlcykKK3N0YXRpYyBNYXRjaGVyUmVzdWx0IGJlc3RGaXRNYXRjaGVyKEV4ZWNTdGF0
ZSYgc3RhdGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZhaWxhYmxlTG9jYWxlcywgY29uc3Qg
VmVjdG9yPFN0cmluZz4mIHJlcXVlc3RlZExvY2FsZXMpCiB7CiAgICAgLy8gOS4yLjQgQmVzdEZp
dE1hdGNoZXIgKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMpIChFQ01BLTQwMiAy
LjApCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBzb21ldGhpbmcgYmV0dGVyIHRoYW4gbG9va3Vw
LgotICAgIHJldHVybiBsb29rdXBNYXRjaGVyKGF2YWlsYWJsZUxvY2FsZXMsIHJlcXVlc3RlZExv
Y2FsZXMpOworICAgIHJldHVybiBsb29rdXBNYXRjaGVyKHN0YXRlLCBhdmFpbGFibGVMb2NhbGVz
LCByZXF1ZXN0ZWRMb2NhbGVzKTsKIH0KIAotSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gcmVzb2x2
ZUxvY2FsZShjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFZl
Y3RvcjxTdHJpbmc+JiByZXF1ZXN0ZWRMb2NhbGVzLCBjb25zdCBIYXNoTWFwPFN0cmluZywgU3Ry
aW5nPiYgb3B0aW9ucywgY29uc3QgY2hhciogY29uc3QgcmVsZXZhbnRFeHRlbnNpb25LZXlzW10s
IHNpemVfdCByZWxldmFudEV4dGVuc2lvbktleUNvdW50LCBWZWN0b3I8U3RyaW5nPiAoKmxvY2Fs
ZURhdGEpKGNvbnN0IFN0cmluZyYsIHNpemVfdCkpCitIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBy
ZXNvbHZlTG9jYWxlKEV4ZWNTdGF0ZSYgc3RhdGUsIGNvbnN0IEhhc2hTZXQ8U3RyaW5nPiYgYXZh
aWxhYmxlTG9jYWxlcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHJlcXVlc3RlZExvY2FsZXMsIGNv
bnN0IEhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+JiBvcHRpb25zLCBjb25zdCBjaGFyKiBjb25zdCBy
ZWxldmFudEV4dGVuc2lvbktleXNbXSwgc2l6ZV90IHJlbGV2YW50RXh0ZW5zaW9uS2V5Q291bnQs
IFZlY3RvcjxTdHJpbmc+ICgqbG9jYWxlRGF0YSkoY29uc3QgU3RyaW5nJiwgc2l6ZV90KSkKIHsK
ICAgICAvLyA5LjIuNSBSZXNvbHZlTG9jYWxlIChhdmFpbGFibGVMb2NhbGVzLCByZXF1ZXN0ZWRM
b2NhbGVzLCBvcHRpb25zLCByZWxldmFudEV4dGVuc2lvbktleXMsIGxvY2FsZURhdGEpIChFQ01B
LTQwMiAyLjApCiAgICAgLy8gMS4gTGV0IG1hdGNoZXIgYmUgdGhlIHZhbHVlIG9mIG9wdGlvbnMu
W1tsb2NhbGVNYXRjaGVyXV0uCiAgICAgY29uc3QgU3RyaW5nJiBtYXRjaGVyID0gb3B0aW9ucy5n
ZXQoQVNDSUlMaXRlcmFsKCJsb2NhbGVNYXRjaGVyIikpOwogCiAgICAgLy8gMi4gSWYgbWF0Y2hl
ciBpcyAibG9va3VwIiwgdGhlbgotICAgIE1hdGNoZXJSZXN1bHQgKCptYXRjaGVyT3BlcmF0aW9u
KShjb25zdCBIYXNoU2V0PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOworICAgIE1h
dGNoZXJSZXN1bHQgKCptYXRjaGVyT3BlcmF0aW9uKShFeGVjU3RhdGUmLCBjb25zdCBIYXNoU2V0
PFN0cmluZz4mLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogICAgIGlmIChtYXRjaGVyID09ICJs
b29rdXAiKSB7CiAgICAgICAgIC8vIGEuIExldCBNYXRjaGVyT3BlcmF0aW9uIGJlIHRoZSBhYnN0
cmFjdCBvcGVyYXRpb24gTG9va3VwTWF0Y2hlci4KICAgICAgICAgbWF0Y2hlck9wZXJhdGlvbiA9
IGxvb2t1cE1hdGNoZXI7CkBAIC03MzcsNyArNzQyLDcgQEAgSGFzaE1hcDxTdHJpbmcsIFN0cmlu
Zz4gcmVzb2x2ZUxvY2FsZShjb25zdCBIYXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMs
IGMKICAgICB9CiAKICAgICAvLyA0LiBMZXQgciBiZSBNYXRjaGVyT3BlcmF0aW9uKGF2YWlsYWJs
ZUxvY2FsZXMsIHJlcXVlc3RlZExvY2FsZXMpLgotICAgIE1hdGNoZXJSZXN1bHQgbWF0Y2hlclJl
c3VsdCA9IG1hdGNoZXJPcGVyYXRpb24oYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxl
cyk7CisgICAgTWF0Y2hlclJlc3VsdCBtYXRjaGVyUmVzdWx0ID0gbWF0Y2hlck9wZXJhdGlvbihz
dGF0ZSwgYXZhaWxhYmxlTG9jYWxlcywgcmVxdWVzdGVkTG9jYWxlcyk7CiAKICAgICAvLyA1LiBM
ZXQgZm91bmRMb2NhbGUgYmUgdGhlIHZhbHVlIG9mIHIuW1tsb2NhbGVdXS4KICAgICBTdHJpbmcg
Zm91bmRMb2NhbGUgPSBtYXRjaGVyUmVzdWx0LmxvY2FsZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9ydW50aW1lL0ludGxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0ludGxPYmplY3QuaAppbmRleCA1MmM3ODExMTYxMTI4MzcwNDIxMTI0YWM2NWIx
M2JjMTEwNmJkNzM3Li5hNjJhYjZhMWMwNjlhOTNiMGU1NDhhMjMyMjc2MDE1YjgwYWIxOWNlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9JbnRsT2JqZWN0LmgKKysr
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSW50bE9iamVjdC5oCkBAIC01NywxMyAr
NTcsMTMgQEAgcHJpdmF0ZToKICAgICBJbnRsT2JqZWN0KFZNJiwgU3RydWN0dXJlKik7CiB9Owog
Ci1TdHJpbmcgZGVmYXVsdExvY2FsZSgpOworU3RyaW5nIGRlZmF1bHRMb2NhbGUoRXhlY1N0YXRl
Jik7CiB2b2lkIGNvbnZlcnRJQ1VMb2NhbGVUb0JDUDQ3TGFuZ3VhZ2VUYWcoU3RyaW5nJiBsb2Nh
bGUpOwogYm9vbCBpbnRsQm9vbGVhbk9wdGlvbihFeGVjU3RhdGUmLCBKU1ZhbHVlIG9wdGlvbnMs
IFByb3BlcnR5TmFtZSwgYm9vbCYgdXNlc0ZhbGxiYWNrKTsKIFN0cmluZyBpbnRsU3RyaW5nT3B0
aW9uKEV4ZWNTdGF0ZSYsIEpTVmFsdWUgb3B0aW9ucywgUHJvcGVydHlOYW1lLCBzdGQ6OmluaXRp
YWxpemVyX2xpc3Q8Y29uc3QgY2hhcio+IHZhbHVlcywgY29uc3QgY2hhciogbm90Rm91bmQsIGNv
bnN0IGNoYXIqIGZhbGxiYWNrKTsKIHVuc2lnbmVkIGludGxOdW1iZXJPcHRpb24oRXhlY1N0YXRl
JiwgSlNWYWx1ZSBvcHRpb25zLCBQcm9wZXJ0eU5hbWUsIHVuc2lnbmVkIG1pbmltdW0sIHVuc2ln
bmVkIG1heGltdW0sIHVuc2lnbmVkIGZhbGxiYWNrKTsKIFZlY3RvcjxTdHJpbmc+IGNhbm9uaWNh
bGl6ZUxvY2FsZUxpc3QoRXhlY1N0YXRlJiwgSlNWYWx1ZSBsb2NhbGVzKTsKLUhhc2hNYXA8U3Ry
aW5nLCBTdHJpbmc+IHJlc29sdmVMb2NhbGUoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFi
bGVMb2NhbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVxdWVzdGVkTG9jYWxlcywgY29uc3Qg
SGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIG9wdGlvbnMsIGNvbnN0IGNoYXIqIGNvbnN0IHJlbGV2
YW50RXh0ZW5zaW9uS2V5c1tdLCBzaXplX3QgcmVsZXZhbnRFeHRlbnNpb25LZXlDb3VudCwgVmVj
dG9yPFN0cmluZz4gKCpsb2NhbGVEYXRhKShjb25zdCBTdHJpbmcmLCBzaXplX3QpKTsKK0hhc2hN
YXA8U3RyaW5nLCBTdHJpbmc+IHJlc29sdmVMb2NhbGUoRXhlY1N0YXRlJiwgY29uc3QgSGFzaFNl
dDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcmVxdWVz
dGVkTG9jYWxlcywgY29uc3QgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4mIG9wdGlvbnMsIGNvbnN0
IGNoYXIqIGNvbnN0IHJlbGV2YW50RXh0ZW5zaW9uS2V5c1tdLCBzaXplX3QgcmVsZXZhbnRFeHRl
bnNpb25LZXlDb3VudCwgVmVjdG9yPFN0cmluZz4gKCpsb2NhbGVEYXRhKShjb25zdCBTdHJpbmcm
LCBzaXplX3QpKTsKIEpTVmFsdWUgc3VwcG9ydGVkTG9jYWxlcyhFeGVjU3RhdGUmLCBjb25zdCBI
YXNoU2V0PFN0cmluZz4mIGF2YWlsYWJsZUxvY2FsZXMsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBy
ZXF1ZXN0ZWRMb2NhbGVzLCBKU1ZhbHVlIG9wdGlvbnMpOwogU3RyaW5nIHJlbW92ZVVuaWNvZGVM
b2NhbGVFeHRlbnNpb24oY29uc3QgU3RyaW5nJiBsb2NhbGUpOwogU3RyaW5nIGJlc3RBdmFpbGFi
bGVMb2NhbGUoY29uc3QgSGFzaFNldDxTdHJpbmc+JiBhdmFpbGFibGVMb2NhbGVzLCBjb25zdCBT
dHJpbmcmIHJlcXVlc3RlZExvY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0dsb2JhbE9iamVjdC5jcHAKaW5kZXggMTIzOWJiZmE4NTU3ZjkyNGZiYjkxYTRjYzAx
MGY5ZjBlMmYwZTEzMi4uNmI2YzA3NWEyZmE3YTI4ZGRhYTlmNjk5N2MzNzRhZjcyZTllNTVhYSAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
Y3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmNw
cApAQCAtMTc2LDcgKzE3Niw3IEBAIG5hbWVzcGFjZSBKU0MgewogCiBjb25zdCBDbGFzc0luZm8g
SlNHbG9iYWxPYmplY3Q6OnNfaW5mbyA9IHsgIkdsb2JhbE9iamVjdCIsICZCYXNlOjpzX2luZm8s
ICZnbG9iYWxPYmplY3RUYWJsZSwgQ1JFQVRFX01FVEhPRF9UQUJMRShKU0dsb2JhbE9iamVjdCkg
fTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNHbG9iYWxPYmplY3Q6OnNfZ2xv
YmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNMZWdh
Y3lQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2Ny
aXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgbnVsbHB0ciwgJnNob3VsZEludGVycnVwdFNj
cmlwdEJlZm9yZVRpbWVvdXQsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51bGxwdHIsIG51
bGxwdHIgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIEpTR2xvYmFsT2JqZWN0Ojpz
X2dsb2JhbE9iamVjdE1ldGhvZFRhYmxlID0geyAmYWxsb3dzQWNjZXNzRnJvbSwgJnN1cHBvcnRz
TGVnYWN5UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNoU291cmNlSW5mbywgJnNob3VsZEludGVycnVw
dFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxhZ3MsIG51bGxwdHIsICZzaG91bGRJbnRlcnJ1
cHRTY3JpcHRCZWZvcmVUaW1lb3V0LCBudWxscHRyLCBudWxscHRyLCBudWxscHRyLCBudWxscHRy
LCBudWxscHRyLCBudWxscHRyIH07CiAKIC8qIFNvdXJjZSBmb3IgSlNHbG9iYWxPYmplY3QubHV0
LmgKIEBiZWdpbiBnbG9iYWxPYmplY3RUYWJsZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKaW5kZXggNmIzNzU3MjRiNTgwNmYzOGM2OWM4MTllNDll
Y2FjYjNjYzAwZWY0MS4uOWZjNjU5Nzk0YjI5ZTdhYjgwOGFjMWM4YzI5OTM3OTFjZTA2YjJkMyAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3Qu
aAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0dsb2JhbE9iamVjdC5oCkBA
IC0xNzMsNiArMTczLDkgQEAgc3RydWN0IEdsb2JhbE9iamVjdE1ldGhvZFRhYmxlIHsKIAogICAg
IHR5cGVkZWYgSlNWYWx1ZSAoKk1vZHVsZUxvYWRlckV2YWx1YXRlUHRyKShKU0dsb2JhbE9iamVj
dCosIEV4ZWNTdGF0ZSosIEpTVmFsdWUsIEpTVmFsdWUpOwogICAgIE1vZHVsZUxvYWRlckV2YWx1
YXRlUHRyIG1vZHVsZUxvYWRlckV2YWx1YXRlOworCisgICAgdHlwZWRlZiBTdHJpbmcgKCpEZWZh
dWx0TGFuZ3VhZ2VGdW5jdGlvblB0cikoKTsKKyAgICBEZWZhdWx0TGFuZ3VhZ2VGdW5jdGlvblB0
ciBkZWZhdWx0TGFuZ3VhZ2U7CiB9OwogCiBjbGFzcyBKU0dsb2JhbE9iamVjdCA6IHB1YmxpYyBK
U1NlZ21lbnRlZFZhcmlhYmxlT2JqZWN0IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL1N0cmluZ1Byb3RvdHlwZS5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
cnVudGltZS9TdHJpbmdQcm90b3R5cGUuY3BwCmluZGV4IGQ4Yjk5YmNhMjY4MjEyNmNjZjNmMDE5
YjhhMzRmZGYyOTRhNTg2ZjMuLmQ4MzAyNTUyNDA1NzIyZjEyMmQ4ZDA0ZmFmYTdlMGU4M2U0YTgw
ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1N0cmluZ1Byb3Rv
dHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvU3RyaW5nUHJvdG90
eXBlLmNwcApAQCAtMTUwMCw3ICsxNTAwLDcgQEAgc3RhdGljIEVuY29kZWRKU1ZhbHVlIHRvTG9j
YWxlQ2FzZShFeGVjU3RhdGUqIHN0YXRlLCBpbnQzMl90ICgqY29udmVydENhc2UpKFVDaGEKICAg
ICAvLyBhLiBMZXQgcmVxdWVzdGVkTG9jYWxlIGJlIHRoZSBmaXJzdCBlbGVtZW50IG9mIHJlcXVl
c3RlZExvY2FsZXMuCiAgICAgLy8gOC4gRWxzZQogICAgIC8vIGEuIExldCByZXF1ZXN0ZWRMb2Nh
bGUgYmUgRGVmYXVsdExvY2FsZSgpLgotICAgIFN0cmluZyByZXF1ZXN0ZWRMb2NhbGUgPSBsZW4g
PiAwID8gcmVxdWVzdGVkTG9jYWxlcy5maXJzdCgpIDogZGVmYXVsdExvY2FsZSgpOworICAgIFN0
cmluZyByZXF1ZXN0ZWRMb2NhbGUgPSBsZW4gPiAwID8gcmVxdWVzdGVkTG9jYWxlcy5maXJzdCgp
IDogZGVmYXVsdExvY2FsZSgqc3RhdGUpOwogCiAgICAgLy8gOS4gTGV0IG5vRXh0ZW5zaW9uc0xv
Y2FsZSBiZSB0aGUgU3RyaW5nIHZhbHVlIHRoYXQgaXMgcmVxdWVzdGVkTG9jYWxlIHdpdGggYWxs
IFVuaWNvZGUgbG9jYWxlIGV4dGVuc2lvbiBzZXF1ZW5jZXMgKDYuMi4xKSByZW1vdmVkLgogICAg
IFN0cmluZyBub0V4dGVuc2lvbnNMb2NhbGUgPSByZW1vdmVVbmljb2RlTG9jYWxlRXh0ZW5zaW9u
KHJlcXVlc3RlZExvY2FsZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9q
cy9KU0RPTVdpbmRvd0Jhc2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01X
aW5kb3dCYXNlLmNwcAppbmRleCBlN2ViMmM3Mjk0ODljYzA5ZTlhNGM2MmI1NzZmNzI0YWUwNzkz
MTNlLi4xOWZjYTI1MDU5YjU2Njk4MWQ4ZDI4ZDQ3ZDU5MzY3ZDY0ZGJkZDcyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0Jhc2UuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5jcHAKQEAgLTM0LDYgKzM0
LDcgQEAKICNpbmNsdWRlICJKU01haW5UaHJlYWRFeGVjU3RhdGUuaCIKICNpbmNsdWRlICJKU01v
ZHVsZUxvYWRlci5oIgogI2luY2x1ZGUgIkpTTm9kZS5oIgorI2luY2x1ZGUgIkxhbmd1YWdlLmgi
CiAjaW5jbHVkZSAiTG9nZ2luZy5oIgogI2luY2x1ZGUgIlBhZ2UuaCIKICNpbmNsdWRlICJSdW50
aW1lQXBwbGljYXRpb25DaGVja3MuaCIKQEAgLTYzLDcgKzY0LDcgQEAgc3RhdGljIGJvb2wgc2hv
dWxkQWxsb3dBY2Nlc3NGcm9tKGNvbnN0IEpTR2xvYmFsT2JqZWN0KiB0aGlzT2JqZWN0LCBFeGVj
U3RhdGUqIGUKIAogY29uc3QgQ2xhc3NJbmZvIEpTRE9NV2luZG93QmFzZTo6c19pbmZvID0geyAi
V2luZG93IiwgJkpTRE9NR2xvYmFsT2JqZWN0OjpzX2luZm8sIDAsIENSRUFURV9NRVRIT0RfVEFC
TEUoSlNET01XaW5kb3dCYXNlKSB9OwogCi1jb25zdCBHbG9iYWxPYmplY3RNZXRob2RUYWJsZSBK
U0RPTVdpbmRvd0Jhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZzaG91bGRBbGxv
d0FjY2Vzc0Zyb20sICZzdXBwb3J0c0xlZ2FjeVByb2ZpbGluZywgJnN1cHBvcnRzUmljaFNvdXJj
ZUluZm8sICZzaG91bGRJbnRlcnJ1cHRTY3JpcHQsICZqYXZhU2NyaXB0UnVudGltZUZsYWdzLCAm
cXVldWVUYXNrVG9FdmVudExvb3AsICZzaG91bGRJbnRlcnJ1cHRTY3JpcHRCZWZvcmVUaW1lb3V0
LCAmbW9kdWxlTG9hZGVyUmVzb2x2ZSwgJm1vZHVsZUxvYWRlckZldGNoLCBudWxscHRyLCBudWxs
cHRyLCAmbW9kdWxlTG9hZGVyRXZhbHVhdGUgfTsKK2NvbnN0IEdsb2JhbE9iamVjdE1ldGhvZFRh
YmxlIEpTRE9NV2luZG93QmFzZTo6c19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSA9IHsgJnNob3Vs
ZEFsbG93QWNjZXNzRnJvbSwgJnN1cHBvcnRzTGVnYWN5UHJvZmlsaW5nLCAmc3VwcG9ydHNSaWNo
U291cmNlSW5mbywgJnNob3VsZEludGVycnVwdFNjcmlwdCwgJmphdmFTY3JpcHRSdW50aW1lRmxh
Z3MsICZxdWV1ZVRhc2tUb0V2ZW50TG9vcCwgJnNob3VsZEludGVycnVwdFNjcmlwdEJlZm9yZVRp
bWVvdXQsICZtb2R1bGVMb2FkZXJSZXNvbHZlLCAmbW9kdWxlTG9hZGVyRmV0Y2gsIG51bGxwdHIs
IG51bGxwdHIsICZtb2R1bGVMb2FkZXJFdmFsdWF0ZSwgJmRlZmF1bHRMYW5ndWFnZSB9OwogCiBK
U0RPTVdpbmRvd0Jhc2U6OkpTRE9NV2luZG93QmFzZShWTSYgdm0sIFN0cnVjdHVyZSogc3RydWN0
dXJlLCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gd2luZG93LCBKU0RPTVdpbmRvd1NoZWxsKiBzaGVs
bCkKICAgICA6IEpTRE9NR2xvYmFsT2JqZWN0KHZtLCBzdHJ1Y3R1cmUsICZzaGVsbC0+d29ybGQo
KSwgJnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU1dvcmtlckdsb2JhbFNjb3BlQmFzZS5jcHAKaW5kZXggM2MxZWY3MmI3
MTAyMzA1NmNkNTFkYWU4NzZkM2M2YjAzYjQxNThlZS4uMzlhMWVmOWQ4MDNmNTU2NmUzOTJjYTc0
ZWVmYzM0ZTM0YmI3YTZkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTV29ya2VyR2xvYmFsU2NvcGVCYXNlLmNwcApAQCAtMzMsNiArMzMsNyBAQAogI2luY2x1
ZGUgIkpTRE9NR2xvYmFsT2JqZWN0VGFzay5oIgogI2luY2x1ZGUgIkpTRGVkaWNhdGVkV29ya2Vy
R2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlICJKU1dvcmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVk
ZSAiTGFuZ3VhZ2UuaCIKICNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5oIgogI2luY2x1ZGUg
PHJ1bnRpbWUvSlNDSlNWYWx1ZUlubGluZXMuaD4KICNpbmNsdWRlIDxydW50aW1lL01pY3JvdGFz
ay5oPgpAQCAtNDMsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNvbnN0IENsYXNz
SW5mbyBKU1dvcmtlckdsb2JhbFNjb3BlQmFzZTo6c19pbmZvID0geyAiV29ya2VyR2xvYmFsU2Nv
cGUiLCAmSlNET01HbG9iYWxPYmplY3Q6OnNfaW5mbywgMCwgQ1JFQVRFX01FVEhPRF9UQUJMRShK
U1dvcmtlckdsb2JhbFNjb3BlQmFzZSkgfTsKIAotY29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFi
bGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNfZ2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7
ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNMZWdhY3lQcm9maWxpbmcsICZzdXBwb3J0c1Jp
Y2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVG
bGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAmc2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3Jl
VGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgbnVsbHB0ciB9Owor
Y29uc3QgR2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgSlNXb3JrZXJHbG9iYWxTY29wZUJhc2U6OnNf
Z2xvYmFsT2JqZWN0TWV0aG9kVGFibGUgPSB7ICZhbGxvd3NBY2Nlc3NGcm9tLCAmc3VwcG9ydHNM
ZWdhY3lQcm9maWxpbmcsICZzdXBwb3J0c1JpY2hTb3VyY2VJbmZvLCAmc2hvdWxkSW50ZXJydXB0
U2NyaXB0LCAmamF2YVNjcmlwdFJ1bnRpbWVGbGFncywgJnF1ZXVlVGFza1RvRXZlbnRMb29wLCAm
c2hvdWxkSW50ZXJydXB0U2NyaXB0QmVmb3JlVGltZW91dCwgbnVsbHB0ciwgbnVsbHB0ciwgbnVs
bHB0ciwgbnVsbHB0ciwgbnVsbHB0ciwgJmRlZmF1bHRMYW5ndWFnZSB9OwogCiBKU1dvcmtlckds
b2JhbFNjb3BlQmFzZTo6SlNXb3JrZXJHbG9iYWxTY29wZUJhc2UoSlNDOjpWTSYgdm0sIEpTQzo6
U3RydWN0dXJlKiBzdHJ1Y3R1cmUsIFBhc3NSZWZQdHI8V29ya2VyR2xvYmFsU2NvcGU+IGltcGwp
CiAgICAgOiBKU0RPTUdsb2JhbE9iamVjdCh2bSwgc3RydWN0dXJlLCAmbm9ybWFsV29ybGQodm0p
LCAmc19nbG9iYWxPYmplY3RNZXRob2RUYWJsZSkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA0YzBkNDBiYzI2Yzc2YjcxYjEy
YjdhZGIwYzk0YmNiMjE1ZDViYTE0Li43MmJkYmVkZmNjZTlhMjBiYmM3NDk2N2EwZGQyMDA2OWI2
YTE1ZDVhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMDItMjcgIEFuZHkgVmFuV2Fnb25l
ciAgPHRoZXRhbGVjcmFmdGVyQGdtYWlsLmNvbT4KKworICAgICAgICBJbnRsLkNvbGxhdG9yIHVz
ZXMgUE9TSVggbG9jYWxlIChkZXRlY3RlZCBieSBqcy9pbnRsLWNvbGxhdG9yLmh0bWwgb24gaU9T
IFNpbXVsYXRvcikKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTE1MjQ0OAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEFkZCB0ZXN0cyBmb3IgZGVmYXVsdCBsb2NhbGUgaW4gdGVzdCBydW5uZXIgdG8gYmUgZW4t
VVMuCisKKyAgICAgICAgKiBqcy9pbnRsLWNvbGxhdG9yLWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBqcy9pbnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9pbnRs
LW51bWJlcmZvcm1hdC1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2lu
dGwtY29sbGF0b3IuanM6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2ludGwtZGF0ZXRpbWVm
b3JtYXQuanM6CisgICAgICAgICoganMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0Lmpz
OgorCiAyMDE2LTAyLTI2ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAg
ICAgRml4IHRoZSBiZWhhdmlvciBvZiByZWZsZWN0aW5nIElETCBhdHRyaWJ1dGVzIG9mIHR5cGUg
dW5zaWduZWQgbG9uZwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvaW50bC1jb2xsYXRvci1l
eHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWNvbGxhdG9yLWV4cGVjdGVkLnR4dApp
bmRleCA3MTJiYmQ2NDQ1NjEwMDdmNTQxZThjMjExYWU3NGE2N2U0ODZlNWJkLi45MDVhMThiNWM0
Y2ZmNTQ5MDMxYzMxNzRlYjhmN2EzNTYyODA5MWY2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9q
cy9pbnRsLWNvbGxhdG9yLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLWNv
bGxhdG9yLWV4cGVjdGVkLnR4dApAQCAtMTksNiArMTksNyBAQCBQQVNTIGNsYXNzIERlcml2ZWRD
b2xsYXRvciBleHRlbmRzIEludGwuQ29sbGF0b3Ige307KG5ldyBEZXJpdmVkQ29sbGF0b3IpIGlu
c3RhbgogUEFTUyBjbGFzcyBEZXJpdmVkQ29sbGF0b3IgZXh0ZW5kcyBJbnRsLkNvbGxhdG9yIHt9
O25ldyBEZXJpdmVkQ29sbGF0b3IoKS5jb21wYXJlKCdhJywgJ2InKSA9PT0gLTEgaXMgdHJ1ZQog
UEFTUyBjbGFzcyBEZXJpdmVkQ29sbGF0b3IgZXh0ZW5kcyBJbnRsLkNvbGxhdG9yIHt9O09iamVj
dC5nZXRQcm90b3R5cGVPZihuZXcgRGVyaXZlZENvbGxhdG9yKSA9PT0gRGVyaXZlZENvbGxhdG9y
LnByb3RvdHlwZSBpcyB0cnVlCiBQQVNTIGNsYXNzIERlcml2ZWRDb2xsYXRvciBleHRlbmRzIElu
dGwuQ29sbGF0b3Ige307T2JqZWN0LmdldFByb3RvdHlwZU9mKE9iamVjdC5nZXRQcm90b3R5cGVP
ZihuZXcgRGVyaXZlZENvbGxhdG9yKSkgPT09IEludGwuQ29sbGF0b3IucHJvdG90eXBlIGlzIHRy
dWUKK1BBU1MgdGVzdENvbGxhdG9yKEludGwuQ29sbGF0b3IoKSwgW3tsb2NhbGU6ICdlbi1VUyd9
XSkgaXMgdHJ1ZQogUEFTUyB0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcignZW4nKSwgW3tsb2Nh
bGU6ICdlbid9XSkgaXMgdHJ1ZQogUEFTUyB0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcignZU4t
dVMnKSwgW3tsb2NhbGU6ICdlbi1VUyd9XSkgaXMgdHJ1ZQogUEFTUyB0ZXN0Q29sbGF0b3IoSW50
bC5Db2xsYXRvcihbJ2VuJywgJ2RlJ10pLCBbe2xvY2FsZTogJ2VuJ31dKSBpcyB0cnVlCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLWRhdGV0aW1lZm9ybWF0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2pzL2ludGwtZGF0ZXRpbWVmb3JtYXQtZXhwZWN0ZWQudHh0CmluZGV4IGE1
ODRlODRlM2E5ZjI2MDdkNTk1YWNhNWE4MmRmNDYyYTRhNmYyZWMuLmY1OGQ0YTliMmM3NDk1ZDVh
YTg0ZDMwZmMzNjlmZjU5NzU5MzhkZWEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL2ludGwt
ZGF0ZXRpbWVmb3JtYXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2pzL2ludGwtZGF0
ZXRpbWVmb3JtYXQtZXhwZWN0ZWQudHh0CkBAIC04Myw2ICs4Myw3IEBAIFBBU1MgSW50bC5EYXRl
VGltZUZvcm1hdC5wcm90b3R5cGUucmVzb2x2ZWRPcHRpb25zKCkgPT09IEludGwuRGF0ZVRpbWVG
b3JtYXQucHJvCiBQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQucHJvdG90eXBlLnJlc29sdmVkT3B0
aW9ucy5jYWxsKDUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IEludGwuRGF0ZVRpbWVGb3Jt
YXQucHJvdG90eXBlLnJlc29sdmVkT3B0aW9ucyBjYWxsZWQgb24gdmFsdWUgdGhhdCdzIG5vdCBh
biBvYmplY3QgaW5pdGlhbGl6ZWQgYXMgYSBEYXRlVGltZUZvcm1hdC4KIFBBU1MgSW50bC5EYXRl
VGltZUZvcm1hdCgnJCcpIHRocmV3IGV4Y2VwdGlvbiBSYW5nZUVycm9yOiBpbnZhbGlkIGxhbmd1
YWdlIHRhZzogJC4KIFBBU1MgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4nLCBudWxsKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBudWxsIGlzIG5vdCBhbiBvYmplY3QgKGV2YWx1YXRpbmcgJ0lu
dGwuRGF0ZVRpbWVGb3JtYXQoJ2VuJywgbnVsbCknKS4KK1BBU1MgSW50bC5EYXRlVGltZUZvcm1h
dCgpLnJlc29sdmVkT3B0aW9ucygpLmxvY2FsZSBpcyAnZW4tVVMnCiBQQVNTIEludGwuRGF0ZVRp
bWVGb3JtYXQoJ2VuJykucmVzb2x2ZWRPcHRpb25zKCkud2Vla2RheSBpcyB1bmRlZmluZWQKIFBB
U1MgSW50bC5EYXRlVGltZUZvcm1hdCgnZW4nKS5yZXNvbHZlZE9wdGlvbnMoKS5lcmEgaXMgdW5k
ZWZpbmVkCiBQQVNTIEludGwuRGF0ZVRpbWVGb3JtYXQoJ2VuJykucmVzb2x2ZWRPcHRpb25zKCku
bW9udGggaXMgJ251bWVyaWMnCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJl
cmZvcm1hdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9qcy9pbnRsLW51bWJlcmZvcm1hdC1l
eHBlY3RlZC50eHQKaW5kZXggNTQ1ZmVhYWZhOGFkNzZlNWE0Y2VlNjViYTNkZWI3OTEwNWMxYTRh
NS4uZGY4Y2I4ZWEzMWNjYTkzNjY2YTZhMDM2YjJmNjg4NTZkNTFhZGY0YyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvanMvaW50bC1udW1iZXJmb3JtYXQtZXhwZWN0ZWQudHh0CisrKyBiL0xheW91
dFRlc3RzL2pzL2ludGwtbnVtYmVyZm9ybWF0LWV4cGVjdGVkLnR4dApAQCAtMTIsNiArMTIsNyBA
QCBQQVNTIGNsYXNzIERlcml2ZWROdW1iZXJGb3JtYXQgZXh0ZW5kcyBJbnRsLk51bWJlckZvcm1h
dCB7fTsobmV3IERlcml2ZWROdW1iZXJGbwogUEFTUyBjbGFzcyBEZXJpdmVkTnVtYmVyRm9ybWF0
IGV4dGVuZHMgSW50bC5OdW1iZXJGb3JtYXQge307bmV3IERlcml2ZWROdW1iZXJGb3JtYXQoKS5m
b3JtYXQoMSkgPT09ICcxJyBpcyB0cnVlCiBQQVNTIGNsYXNzIERlcml2ZWROdW1iZXJGb3JtYXQg
ZXh0ZW5kcyBJbnRsLk51bWJlckZvcm1hdCB7fTtPYmplY3QuZ2V0UHJvdG90eXBlT2YobmV3IERl
cml2ZWROdW1iZXJGb3JtYXQpID09PSBEZXJpdmVkTnVtYmVyRm9ybWF0LnByb3RvdHlwZSBpcyB0
cnVlCiBQQVNTIGNsYXNzIERlcml2ZWROdW1iZXJGb3JtYXQgZXh0ZW5kcyBJbnRsLk51bWJlckZv
cm1hdCB7fTtPYmplY3QuZ2V0UHJvdG90eXBlT2YoT2JqZWN0LmdldFByb3RvdHlwZU9mKG5ldyBE
ZXJpdmVkTnVtYmVyRm9ybWF0KSkgPT09IEludGwuTnVtYmVyRm9ybWF0LnByb3RvdHlwZSBpcyB0
cnVlCitQQVNTIHRlc3ROdW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoKSwgW3tsb2NhbGU6
ICdlbi1VUyd9XSkgaXMgdHJ1ZQogUEFTUyB0ZXN0TnVtYmVyRm9ybWF0KEludGwuTnVtYmVyRm9y
bWF0KCdlbicpLCBbe2xvY2FsZTogJ2VuJ31dKSBpcyB0cnVlCiBQQVNTIHRlc3ROdW1iZXJGb3Jt
YXQoSW50bC5OdW1iZXJGb3JtYXQoJ2VOLXVTJyksIFt7bG9jYWxlOiAnZW4tVVMnfV0pIGlzIHRy
dWUKIFBBU1MgdGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdChbJ2VuJywgJ2RlJ10p
LCBbe2xvY2FsZTogJ2VuJ31dKSBpcyB0cnVlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9qcy9z
Y3JpcHQtdGVzdHMvaW50bC1jb2xsYXRvci5qcyBiL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0
cy9pbnRsLWNvbGxhdG9yLmpzCmluZGV4IDUyNzI5ZDFkMGJjNmMwMGNhZmJlN2JjM2U2YjI3ZGYw
ZDdkY2Q5YTkuLmUxNTQ4ZWFhOGEwNmZjMDFjYjg2YzYwOTgxYmE5NDM2Zjc5MTE4YzggMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLWNvbGxhdG9yLmpzCisrKyBi
L0xheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9pbnRsLWNvbGxhdG9yLmpzCkBAIC00Myw2ICs0
Myw3IEBAIHZhciB0ZXN0Q29sbGF0b3IgPSBmdW5jdGlvbihjb2xsYXRvciwgcG9zc2libGVPcHRp
b25EaWZmZXJlbmNlcykgewogfQogCiAvLyBMb2NhbGUgaXMgcHJvY2Vzc2VkIGNvcnJlY3RseS4K
K3Nob3VsZEJlVHJ1ZSgidGVzdENvbGxhdG9yKEludGwuQ29sbGF0b3IoKSwgW3tsb2NhbGU6ICdl
bi1VUyd9XSkiKTsKIHNob3VsZEJlVHJ1ZSgidGVzdENvbGxhdG9yKEludGwuQ29sbGF0b3IoJ2Vu
JyksIFt7bG9jYWxlOiAnZW4nfV0pIik7CiBzaG91bGRCZVRydWUoInRlc3RDb2xsYXRvcihJbnRs
LkNvbGxhdG9yKCdlTi11UycpLCBbe2xvY2FsZTogJ2VuLVVTJ31dKSIpOwogc2hvdWxkQmVUcnVl
KCJ0ZXN0Q29sbGF0b3IoSW50bC5Db2xsYXRvcihbJ2VuJywgJ2RlJ10pLCBbe2xvY2FsZTogJ2Vu
J31dKSIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtZGF0
ZXRpbWVmb3JtYXQuanMgYi9MYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRldGlt
ZWZvcm1hdC5qcwppbmRleCA1ZmNiNTg3OTEwM2QxMTAyMDFkNzM1MDEzMzkyZWE3YzlkZjg2NDFh
Li45MjdhOTMwYmVlNTI3MGE0Mjc1OTE3NTI0ZGU4ODc0YjM2ZjVlOTk4IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qcworKysgYi9M
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvaW50bC1kYXRldGltZWZvcm1hdC5qcwpAQCAtMTY0
LDYgKzE2NCw5IEBAIHNob3VsZFRocm93KCJJbnRsLkRhdGVUaW1lRm9ybWF0LnByb3RvdHlwZS5y
ZXNvbHZlZE9wdGlvbnMuY2FsbCg1KSIsICInVHlwZUVycm9yCiBzaG91bGRUaHJvdygiSW50bC5E
YXRlVGltZUZvcm1hdCgnJCcpIiwgIidSYW5nZUVycm9yOiBpbnZhbGlkIGxhbmd1YWdlIHRhZzog
JCciKTsKIHNob3VsZFRocm93KCJJbnRsLkRhdGVUaW1lRm9ybWF0KCdlbicsIG51bGwpIiwgJyJU
eXBlRXJyb3I6IG51bGwgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyBcJ0ludGwuRGF0ZVRp
bWVGb3JtYXQoXCdlblwnLCBudWxsKVwnKSInKTsKIAorLy8gRGVmYXVsdHMgdG8gZW4tVVMgbG9j
YWxlIGluIHRlc3QgcnVubmVyCitzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdCgpLnJlc29s
dmVkT3B0aW9ucygpLmxvY2FsZSIsICInZW4tVVMnIik7CisKIC8vIERlZmF1bHRzIHRvIG1vbnRo
LCBkYXksIHllYXIuCiBzaG91bGRCZSgiSW50bC5EYXRlVGltZUZvcm1hdCgnZW4nKS5yZXNvbHZl
ZE9wdGlvbnMoKS53ZWVrZGF5IiwgInVuZGVmaW5lZCIpOwogc2hvdWxkQmUoIkludGwuRGF0ZVRp
bWVGb3JtYXQoJ2VuJykucmVzb2x2ZWRPcHRpb25zKCkuZXJhIiwgInVuZGVmaW5lZCIpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0Lmpz
IGIvTGF5b3V0VGVzdHMvanMvc2NyaXB0LXRlc3RzL2ludGwtbnVtYmVyZm9ybWF0LmpzCmluZGV4
IDEyZTQ4NjA3YmExNzljNmNmMDUyZWVkMDFhODUxMWY2YjRlMzIyYzguLjgxMjc5NDQ1OTU4NWY2
YTc5ZDU1ZmRiODljOGM0Y2ZjZDcxNTMzOTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2pzL3Nj
cmlwdC10ZXN0cy9pbnRsLW51bWJlcmZvcm1hdC5qcworKysgYi9MYXlvdXRUZXN0cy9qcy9zY3Jp
cHQtdGVzdHMvaW50bC1udW1iZXJmb3JtYXQuanMKQEAgLTQxLDYgKzQxLDcgQEAgZnVuY3Rpb24g
dGVzdE51bWJlckZvcm1hdChudW1iZXJGb3JtYXQsIHBvc3NpYmxlRGlmZmVyZW5jZXMpIHsKIH0K
IAogLy8gTG9jYWxlIGlzIHByb2Nlc3NlZCBjb3JyZWN0bHkuCitzaG91bGRCZVRydWUoInRlc3RO
dW1iZXJGb3JtYXQoSW50bC5OdW1iZXJGb3JtYXQoKSwgW3tsb2NhbGU6ICdlbi1VUyd9XSkiKTsK
IHNob3VsZEJlVHJ1ZSgidGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdCgnZW4nKSwg
W3tsb2NhbGU6ICdlbid9XSkiKTsKIHNob3VsZEJlVHJ1ZSgidGVzdE51bWJlckZvcm1hdChJbnRs
Lk51bWJlckZvcm1hdCgnZU4tdVMnKSwgW3tsb2NhbGU6ICdlbi1VUyd9XSkiKTsKIHNob3VsZEJl
VHJ1ZSgidGVzdE51bWJlckZvcm1hdChJbnRsLk51bWJlckZvcm1hdChbJ2VuJywgJ2RlJ10pLCBb
e2xvY2FsZTogJ2VuJ31dKSIpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>