<?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>191822</bug_id>
          
          <creation_ts>2018-11-17 22:54:03 -0800</creation_ts>
          <short_desc>Add SPI to disable JIT in a WKWebView</short_desc>
          <delta_ts>2018-11-19 18:17:51 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1480049</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-11-17 22:54:03 -0800</bug_when>
    <thetext>Add SPI to disable JIT in a WKWebView</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480054</commentid>
    <comment_count>1</comment_count>
      <attachid>355229</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-11-17 23:11:14 -0800</bug_when>
    <thetext>Created attachment 355229
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480092</commentid>
    <comment_count>2</comment_count>
      <attachid>355229</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-11-18 13:02:14 -0800</bug_when>
    <thetext>Comment on attachment 355229
Patch

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

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.cpp:120
&gt; +static bool&amp; jitDisabled()
&gt; +{
&gt; +    static bool disabled = false;
&gt; +    return disabled;
&gt; +}

Let&apos;s pick a consistent phrase and use it everywhere -- rather than the family of jitDisabled, disableJIT, canUseJIT, and enableJIT.

I usually prefer boolean conditions to be named after the true condition, to avoid mental gymnastics around double negatives when the conditions are false. (E.g., &quot;Enable the JIT&quot; and &quot;Do not enable the JIT&quot; parse OK to me, but &quot;Do not not enable the JIT&quot; is hard for me to parse.)

So, normally I would recommend &quot;setJITEnabled&quot; and &quot;isJITEnabled&quot; as the canonical phrases.

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.cpp:122
&gt;  static bool allowJIT()

Let&apos;s pair this with the function above and call them &quot;setJITEnabled&quot; and &quot;isJITEnabled&quot;.

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.cpp:125
&gt; +    return processHasEntitlement(&quot;dynamic-codesigning&quot;) &amp;&amp; !jitDisabled();

Note the use of &quot;not not enabled&quot; here, which I would prefer to avoid.

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.cpp:131
&gt; +void ExecutableAllocator::disableJIT()

This can be the implementation of the setter in the false condition.

&gt; Source/WebKit/UIProcess/WebPageProxy.cpp:6530
&gt; +void WebPageProxy::canUseJIT(CompletionHandler&lt;void(bool)&gt;&amp;&amp; completionHandler)

I&apos;d call this function and its message isJITEnabled.

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4771
&gt; +- (void)_canUseJIT:(void(^)(BOOL))completionHandler

isJITEnabled

&gt; Source/WebKit/UIProcess/API/Cocoa/_WKProcessPoolConfiguration.h:71
&gt; +@property (nonatomic) BOOL enableJIT WK_API_AVAILABLE(macosx(WK_MAC_TBA), ios(WK_IOS_TBA));

I&apos;d call this JITEnabled getter=isJITEnabled

&gt; Source/WebKit/UIProcess/Launcher/ProcessLauncher.h:51
&gt; +        virtual bool enableJIT() const { return true; }

isJITEnabled

&gt; Source/WebKit/UIProcess/Launcher/mac/ProcessLauncherMac.mm:178
&gt; +        xpc_dictionary_set_bool(bootstrapMessage.get(), &quot;disable-jit&quot;, true);

Maybe it&apos;s ok for this message to be &quot;disable-jit&quot;. The best alternative I can think of is &quot;set-jit-enabled-false&quot;. I&apos;m not sure if that&apos;s better.

&gt; Source/WebKit/WebProcess/WebProcess.h:207
&gt; +    void canUseJIT(CompletionHandler&lt;void(bool)&gt;&amp;&amp;);

isJITEnabled

&gt; Source/WebKit/WebProcess/WebProcess.messages.in:144
&gt; +    CanUseJIT() -&gt; (bool canUse) Async

IsJITEnabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480094</commentid>
    <comment_count>3</comment_count>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-11-18 13:25:33 -0800</bug_when>
    <thetext>Usually when we have a one way toggle for X we call it “setX” or “clearX”. 

So I guess my recommendation is to name the setter in JSC and the bootstrap xpc message “clearJITEnabled” and “clear-jit-enabled”. 

(I think part of why you chose “disableJIT” might be that it’s not terribly productive to call setJITEnabled(true). So it doesn’t feel right for JSC to offer setJITEnabled(bool).)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480261</commentid>
    <comment_count>4</comment_count>
      <attachid>355287</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-11-19 11:10:51 -0800</bug_when>
    <thetext>Created attachment 355287
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480318</commentid>
    <comment_count>5</comment_count>
      <attachid>355287</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2018-11-19 15:26:05 -0800</bug_when>
    <thetext>Comment on attachment 355287
Patch

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

r=me

Still a few opportunities to increase naming consistency.

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.cpp:116
&gt; +static bool s_jitEnabled = true;

s_isJITEnabled

&gt; Source/JavaScriptCore/jit/ExecutableAllocator.cpp:128
&gt; +void ExecutableAllocator::setJITEnabled(bool enabled)
&gt; +{
&gt; +    s_jitEnabled = enabled;

Probably worth an early return if the setting didn&apos;t change.

&gt; Source/WebKit/UIProcess/WebProcessProxy.h:261
&gt; +    bool JITEnabled() const final;

isJITEnabled()

&gt; Source/WebKit/UIProcess/API/APIProcessPoolConfiguration.h:226
&gt; +    bool m_JITEnabled { true };

m_isJITEnabled

&gt; Source/WebKit/UIProcess/API/Cocoa/WKWebView.mm:4773
&gt; +    _page-&gt;isJITEnabled([completionHandler = makeBlockPtr(completionHandler)] (bool canUse) {

canUse =&gt; isJITEnabled

&gt; Source/WebKit/UIProcess/Launcher/ProcessLauncher.h:51
&gt; +        virtual bool JITEnabled() const { return true; }

isJITEnabled</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480333</commentid>
    <comment_count>6</comment_count>
      <attachid>355300</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-11-19 17:23:45 -0800</bug_when>
    <thetext>Created attachment 355300
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480342</commentid>
    <comment_count>7</comment_count>
      <attachid>355300</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-11-19 17:39:46 -0800</bug_when>
    <thetext>Comment on attachment 355300
Patch

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

&gt; Source/WebKit/UIProcess/WebProcessProxy.cpp:54
&gt; +#include &lt;JavaScriptCore/VM.h&gt;

This isn&apos;t needed.  Won&apos;t commit it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480343</commentid>
    <comment_count>8</comment_count>
      <attachid>355300</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2018-11-19 17:42:45 -0800</bug_when>
    <thetext>Comment on attachment 355300
Patch

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

&gt; Source/WebKit/Shared/EntryPointUtilities/mac/XPCService/XPCServiceEntryPoint.h:73
&gt; +    if (initializerMessage &amp;&amp; xpc_dictionary_get_bool(initializerMessage, &quot;disable-jit&quot;))

Does this happen before initializeThreading? I believe it does. It’d be good to add such an assertion to the API you added in JSC as well. I think such an assertion is better than relying on the OS only allocating X memory once.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480352</commentid>
    <comment_count>9</comment_count>
      <attachid>355300</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-11-19 18:13:40 -0800</bug_when>
    <thetext>Comment on attachment 355300
Patch

Good idea! I&apos;m adding ASSERT(!allocator); at the beginning of ExecutableAllocator::setJITEnabled to remind us when it can be called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480353</commentid>
    <comment_count>10</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2018-11-19 18:16:43 -0800</bug_when>
    <thetext>http://trac.webkit.org/r238388</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1480354</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2018-11-19 18:17:51 -0800</bug_when>
    <thetext>&lt;rdar://problem/46176350&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355229</attachid>
            <date>2018-11-17 23:11:14 -0800</date>
            <delta_ts>2018-11-19 11:10:49 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191822-20181117231113.patch</filename>
            <type>text/plain</type>
            <size>25412</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM4MzUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDE4LTExLTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQWRkIFNQSSB0byBkaXNhYmxlIEpJVCBpbiBhIFdLV2ViVmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxODIyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yODExOTM2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6aml0RGlzYWJsZWQpOgorICAgICAgICAoSlNDOjphbGxvd0pJVCk6CisgICAgICAg
IChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OmRpc2FibGVKSVQpOgorICAgICAgICAqIGppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6
OmRpc2FibGVKSVQpOgorCiAyMDE4LTExLTE3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxl
LmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOZXR3b3JrOiBhZGQgYnV0dG9uIHRvIHNo
b3cgc3lzdGVtIGNlcnRpZmljYXRlIGRpYWxvZwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMzgzNTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xMTMsMTIgKzExMywzNSBAQCBKU19FWFBPUlRfUFJJVkFURSBKSVRXcml0
ZVNlcGFyYXRlSGVhcHNGCiBzdGF0aWMgdWludHB0cl90IHN0YXJ0T2ZGaXhlZFdyaXRhYmxlTWVt
b3J5UG9vbDsKICNlbmRpZgogCitzdGF0aWMgYm9vbCYgaml0RGlzYWJsZWQoKQoreworICAgIHN0
YXRpYyBib29sIGRpc2FibGVkID0gZmFsc2U7CisgICAgcmV0dXJuIGRpc2FibGVkOworfQorCiBz
dGF0aWMgYm9vbCBhbGxvd0pJVCgpCiB7CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgKENQ
VShBUk02NCkgfHwgQ1BVKEFSTSkpCi0gICAgcmV0dXJuIHByb2Nlc3NIYXNFbnRpdGxlbWVudCgi
ZHluYW1pYy1jb2Rlc2lnbmluZyIpOworICAgIHJldHVybiBwcm9jZXNzSGFzRW50aXRsZW1lbnQo
ImR5bmFtaWMtY29kZXNpZ25pbmciKSAmJiAhaml0RGlzYWJsZWQoKTsKICNlbHNlCi0gICAgcmV0
dXJuIHRydWU7CisgICAgcmV0dXJuICFqaXREaXNhYmxlZCgpOworI2VuZGlmCit9CisKK3ZvaWQg
RXhlY3V0YWJsZUFsbG9jYXRvcjo6ZGlzYWJsZUpJVCgpCit7CisgICAgaml0RGlzYWJsZWQoKSA9
IHRydWU7CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUo
QVJNKSkKKyAgICBjb25zdGV4cHIgc2l6ZV90IHNpemUgPSAxOworICAgIGNvbnN0ZXhwciBpbnQg
cHJvdGVjdGlvbiA9IFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUM7CisgICAgY29u
c3RleHByIGludCBmbGFncyA9IE1BUF9QUklWQVRFIHwgTUFQX0FOT04gfCBNQVBfSklUOworICAg
IGNvbnN0ZXhwciBpbnQgZmQgPSBPU0FsbG9jYXRvcjo6SlNKSVRDb2RlUGFnZXM7CisgICAgY29u
c3Qgdm9pZCogYWxsb2NhdGlvbiA9IG1tYXAobnVsbHB0ciwgc2l6ZSwgcHJvdGVjdGlvbiwgZmxh
Z3MsIGZkLCAwKTsKKyAgICBjb25zdCB2b2lkKiBleGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZh
aWx1cmUgPSByZWludGVycHJldF9jYXN0PHZvaWQqPigtMSk7CisgICAgQVNTRVJUX1VOVVNFRChh
bGxvY2F0aW9uLCBhbGxvY2F0aW9uICYmIGFsbG9jYXRpb24gIT0gZXhlY3V0YWJsZU1lbW9yeUFs
bG9jYXRpb25GYWlsdXJlKTsKKyAgICBBU1NFUlQoIW11bm1hcChhbGxvY2F0aW9uLCBzaXplKSk7
CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9NRVNTQUdFKG1tYXAobnVsbHB0ciwgc2l6ZSwgcHJv
dGVjdGlvbiwgZmxhZ3MsIGZkLCAwKSA9PSBleGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZhaWx1
cmUsICJBbGxvY2F0aW5nIGV4ZWN1dGFibGUgbWVtb3J5IHNob3VsZCBmYWlsIGFmdGVyIGRpc2Fi
bGVKSVQgaXMgY2FsbGVkLiIpOwogI2VuZGlmCiB9CiAKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCShyZXZpc2lvbiAyMzgzNTEpCisr
KyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw4IEBAIHB1YmxpYzoKICNlbHNlCiAgICAgc3RhdGljIHZv
aWQgZHVtcFByb2ZpbGUoKSB7IH0KICNlbmRpZgorICAgIAorICAgIEpTX0VYUE9SVF9QUklWQVRF
IHN0YXRpYyB2b2lkIGRpc2FibGVKSVQoKTsKIAogICAgIFJlZlB0cjxFeGVjdXRhYmxlTWVtb3J5
SGFuZGxlPiBhbGxvY2F0ZShzaXplX3Qgc2l6ZUluQnl0ZXMsIHZvaWQqIG93bmVyVUlELCBKSVRD
b21waWxhdGlvbkVmZm9ydCk7CiAKQEAgLTE3Myw2ICsxNzUsOCBAQCBwdWJsaWM6CiAKICAgICBS
ZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gYWxsb2NhdGUoc2l6ZV90LCB2b2lkKiwgSklU
Q29tcGlsYXRpb25FZmZvcnQpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAorICAgIHN0YXRpYyB2b2lk
IGRpc2FibGVKSVQoKSB7IH07CisgICAgCiAgICAgYm9vbCBpc1ZhbGlkRXhlY3V0YWJsZU1lbW9y
eShjb25zdCBBYnN0cmFjdExvY2tlciYsIHZvaWQqKSB7IHJldHVybiBmYWxzZTsgfQogCiAgICAg
c3RhdGljIHNpemVfdCBjb21taXR0ZWRCeXRlQ291bnQoKSB7IHJldHVybiAwOyB9CkluZGV4OiBT
b3VyY2UvV2ViS2l0L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwkocmV2aXNpb24gMjM4MzYwKQorKysgU291cmNlL1dlYktpdC9DaGFuZ2VMb2cJKHdvcmtp
bmcgY29weSkKQEAgLTEsMyArMSwzOCBAQAorMjAxOC0xMS0xNyAgQWxleCBDaHJpc3RlbnNlbiAg
PGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8gZGlzYWJsZSBK
SVQgaW4gYSBXS1dlYlZpZXcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5MTgyMgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgxMTkzNjA+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBTaGFyZWQvRW50
cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oOgor
ICAgICAgICAoV2ViS2l0OjpYUENTZXJ2aWNlSW5pdGlhbGl6ZXIpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW06CisgICAgICAgICgtW1dLV2ViVmlldyBfY2FuVXNl
SklUOl0pOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0
aW9uLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ubW06CisgICAgICAgICgtW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBlbmFi
bGVKSVRdKToKKyAgICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldEVuYWJs
ZUpJVDpdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmg6
CisgICAgICAgIChXZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6Q2xpZW50OjplbmFibGVKSVQgY29u
c3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFj
Lm1tOgorICAgICAgICAoV2ViS2l0OjpQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlUHJveHk6OmNhblVzZUpJVCk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OmVuYWJsZUpJVCBjb25zdCk6CisgICAgICAgICogVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJv
eHk6OnByb2Nlc3NQb29sIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzc1Byb3h5
Ojpwcm9jZXNzUG9vbCk6IERlbGV0ZWQuCisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQcm9jZXNz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUHJvY2Vzczo6Y2FuVXNlSklUKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuaDoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nl
c3MubWVzc2FnZXMuaW46CisKIDIwMTgtMTEtMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2ll
aEBhcHBsZS5jb20+CiAKICAgICAgICAgW2lPU10gUmVtb3ZlIGFsbCB1c2FnZXMgb2YgVUlJdGVt
UHJvdmlkZXIsIFVJSXRlbVByb3ZpZGVyUmVhZGluZywgYW5kIHJlbGF0ZWQgY2xhc3NlcwpJbmRl
eDogU291cmNlL1dlYktpdC9TY3JpcHRzL3dlYmtpdC9tZXNzYWdlcy5weQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CShyZXZpc2lvbiAyMzgz
NTEpCisrKyBTb3VyY2UvV2ViS2l0L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5CSh3b3JraW5n
IGNvcHkpCkBAIC0xOTAsNyArMTkwLDcgQEAgZGVmIGZvcndhcmRfZGVjbGFyYXRpb25zX2FuZF9o
ZWFkZXJzKHJlYwogICAgIF0pCiAKICAgICBmb3IgbWVzc2FnZSBpbiByZWNlaXZlci5tZXNzYWdl
czoKLSAgICAgICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9IE5vbmUgYW5kIG1lc3Nh
Z2UuaGFzX2F0dHJpYnV0ZShERUxBWUVEX0FUVFJJQlVURSk6CisgICAgICAgIGlmIG1lc3NhZ2Uu
cmVwbHlfcGFyYW1ldGVycyAhPSBOb25lOgogICAgICAgICAgICAgaGVhZGVycy5hZGQoJzx3dGYv
VGhyZWFkU2FmZVJlZkNvdW50ZWQuaD4nKQogICAgICAgICAgICAgdHlwZXNfYnlfbmFtZXNwYWNl
WydJUEMnXS51cGRhdGUoWygnY2xhc3MnLCAnQ29ubmVjdGlvbicpXSkKIApJbmRleDogU291cmNl
L1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBDU2VydmljZS9YUENTZXJ2
aWNlRW50cnlQb2ludC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2hhcmVkL0VudHJ5
UG9pbnRVdGlsaXRpZXMvbWFjL1hQQ1NlcnZpY2UvWFBDU2VydmljZUVudHJ5UG9pbnQuaAkocmV2
aXNpb24gMjM4MzUxKQorKysgU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGll
cy9tYWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oCSh3b3JraW5nIGNvcHkpCkBA
IC0yMywxMSArMjMsMTEgQEAKICAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KICAq
LwogCi0jaWZuZGVmIFhQQ1NlcnZpY2VFbnRyeVBvaW50X2gKLSNkZWZpbmUgWFBDU2VydmljZUVu
dHJ5UG9pbnRfaAorI3ByYWdtYSBvbmNlCiAKICNpbXBvcnQgIkNoaWxkUHJvY2Vzcy5oIgogI2lt
cG9ydCAiV2ViS2l0MkluaXRpYWxpemUuaCIKKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0V4ZWN1
dGFibGVBbGxvY2F0b3IuaD4KICNpbXBvcnQgPHd0Zi9PU09iamVjdFB0ci5oPgogI2ltcG9ydCA8
d3RmL3NwaS9kYXJ3aW4vWFBDU1BJLmg+CiAKQEAgLTcwLDYgKzcwLDkgQEAgcHJvdGVjdGVkOgog
dGVtcGxhdGU8dHlwZW5hbWUgWFBDU2VydmljZVR5cGUsIHR5cGVuYW1lIFhQQ1NlcnZpY2VJbml0
aWFsaXplckRlbGVnYXRlVHlwZT4KIHZvaWQgWFBDU2VydmljZUluaXRpYWxpemVyKE9TT2JqZWN0
UHRyPHhwY19jb25uZWN0aW9uX3Q+IGNvbm5lY3Rpb24sIHhwY19vYmplY3RfdCBpbml0aWFsaXpl
ck1lc3NhZ2UsIHhwY19vYmplY3RfdCBwcmlvcml0eUJvb3N0TWVzc2FnZSkKIHsKKyAgICBpZiAo
aW5pdGlhbGl6ZXJNZXNzYWdlICYmIHhwY19kaWN0aW9uYXJ5X2dldF9ib29sKGluaXRpYWxpemVy
TWVzc2FnZSwgImRpc2FibGUtaml0IikpCisgICAgICAgIEpTQzo6RXhlY3V0YWJsZUFsbG9jYXRv
cjo6ZGlzYWJsZUpJVCgpOworCiAgICAgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGVUeXBl
IGRlbGVnYXRlKFdURk1vdmUoY29ubmVjdGlvbiksIGluaXRpYWxpemVyTWVzc2FnZSk7CiAKICAg
ICAvLyBXZSBkb24ndCB3YW50IFhQQyB0byBiZSBpbiBjaGFyZ2Ugb2Ygd2hldGhlciB0aGUgcHJv
Y2VzcyBzaG91bGQgYmUgdGVybWluYXRlZCBvciBub3QsCkBAIC0xMjQsNSArMTI3LDMgQEAgaW50
IFhQQ1NlcnZpY2VNYWluKGludCwgY29uc3QgY2hhcioqKTsKIHZvaWQgWFBDU2VydmljZUV4aXQo
T1NPYmplY3RQdHI8eHBjX29iamVjdF90PiYmIHByaW9yaXR5Qm9vc3RNZXNzYWdlKTsKIAogfSAv
LyBuYW1lc3BhY2UgV2ViS2l0Ci0KLSNlbmRpZiAvLyBYUENTZXJ2aWNlRW50cnlQb2ludF9oCklu
ZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHJldmlzaW9uIDIz
ODM1MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTY1MjcsNiArNjUyNywxMSBAQCBXZWJQYWdlQ3JlYXRpb25QYXJhbWV0ZXJz
IFdlYlBhZ2VQcm94eTo6CiAgICAgcmV0dXJuIHBhcmFtZXRlcnM7CiB9CiAKK3ZvaWQgV2ViUGFn
ZVByb3h5OjpjYW5Vc2VKSVQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKK3sKKyAgICBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKS0+c2VuZFdpdGhBc3lu
Y1JlcGx5KE1lc3NhZ2VzOjpXZWJQcm9jZXNzOjpDYW5Vc2VKSVQoKSwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOworfQorCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZW50ZXJBY2NlbGVyYXRlZENv
bXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0JiBsYXllclRyZWVDb250ZXh0KQog
ewogICAgIHBhZ2VDbGllbnQoKS5lbnRlckFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKGxheWVy
VHJlZUNvbnRleHQpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJ
KHJldmlzaW9uIDIzODM1MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCSh3b3JraW5nIGNvcHkpCkBAIC04NzMsNyArODczLDkgQEAgcHVibGljOgogICAgIHZvaWQg
c2V0UGFnaW5hdGlvbkxpbmVHcmlkRW5hYmxlZChib29sKTsKICAgICBib29sIHBhZ2luYXRpb25M
aW5lR3JpZEVuYWJsZWQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2luYXRpb25MaW5lR3JpZEVuYWJs
ZWQ7IH0KICAgICB1bnNpZ25lZCBwYWdlQ291bnQoKSBjb25zdCB7IHJldHVybiBtX3BhZ2VDb3Vu
dDsgfQotICAgICAgICAKKworICAgIHZvaWQgY2FuVXNlSklUKENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoYm9vbCk+JiYpOworCiAjaWYgUExBVEZPUk0oTUFDKQogICAgIHZvaWQgc2V0VXNlU3lzdGVt
QXBwZWFyYW5jZShib29sKTsKICAgICBib29sIHVzZVN5c3RlbUFwcGVhcmFuY2UoKSBjb25zdCB7
IHJldHVybiBtX3VzZVN5c3RlbUFwcGVhcmFuY2U7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkocmV2aXNpb24gMjM4MzUxKQorKysgU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NTEsNiArNTEsNyBAQAogI2luY2x1ZGUgIldlYlVzZXJDb250ZW50Q29udHJvbGxlclByb3h5Lmgi
CiAjaW5jbHVkZSAiV2Vic2l0ZURhdGEuaCIKICNpbmNsdWRlICJXZWJzaXRlRGF0YUZldGNoT3B0
aW9uLmgiCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvVk0uaD4KICNpbmNsdWRlIDxXZWJDb3Jl
L0RpYWdub3N0aWNMb2dnaW5nS2V5cy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHJld2FybUluZm9y
bWF0aW9uLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9QdWJsaWNTdWZmaXguaD4KQEAgLTEyMjEsNiAr
MTIyMiwxMSBAQCB2b2lkIFdlYlByb2Nlc3NQcm94eTo6aXNSZXNwb25zaXZlKFdURjo6CiAgICAg
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzczo6TWFpblRocmVhZFBpbmcoKSwgMCk7CiB9CiAKK2Jv
b2wgV2ViUHJvY2Vzc1Byb3h5OjplbmFibGVKSVQoKSBjb25zdAoreworICAgIHJldHVybiBwcm9j
ZXNzUG9vbCgpLmNvbmZpZ3VyYXRpb24oKS5lbmFibGVKSVQoKTsKK30KKwogdm9pZCBXZWJQcm9j
ZXNzUHJveHk6OmRpZFJlY2VpdmVNYWluVGhyZWFkUGluZygpCiB7CiAgICAgcmVzcG9uc2l2ZW5l
c3NUaW1lcigpLnN0b3AoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCShyZXZpc2lvbiAyMzgzNTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHB1Ymxp
YzoKIAogICAgIFdlYkNvbm5lY3Rpb24qIHdlYkNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBt
X3dlYkNvbm5lY3Rpb24uZ2V0KCk7IH0KIAotICAgIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9v
bCgpIHsgQVNTRVJUKG1fcHJvY2Vzc1Bvb2wpOyByZXR1cm4gKm1fcHJvY2Vzc1Bvb2wuZ2V0KCk7
IH0KKyAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2woKSBjb25zdCB7IEFTU0VSVChtX3By
b2Nlc3NQb29sKTsgcmV0dXJuICptX3Byb2Nlc3NQb29sLmdldCgpOyB9CiAKICAgICAvLyBGSVhN
RTogV2Vic2l0ZURhdGFTdG9yZXMgc2hvdWxkIGJlIG1hZGUgcGVyLVdlYlBhZ2VQcm94eSB0aHJv
dWdob3V0IFdlYktpdDIKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkg
Y29uc3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CkBAIC0yNTgsNiArMjU4
LDggQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2FjaGVNZWRpYU1JTUVUeXBlc0ludGVybmFsKGNv
bnN0IFZlY3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKIAorICAgIGJvb2wgZW5hYmxlSklUKCkgY29u
c3QgZmluYWw7CisgICAgCiBwcml2YXRlOgogICAgIC8vIElQQyBtZXNzYWdlIGhhbmRsZXJzLgog
ICAgIHZvaWQgdXBkYXRlQmFja0ZvcndhcmRJdGVtKGNvbnN0IEJhY2tGb3J3YXJkTGlzdEl0ZW1T
dGF0ZSYpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29s
Q29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkocmV2aXNpb24gMjM4MzUxKQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVByb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDcsNiArMTQ3LDkgQEAgcHVibGljOgogICAgIGJvb2wgc2hvdWxk
Q2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcygpIGNvbnN0IHsgcmV0dXJuIG1fc2hvdWxkQ2FwdHVy
ZURpc3BsYXlJblVJUHJvY2VzczsgfQogICAgIHZvaWQgc2V0U2hvdWxkQ2FwdHVyZURpc3BsYXlJ
blVJUHJvY2Vzcyhib29sIHNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MpIHsgbV9zaG91
bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzID0gc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJv
Y2VzczsgfQogCisgICAgYm9vbCBlbmFibGVKSVQoKSBjb25zdCB7IHJldHVybiBtX2VuYWJsZUpJ
VDsgfQorICAgIHZvaWQgc2V0RW5hYmxlSklUKGJvb2wgZW5hYmxlKSB7IG1fZW5hYmxlSklUID0g
ZW5hYmxlOyB9CisgICAgCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb25zdCBXVEY6
OlN0cmluZyYgY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlKCkgY29uc3QgeyByZXR1cm4gbV9j
dERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7IH0KICAgICB2b2lkIHNldENURGF0YUNvbm5lY3Rp
b25TZXJ2aWNlVHlwZShjb25zdCBXVEY6OlN0cmluZyYgY3REYXRhQ29ubmVjdGlvblNlcnZpY2VU
eXBlKSB7IG1fY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlID0gY3REYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlOyB9CkBAIC0yMjAsNiArMjIzLDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fcHJv
Y2Vzc1N3YXBzT25XaW5kb3dPcGVuV2l0aE9wZW5lciB7IGZhbHNlIH07CiAgICAgc3RkOjpvcHRp
b25hbDxib29sPiBtX2lzQXV0b21hdGljUHJvY2Vzc1dhcm1pbmdFbmFibGVkQnlDbGllbnQ7CiAg
ICAgV1RGOjpTdHJpbmcgbV9jdXN0b21XZWJDb250ZW50U2VydmljZUJ1bmRsZUlkZW50aWZpZXI7
CisgICAgYm9vbCBtX2VuYWJsZUpJVCB7IHRydWUgfTsKIAogI2lmIFBMQVRGT1JNKElPU19GQU1J
TFkpCiAgICAgV1RGOjpTdHJpbmcgbV9jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0JKHJl
dmlzaW9uIDIzODM1MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dl
YlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTQ3NjgsNiArNDc2OCwxMyBAQCArIChOU1VSTCAq
KV92aXNpdFVuc2FmZVdlYnNpdGVTZW50aW5lbAogICAgIHJldHVybiBXZWJLaXQ6OlNhZmVCcm93
c2luZ1dhcm5pbmc6OnZpc2l0VW5zYWZlV2Vic2l0ZVNlbnRpbmVsKCk7CiB9CiAKKy0gKHZvaWQp
X2NhblVzZUpJVDoodm9pZCheKShCT09MKSljb21wbGV0aW9uSGFuZGxlcgoreworICAgIF9wYWdl
LT5jYW5Vc2VKSVQoW2NvbXBsZXRpb25IYW5kbGVyID0gbWFrZUJsb2NrUHRyKGNvbXBsZXRpb25I
YW5kbGVyKV0gKGJvb2wgY2FuVXNlKSB7CisgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGNhblVz
ZSk7CisgICAgfSk7Cit9CisKIC0gKHZvaWQpX2V2YWx1YXRlSmF2YVNjcmlwdFdpdGhvdXRVc2Vy
R2VzdHVyZTooTlNTdHJpbmcgKilqYXZhU2NyaXB0U3RyaW5nIGNvbXBsZXRpb25IYW5kbGVyOih2
b2lkICheKShpZCwgTlNFcnJvciAqKSljb21wbGV0aW9uSGFuZGxlcgogewogICAgIFtzZWxmIF9l
dmFsdWF0ZUphdmFTY3JpcHQ6amF2YVNjcmlwdFN0cmluZyBmb3JjZVVzZXJHZXN0dXJlOk5PIGNv
bXBsZXRpb25IYW5kbGVyOmNvbXBsZXRpb25IYW5kbGVyXTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAkocmV2aXNp
b24gMjM4MzUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
d1ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtMTkyLDYgKzE5Miw3IEBAIHR5cGVkZWYgTlNf
T1BUSU9OUyhOU1VJbnRlZ2VyLCBfV0tSZWN0RWQKICsgKE5TVVJMICopX3Zpc2l0VW5zYWZlV2Vi
c2l0ZVNlbnRpbmVsIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tf
SU9TX1RCQSkpOwogLSAodm9pZClfc2hvd1NhZmVCcm93c2luZ1dhcm5pbmdXaXRoVGl0bGU6KE5T
U3RyaW5nICopdGl0bGUgd2FybmluZzooTlNTdHJpbmcgKil3YXJuaW5nIGRldGFpbHM6KE5TQXR0
cmlidXRlZFN0cmluZyAqKWRldGFpbHMgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQoXikoQk9PTCkp
Y29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlv
cyhXS19JT1NfVEJBKSk7CiAKKy0gKHZvaWQpX2NhblVzZUpJVDoodm9pZCheKShCT09MKSljb21w
bGV0aW9uSGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdL
X0lPU19UQkEpKTsKIC0gKElCQWN0aW9uKV9hbGlnbkNlbnRlcjooaWQpc2VuZGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAoSUJBY3Rp
b24pX2FsaWduSnVzdGlmaWVkOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtIChJQkFjdGlvbilfYWxpZ25MZWZ0OihpZClz
ZW5kZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJB
KSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyMzgzNTEp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmgJKHdvcmtpbmcgY29weSkKQEAgLTY4LDYgKzY4LDcgQEAgV0tfQ0xBU1NfQVZB
SUxBQkxFKG1hY29zeCgxMC4xMCksIGlvcyg4LgogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
cHJld2FybXNQcm9jZXNzZXNBdXRvbWF0aWNhbGx5IFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdL
X01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wg
cGFnZUNhY2hlRW5hYmxlZCBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xNCksIGlvcygxMi4w
KSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1p
bmF0aW9uT25TeXN0ZW1DaGFuZ2UgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goMTAuMTQpLCBpb3Mo
MTIuMCkpOworQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgZW5hYmxlSklUIFdLX0FQSV9BVkFJ
TEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCiBAZW5kCiAKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQkocmV2aXNpb24gMjM4MzUxKQorKysg
U291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjk4LDYgKzI5OCwxNiBAQCAtIChCT09MKXN1cHBy
ZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PCiAgICAgcmV0dXJuIF9wcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24tPnN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSgp
OwogfQogCistIChCT09MKWVuYWJsZUpJVAoreworICAgIHJldHVybiBfcHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLT5lbmFibGVKSVQoKTsKK30KKworLSAodm9pZClzZXRFbmFibGVKSVQ6KEJPT0wp
ZW5hYmxlCit7CisgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c2V0RW5hYmxlSklUKGVu
YWJsZSk7Cit9CisKIC0gKHZvaWQpc2V0U3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9u
U3lzdGVtQ2hhbmdlOihCT09MKXN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3Rl
bUNoYW5nZQogewogICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldFN1cHByZXNzZXND
b25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZShzdXBwcmVzc2VzQ29ubmVjdGlvblRl
cm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2UpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
TGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHJldmlzaW9uIDIzODM1MSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q2xp
ZW50KCkgeyB9CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNo
aW5nKFByb2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgPSAwOwor
ICAgICAgICB2aXJ0dWFsIGJvb2wgZW5hYmxlSklUKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQog
ICAgIH07CiAgICAgCiAgICAgZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1
bmNoZXJNYWMubW0JKHJldmlzaW9uIDIzODM1MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3
Myw2ICsxNzMsMTAgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogCiAg
ICAgLy8gRklYTUU6IFN3aXRjaCB0byB4cGNfY29ubmVjdGlvbl9zZXRfYm9vdHN0cmFwIG9uY2Ug
aXQncyBhdmFpbGFibGUgZXZlcnl3aGVyZSB3ZSBuZWVkLgogICAgIGF1dG8gYm9vdHN0cmFwTWVz
c2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxw
dHIsIDApKTsKKyAgICAKKyAgICBpZiAobV9jbGllbnQgJiYgIW1fY2xpZW50LT5lbmFibGVKSVQo
KSkKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X2Jvb2woYm9vdHN0cmFwTWVzc2FnZS5nZXQo
KSwgImRpc2FibGUtaml0IiwgdHJ1ZSk7CisKICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5n
KGJvb3RzdHJhcE1lc3NhZ2UuZ2V0KCksICJtZXNzYWdlLW5hbWUiLCAiYm9vdHN0cmFwIik7CiAK
ICAgICB4cGNfZGljdGlvbmFyeV9zZXRfbWFjaF9zZW5kKGJvb3RzdHJhcE1lc3NhZ2UuZ2V0KCks
ICJzZXJ2ZXItcG9ydCIsIGxpc3RlbmluZ1BvcnQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjM4MzUxKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzAsNiArOTMwLDEx
IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG8KICNlbmRpZgogfQog
Cit2b2lkIFdlYlByb2Nlc3M6OmNhblVzZUpJVChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJvb2wp
PiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKEpTQzo6Vk06
OmNhblVzZUpJVCgpKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpjbGVhclBsdWdpbkNsaWVudFBv
bGljaWVzKCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgUExBVEZPUk0o
TUFDKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lvbiAy
MzgzNTEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3JraW5n
IGNvcHkpCkBAIC0yMDQsNiArMjA0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZW5kUHJld2Fy
bUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCisgICAgdm9pZCBjYW5Vc2VKSVQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIHZvaWQgcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7CiAjZW5kaWYK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2VzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAyMzgzNTEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJv
Y2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4IEBAIG1lc3Nh
Z2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAjZW5kaWYKIAorICAg
IENhblVzZUpJVCgpIC0+IChib29sIGNhblVzZSkgQXN5bmMKKwogI2lmIFBMQVRGT1JNKENPQ09B
KQogICAgIFNldE1lZGlhTUlNRVR5cGVzKFZlY3RvcjxTdHJpbmc+IHR5cGVzKQogI2VuZGlmCklu
ZGV4OiBUb29scy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvQ2hhbmdlTG9nCShyZXZp
c2lvbiAyMzgzNjApCisrKyBUb29scy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyAr
MSwxNSBAQAorMjAxOC0xMS0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJr
aXQub3JnPgorCisgICAgICAgIEFkZCBTUEkgdG8gZGlzYWJsZSBKSVQgaW4gYSBXS1dlYlZpZXcK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE5MTgyMgor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjgxMTkzNjA+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEku
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3Rz
L1dlYktpdENvY29hL0Rpc2FibGVKSVQubW06IEFkZGVkLgorICAgICAgICAoVEVTVCk6CisKIDIw
MTgtMTEtMTcgIFdlbnNvbiBIc2llaCAgPHdlbnNvbl9oc2llaEBhcHBsZS5jb20+CiAKICAgICAg
ICAgW2lPU10gUmVtb3ZlIGFsbCB1c2FnZXMgb2YgVUlJdGVtUHJvdmlkZXIsIFVJSXRlbVByb3Zp
ZGVyUmVhZGluZywgYW5kIHJlbGF0ZWQgY2xhc3NlcwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQ
SS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
VG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2oJKHJldmlzaW9uIDIzODM1MSkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQ
SS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0yNzIsNiArMjcy
LDcgQEAKIAkJNTdDM0ZBNjYxRjdDMjQ4RjAwOUQ0QjgwIC8qIFdlYWtQdHIuY3BwIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUNCOUJDMzcxQTY3NDgyMzAw
RkU1Njc4IC8qIFdlYWtQdHIuY3BwICovOyB9OwogCQk1N0Y0QUFBMDIwOEZBRUYwMDBBNjhFOUUg
LyogU1NMS2V5R2VuZXJhdG9yLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTdGNEFBOUYyMDhGQTgzRDAwQTY4RTlFIC8qIFNTTEtleUdlbmVyYXRvci5t
bSAqLzsgfTsKIAkJNTdGNTZBNUMxQzdGOENDMTAwRjMxRDdFIC8qIElzTmF2aWdhdGlvbkFjdGlv
blRydXN0ZWQuaHRtbCBpbiBDb3B5IFJlc291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSA1N0Y1NkE1QjFDN0Y4QTQwMDBGMzFEN0UgLyogSXNOYXZpZ2F0aW9uQWN0aW9u
VHJ1c3RlZC5odG1sICovOyB9OworCQk1QzAxNjBDMTIxQTEzMjQ2MDA3N0ZBMzIgLyogRGlzYWJs
ZUpJVC5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVD
MDE2MEMwMjFBMTMyMzIwMDc3RkEzMiAvKiBEaXNhYmxlSklULm1tICovOyB9OwogCQk1QzBCRjg4
RDFERDU5NjREMDBCMDAzMjggLyogTWVtb3J5UHJlc3N1cmVIYW5kbGVyLm1tIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwQkY4OEMxREQ1OTU3NDAwQjAw
MzI4IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5tbSAqLzsgfTsKIAkJNUMwQkY4OTExREQ1OTlB
OTAwQjAwMzI4IC8qIFdlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW0gaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1QzBCRjg4RjFERDU5OTlCMDBCMDAzMjggLyog
V2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbSAqLzsgfTsKIAkJNUMwQkY4OTIxREQ1OTlCNjAwQjAw
MzI4IC8qIEVhcmx5S1ZPQ3Jhc2gubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAxQTlGQjZDQzFDQTM0QkU1MDA5NjYxMjQgLyogRWFybHlLVk9DcmFzaC5t
bSAqLzsgfTsKQEAgLTE2MDQsNiArMTYwNSw3IEBACiAJCTU3RjEwRDkyMUM3RTdCMzgwMEVDREYz
MCAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAub2JqY3BwOyBwYXRoID0gSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5tbTsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdGNEFBOUYyMDhGQTgzRDAwQTY4RTlFIC8qIFNTTEtleUdl
bmVyYXRvci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNTTEtleUdlbmVyYXRvci5tbTsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTdGNTZBNUIxQzdGOEE0MDAwRjMxRDdFIC8qIElz
TmF2aWdhdGlvbkFjdGlvblRydXN0ZWQuaHRtbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuaHRtbDsgcGF0aCA9
IElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQuaHRtbDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKKwkJNUMwMTYwQzAyMUExMzIzMjAwNzdGQTMyIC8qIERpc2FibGVKSVQubW0gKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaXNhYmxlSklULm1tOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwogCQk1QzBCRjg4QzFERDU5NTc0MDBCMDAzMjggLyogTWVtb3J5UHJl
c3N1cmVIYW5kbGVyLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0g
TWVtb3J5UHJlc3N1cmVIYW5kbGVyLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
QzBCRjg4RjFERDU5OTlCMDBCMDAzMjggLyogV2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbSAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFdlYlZpZXdDYW5QYXN0ZVplcm9Q
bmcubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMTlBNTIzMUZEMEYzMjYwMEVF
QTMyMyAvKiBDb29raWVQcml2YXRlQnJvd3NpbmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5vYmpjcHA7IHBhdGggPSBDb29raWVQcml2YXRlQnJvd3NpbmcubW07IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CkBAIC0yMzkxLDYgKzIzOTMsNyBAQAogCQkJCTJEQzRDRjc2MUQyRDlERDgw
MEVDQ0M5NCAvKiBEYXRhRGV0ZWN0aW9uLm1tICovLAogCQkJCTUxOEVFNTFDMjBBNzhEMzMwMEUw
MjRGMyAvKiBEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uLm1tICovLAogCQkJCUNFQTdG
NTdCMjA4OTVGNUIwMDc4RUY2RSAvKiBEaWRSZXNpZ25JbnB1dEVsZW1lbnRTdHJvbmdQYXNzd29y
ZEFwcGVhcmFuY2UubW0gKi8sCisJCQkJNUMwMTYwQzAyMUExMzIzMjAwNzdGQTMyIC8qIERpc2Fi
bGVKSVQubW0gKi8sCiAJCQkJNTE4RUU1MUEyMEE3OENGQjAwRTAyNEYzIC8qIERvQWZ0ZXJOZXh0
UHJlc2VudGF0aW9uVXBkYXRlQWZ0ZXJDcmFzaC5tbSAqLywKIAkJCQk1MThFRTUxNjIwQTc4Q0RG
MDBFMDI0RjMgLyogRG91YmxlRGVmZXJzTG9hZGluZy5tbSAqLywKIAkJCQk1MThFRTUxNzIwQTc4
Q0RGMDBFMDI0RjMgLyogRG91YmxlRGVmZXJzTG9hZGluZ1BsdWdpbi5tbSAqLywKQEAgLTM4NDMs
NiArMzg0Niw3IEBACiAJCQkJN0NDRTdFRTkxQTQxMUFFNjAwNDQ3QzRDIC8qIERpZEFzc29jaWF0
ZUZvcm1Db250cm9scy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VFQTFBNDExQUU2MDA0
NDdDNEMgLyogRGlkTm90SGFuZGxlS2V5RG93bi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBRDU3
QUMyMTFEQTc0NjVCMDBGRjFCREUgLyogRGlkUmVtb3ZlRnJhbWVGcm9tSGllYXJjaHlJblBhZ2VD
YWNoZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQk1QzAxNjBDMTIxQTEzMjQ2MDA3N0ZBMzIgLyog
RGlzYWJsZUpJVC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTUxOEVFNTFCMjBBNzhEMDAwMEUwMjRG
MyAvKiBEb0FmdGVyTmV4dFByZXNlbnRhdGlvblVwZGF0ZUFmdGVyQ3Jhc2gubW0gaW4gU291cmNl
cyAqLywKIAkJCQk3Q0NFN0VFQjFBNDExQUU2MDA0NDdDNEMgLyogRG9jdW1lbnRTdGFydFVzZXJT
Y3JpcHRBbGVydENyYXNoLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUJCMUE0MTFBN0Uw
MDQ0N0M0QyAvKiBET01IVE1MVGFibGVDZWxsQ2VsbEFib3ZlLm1tIGluIFNvdXJjZXMgKi8sCklu
ZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29hL0Rpc2FibGVKSVQubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EaXNh
YmxlSklULm1tCShub25leGlzdGVudCkKKysrIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2Vi
S2l0Q29jb2EvRGlzYWJsZUpJVC5tbQkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDU1IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2ltcG9ydCAiY29uZmlnLmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisj
aW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5oIgorI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bv
b2xQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJLaXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9y
dCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1Jl
dGFpblB0ci5oPgorCitURVNUKFdlYktpdCwgRGlzYWJsZUpJVCkKK3sKKyAgICBhdXRvIHByb2Nl
c3NQb29sQ29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlv
biBuZXddKTsKKyAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldEVuYWJsZUpJVDpOT107
CisgICAgYXV0byBjb25maWd1cmF0aW9uID0gYWRvcHROUyhbV0tXZWJWaWV3Q29uZmlndXJhdGlv
biBuZXddKTsKKyAgICBbY29uZmlndXJhdGlvbiBzZXRQcm9jZXNzUG9vbDpbW1tXS1Byb2Nlc3NQ
b29sIGFsbG9jXSBfaW5pdFdpdGhDb25maWd1cmF0aW9uOnByb2Nlc3NQb29sQ29uZmlndXJhdGlv
bi5nZXQoKV0gYXV0b3JlbGVhc2VdXTsKKyAgICBhdXRvIHdlYlZpZXcgPSBhZG9wdE5TKFtbV0tX
ZWJWaWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNv
bmZpZ3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIF9fYmxvY2sgYm9vbCBkb25l
ID0gZmFsc2U7CisgICAgW3dlYlZpZXcgZXZhbHVhdGVKYXZhU2NyaXB0OkAiZm9yKGk9MDtpPDEw
MDAwMDsrK2kpOydhYmMnIiBjb21wbGV0aW9uSGFuZGxlcjpeKGlkIHJlc3VsdCwgTlNFcnJvciAq
ZXJyb3IpIHsKKyAgICAgICAgRVhQRUNUX1RSVUUoZXJyb3IgPT0gbmlsKTsKKyAgICAgICAgRVhQ
RUNUX1NUUkVRKFtyZXN1bHQgVVRGOFN0cmluZ10sICJhYmMiKTsKKyAgICAgICAgW3dlYlZpZXcg
X2NhblVzZUpJVDpeKEJPT0wgY2FuVXNlKSB7CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShjYW5V
c2UpOworICAgICAgICAgICAgZG9uZSA9IHRydWU7CisgICAgICAgIH1dOworICAgIH1dOworICAg
IFRlc3RXZWJLaXRBUEk6OlV0aWw6OnJ1bigmZG9uZSk7Cit9CisKKyNlbmRpZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355287</attachid>
            <date>2018-11-19 11:10:51 -0800</date>
            <delta_ts>2018-11-19 17:23:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191822-20181119111050.patch</filename>
            <type>text/plain</type>
            <size>27010</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM4MzUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDE4LTExLTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQWRkIFNQSSB0byBkaXNhYmxlIEpJVCBpbiBhIFdLV2ViVmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxODIyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yODExOTM2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6aml0RGlzYWJsZWQpOgorICAgICAgICAoSlNDOjphbGxvd0pJVCk6CisgICAgICAg
IChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OnNldEpJVEVuYWJsZWQpOgorICAgICAgICAqIGpp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0
b3I6OnNldEpJVEVuYWJsZWQpOgorCiAyMDE4LTExLTE3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOZXR3b3JrOiBhZGQgYnV0dG9u
IHRvIHNob3cgc3lzdGVtIGNlcnRpZmljYXRlIGRpYWxvZwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMzgz
NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTIgKzExMywzMiBAQCBKU19FWFBPUlRfUFJJVkFURSBK
SVRXcml0ZVNlcGFyYXRlSGVhcHNGCiBzdGF0aWMgdWludHB0cl90IHN0YXJ0T2ZGaXhlZFdyaXRh
YmxlTWVtb3J5UG9vbDsKICNlbmRpZgogCi1zdGF0aWMgYm9vbCBhbGxvd0pJVCgpCitzdGF0aWMg
Ym9vbCBzX2ppdEVuYWJsZWQgPSB0cnVlOworc3RhdGljIGJvb2wgaXNKSVRFbmFibGVkKCkKIHsK
ICNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUoQVJNKSkKLSAg
ICByZXR1cm4gcHJvY2Vzc0hhc0VudGl0bGVtZW50KCJkeW5hbWljLWNvZGVzaWduaW5nIik7Cisg
ICAgcmV0dXJuIHByb2Nlc3NIYXNFbnRpdGxlbWVudCgiZHluYW1pYy1jb2Rlc2lnbmluZyIpICYm
IHNfaml0RW5hYmxlZDsKICNlbHNlCi0gICAgcmV0dXJuIHRydWU7CisgICAgcmV0dXJuIHNfaml0
RW5hYmxlZDsKKyNlbmRpZgorfQorCit2b2lkIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnNldEpJVEVu
YWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIHNfaml0RW5hYmxlZCA9IGVuYWJsZWQ7CisKKyNp
ZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUoQVJNKSkKKyAgICBp
ZiAoIWVuYWJsZWQpIHsKKyAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplID0gMTsKKyAgICAg
ICAgY29uc3RleHByIGludCBwcm90ZWN0aW9uID0gUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBS
T1RfRVhFQzsKKyAgICAgICAgY29uc3RleHByIGludCBmbGFncyA9IE1BUF9QUklWQVRFIHwgTUFQ
X0FOT04gfCBNQVBfSklUOworICAgICAgICBjb25zdGV4cHIgaW50IGZkID0gT1NBbGxvY2F0b3I6
OkpTSklUQ29kZVBhZ2VzOworICAgICAgICB2b2lkKiBhbGxvY2F0aW9uID0gbW1hcChudWxscHRy
LCBzaXplLCBwcm90ZWN0aW9uLCBmbGFncywgZmQsIDApOworICAgICAgICBjb25zdCB2b2lkKiBl
eGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZhaWx1cmUgPSByZWludGVycHJldF9jYXN0PHZvaWQq
PigtMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShhbGxvY2F0aW9uICYm
IGFsbG9jYXRpb24gIT0gZXhlY3V0YWJsZU1lbW9yeUFsbG9jYXRpb25GYWlsdXJlLCAiV2Ugc2hv
dWxkIG5vdCBoYXZlIGFsbG9jYXRlZCBleGVjdXRhYmxlIG1lbW9yeSBiZWZvcmUgZGlzYWJsaW5n
IHRoZSBKSVQuIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSghbXVubWFw
KGFsbG9jYXRpb24sIHNpemUpLCAiVW5tYXBwaW5nIGV4ZWN1dGFibGUgbWVtb3J5IHNob3VsZCBz
dWNjZWVkIHNvIHdlIGRvIG5vdCBoYXZlIGFueSBleGVjdXRhYmxlIG1lbW9yeSBpbiB0aGUgYWRk
cmVzcyBzcGFjZSIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0UobW1hcChu
dWxscHRyLCBzaXplLCBwcm90ZWN0aW9uLCBmbGFncywgZmQsIDApID09IGV4ZWN1dGFibGVNZW1v
cnlBbGxvY2F0aW9uRmFpbHVyZSwgIkFsbG9jYXRpbmcgZXhlY3V0YWJsZSBtZW1vcnkgc2hvdWxk
IGZhaWwgYWZ0ZXIgc2V0SklURW5hYmxlZChmYWxzZSkgaXMgY2FsbGVkLiIpOworICAgIH0KICNl
bmRpZgogfQogCkBAIC0xMjgsNyArMTQ4LDcgQEAgcHVibGljOgogICAgIEZpeGVkVk1Qb29sRXhl
Y3V0YWJsZUFsbG9jYXRvcigpCiAgICAgICAgIDogTWV0YUFsbG9jYXRvcihqaXRBbGxvY2F0aW9u
R3JhbnVsZSkgLy8gcm91bmQgdXAgYWxsIGFsbG9jYXRpb25zIHRvIDMyIGJ5dGVzCiAgICAgewot
ICAgICAgICBpZiAoIWFsbG93SklUKCkpCisgICAgICAgIGlmICghaXNKSVRFbmFibGVkKCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgc2l6ZV90IHJlc2VydmF0aW9uU2l6ZTsKSW5k
ZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5o
CShyZXZpc2lvbiAyMzgzNTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw4IEBAIHB1YmxpYzoK
ICNlbHNlCiAgICAgc3RhdGljIHZvaWQgZHVtcFByb2ZpbGUoKSB7IH0KICNlbmRpZgorICAgIAor
ICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHNldEpJVEVuYWJsZWQoYm9vbCk7CiAK
ICAgICBSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gYWxsb2NhdGUoc2l6ZV90IHNpemVJ
bkJ5dGVzLCB2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQpOwogCkBAIC0xNzMs
NiArMTc1LDggQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlIYW5kbGU+
IGFsbG9jYXRlKHNpemVfdCwgdm9pZCosIEpJVENvbXBpbGF0aW9uRWZmb3J0KSB7IHJldHVybiBu
dWxscHRyOyB9CiAKKyAgICBzdGF0aWMgdm9pZCBzZXRKSVRFbmFibGVkKGJvb2wpIHsgfTsKKyAg
ICAKICAgICBib29sIGlzVmFsaWRFeGVjdXRhYmxlTWVtb3J5KGNvbnN0IEFic3RyYWN0TG9ja2Vy
Jiwgdm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGNvbW1pdHRl
ZEJ5dGVDb3VudCgpIHsgcmV0dXJuIDA7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMzgzNjAp
CisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDM4
IEBACisyMDE4LTExLTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBkaXNhYmxlIEpJVCBpbiBhIFdLV2ViVmlldworICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxODIyCisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS8yODExOTM2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9Y
UENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lmg6CisgICAgICAgIChXZWJLaXQ6OlhQQ1Nl
cnZpY2VJbml0aWFsaXplcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9v
bENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jYW5Vc2VKSVQ6XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNz
L0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVBy
b2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToKKyAgICAgICAg
KC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGVuYWJsZUpJVF0pOgorICAgICAgICAoLVtf
V0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0RW5hYmxlSklUOl0pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKFdlYktpdDo6UHJv
Y2Vzc0xhdW5jaGVyOjpDbGllbnQ6OmVuYWJsZUpJVCBjb25zdCk6CisgICAgICAgICogVUlQcm9j
ZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChXZWJLaXQ6
OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9jZXNzL1dl
YlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2FuVXNlSklU
KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94
eTo6ZW5hYmxlSklUIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5
Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1Bvb2wgY29uc3Qp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NQb29sKTogRGVsZXRl
ZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAoV2ViS2l0
OjpXZWJQcm9jZXNzOjpjYW5Vc2VKSVQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vz
cy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoKKwogMjAx
OC0xMS0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbaU9TXSBSZW1vdmUgYWxsIHVzYWdlcyBvZiBVSUl0ZW1Qcm92aWRlciwgVUlJdGVtUHJvdmlk
ZXJSZWFkaW5nLCBhbmQgcmVsYXRlZCBjbGFzc2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0L1Njcmlw
dHMvd2Via2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvU2NyaXB0
cy93ZWJraXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDIzODM1MSkKKysrIFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw3ICsxOTAs
NyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMocmVjCiAgICAgXSkKIAog
ICAgIGZvciBtZXNzYWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgotICAgICAgICBpZiBtZXNzYWdl
LnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZSBhbmQgbWVzc2FnZS5oYXNfYXR0cmlidXRlKERFTEFZ
RURfQVRUUklCVVRFKToKKyAgICAgICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJzICE9IE5v
bmU6CiAgICAgICAgICAgICBoZWFkZXJzLmFkZCgnPHd0Zi9UaHJlYWRTYWZlUmVmQ291bnRlZC5o
PicpCiAgICAgICAgICAgICB0eXBlc19ieV9uYW1lc3BhY2VbJ0lQQyddLnVwZGF0ZShbKCdjbGFz
cycsICdDb25uZWN0aW9uJyldKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBv
aW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9tYWMvWFBD
U2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oCShyZXZpc2lvbiAyMzgzNTEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1Nl
cnZpY2VFbnRyeVBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDExICsyMywxMSBAQAogICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgWFBDU2Vydmlj
ZUVudHJ5UG9pbnRfaAotI2RlZmluZSBYUENTZXJ2aWNlRW50cnlQb2ludF9oCisjcHJhZ21hIG9u
Y2UKIAogI2ltcG9ydCAiQ2hpbGRQcm9jZXNzLmgiCiAjaW1wb3J0ICJXZWJLaXQySW5pdGlhbGl6
ZS5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvRXhlY3V0YWJsZUFsbG9jYXRvci5oPgogI2lt
cG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9YUENTUEku
aD4KIApAQCAtNzAsNiArNzAsOSBAQCBwcm90ZWN0ZWQ6CiB0ZW1wbGF0ZTx0eXBlbmFtZSBYUENT
ZXJ2aWNlVHlwZSwgdHlwZW5hbWUgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGVUeXBlPgog
dm9pZCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXIoT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rpb25fdD4g
Y29ubmVjdGlvbiwgeHBjX29iamVjdF90IGluaXRpYWxpemVyTWVzc2FnZSwgeHBjX29iamVjdF90
IHByaW9yaXR5Qm9vc3RNZXNzYWdlKQogeworICAgIGlmIChpbml0aWFsaXplck1lc3NhZ2UgJiYg
eHBjX2RpY3Rpb25hcnlfZ2V0X2Jvb2woaW5pdGlhbGl6ZXJNZXNzYWdlLCAiZGlzYWJsZS1qaXQi
KSkKKyAgICAgICAgSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVkKGZhbHNl
KTsKKwogICAgIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlVHlwZSBkZWxlZ2F0ZShXVEZN
b3ZlKGNvbm5lY3Rpb24pLCBpbml0aWFsaXplck1lc3NhZ2UpOwogCiAgICAgLy8gV2UgZG9uJ3Qg
d2FudCBYUEMgdG8gYmUgaW4gY2hhcmdlIG9mIHdoZXRoZXIgdGhlIHByb2Nlc3Mgc2hvdWxkIGJl
IHRlcm1pbmF0ZWQgb3Igbm90LApAQCAtMTI0LDUgKzEyNywzIEBAIGludCBYUENTZXJ2aWNlTWFp
bihpbnQsIGNvbnN0IGNoYXIqKik7CiB2b2lkIFhQQ1NlcnZpY2VFeGl0KE9TT2JqZWN0UHRyPHhw
Y19vYmplY3RfdD4mJiBwcmlvcml0eUJvb3N0TWVzc2FnZSk7CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdAotCi0jZW5kaWYgLy8gWFBDU2VydmljZUVudHJ5UG9pbnRfaApJbmRleDogU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzgzNTEpCisrKyBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NTI3LDYgKzY1MjcsMTEgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdlUHJveHk6
OgogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6aXNKSVRF
bmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhhbmRsZXIp
Cit7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBseShNZXNz
YWdlczo6V2ViUHJvY2Vzczo6SXNKSVRFbmFibGVkKCksIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmVudGVyQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKIHsKICAgICBw
YWdlQ2xpZW50KCkuZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShsYXllclRyZWVDb250
ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lv
biAyMzgzNTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29y
a2luZyBjb3B5KQpAQCAtODczLDcgKzg3Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldFBhZ2lu
YXRpb25MaW5lR3JpZEVuYWJsZWQoYm9vbCk7CiAgICAgYm9vbCBwYWdpbmF0aW9uTGluZUdyaWRF
bmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wYWdpbmF0aW9uTGluZUdyaWRFbmFibGVkOyB9CiAg
ICAgdW5zaWduZWQgcGFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlQ291bnQ7IH0KLSAg
ICAgICAgCisKKyAgICB2b2lkIGlzSklURW5hYmxlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmKTsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHNldFVzZVN5c3RlbUFwcGVh
cmFuY2UoYm9vbCk7CiAgICAgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlKCkgY29uc3QgeyByZXR1
cm4gbV91c2VTeXN0ZW1BcHBlYXJhbmNlOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIzODM1MSkKKysrIFNvdXJjZS9XZWJL
aXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTUxLDYg
KzUxLDcgQEAKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9wdGlvbi5o
IgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9EaWFn
bm9zdGljTG9nZ2luZ0tleXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByZXdhcm1JbmZvcm1hdGlv
bi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljU3VmZml4Lmg+CkBAIC0xMjIxLDYgKzEyMjIs
MTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmlzUmVzcG9uc2l2ZShXVEY6OgogICAgIHNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3M6Ok1haW5UaHJlYWRQaW5nKCksIDApOwogfQogCitib29sIFdl
YlByb2Nlc3NQcm94eTo6SklURW5hYmxlZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIHByb2Nlc3NQ
b29sKCkuY29uZmlndXJhdGlvbigpLkpJVEVuYWJsZWQoKTsKK30KKwogdm9pZCBXZWJQcm9jZXNz
UHJveHk6OmRpZFJlY2VpdmVNYWluVGhyZWFkUGluZygpCiB7CiAgICAgcmVzcG9uc2l2ZW5lc3NU
aW1lcigpLnN0b3AoKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCShyZXZpc2lvbiAyMzgzNTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUHJveHkuaAkod29ya2luZyBjb3B5KQpAQCAtMTEwLDcgKzExMCw3IEBAIHB1YmxpYzoK
IAogICAgIFdlYkNvbm5lY3Rpb24qIHdlYkNvbm5lY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX3dl
YkNvbm5lY3Rpb24uZ2V0KCk7IH0KIAotICAgIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCgp
IHsgQVNTRVJUKG1fcHJvY2Vzc1Bvb2wpOyByZXR1cm4gKm1fcHJvY2Vzc1Bvb2wuZ2V0KCk7IH0K
KyAgICBXZWJQcm9jZXNzUG9vbCYgcHJvY2Vzc1Bvb2woKSBjb25zdCB7IEFTU0VSVChtX3Byb2Nl
c3NQb29sKTsgcmV0dXJuICptX3Byb2Nlc3NQb29sLmdldCgpOyB9CiAKICAgICAvLyBGSVhNRTog
V2Vic2l0ZURhdGFTdG9yZXMgc2hvdWxkIGJlIG1hZGUgcGVyLVdlYlBhZ2VQcm94eSB0aHJvdWdo
b3V0IFdlYktpdDIKICAgICBXZWJzaXRlRGF0YVN0b3JlJiB3ZWJzaXRlRGF0YVN0b3JlKCkgY29u
c3QgeyByZXR1cm4gbV93ZWJzaXRlRGF0YVN0b3JlLmdldCgpOyB9CkBAIC0yNTgsNiArMjU4LDgg
QEAgcHJvdGVjdGVkOgogICAgIHZvaWQgY2FjaGVNZWRpYU1JTUVUeXBlc0ludGVybmFsKGNvbnN0
IFZlY3RvcjxTdHJpbmc+Jik7CiAjZW5kaWYKIAorICAgIGJvb2wgSklURW5hYmxlZCgpIGNvbnN0
IGZpbmFsOworICAgIAogcHJpdmF0ZToKICAgICAvLyBJUEMgbWVzc2FnZSBoYW5kbGVycy4KICAg
ICB2b2lkIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBCYWNrRm9yd2FyZExpc3RJdGVtU3Rh
dGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENv
bmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAyMzgzNTEpCisrKyBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIFJlZjxQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24+IFByb2Nlc3NQb28KICAgICBjb3B5LT5tX3Nob3VsZFRha2VVSUJhY2tncm91bmRB
c3NlcnRpb24gPSB0aGlzLT5tX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3NlcnRpb247CiAgICAg
Y29weS0+bV9zaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcyA9IHRoaXMtPm1fc2hvdWxkQ2Fw
dHVyZUF1ZGlvSW5VSVByb2Nlc3M7CiAgICAgY29weS0+bV9zaG91bGRDYXB0dXJlRGlzcGxheUlu
VUlQcm9jZXNzID0gdGhpcy0+bV9zaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzOworICAg
IGNvcHktPm1fSklURW5hYmxlZCA9IHRoaXMtPm1fSklURW5hYmxlZDsKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIGNvcHktPm1fY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlID0gdGhp
cy0+bV9jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGU7CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgJKHJldmlzaW9uIDIzODM1MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaAkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDYg
KzE0Nyw5IEBAIHB1YmxpYzoKICAgICBib29sIHNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nl
c3MoKSBjb25zdCB7IHJldHVybiBtX3Nob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3M7IH0K
ICAgICB2b2lkIHNldFNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3MoYm9vbCBzaG91bGRD
YXB0dXJlRGlzcGxheUluVUlQcm9jZXNzKSB7IG1fc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJv
Y2VzcyA9IHNob3VsZENhcHR1cmVEaXNwbGF5SW5VSVByb2Nlc3M7IH0KIAorICAgIGJvb2wgSklU
RW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1fSklURW5hYmxlZDsgfQorICAgIHZvaWQgc2V0SklU
RW5hYmxlZChib29sIGVuYWJsZWQpIHsgbV9KSVRFbmFibGVkID0gZW5hYmxlZDsgfQorICAgIAog
I2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgY29uc3QgV1RGOjpTdHJpbmcmIGN0RGF0YUNv
bm5lY3Rpb25TZXJ2aWNlVHlwZSgpIGNvbnN0IHsgcmV0dXJuIG1fY3REYXRhQ29ubmVjdGlvblNl
cnZpY2VUeXBlOyB9CiAgICAgdm9pZCBzZXRDVERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoY29u
c3QgV1RGOjpTdHJpbmcmIGN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZSkgeyBtX2N0RGF0YUNv
bm5lY3Rpb25TZXJ2aWNlVHlwZSA9IGN0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsgfQpAQCAt
MjIwLDYgKzIyMyw3IEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX3Byb2Nlc3NTd2Fwc09uV2luZG93
T3BlbldpdGhPcGVuZXIgeyBmYWxzZSB9OwogICAgIHN0ZDo6b3B0aW9uYWw8Ym9vbD4gbV9pc0F1
dG9tYXRpY1Byb2Nlc3NXYXJtaW5nRW5hYmxlZEJ5Q2xpZW50OwogICAgIFdURjo6U3RyaW5nIG1f
Y3VzdG9tV2ViQ29udGVudFNlcnZpY2VCdW5kbGVJZGVudGlmaWVyOworICAgIGJvb2wgbV9KSVRF
bmFibGVkIHsgdHJ1ZSB9OwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBXVEY6OlN0
cmluZyBtX2N0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkocmV2aXNpb24gMjM4MzUxKQor
KysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQkod29ya2lu
ZyBjb3B5KQpAQCAtNDc2OCw2ICs0NzY4LDEzIEBAICsgKE5TVVJMICopX3Zpc2l0VW5zYWZlV2Vi
c2l0ZVNlbnRpbmVsCiAgICAgcmV0dXJuIFdlYktpdDo6U2FmZUJyb3dzaW5nV2FybmluZzo6dmlz
aXRVbnNhZmVXZWJzaXRlU2VudGluZWwoKTsKIH0KIAorLSAodm9pZClfaXNKSVRFbmFibGVkOih2
b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7CisgICAgX3BhZ2UtPmlzSklURW5hYmxl
ZChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQdHIoY29tcGxldGlvbkhhbmRsZXIpXSAo
Ym9vbCBjYW5Vc2UpIHsKKyAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoY2FuVXNlKTsKKyAgICB9
KTsKK30KKwogLSAodm9pZClfZXZhbHVhdGVKYXZhU2NyaXB0V2l0aG91dFVzZXJHZXN0dXJlOihO
U1N0cmluZyAqKWphdmFTY3JpcHRTdHJpbmcgY29tcGxldGlvbkhhbmRsZXI6KHZvaWQgKF4pKGlk
LCBOU0Vycm9yICopKWNvbXBsZXRpb25IYW5kbGVyCiB7CiAgICAgW3NlbGYgX2V2YWx1YXRlSmF2
YVNjcmlwdDpqYXZhU2NyaXB0U3RyaW5nIGZvcmNlVXNlckdlc3R1cmU6Tk8gY29tcGxldGlvbkhh
bmRsZXI6Y29tcGxldGlvbkhhbmRsZXJdOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
QVBJL0NvY29hL1dLV2ViVmlld1ByaXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCShyZXZpc2lvbiAyMzgzNTEp
CisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5o
CSh3b3JraW5nIGNvcHkpCkBAIC0xOTIsNiArMTkyLDcgQEAgdHlwZWRlZiBOU19PUFRJT05TKE5T
VUludGVnZXIsIF9XS1JlY3RFZAogKyAoTlNVUkwgKilfdmlzaXRVbnNhZmVXZWJzaXRlU2VudGlu
ZWwgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7
CiAtICh2b2lkKV9zaG93U2FmZUJyb3dzaW5nV2FybmluZ1dpdGhUaXRsZTooTlNTdHJpbmcgKil0
aXRsZSB3YXJuaW5nOihOU1N0cmluZyAqKXdhcm5pbmcgZGV0YWlsczooTlNBdHRyaWJ1dGVkU3Ry
aW5nICopZGV0YWlscyBjb21wbGV0aW9uSGFuZGxlcjoodm9pZCheKShCT09MKSljb21wbGV0aW9u
SGFuZGxlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19U
QkEpKTsKIAorLSAodm9pZClfaXNKSVRFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25I
YW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RC
QSkpOwogLSAoSUJBY3Rpb24pX2FsaWduQ2VudGVyOihpZClzZW5kZXIgV0tfQVBJX0FWQUlMQUJM
RShtYWNvc3goV0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtIChJQkFjdGlvbilfYWxp
Z25KdXN0aWZpZWQ6KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJB
KSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKElCQWN0aW9uKV9hbGlnbkxlZnQ6KGlkKXNlbmRlciBX
S19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZp
Z3VyYXRpb24uaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29j
b2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHJldmlzaW9uIDIzODM1MSkKKysrIFNv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRp
b24uaAkod29ya2luZyBjb3B5KQpAQCAtNjgsNiArNjgsNyBAQCBXS19DTEFTU19BVkFJTEFCTEUo
bWFjb3N4KDEwLjEwKSwgaW9zKDguCiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBwcmV3YXJt
c1Byb2Nlc3Nlc0F1dG9tYXRpY2FsbHkgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tfTUFDX1RC
QSksIGlvcyhXS19JT1NfVEJBKSk7CiBAcHJvcGVydHkgKG5vbmF0b21pYykgQk9PTCBwYWdlQ2Fj
aGVFbmFibGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KDEwLjE0KSwgaW9zKDEyLjApKTsKIEBw
cm9wZXJ0eSAobm9uYXRvbWljKSBCT09MIHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25P
blN5c3RlbUNoYW5nZSBXS19BUElfQVZBSUxBQkxFKG1hY29zeCgxMC4xNCksIGlvcygxMi4wKSk7
CitAcHJvcGVydHkgKG5vbmF0b21pYywgZ2V0dGVyPWlzSklURW5hYmxlZCkgQk9PTCBKSVRFbmFi
bGVkIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkp
OwogCiBAZW5kCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQkocmV2aXNp
b24gMjM4MzUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nl
c3NQb29sQ29uZmlndXJhdGlvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtMjk4LDYgKzI5OCwxNiBA
QCAtIChCT09MKXN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PCiAgICAgcmV0dXJuIF9w
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25P
blN5c3RlbUNoYW5nZSgpOwogfQogCistIChCT09MKWlzSklURW5hYmxlZAoreworICAgIHJldHVy
biBfcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLT5KSVRFbmFibGVkKCk7Cit9CisKKy0gKHZvaWQp
c2V0SklURW5hYmxlZDooQk9PTCllbmFibGVkCit7CisgICAgX3Byb2Nlc3NQb29sQ29uZmlndXJh
dGlvbi0+c2V0SklURW5hYmxlZChlbmFibGVkKTsKK30KKwogLSAodm9pZClzZXRTdXBwcmVzc2Vz
Q29ubmVjdGlvblRlcm1pbmF0aW9uT25TeXN0ZW1DaGFuZ2U6KEJPT0wpc3VwcHJlc3Nlc0Nvbm5l
Y3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlCiB7CiAgICAgX3Byb2Nlc3NQb29sQ29uZmln
dXJhdGlvbi0+c2V0U3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdl
KHN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIu
aAkocmV2aXNpb24gMjM4MzUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNoZXIv
UHJvY2Vzc0xhdW5jaGVyLmgJKHdvcmtpbmcgY29weSkKQEAgLTQ4LDYgKzQ4LDcgQEAgcHVibGlj
OgogICAgICAgICB2aXJ0dWFsIH5DbGllbnQoKSB7IH0KICAgICAgICAgCiAgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRGaW5pc2hMYXVuY2hpbmcoUHJvY2Vzc0xhdW5jaGVyKiwgSVBDOjpDb25uZWN0
aW9uOjpJZGVudGlmaWVyKSA9IDA7CisgICAgICAgIHZpcnR1YWwgYm9vbCBKSVRFbmFibGVkKCkg
Y29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAgIH07CiAgICAgCiAgICAgZW51bSBjbGFzcyBQcm9j
ZXNzVHlwZSB7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJv
Y2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHJldmlzaW9uIDIzODM1MSkKKysr
IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTE3Myw2ICsxNzMsMTAgQEAgdm9pZCBQcm9jZXNzTGF1bmNo
ZXI6OmxhdW5jaFByb2Nlc3MoKQogCiAgICAgLy8gRklYTUU6IFN3aXRjaCB0byB4cGNfY29ubmVj
dGlvbl9zZXRfYm9vdHN0cmFwIG9uY2UgaXQncyBhdmFpbGFibGUgZXZlcnl3aGVyZSB3ZSBuZWVk
LgogICAgIGF1dG8gYm9vdHN0cmFwTWVzc2FnZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25h
cnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIsIDApKTsKKyAgICAKKyAgICBpZiAobV9jbGllbnQg
JiYgIW1fY2xpZW50LT5KSVRFbmFibGVkKCkpCisgICAgICAgIHhwY19kaWN0aW9uYXJ5X3NldF9i
b29sKGJvb3RzdHJhcE1lc3NhZ2UuZ2V0KCksICJkaXNhYmxlLWppdCIsIHRydWUpOworCiAgICAg
eHBjX2RpY3Rpb25hcnlfc2V0X3N0cmluZyhib290c3RyYXBNZXNzYWdlLmdldCgpLCAibWVzc2Fn
ZS1uYW1lIiwgImJvb3RzdHJhcCIpOwogCiAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X21hY2hfc2Vu
ZChib290c3RyYXBNZXNzYWdlLmdldCgpLCAic2VydmVyLXBvcnQiLCBsaXN0ZW5pbmdQb3J0KTsK
SW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5jcHAJKHJldmlzaW9uIDIz
ODM1MSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTMwLDYgKzkzMCwxMSBAQCB2b2lkIFdlYlByb2Nlc3M6OnJlc2V0UGx1Z2lu
TG9hZENsaWVudFBvCiAjZW5kaWYKIH0KIAordm9pZCBXZWJQcm9jZXNzOjppc0pJVEVuYWJsZWQo
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3sKKyAg
ICBjb21wbGV0aW9uSGFuZGxlcihKU0M6OlZNOjpjYW5Vc2VKSVQoKSk7Cit9CisKIHZvaWQgV2Vi
UHJvY2Vzczo6Y2xlYXJQbHVnaW5DbGllbnRQb2xpY2llcygpCiB7CiAjaWYgRU5BQkxFKE5FVFND
QVBFX1BMVUdJTl9BUEkpICYmIFBMQVRGT1JNKE1BQykKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQcm9jZXNzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlByb2Nlc3MuaAkocmV2aXNpb24gMjM4MzUxKQorKysgU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAkod29ya2luZyBjb3B5KQpAQCAtMjA0LDYgKzIwNCw4IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgc2VuZFByZXdhcm1JbmZvcm1hdGlvbihjb25zdCBXZWJDb3JlOjpV
UkwmKTsKIAorICAgIHZvaWQgaXNKSVRFbmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9v
bCk+JiYpOworCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICB2b2lkIHJlc2V0QWxsR2Vv
bG9jYXRpb25QZXJtaXNzaW9ucygpOwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkocmV2aXNpb24gMjM4MzUxKQorKysg
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MubWVzc2FnZXMuaW4JKHdvcmtpbmcg
Y29weSkKQEAgLTE0MSw2ICsxNDEsOCBAQCBtZXNzYWdlcyAtPiBXZWJQcm9jZXNzIExlZ2FjeVJl
Y2VpdmVyIHsKICNlbmRpZgogI2VuZGlmCiAKKyAgICBJc0pJVEVuYWJsZWQoKSAtPiAoYm9vbCBl
bmFibGVkKSBBc3luYworCiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgU2V0TWVkaWFNSU1FVHlw
ZXMoVmVjdG9yPFN0cmluZz4gdHlwZXMpCiAjZW5kaWYKSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIzODM2MCkKKysrIFRvb2xz
L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE1IEBACisyMDE4LTExLTE3ICBB
bGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRk
IFNQSSB0byBkaXNhYmxlIEpJVCBpbiBhIFdLV2ViVmlldworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxODIyCisgICAgICAgIDxyZGFyOi8vcHJvYmxl
bS8yODExOTM2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvRGlzYWJsZUpJ
VC5tbTogQWRkZWQuCisgICAgICAgIChURVNUKToKKwogMjAxOC0xMS0xNyAgV2Vuc29uIEhzaWVo
ICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBSZW1vdmUgYWxsIHVz
YWdlcyBvZiBVSUl0ZW1Qcm92aWRlciwgVUlJdGVtUHJvdmlkZXJSZWFkaW5nLCBhbmQgcmVsYXRl
ZCBjbGFzc2VzCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RXZWJLaXRBUEkueGNvZGVw
cm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNpb24gMjM4MzUxKQor
KysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTI3Miw2ICsyNzIsNyBAQAogCQk1N0MzRkE2NjFGN0My
NDhGMDA5RDRCODAgLyogV2Vha1B0ci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSAxQ0I5QkMzNzFBNjc0ODIzMDBGRTU2NzggLyogV2Vha1B0ci5jcHAg
Ki87IH07CiAJCTU3RjRBQUEwMjA4RkFFRjAwMEE2OEU5RSAvKiBTU0xLZXlHZW5lcmF0b3IubW0g
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1N0Y0QUE5RjIw
OEZBODNEMDBBNjhFOUUgLyogU1NMS2V5R2VuZXJhdG9yLm1tICovOyB9OwogCQk1N0Y1NkE1QzFD
N0Y4Q0MxMDBGMzFEN0UgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5odG1sIGluIENvcHkg
UmVzb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RjU2QTVCMUM3
RjhBNDAwMEYzMUQ3RSAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0bWwgKi87IH07CisJ
CTVDMDE2MEMxMjFBMTMyNDYwMDc3RkEzMiAvKiBKSVRFbmFibGVkLm1tIGluIFNvdXJjZXMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwMTYwQzAyMUExMzIzMjAwNzdGQTMy
IC8qIEpJVEVuYWJsZWQubW0gKi87IH07CiAJCTVDMEJGODhEMURENTk2NEQwMEIwMDMyOCAvKiBN
ZW1vcnlQcmVzc3VyZUhhbmRsZXIubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSA1QzBCRjg4QzFERDU5NTc0MDBCMDAzMjggLyogTWVtb3J5UHJlc3N1cmVI
YW5kbGVyLm1tICovOyB9OwogCQk1QzBCRjg5MTFERDU5OUE5MDBCMDAzMjggLyogV2ViVmlld0Nh
blBhc3RlWmVyb1BuZy5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDVDMEJGODhGMURENTk5OUIwMEIwMDMyOCAvKiBXZWJWaWV3Q2FuUGFzdGVaZXJvUG5n
Lm1tICovOyB9OwogCQk1QzBCRjg5MjFERDU5OUI2MDBCMDAzMjggLyogRWFybHlLVk9DcmFzaC5t
bSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFBOUZCNkND
MUNBMzRCRTUwMDk2NjEyNCAvKiBFYXJseUtWT0NyYXNoLm1tICovOyB9OwpAQCAtMTYwNCw2ICsx
NjA1LDcgQEAKIAkJNTdGMTBEOTIxQzdFN0IzODAwRUNERjMwIC8qIElzTmF2aWdhdGlvbkFjdGlv
blRydXN0ZWQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBJc05h
dmlnYXRpb25BY3Rpb25UcnVzdGVkLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
N0Y0QUE5RjIwOEZBODNEMDBBNjhFOUUgLyogU1NMS2V5R2VuZXJhdG9yLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2Jq
Y3BwOyBwYXRoID0gU1NMS2V5R2VuZXJhdG9yLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk1N0Y1NkE1QjFDN0Y4QTQwMDBGMzFEN0UgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3Rl
ZC5odG1sICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gdGV4dC5odG1sOyBwYXRoID0gSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1
c3RlZC5odG1sOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1QzAxNjBDMDIxQTEzMjMy
MDA3N0ZBMzIgLyogSklURW5hYmxlZC5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IEpJVEVuYWJsZWQubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVD
MEJGODhDMURENTk1NzQwMEIwMDMyOCAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIubW0gKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBNZW1vcnlQcmVzc3VyZUhhbmRsZXIu
bW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTVDMEJGODhGMURENTk5OUIwMEIwMDMy
OCAvKiBXZWJWaWV3Q2FuUGFzdGVaZXJvUG5nLm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
b2JqY3BwOyBwYXRoID0gV2ViVmlld0NhblBhc3RlWmVyb1BuZy5tbTsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNUMxOUE1MjMxRkQwRjMyNjAwRUVBMzIzIC8qIENvb2tpZVByaXZhdGVC
cm93c2luZy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IENvb2tp
ZVByaXZhdGVCcm93c2luZy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI0MjEs
NiArMjQyMyw3IEBACiAJCQkJNzlDNUQ0MzAyMDlENzY4MzAwRjFFN0NBIC8qIEluamVjdGVkQnVu
ZGxlTm9kZUhhbmRsZUlzVGV4dEZpZWxkLm1tICovLAogCQkJCTJEQjAyMzJFMUU0RTg3MTgwMDcw
NzEyMyAvKiBJbnRlcmFjdGlvbkRlYWRsb2NrQWZ0ZXJDcmFzaC5tbSAqLywKIAkJCQk1QzY5QkRE
NDFGODJBN0VCMDAwRjRGNEIgLyogSmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW0gKi8sCisJ
CQkJNUMwMTYwQzAyMUExMzIzMjAwNzdGQTMyIC8qIEpJVEVuYWJsZWQubW0gKi8sCiAJCQkJQzI1
Q0NBMDUxRTUxMzgwQjAwMjZDQjhBIC8qIExpbmVCcmVha2luZy5tbSAqLywKIAkJCQkzN0QzNkVE
NjFBRjQyRUNEMDBCQUY1RDkgLyogTG9hZEFsdGVybmF0ZUhUTUxTdHJpbmcubW0gKi8sCiAJCQkJ
QTEyNTQ3OEQxREIxOEI5NDAwMzU4NTY0IC8qIExvYWREYXRhV2l0aE5pbE1JTUVUeXBlLm1tICov
LApAQCAtMzk0OCw2ICszOTUxLDcgQEAKIAkJCQk1QzY5QkRENTFGODJBN0VGMDAwRjRGNEIgLyog
SmF2YVNjcmlwdER1cmluZ05hdmlnYXRpb24ubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VB
RDFBNDExQTM0MDA0NDdDNEMgLyogSmF2YVNjcmlwdFRlc3QuY3BwIGluIFNvdXJjZXMgKi8sCiAJ
CQkJN0NDRTdFQTUxQTQxMUEwODAwNDQ3QzRDIC8qIEphdmFTY3JpcHRUZXN0TWFjLm1tIGluIFNv
dXJjZXMgKi8sCisJCQkJNUMwMTYwQzEyMUExMzI0NjAwNzdGQTMyIC8qIEpJVEVuYWJsZWQubW0g
aW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VDNDFBNDExQTdFMDA0NDdDNEMgLyogSlNXcmFwcGVy
Rm9yTm9kZUluV2ViRnJhbWUubW0gaW4gU291cmNlcyAqLywKIAkJCQlGNDVFMTU3MzIxMTJDRTI5
MDAzMDdFODIgLyogS2V5Ym9hcmRJbnB1dFRlc3RzSU9TLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
N0NDRTdGMDYxQTQxMUFFNjAwNDQ3QzRDIC8qIExheW91dE1pbGVzdG9uZXNXaXRoQWxsQ29udGVu
dEluRnJhbWUuY3BwIGluIFNvdXJjZXMgKi8sCkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RzL1dlYktpdENvY29hL0pJVEVuYWJsZWQubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdl
YktpdEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9KSVRFbmFibGVkLm1tCShub25leGlzdGVudCkKKysr
IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSklURW5hYmxlZC5tbQkod29y
a2luZyBjb3B5KQpAQCAtMCwwICsxLDYwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE4IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJ
UycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hB
TlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJ
U0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9S
UworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwor
ICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisg
KiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2ltcG9ydCAiY29uZmln
LmgiCisKKyNpZiBXS19BUElfRU5BQkxFRAorCisjaW1wb3J0ICJQbGF0Zm9ybVV0aWxpdGllcy5o
IgorI2ltcG9ydCA8V2ViS2l0L1dLUHJvY2Vzc1Bvb2xQcml2YXRlLmg+CisjaW1wb3J0IDxXZWJL
aXQvV0tXZWJWaWV3UHJpdmF0ZS5oPgorI2ltcG9ydCA8V2ViS2l0L19XS1Byb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbi5oPgorI2ltcG9ydCA8d3RmL1JldGFpblB0ci5oPgorCitURVNUKFdlYktpdCwg
SklURW5hYmxlZCkKK3sKKyAgICBhdXRvIGNoZWNrSklURW5hYmxlZCA9IFtdIChSZXRhaW5QdHI8
V0tXZWJWaWV3PiYmIHdlYlZpZXcsIEJPT0wgZXhwZWN0ZWRWYWx1ZSkgeworICAgICAgICBfX2Js
b2NrIGJvb2wgZG9uZSA9IGZhbHNlOworICAgICAgICBbd2ViVmlldyBldmFsdWF0ZUphdmFTY3Jp
cHQ6QCJmb3IoaT0wO2k8MTAwMDAwOysraSk7J2FiYyciIGNvbXBsZXRpb25IYW5kbGVyOl4oaWQg
cmVzdWx0LCBOU0Vycm9yICplcnJvcikgeworICAgICAgICAgICAgRVhQRUNUX1RSVUUoZXJyb3Ig
PT0gbmlsKTsKKyAgICAgICAgICAgIEVYUEVDVF9TVFJFUShbcmVzdWx0IFVURjhTdHJpbmddLCAi
YWJjIik7CisgICAgICAgICAgICBbd2ViVmlldyBfaXNKSVRFbmFibGVkOl4oQk9PTCBlbmFibGVk
KSB7CisgICAgICAgICAgICAgICAgRVhQRUNUX1RSVUUoZW5hYmxlZCA9PSBleHBlY3RlZFZhbHVl
KTsKKyAgICAgICAgICAgICAgICBkb25lID0gdHJ1ZTsKKyAgICAgICAgICAgIH1dOworICAgICAg
ICB9XTsKKyAgICAgICAgVGVzdFdlYktpdEFQSTo6VXRpbDo6cnVuKCZkb25lKTsKKyAgICB9Owor
CisgICAgYXV0byBwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtfV0tQcm9jZXNz
UG9vbENvbmZpZ3VyYXRpb24gbmV3XSk7CisgICAgW3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBz
ZXRKSVRFbmFibGVkOk5PXTsKKyAgICBhdXRvIGNvbmZpZ3VyYXRpb24gPSBhZG9wdE5TKFtXS1dl
YlZpZXdDb25maWd1cmF0aW9uIG5ld10pOworICAgIFtjb25maWd1cmF0aW9uIHNldFByb2Nlc3NQ
b29sOltbW1dLUHJvY2Vzc1Bvb2wgYWxsb2NdIF9pbml0V2l0aENvbmZpZ3VyYXRpb246cHJvY2Vz
c1Bvb2xDb25maWd1cmF0aW9uLmdldCgpXSBhdXRvcmVsZWFzZV1dOworICAgIGF1dG8gd2ViVmll
d05vSklUID0gYWRvcHROUyhbW1dLV2ViVmlldyBhbGxvY10gaW5pdFdpdGhGcmFtZTpOU01ha2VS
ZWN0KDAsIDAsIDgwMCwgNjAwKSBjb25maWd1cmF0aW9uOmNvbmZpZ3VyYXRpb24uZ2V0KCldKTsK
KyAgICBjaGVja0pJVEVuYWJsZWQod2ViVmlld05vSklULCBOTyk7CisgICAgY2hlY2tKSVRFbmFi
bGVkKGFkb3B0TlMoW1dLV2ViVmlldyBuZXddKSwgWUVTKTsKK30KKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>355300</attachid>
            <date>2018-11-19 17:23:45 -0800</date>
            <delta_ts>2018-11-19 17:24:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-191822-20181119172344.patch</filename>
            <type>text/plain</type>
            <size>27099</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjM4MzUxKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE4IEBA
CisyMDE4LTExLTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+
CisKKyAgICAgICAgQWRkIFNQSSB0byBkaXNhYmxlIEpJVCBpbiBhIFdLV2ViVmlldworICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxODIyCisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yODExOTM2MD4KKworICAgICAgICBSZXZpZXdlZCBieSBHZW9mZnJl
eSBHYXJlbi4KKworICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcDoKKyAgICAg
ICAgKEpTQzo6aml0RGlzYWJsZWQpOgorICAgICAgICAoSlNDOjphbGxvd0pJVCk6CisgICAgICAg
IChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0b3I6OnNldEpJVEVuYWJsZWQpOgorICAgICAgICAqIGpp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmg6CisgICAgICAgIChKU0M6OkV4ZWN1dGFibGVBbGxvY2F0
b3I6OnNldEpJVEVuYWJsZWQpOgorCiAyMDE4LTExLTE3ICBEZXZpbiBSb3Vzc28gIDxkcm91c3Nv
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBOZXR3b3JrOiBhZGQgYnV0dG9u
IHRvIHNob3cgc3lzdGVtIGNlcnRpZmljYXRlIGRpYWxvZwpJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCShyZXZpc2lvbiAyMzgz
NTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3Bw
CSh3b3JraW5nIGNvcHkpCkBAIC0xMTMsMTIgKzExMywzNSBAQCBKU19FWFBPUlRfUFJJVkFURSBK
SVRXcml0ZVNlcGFyYXRlSGVhcHNGCiBzdGF0aWMgdWludHB0cl90IHN0YXJ0T2ZGaXhlZFdyaXRh
YmxlTWVtb3J5UG9vbDsKICNlbmRpZgogCi1zdGF0aWMgYm9vbCBhbGxvd0pJVCgpCitzdGF0aWMg
Ym9vbCBzX2lzSklURW5hYmxlZCA9IHRydWU7CitzdGF0aWMgYm9vbCBpc0pJVEVuYWJsZWQoKQog
ewogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIChDUFUoQVJNNjQpIHx8IENQVShBUk0pKQot
ICAgIHJldHVybiBwcm9jZXNzSGFzRW50aXRsZW1lbnQoImR5bmFtaWMtY29kZXNpZ25pbmciKTsK
KyAgICByZXR1cm4gcHJvY2Vzc0hhc0VudGl0bGVtZW50KCJkeW5hbWljLWNvZGVzaWduaW5nIikg
JiYgc19pc0pJVEVuYWJsZWQ7CiAjZWxzZQotICAgIHJldHVybiB0cnVlOworICAgIHJldHVybiBz
X2lzSklURW5hYmxlZDsKKyNlbmRpZgorfQorCit2b2lkIEV4ZWN1dGFibGVBbGxvY2F0b3I6OnNl
dEpJVEVuYWJsZWQoYm9vbCBlbmFibGVkKQoreworICAgIGlmIChzX2lzSklURW5hYmxlZCA9PSBl
bmFibGVkKQorICAgICAgICByZXR1cm47CisKKyAgICBzX2lzSklURW5hYmxlZCA9IGVuYWJsZWQ7
CisKKyNpZiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiAoQ1BVKEFSTTY0KSB8fCBDUFUoQVJNKSkK
KyAgICBpZiAoIWVuYWJsZWQpIHsKKyAgICAgICAgY29uc3RleHByIHNpemVfdCBzaXplID0gMTsK
KyAgICAgICAgY29uc3RleHByIGludCBwcm90ZWN0aW9uID0gUFJPVF9SRUFEIHwgUFJPVF9XUklU
RSB8IFBST1RfRVhFQzsKKyAgICAgICAgY29uc3RleHByIGludCBmbGFncyA9IE1BUF9QUklWQVRF
IHwgTUFQX0FOT04gfCBNQVBfSklUOworICAgICAgICBjb25zdGV4cHIgaW50IGZkID0gT1NBbGxv
Y2F0b3I6OkpTSklUQ29kZVBhZ2VzOworICAgICAgICB2b2lkKiBhbGxvY2F0aW9uID0gbW1hcChu
dWxscHRyLCBzaXplLCBwcm90ZWN0aW9uLCBmbGFncywgZmQsIDApOworICAgICAgICBjb25zdCB2
b2lkKiBleGVjdXRhYmxlTWVtb3J5QWxsb2NhdGlvbkZhaWx1cmUgPSByZWludGVycHJldF9jYXN0
PHZvaWQqPigtMSk7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRShhbGxvY2F0
aW9uICYmIGFsbG9jYXRpb24gIT0gZXhlY3V0YWJsZU1lbW9yeUFsbG9jYXRpb25GYWlsdXJlLCAi
V2Ugc2hvdWxkIG5vdCBoYXZlIGFsbG9jYXRlZCBleGVjdXRhYmxlIG1lbW9yeSBiZWZvcmUgZGlz
YWJsaW5nIHRoZSBKSVQuIik7CisgICAgICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfTUVTU0FHRSgh
bXVubWFwKGFsbG9jYXRpb24sIHNpemUpLCAiVW5tYXBwaW5nIGV4ZWN1dGFibGUgbWVtb3J5IHNo
b3VsZCBzdWNjZWVkIHNvIHdlIGRvIG5vdCBoYXZlIGFueSBleGVjdXRhYmxlIG1lbW9yeSBpbiB0
aGUgYWRkcmVzcyBzcGFjZSIpOworICAgICAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX01FU1NBR0Uo
bW1hcChudWxscHRyLCBzaXplLCBwcm90ZWN0aW9uLCBmbGFncywgZmQsIDApID09IGV4ZWN1dGFi
bGVNZW1vcnlBbGxvY2F0aW9uRmFpbHVyZSwgIkFsbG9jYXRpbmcgZXhlY3V0YWJsZSBtZW1vcnkg
c2hvdWxkIGZhaWwgYWZ0ZXIgc2V0SklURW5hYmxlZChmYWxzZSkgaXMgY2FsbGVkLiIpOworICAg
IH0KICNlbmRpZgogfQogCkBAIC0xMjgsNyArMTUxLDcgQEAgcHVibGljOgogICAgIEZpeGVkVk1Q
b29sRXhlY3V0YWJsZUFsbG9jYXRvcigpCiAgICAgICAgIDogTWV0YUFsbG9jYXRvcihqaXRBbGxv
Y2F0aW9uR3JhbnVsZSkgLy8gcm91bmQgdXAgYWxsIGFsbG9jYXRpb25zIHRvIDMyIGJ5dGVzCiAg
ICAgewotICAgICAgICBpZiAoIWFsbG93SklUKCkpCisgICAgICAgIGlmICghaXNKSVRFbmFibGVk
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgc2l6ZV90IHJlc2VydmF0aW9uU2l6
ZTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5oCShyZXZpc2lvbiAyMzgzNTEpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4
ZWN1dGFibGVBbGxvY2F0b3IuaAkod29ya2luZyBjb3B5KQpAQCAtMTQwLDYgKzE0MCw4IEBAIHB1
YmxpYzoKICNlbHNlCiAgICAgc3RhdGljIHZvaWQgZHVtcFByb2ZpbGUoKSB7IH0KICNlbmRpZgor
ICAgIAorICAgIEpTX0VYUE9SVF9QUklWQVRFIHN0YXRpYyB2b2lkIHNldEpJVEVuYWJsZWQoYm9v
bCk7CiAKICAgICBSZWZQdHI8RXhlY3V0YWJsZU1lbW9yeUhhbmRsZT4gYWxsb2NhdGUoc2l6ZV90
IHNpemVJbkJ5dGVzLCB2b2lkKiBvd25lclVJRCwgSklUQ29tcGlsYXRpb25FZmZvcnQpOwogCkBA
IC0xNzMsNiArMTc1LDggQEAgcHVibGljOgogCiAgICAgUmVmUHRyPEV4ZWN1dGFibGVNZW1vcnlI
YW5kbGU+IGFsbG9jYXRlKHNpemVfdCwgdm9pZCosIEpJVENvbXBpbGF0aW9uRWZmb3J0KSB7IHJl
dHVybiBudWxscHRyOyB9CiAKKyAgICBzdGF0aWMgdm9pZCBzZXRKSVRFbmFibGVkKGJvb2wpIHsg
fTsKKyAgICAKICAgICBib29sIGlzVmFsaWRFeGVjdXRhYmxlTWVtb3J5KGNvbnN0IEFic3RyYWN0
TG9ja2VyJiwgdm9pZCopIHsgcmV0dXJuIGZhbHNlOyB9CiAKICAgICBzdGF0aWMgc2l6ZV90IGNv
bW1pdHRlZEJ5dGVDb3VudCgpIHsgcmV0dXJuIDA7IH0KSW5kZXg6IFNvdXJjZS9XZWJLaXQvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCShyZXZpc2lvbiAy
MzgzNjApCisrKyBTb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwz
ICsxLDM4IEBACisyMDE4LTExLTE3ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdl
YmtpdC5vcmc+CisKKyAgICAgICAgQWRkIFNQSSB0byBkaXNhYmxlIEpJVCBpbiBhIFdLV2ViVmll
dworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTkxODIy
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yODExOTM2MD4KKworICAgICAgICBSZXZpZXdlZCBi
eSBHZW9mZnJleSBHYXJlbi4KKworICAgICAgICAqIFNoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVz
L21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50Lmg6CisgICAgICAgIChXZWJLaXQ6
OlhQQ1NlcnZpY2VJbml0aWFsaXplcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9BUElQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbToKKyAgICAgICAgKC1bV0tXZWJWaWV3IF9jYW5Vc2VKSVQ6XSk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uaDoKKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbToKKyAg
ICAgICAgKC1bX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIGVuYWJsZUpJVF0pOgorICAgICAg
ICAoLVtfV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24gc2V0RW5hYmxlSklUOl0pOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9MYXVuY2hlci9Qcm9jZXNzTGF1bmNoZXIuaDoKKyAgICAgICAgKFdlYktp
dDo6UHJvY2Vzc0xhdW5jaGVyOjpDbGllbnQ6OmVuYWJsZUpJVCBjb25zdCk6CisgICAgICAgICog
VUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW06CisgICAgICAgIChX
ZWJLaXQ6OlByb2Nlc3NMYXVuY2hlcjo6bGF1bmNoUHJvY2Vzcyk6CisgICAgICAgICogVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Y2Fu
VXNlSklUKToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVByb3h5Lmg6CisgICAgICAgICog
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nl
c3NQcm94eTo6ZW5hYmxlSklUIGNvbnN0KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vz
c1Byb3h5Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYlByb2Nlc3NQcm94eTo6cHJvY2Vzc1Bvb2wg
Y29uc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJQcm9jZXNzUHJveHk6OnByb2Nlc3NQb29sKTog
RGVsZXRlZC4KKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzOjpjYW5Vc2VKSVQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2Vi
UHJvY2Vzcy5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUHJvY2Vzcy5tZXNzYWdlcy5pbjoK
KwogMjAxOC0xMS0xNyAgV2Vuc29uIEhzaWVoICA8d2Vuc29uX2hzaWVoQGFwcGxlLmNvbT4KIAog
ICAgICAgICBbaU9TXSBSZW1vdmUgYWxsIHVzYWdlcyBvZiBVSUl0ZW1Qcm92aWRlciwgVUlJdGVt
UHJvdmlkZXJSZWFkaW5nLCBhbmQgcmVsYXRlZCBjbGFzc2VzCkluZGV4OiBTb3VyY2UvV2ViS2l0
L1NjcmlwdHMvd2Via2l0L21lc3NhZ2VzLnB5Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
U2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHJldmlzaW9uIDIzODM1MSkKKysrIFNvdXJjZS9X
ZWJLaXQvU2NyaXB0cy93ZWJraXQvbWVzc2FnZXMucHkJKHdvcmtpbmcgY29weSkKQEAgLTE5MCw3
ICsxOTAsNyBAQCBkZWYgZm9yd2FyZF9kZWNsYXJhdGlvbnNfYW5kX2hlYWRlcnMocmVjCiAgICAg
XSkKIAogICAgIGZvciBtZXNzYWdlIGluIHJlY2VpdmVyLm1lc3NhZ2VzOgotICAgICAgICBpZiBt
ZXNzYWdlLnJlcGx5X3BhcmFtZXRlcnMgIT0gTm9uZSBhbmQgbWVzc2FnZS5oYXNfYXR0cmlidXRl
KERFTEFZRURfQVRUUklCVVRFKToKKyAgICAgICAgaWYgbWVzc2FnZS5yZXBseV9wYXJhbWV0ZXJz
ICE9IE5vbmU6CiAgICAgICAgICAgICBoZWFkZXJzLmFkZCgnPHd0Zi9UaHJlYWRTYWZlUmVmQ291
bnRlZC5oPicpCiAgICAgICAgICAgICB0eXBlc19ieV9uYW1lc3BhY2VbJ0lQQyddLnVwZGF0ZShb
KCdjbGFzcycsICdDb25uZWN0aW9uJyldKQogCkluZGV4OiBTb3VyY2UvV2ViS2l0L1NoYXJlZC9F
bnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNlL1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9TaGFyZWQvRW50cnlQb2ludFV0aWxpdGllcy9t
YWMvWFBDU2VydmljZS9YUENTZXJ2aWNlRW50cnlQb2ludC5oCShyZXZpc2lvbiAyMzgzNTEpCisr
KyBTb3VyY2UvV2ViS2l0L1NoYXJlZC9FbnRyeVBvaW50VXRpbGl0aWVzL21hYy9YUENTZXJ2aWNl
L1hQQ1NlcnZpY2VFbnRyeVBvaW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTIzLDExICsyMywxMSBA
QAogICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgogICovCiAKLSNpZm5kZWYgWFBD
U2VydmljZUVudHJ5UG9pbnRfaAotI2RlZmluZSBYUENTZXJ2aWNlRW50cnlQb2ludF9oCisjcHJh
Z21hIG9uY2UKIAogI2ltcG9ydCAiQ2hpbGRQcm9jZXNzLmgiCiAjaW1wb3J0ICJXZWJLaXQySW5p
dGlhbGl6ZS5oIgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvRXhlY3V0YWJsZUFsbG9jYXRvci5o
PgogI2ltcG9ydCA8d3RmL09TT2JqZWN0UHRyLmg+CiAjaW1wb3J0IDx3dGYvc3BpL2Rhcndpbi9Y
UENTUEkuaD4KIApAQCAtNzAsNiArNzAsOSBAQCBwcm90ZWN0ZWQ6CiB0ZW1wbGF0ZTx0eXBlbmFt
ZSBYUENTZXJ2aWNlVHlwZSwgdHlwZW5hbWUgWFBDU2VydmljZUluaXRpYWxpemVyRGVsZWdhdGVU
eXBlPgogdm9pZCBYUENTZXJ2aWNlSW5pdGlhbGl6ZXIoT1NPYmplY3RQdHI8eHBjX2Nvbm5lY3Rp
b25fdD4gY29ubmVjdGlvbiwgeHBjX29iamVjdF90IGluaXRpYWxpemVyTWVzc2FnZSwgeHBjX29i
amVjdF90IHByaW9yaXR5Qm9vc3RNZXNzYWdlKQogeworICAgIGlmIChpbml0aWFsaXplck1lc3Nh
Z2UgJiYgeHBjX2RpY3Rpb25hcnlfZ2V0X2Jvb2woaW5pdGlhbGl6ZXJNZXNzYWdlLCAiZGlzYWJs
ZS1qaXQiKSkKKyAgICAgICAgSlNDOjpFeGVjdXRhYmxlQWxsb2NhdG9yOjpzZXRKSVRFbmFibGVk
KGZhbHNlKTsKKwogICAgIFhQQ1NlcnZpY2VJbml0aWFsaXplckRlbGVnYXRlVHlwZSBkZWxlZ2F0
ZShXVEZNb3ZlKGNvbm5lY3Rpb24pLCBpbml0aWFsaXplck1lc3NhZ2UpOwogCiAgICAgLy8gV2Ug
ZG9uJ3Qgd2FudCBYUEMgdG8gYmUgaW4gY2hhcmdlIG9mIHdoZXRoZXIgdGhlIHByb2Nlc3Mgc2hv
dWxkIGJlIHRlcm1pbmF0ZWQgb3Igbm90LApAQCAtMTI0LDUgKzEyNywzIEBAIGludCBYUENTZXJ2
aWNlTWFpbihpbnQsIGNvbnN0IGNoYXIqKik7CiB2b2lkIFhQQ1NlcnZpY2VFeGl0KE9TT2JqZWN0
UHRyPHhwY19vYmplY3RfdD4mJiBwcmlvcml0eUJvb3N0TWVzc2FnZSk7CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAotCi0jZW5kaWYgLy8gWFBDU2VydmljZUVudHJ5UG9pbnRfaApJbmRleDogU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAyMzgzNTEpCisr
KyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC02NTI3LDYgKzY1MjcsMTEgQEAgV2ViUGFnZUNyZWF0aW9uUGFyYW1ldGVycyBXZWJQYWdl
UHJveHk6OgogICAgIHJldHVybiBwYXJhbWV0ZXJzOwogfQogCit2b2lkIFdlYlBhZ2VQcm94eTo6
aXNKSVRFbmFibGVkKENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYm9vbCk+JiYgY29tcGxldGlvbkhh
bmRsZXIpCit7CisgICAgbV9wcm9jZXNzLT5jb25uZWN0aW9uKCktPnNlbmRXaXRoQXN5bmNSZXBs
eShNZXNzYWdlczo6V2ViUHJvY2Vzczo6SXNKSVRFbmFibGVkKCksIFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpKTsKK30KKwogdm9pZCBXZWJQYWdlUHJveHk6OmVudGVyQWNjZWxlcmF0ZWRDb21w
b3NpdGluZ01vZGUoY29uc3QgTGF5ZXJUcmVlQ29udGV4dCYgbGF5ZXJUcmVlQ29udGV4dCkKIHsK
ICAgICBwYWdlQ2xpZW50KCkuZW50ZXJBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShsYXllclRy
ZWVDb250ZXh0KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShy
ZXZpc2lvbiAyMzgzNTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
aAkod29ya2luZyBjb3B5KQpAQCAtODczLDcgKzg3Myw5IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dFBhZ2luYXRpb25MaW5lR3JpZEVuYWJsZWQoYm9vbCk7CiAgICAgYm9vbCBwYWdpbmF0aW9uTGlu
ZUdyaWRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gbV9wYWdpbmF0aW9uTGluZUdyaWRFbmFibGVk
OyB9CiAgICAgdW5zaWduZWQgcGFnZUNvdW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlQ291bnQ7
IH0KLSAgICAgICAgCisKKyAgICB2b2lkIGlzSklURW5hYmxlZChDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKGJvb2wpPiYmKTsKKwogI2lmIFBMQVRGT1JNKE1BQykKICAgICB2b2lkIHNldFVzZVN5c3Rl
bUFwcGVhcmFuY2UoYm9vbCk7CiAgICAgYm9vbCB1c2VTeXN0ZW1BcHBlYXJhbmNlKCkgY29uc3Qg
eyByZXR1cm4gbV91c2VTeXN0ZW1BcHBlYXJhbmNlOyB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHJldmlzaW9uIDIzODM1MSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTUxLDYgKzUxLDcgQEAKICNpbmNsdWRlICJXZWJVc2VyQ29udGVudENvbnRyb2xsZXJQcm94eS5o
IgogI2luY2x1ZGUgIldlYnNpdGVEYXRhLmgiCiAjaW5jbHVkZSAiV2Vic2l0ZURhdGFGZXRjaE9w
dGlvbi5oIgorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL1ZNLmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9EaWFnbm9zdGljTG9nZ2luZ0tleXMuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1ByZXdhcm1JbmZv
cm1hdGlvbi5oPgogI2luY2x1ZGUgPFdlYkNvcmUvUHVibGljU3VmZml4Lmg+CkBAIC0xMjIxLDYg
KzEyMjIsMTEgQEAgdm9pZCBXZWJQcm9jZXNzUHJveHk6OmlzUmVzcG9uc2l2ZShXVEY6OgogICAg
IHNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3M6Ok1haW5UaHJlYWRQaW5nKCksIDApOwogfQogCiti
b29sIFdlYlByb2Nlc3NQcm94eTo6aXNKSVRFbmFibGVkKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
cHJvY2Vzc1Bvb2woKS5jb25maWd1cmF0aW9uKCkuaXNKSVRFbmFibGVkKCk7Cit9CisKIHZvaWQg
V2ViUHJvY2Vzc1Byb3h5OjpkaWRSZWNlaXZlTWFpblRocmVhZFBpbmcoKQogewogICAgIHJlc3Bv
bnNpdmVuZXNzVGltZXIoKS5zdG9wKCk7CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUHJveHkuaAkocmV2aXNpb24gMjM4MzUxKQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTExMCw3ICsxMTAsNyBA
QCBwdWJsaWM6CiAKICAgICBXZWJDb25uZWN0aW9uKiB3ZWJDb25uZWN0aW9uKCkgY29uc3QgeyBy
ZXR1cm4gbV93ZWJDb25uZWN0aW9uLmdldCgpOyB9CiAKLSAgICBXZWJQcm9jZXNzUG9vbCYgcHJv
Y2Vzc1Bvb2woKSB7IEFTU0VSVChtX3Byb2Nlc3NQb29sKTsgcmV0dXJuICptX3Byb2Nlc3NQb29s
LmdldCgpOyB9CisgICAgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sKCkgY29uc3QgeyBBU1NF
UlQobV9wcm9jZXNzUG9vbCk7IHJldHVybiAqbV9wcm9jZXNzUG9vbC5nZXQoKTsgfQogCiAgICAg
Ly8gRklYTUU6IFdlYnNpdGVEYXRhU3RvcmVzIHNob3VsZCBiZSBtYWRlIHBlci1XZWJQYWdlUHJv
eHkgdGhyb3VnaG91dCBXZWJLaXQyCiAgICAgV2Vic2l0ZURhdGFTdG9yZSYgd2Vic2l0ZURhdGFT
dG9yZSgpIGNvbnN0IHsgcmV0dXJuIG1fd2Vic2l0ZURhdGFTdG9yZS5nZXQoKTsgfQpAQCAtMjU4
LDYgKzI1OCw4IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIGNhY2hlTWVkaWFNSU1FVHlwZXNJbnRl
cm5hbChjb25zdCBWZWN0b3I8U3RyaW5nPiYpOwogI2VuZGlmCiAKKyAgICBib29sIGlzSklURW5h
YmxlZCgpIGNvbnN0IGZpbmFsOworICAgIAogcHJpdmF0ZToKICAgICAvLyBJUEMgbWVzc2FnZSBo
YW5kbGVycy4KICAgICB2b2lkIHVwZGF0ZUJhY2tGb3J3YXJkSXRlbShjb25zdCBCYWNrRm9yd2Fy
ZExpc3RJdGVtU3RhdGUmKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9BUElQ
cm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0FQSS9BUElQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uY3BwCShyZXZpc2lvbiAy
MzgzNTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25m
aWd1cmF0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE2LDYgKzExNiw3IEBAIFJlZjxQcm9j
ZXNzUG9vbENvbmZpZ3VyYXRpb24+IFByb2Nlc3NQb28KICAgICBjb3B5LT5tX3Nob3VsZFRha2VV
SUJhY2tncm91bmRBc3NlcnRpb24gPSB0aGlzLT5tX3Nob3VsZFRha2VVSUJhY2tncm91bmRBc3Nl
cnRpb247CiAgICAgY29weS0+bV9zaG91bGRDYXB0dXJlQXVkaW9JblVJUHJvY2VzcyA9IHRoaXMt
Pm1fc2hvdWxkQ2FwdHVyZUF1ZGlvSW5VSVByb2Nlc3M7CiAgICAgY29weS0+bV9zaG91bGRDYXB0
dXJlRGlzcGxheUluVUlQcm9jZXNzID0gdGhpcy0+bV9zaG91bGRDYXB0dXJlRGlzcGxheUluVUlQ
cm9jZXNzOworICAgIGNvcHktPm1faXNKSVRFbmFibGVkID0gdGhpcy0+bV9pc0pJVEVuYWJsZWQ7
CiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICBjb3B5LT5tX2N0RGF0YUNvbm5lY3Rpb25T
ZXJ2aWNlVHlwZSA9IHRoaXMtPm1fY3REYXRhQ29ubmVjdGlvblNlcnZpY2VUeXBlOwogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1
cmF0aW9uLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0FQSVBy
b2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCShyZXZpc2lvbiAyMzgzNTEpCisrKyBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9BUEkvQVBJUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTE0Nyw2ICsxNDcsOSBAQCBwdWJsaWM6CiAgICAgYm9vbCBzaG91bGRDYXB0dXJl
RGlzcGxheUluVUlQcm9jZXNzKCkgY29uc3QgeyByZXR1cm4gbV9zaG91bGRDYXB0dXJlRGlzcGxh
eUluVUlQcm9jZXNzOyB9CiAgICAgdm9pZCBzZXRTaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9j
ZXNzKGJvb2wgc2hvdWxkQ2FwdHVyZURpc3BsYXlJblVJUHJvY2VzcykgeyBtX3Nob3VsZENhcHR1
cmVEaXNwbGF5SW5VSVByb2Nlc3MgPSBzaG91bGRDYXB0dXJlRGlzcGxheUluVUlQcm9jZXNzOyB9
CiAKKyAgICBib29sIGlzSklURW5hYmxlZCgpIGNvbnN0IHsgcmV0dXJuIG1faXNKSVRFbmFibGVk
OyB9CisgICAgdm9pZCBzZXRKSVRFbmFibGVkKGJvb2wgZW5hYmxlZCkgeyBtX2lzSklURW5hYmxl
ZCA9IGVuYWJsZWQ7IH0KKyAgICAKICNpZiBQTEFURk9STShJT1NfRkFNSUxZKQogICAgIGNvbnN0
IFdURjo6U3RyaW5nJiBjdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUoKSBjb25zdCB7IHJldHVy
biBtX2N0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlwZTsgfQogICAgIHZvaWQgc2V0Q1REYXRhQ29u
bmVjdGlvblNlcnZpY2VUeXBlKGNvbnN0IFdURjo6U3RyaW5nJiBjdERhdGFDb25uZWN0aW9uU2Vy
dmljZVR5cGUpIHsgbV9jdERhdGFDb25uZWN0aW9uU2VydmljZVR5cGUgPSBjdERhdGFDb25uZWN0
aW9uU2VydmljZVR5cGU7IH0KQEAgLTIyMCw2ICsyMjMsNyBAQCBwcml2YXRlOgogICAgIGJvb2wg
bV9wcm9jZXNzU3dhcHNPbldpbmRvd09wZW5XaXRoT3BlbmVyIHsgZmFsc2UgfTsKICAgICBzdGQ6
Om9wdGlvbmFsPGJvb2w+IG1faXNBdXRvbWF0aWNQcm9jZXNzV2FybWluZ0VuYWJsZWRCeUNsaWVu
dDsKICAgICBXVEY6OlN0cmluZyBtX2N1c3RvbVdlYkNvbnRlbnRTZXJ2aWNlQnVuZGxlSWRlbnRp
ZmllcjsKKyAgICBib29sIG1faXNKSVRFbmFibGVkIHsgdHJ1ZSB9OwogCiAjaWYgUExBVEZPUk0o
SU9TX0ZBTUlMWSkKICAgICBXVEY6OlN0cmluZyBtX2N0RGF0YUNvbm5lY3Rpb25TZXJ2aWNlVHlw
ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0K
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmll
dy5tbQkocmV2aXNpb24gMjM4MzUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlldy5tbQkod29ya2luZyBjb3B5KQpAQCAtNDc2OCw2ICs0NzY4LDEzIEBAICsg
KE5TVVJMICopX3Zpc2l0VW5zYWZlV2Vic2l0ZVNlbnRpbmVsCiAgICAgcmV0dXJuIFdlYktpdDo6
U2FmZUJyb3dzaW5nV2FybmluZzo6dmlzaXRVbnNhZmVXZWJzaXRlU2VudGluZWwoKTsKIH0KIAor
LSAodm9pZClfaXNKSVRFbmFibGVkOih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyCit7
CisgICAgX3BhZ2UtPmlzSklURW5hYmxlZChbY29tcGxldGlvbkhhbmRsZXIgPSBtYWtlQmxvY2tQ
dHIoY29tcGxldGlvbkhhbmRsZXIpXSAoYm9vbCBlbmFibGVkKSB7CisgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKGVuYWJsZWQpOworICAgIH0pOworfQorCiAtICh2b2lkKV9ldmFsdWF0ZUphdmFT
Y3JpcHRXaXRob3V0VXNlckdlc3R1cmU6KE5TU3RyaW5nICopamF2YVNjcmlwdFN0cmluZyBjb21w
bGV0aW9uSGFuZGxlcjoodm9pZCAoXikoaWQsIE5TRXJyb3IgKikpY29tcGxldGlvbkhhbmRsZXIK
IHsKICAgICBbc2VsZiBfZXZhbHVhdGVKYXZhU2NyaXB0OmphdmFTY3JpcHRTdHJpbmcgZm9yY2VV
c2VyR2VzdHVyZTpOTyBjb21wbGV0aW9uSGFuZGxlcjpjb21wbGV0aW9uSGFuZGxlcl07CkluZGV4
OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3UHJpdmF0ZS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdQ
cml2YXRlLmgJKHJldmlzaW9uIDIzODM1MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdQcml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTE5Miw2ICsxOTIs
NyBAQCB0eXBlZGVmIE5TX09QVElPTlMoTlNVSW50ZWdlciwgX1dLUmVjdEVkCiArIChOU1VSTCAq
KV92aXNpdFVuc2FmZVdlYnNpdGVTZW50aW5lbCBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19N
QUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIC0gKHZvaWQpX3Nob3dTYWZlQnJvd3NpbmdXYXJu
aW5nV2l0aFRpdGxlOihOU1N0cmluZyAqKXRpdGxlIHdhcm5pbmc6KE5TU3RyaW5nICopd2Fybmlu
ZyBkZXRhaWxzOihOU0F0dHJpYnV0ZWRTdHJpbmcgKilkZXRhaWxzIGNvbXBsZXRpb25IYW5kbGVy
Oih2b2lkKF4pKEJPT0wpKWNvbXBsZXRpb25IYW5kbGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4
KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogCistICh2b2lkKV9pc0pJVEVuYWJsZWQ6
KHZvaWQoXikoQk9PTCkpY29tcGxldGlvbkhhbmRsZXIgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3go
V0tfTUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAtIChJQkFjdGlvbilfYWxpZ25DZW50ZXI6
KGlkKXNlbmRlciBXS19BUElfQVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lP
U19UQkEpKTsKIC0gKElCQWN0aW9uKV9hbGlnbkp1c3RpZmllZDooaWQpc2VuZGVyIFdLX0FQSV9B
VkFJTEFCTEUobWFjb3N4KFdLX01BQ19UQkEpLCBpb3MoV0tfSU9TX1RCQSkpOwogLSAoSUJBY3Rp
b24pX2FsaWduTGVmdDooaWQpc2VuZGVyIFdLX0FQSV9BVkFJTEFCTEUobWFjb3N4KFdLX01BQ19U
QkEpLCBpb3MoV0tfSU9TX1RCQSkpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJ
L0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0FQSS9Db2NvYS9fV0tQcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24u
aAkocmV2aXNpb24gMjM4MzUxKQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQVBJL0NvY29h
L19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5oCSh3b3JraW5nIGNvcHkpCkBAIC02OCw2ICs2
OCw3IEBAIFdLX0NMQVNTX0FWQUlMQUJMRShtYWNvc3goMTAuMTApLCBpb3MoOC4KIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIHByZXdhcm1zUHJvY2Vzc2VzQXV0b21hdGljYWxseSBXS19BUElf
QVZBSUxBQkxFKG1hY29zeChXS19NQUNfVEJBKSwgaW9zKFdLX0lPU19UQkEpKTsKIEBwcm9wZXJ0
eSAobm9uYXRvbWljKSBCT09MIHBhZ2VDYWNoZUVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNv
c3goMTAuMTQpLCBpb3MoMTIuMCkpOwogQHByb3BlcnR5IChub25hdG9taWMpIEJPT0wgc3VwcHJl
c3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlIFdLX0FQSV9BVkFJTEFCTEUo
bWFjb3N4KDEwLjE0KSwgaW9zKDEyLjApKTsKK0Bwcm9wZXJ0eSAobm9uYXRvbWljLCBnZXR0ZXI9
aXNKSVRFbmFibGVkKSBCT09MIEpJVEVuYWJsZWQgV0tfQVBJX0FWQUlMQUJMRShtYWNvc3goV0tf
TUFDX1RCQSksIGlvcyhXS19JT1NfVEJBKSk7CiAKIEBlbmQKIApJbmRleDogU291cmNlL1dlYktp
dC9VSVByb2Nlc3MvQVBJL0NvY29hL19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi5tbQo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bv
b2xDb25maWd1cmF0aW9uLm1tCShyZXZpc2lvbiAyMzgzNTEpCisrKyBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLm1tCSh3b3JraW5n
IGNvcHkpCkBAIC0yOTgsNiArMjk4LDE2IEBAIC0gKEJPT0wpc3VwcHJlc3Nlc0Nvbm5lY3Rpb25U
ZXJtaW5hdGlvbk8KICAgICByZXR1cm4gX3Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbi0+c3VwcHJl
c3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVtQ2hhbmdlKCk7CiB9CiAKKy0gKEJPT0wp
aXNKSVRFbmFibGVkCit7CisgICAgcmV0dXJuIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPmlz
SklURW5hYmxlZCgpOworfQorCistICh2b2lkKXNldEpJVEVuYWJsZWQ6KEJPT0wpZW5hYmxlZAor
eworICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldEpJVEVuYWJsZWQoZW5hYmxlZCk7
Cit9CisKIC0gKHZvaWQpc2V0U3VwcHJlc3Nlc0Nvbm5lY3Rpb25UZXJtaW5hdGlvbk9uU3lzdGVt
Q2hhbmdlOihCT09MKXN1cHByZXNzZXNDb25uZWN0aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5n
ZQogewogICAgIF9wcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24tPnNldFN1cHByZXNzZXNDb25uZWN0
aW9uVGVybWluYXRpb25PblN5c3RlbUNoYW5nZShzdXBwcmVzc2VzQ29ubmVjdGlvblRlcm1pbmF0
aW9uT25TeXN0ZW1DaGFuZ2UpOwpJbmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvTGF1bmNo
ZXIvUHJvY2Vzc0xhdW5jaGVyLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nl
c3MvTGF1bmNoZXIvUHJvY2Vzc0xhdW5jaGVyLmgJKHJldmlzaW9uIDIzODM1MSkKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL1Byb2Nlc3NMYXVuY2hlci5oCSh3b3JraW5nIGNv
cHkpCkBAIC00OCw2ICs0OCw3IEBAIHB1YmxpYzoKICAgICAgICAgdmlydHVhbCB+Q2xpZW50KCkg
eyB9CiAgICAgICAgIAogICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTGF1bmNoaW5nKFBy
b2Nlc3NMYXVuY2hlciosIElQQzo6Q29ubmVjdGlvbjo6SWRlbnRpZmllcikgPSAwOworICAgICAg
ICB2aXJ0dWFsIGJvb2wgaXNKSVRFbmFibGVkKCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IH07CiAgICAgCiAgICAgZW51bSBjbGFzcyBQcm9jZXNzVHlwZSB7CkluZGV4OiBTb3VyY2UvV2Vi
S2l0L1VJUHJvY2Vzcy9MYXVuY2hlci9tYWMvUHJvY2Vzc0xhdW5jaGVyTWFjLm1tCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xhdW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNo
ZXJNYWMubW0JKHJldmlzaW9uIDIzODM1MSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0xh
dW5jaGVyL21hYy9Qcm9jZXNzTGF1bmNoZXJNYWMubW0JKHdvcmtpbmcgY29weSkKQEAgLTE3Myw2
ICsxNzMsMTAgQEAgdm9pZCBQcm9jZXNzTGF1bmNoZXI6OmxhdW5jaFByb2Nlc3MoKQogCiAgICAg
Ly8gRklYTUU6IFN3aXRjaCB0byB4cGNfY29ubmVjdGlvbl9zZXRfYm9vdHN0cmFwIG9uY2UgaXQn
cyBhdmFpbGFibGUgZXZlcnl3aGVyZSB3ZSBuZWVkLgogICAgIGF1dG8gYm9vdHN0cmFwTWVzc2Fn
ZSA9IGFkb3B0T1NPYmplY3QoeHBjX2RpY3Rpb25hcnlfY3JlYXRlKG51bGxwdHIsIG51bGxwdHIs
IDApKTsKKyAgICAKKyAgICBpZiAobV9jbGllbnQgJiYgIW1fY2xpZW50LT5pc0pJVEVuYWJsZWQo
KSkKKyAgICAgICAgeHBjX2RpY3Rpb25hcnlfc2V0X2Jvb2woYm9vdHN0cmFwTWVzc2FnZS5nZXQo
KSwgImRpc2FibGUtaml0IiwgdHJ1ZSk7CisKICAgICB4cGNfZGljdGlvbmFyeV9zZXRfc3RyaW5n
KGJvb3RzdHJhcE1lc3NhZ2UuZ2V0KCksICJtZXNzYWdlLW5hbWUiLCAiYm9vdHN0cmFwIik7CiAK
ICAgICB4cGNfZGljdGlvbmFyeV9zZXRfbWFjaF9zZW5kKGJvb3RzdHJhcE1lc3NhZ2UuZ2V0KCks
ICJzZXJ2ZXItcG9ydCIsIGxpc3RlbmluZ1BvcnQpOwpJbmRleDogU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9XZWJQcm9jZXNzLmNwcAkocmV2aXNpb24gMjM4MzUxKQorKysgU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC05MzAsNiArOTMwLDEx
IEBAIHZvaWQgV2ViUHJvY2Vzczo6cmVzZXRQbHVnaW5Mb2FkQ2xpZW50UG8KICNlbmRpZgogfQog
Cit2b2lkIFdlYlByb2Nlc3M6OmlzSklURW5hYmxlZChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKGJv
b2wpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQoreworICAgIGNvbXBsZXRpb25IYW5kbGVyKEpTQzo6
Vk06OmNhblVzZUpJVCgpKTsKK30KKwogdm9pZCBXZWJQcm9jZXNzOjpjbGVhclBsdWdpbkNsaWVu
dFBvbGljaWVzKCkKIHsKICNpZiBFTkFCTEUoTkVUU0NBUEVfUExVR0lOX0FQSSkgJiYgUExBVEZP
Uk0oTUFDKQpJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCShyZXZpc2lv
biAyMzgzNTEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViUHJvY2Vzcy5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0yMDQsNiArMjA0LDggQEAgcHVibGljOgogCiAgICAgdm9pZCBzZW5kUHJl
d2FybUluZm9ybWF0aW9uKGNvbnN0IFdlYkNvcmU6OlVSTCYpOwogCisgICAgdm9pZCBpc0pJVEVu
YWJsZWQoQ29tcGxldGlvbkhhbmRsZXI8dm9pZChib29sKT4mJik7CisKICNpZiBQTEFURk9STShJ
T1NfRkFNSUxZKQogICAgIHZvaWQgcmVzZXRBbGxHZW9sb2NhdGlvblBlcm1pc3Npb25zKCk7CiAj
ZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1lc3NhZ2Vz
LmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQcm9jZXNzLm1l
c3NhZ2VzLmluCShyZXZpc2lvbiAyMzgzNTEpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViUHJvY2Vzcy5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMTQxLDYgKzE0MSw4IEBA
IG1lc3NhZ2VzIC0+IFdlYlByb2Nlc3MgTGVnYWN5UmVjZWl2ZXIgewogI2VuZGlmCiAjZW5kaWYK
IAorICAgIElzSklURW5hYmxlZCgpIC0+IChib29sIGVuYWJsZWQpIEFzeW5jCisKICNpZiBQTEFU
Rk9STShDT0NPQSkKICAgICBTZXRNZWRpYU1JTUVUeXBlcyhWZWN0b3I8U3RyaW5nPiB0eXBlcykK
ICNlbmRpZgpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5n
ZUxvZwkocmV2aXNpb24gMjM4MzYwKQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkp
CkBAIC0xLDMgKzEsMTUgQEAKKzIwMTgtMTEtMTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0
ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBBZGQgU1BJIHRvIGRpc2FibGUgSklUIGluIGEg
V0tXZWJWaWV3CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xOTE4MjIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzI4MTE5MzYwPgorCisgICAgICAgIFJl
dmlld2VkIGJ5IEdlb2ZmcmV5IEdhcmVuLgorCisgICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0
V2ViS2l0QVBJLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogVGVzdFdlYktp
dEFQSS9UZXN0cy9XZWJLaXRDb2NvYS9EaXNhYmxlSklULm1tOiBBZGRlZC4KKyAgICAgICAgKFRF
U1QpOgorCiAyMDE4LTExLTE3ICBXZW5zb24gSHNpZWggIDx3ZW5zb25faHNpZWhAYXBwbGUuY29t
PgogCiAgICAgICAgIFtpT1NdIFJlbW92ZSBhbGwgdXNhZ2VzIG9mIFVJSXRlbVByb3ZpZGVyLCBV
SUl0ZW1Qcm92aWRlclJlYWRpbmcsIGFuZCByZWxhdGVkIGNsYXNzZXMKSW5kZXg6IFRvb2xzL1Rl
c3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdFdlYktpdEFQSS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCShyZXZpc2lvbiAyMzgzNTEpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rl
c3RXZWJLaXRBUEkueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAt
MjcyLDYgKzI3Miw3IEBACiAJCTU3QzNGQTY2MUY3QzI0OEYwMDlENEI4MCAvKiBXZWFrUHRyLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDFDQjlCQzM3
MUE2NzQ4MjMwMEZFNTY3OCAvKiBXZWFrUHRyLmNwcCAqLzsgfTsKIAkJNTdGNEFBQTAyMDhGQUVG
MDAwQTY4RTlFIC8qIFNTTEtleUdlbmVyYXRvci5tbSBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDU3RjRBQTlGMjA4RkE4M0QwMEE2OEU5RSAvKiBTU0xLZXlH
ZW5lcmF0b3IubW0gKi87IH07CiAJCTU3RjU2QTVDMUM3RjhDQzEwMEYzMUQ3RSAvKiBJc05hdmln
YXRpb25BY3Rpb25UcnVzdGVkLmh0bWwgaW4gQ29weSBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gNTdGNTZBNUIxQzdGOEE0MDAwRjMxRDdFIC8qIElzTmF2aWdh
dGlvbkFjdGlvblRydXN0ZWQuaHRtbCAqLzsgfTsKKwkJNUMwMTYwQzEyMUExMzI0NjAwNzdGQTMy
IC8qIEpJVEVuYWJsZWQubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSA1QzAxNjBDMDIxQTEzMjMyMDA3N0ZBMzIgLyogSklURW5hYmxlZC5tbSAqLzsgfTsK
IAkJNUMwQkY4OEQxREQ1OTY0RDAwQjAwMzI4IC8qIE1lbW9yeVByZXNzdXJlSGFuZGxlci5tbSBp
biBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDVDMEJGODhDMURE
NTk1NzQwMEIwMDMyOCAvKiBNZW1vcnlQcmVzc3VyZUhhbmRsZXIubW0gKi87IH07CiAJCTVDMEJG
ODkxMURENTk5QTkwMEIwMDMyOCAvKiBXZWJWaWV3Q2FuUGFzdGVaZXJvUG5nLm1tIGluIFNvdXJj
ZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNUMwQkY4OEYxREQ1OTk5QjAw
QjAwMzI4IC8qIFdlYlZpZXdDYW5QYXN0ZVplcm9QbmcubW0gKi87IH07CiAJCTVDMEJGODkyMURE
NTk5QjYwMEIwMDMyOCAvKiBFYXJseUtWT0NyYXNoLm1tIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMUE5RkI2Q0MxQ0EzNEJFNTAwOTY2MTI0IC8qIEVhcmx5
S1ZPQ3Jhc2gubW0gKi87IH07CkBAIC0xNjA0LDYgKzE2MDUsNyBAQAogCQk1N0YxMEQ5MjFDN0U3
QjM4MDBFQ0RGMzAgLyogSXNOYXZpZ2F0aW9uQWN0aW9uVHJ1c3RlZC5tbSAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IElzTmF2aWdhdGlvbkFjdGlvblRydXN0ZWQubW07
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RjRBQTlGMjA4RkE4M0QwMEE2OEU5RSAv
KiBTU0xLZXlHZW5lcmF0b3IubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTU0xLZXlHZW5lcmF0
b3IubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTU3RjU2QTVCMUM3RjhBNDAwMEYz
MUQ3RSAvKiBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0bWwgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0Lmh0
bWw7IHBhdGggPSBJc05hdmlnYXRpb25BY3Rpb25UcnVzdGVkLmh0bWw7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCTVDMDE2MEMwMjFBMTMyMzIwMDc3RkEzMiAvKiBKSVRFbmFibGVkLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gSklURW5hYmxlZC5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNUMwQkY4OEMxREQ1OTU3NDAwQjAwMzI4IC8q
IE1lbW9yeVByZXNzdXJlSGFuZGxlci5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNw
cDsgcGF0aCA9IE1lbW9yeVByZXNzdXJlSGFuZGxlci5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNUMwQkY4OEYxREQ1OTk5QjAwQjAwMzI4IC8qIFdlYlZpZXdDYW5QYXN0ZVplcm9Q
bmcubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBXZWJWaWV3Q2Fu
UGFzdGVaZXJvUG5nLm1tOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1QzE5QTUyMzFG
RDBGMzI2MDBFRUEzMjMgLyogQ29va2llUHJpdmF0ZUJyb3dzaW5nLm1tICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gQ29va2llUHJpdmF0ZUJyb3dzaW5nLm1tOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMjQyMSw2ICsyNDIzLDcgQEAKIAkJCQk3OUM1RDQz
MDIwOUQ3NjgzMDBGMUU3Q0EgLyogSW5qZWN0ZWRCdW5kbGVOb2RlSGFuZGxlSXNUZXh0RmllbGQu
bW0gKi8sCiAJCQkJMkRCMDIzMkUxRTRFODcxODAwNzA3MTIzIC8qIEludGVyYWN0aW9uRGVhZGxv
Y2tBZnRlckNyYXNoLm1tICovLAogCQkJCTVDNjlCREQ0MUY4MkE3RUIwMDBGNEY0QiAvKiBKYXZh
U2NyaXB0RHVyaW5nTmF2aWdhdGlvbi5tbSAqLywKKwkJCQk1QzAxNjBDMDIxQTEzMjMyMDA3N0ZB
MzIgLyogSklURW5hYmxlZC5tbSAqLywKIAkJCQlDMjVDQ0EwNTFFNTEzODBCMDAyNkNCOEEgLyog
TGluZUJyZWFraW5nLm1tICovLAogCQkJCTM3RDM2RUQ2MUFGNDJFQ0QwMEJBRjVEOSAvKiBMb2Fk
QWx0ZXJuYXRlSFRNTFN0cmluZy5tbSAqLywKIAkJCQlBMTI1NDc4RDFEQjE4Qjk0MDAzNTg1NjQg
LyogTG9hZERhdGFXaXRoTmlsTUlNRVR5cGUubW0gKi8sCkBAIC0zOTQ4LDYgKzM5NTEsNyBAQAog
CQkJCTVDNjlCREQ1MUY4MkE3RUYwMDBGNEY0QiAvKiBKYXZhU2NyaXB0RHVyaW5nTmF2aWdhdGlv
bi5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3RUFEMUE0MTFBMzQwMDQ0N0M0QyAvKiBKYXZh
U2NyaXB0VGVzdC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0VBNTFBNDExQTA4MDA0NDdD
NEMgLyogSmF2YVNjcmlwdFRlc3RNYWMubW0gaW4gU291cmNlcyAqLywKKwkJCQk1QzAxNjBDMTIx
QTEzMjQ2MDA3N0ZBMzIgLyogSklURW5hYmxlZC5tbSBpbiBTb3VyY2VzICovLAogCQkJCTdDQ0U3
RUM0MUE0MTFBN0UwMDQ0N0M0QyAvKiBKU1dyYXBwZXJGb3JOb2RlSW5XZWJGcmFtZS5tbSBpbiBT
b3VyY2VzICovLAogCQkJCUY0NUUxNTczMjExMkNFMjkwMDMwN0U4MiAvKiBLZXlib2FyZElucHV0
VGVzdHNJT1MubW0gaW4gU291cmNlcyAqLywKIAkJCQk3Q0NFN0YwNjFBNDExQUU2MDA0NDdDNEMg
LyogTGF5b3V0TWlsZXN0b25lc1dpdGhBbGxDb250ZW50SW5GcmFtZS5jcHAgaW4gU291cmNlcyAq
LywKSW5kZXg6IFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvV2ViS2l0Q29jb2EvSklURW5hYmxl
ZC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYktpdENvY29h
L0pJVEVuYWJsZWQubW0JKG5vbmV4aXN0ZW50KQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJLaXRDb2NvYS9KSVRFbmFibGVkLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNjAg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW1wb3J0ICJjb25maWcuaCIKKworI2lmIFdLX0FQSV9FTkFCTEVE
CisKKyNpbXBvcnQgIlBsYXRmb3JtVXRpbGl0aWVzLmgiCisjaW1wb3J0IDxXZWJLaXQvV0tQcm9j
ZXNzUG9vbFByaXZhdGUuaD4KKyNpbXBvcnQgPFdlYktpdC9XS1dlYlZpZXdQcml2YXRlLmg+Cisj
aW1wb3J0IDxXZWJLaXQvX1dLUHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uLmg+CisjaW1wb3J0IDx3
dGYvUmV0YWluUHRyLmg+CisKK1RFU1QoV2ViS2l0LCBKSVRFbmFibGVkKQoreworICAgIGF1dG8g
Y2hlY2tKSVRFbmFibGVkID0gW10gKFJldGFpblB0cjxXS1dlYlZpZXc+JiYgd2ViVmlldywgQk9P
TCBleHBlY3RlZFZhbHVlKSB7CisgICAgICAgIF9fYmxvY2sgYm9vbCBkb25lID0gZmFsc2U7Cisg
ICAgICAgIFt3ZWJWaWV3IGV2YWx1YXRlSmF2YVNjcmlwdDpAImZvcihpPTA7aTwxMDAwMDA7Kytp
KTsnYWJjJyIgY29tcGxldGlvbkhhbmRsZXI6XihpZCByZXN1bHQsIE5TRXJyb3IgKmVycm9yKSB7
CisgICAgICAgICAgICBFWFBFQ1RfVFJVRShlcnJvciA9PSBuaWwpOworICAgICAgICAgICAgRVhQ
RUNUX1NUUkVRKFtyZXN1bHQgVVRGOFN0cmluZ10sICJhYmMiKTsKKyAgICAgICAgICAgIFt3ZWJW
aWV3IF9pc0pJVEVuYWJsZWQ6XihCT09MIGVuYWJsZWQpIHsKKyAgICAgICAgICAgICAgICBFWFBF
Q1RfVFJVRShlbmFibGVkID09IGV4cGVjdGVkVmFsdWUpOworICAgICAgICAgICAgICAgIGRvbmUg
PSB0cnVlOworICAgICAgICAgICAgfV07CisgICAgICAgIH1dOworICAgICAgICBUZXN0V2ViS2l0
QVBJOjpVdGlsOjpydW4oJmRvbmUpOworICAgIH07CisKKyAgICBhdXRvIHByb2Nlc3NQb29sQ29u
ZmlndXJhdGlvbiA9IGFkb3B0TlMoW19XS1Byb2Nlc3NQb29sQ29uZmlndXJhdGlvbiBuZXddKTsK
KyAgICBbcHJvY2Vzc1Bvb2xDb25maWd1cmF0aW9uIHNldEpJVEVuYWJsZWQ6Tk9dOworICAgIGF1
dG8gY29uZmlndXJhdGlvbiA9IGFkb3B0TlMoW1dLV2ViVmlld0NvbmZpZ3VyYXRpb24gbmV3XSk7
CisgICAgW2NvbmZpZ3VyYXRpb24gc2V0UHJvY2Vzc1Bvb2w6W1tbV0tQcm9jZXNzUG9vbCBhbGxv
Y10gX2luaXRXaXRoQ29uZmlndXJhdGlvbjpwcm9jZXNzUG9vbENvbmZpZ3VyYXRpb24uZ2V0KCld
IGF1dG9yZWxlYXNlXV07CisgICAgYXV0byB3ZWJWaWV3Tm9KSVQgPSBhZG9wdE5TKFtbV0tXZWJW
aWV3IGFsbG9jXSBpbml0V2l0aEZyYW1lOk5TTWFrZVJlY3QoMCwgMCwgODAwLCA2MDApIGNvbmZp
Z3VyYXRpb246Y29uZmlndXJhdGlvbi5nZXQoKV0pOworICAgIGNoZWNrSklURW5hYmxlZCh3ZWJW
aWV3Tm9KSVQsIE5PKTsKKyAgICBjaGVja0pJVEVuYWJsZWQoYWRvcHROUyhbV0tXZWJWaWV3IG5l
d10pLCBZRVMpOworfQorCisjZW5kaWYK
</data>

          </attachment>
      

    </bug>

</bugzilla>