<?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>211033</bug_id>
          
          <creation_ts>2020-04-25 16:29:41 -0700</creation_ts>
          <short_desc>Remove implicit URL-&gt;String conversion operators</short_desc>
          <delta_ts>2020-05-20 16:00:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>aboxhall</cc>
    
    <cc>apinheiro</cc>
    
    <cc>benjamin</cc>
    
    <cc>berto</cc>
    
    <cc>cdumez</cc>
    
    <cc>cfleizach</cc>
    
    <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>dmazzoni</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jcraig</cc>
    
    <cc>jdiggs</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jiewen_tan</cc>
    
    <cc>philipj</cc>
    
    <cc>samuel_white</cc>
    
    <cc>sergio</cc>
    
    <cc>toyoshim</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yutak</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1645678</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-25 16:29:41 -0700</bug_when>
    <thetext>Remove implicit URL-&gt;String conversion operators</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645679</commentid>
    <comment_count>1</comment_count>
      <attachid>397595</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-25 16:32:04 -0700</bug_when>
    <thetext>Created attachment 397595
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645683</commentid>
    <comment_count>2</comment_count>
      <attachid>397597</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-25 16:53:32 -0700</bug_when>
    <thetext>Created attachment 397597
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645685</commentid>
    <comment_count>3</comment_count>
    <who name="EWS Watchlist">ews-watchlist</who>
    <bug_when>2020-04-25 16:54:27 -0700</bug_when>
    <thetext>Thanks for the patch. If this patch contains new public API please make sure it follows the guidelines for new WebKit2 GTK+ API. See http://trac.webkit.org/wiki/WebKitGTK/AddingNewWebKit2API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645698</commentid>
    <comment_count>4</comment_count>
      <attachid>397600</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-25 17:18:17 -0700</bug_when>
    <thetext>Created attachment 397600
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645714</commentid>
    <comment_count>5</comment_count>
      <attachid>397602</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-04-25 17:40:22 -0700</bug_when>
    <thetext>Created attachment 397602
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645718</commentid>
    <comment_count>6</comment_count>
      <attachid>397600</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-25 17:52:44 -0700</bug_when>
    <thetext>Comment on attachment 397600
Patch

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

&gt; Source/WebCore/html/DOMURL.cpp:61
&gt; +    return create(url, base.href().string());

This is not good, and easy to fix. Resolving against a base requires a parsed URL; this re-parses for no reason. Why not rearrange the code so that doesn’t happen? Could do it by having another overload of the create function or just write this function out like the one just below it.

&gt; Source/WebCore/html/HTMLPlugInElement.cpp:367
&gt; +        type = mimeTypeFromDataURL(url.string());

All the callers of the mimeTypeFromDataURL function have a URL. Maybe we should just change it to take const URL&amp; instead of StringView instead of changing all of them.

&gt; Source/WebCore/html/URLUtils.h:89
&gt; -    if (WTF::protocolIsJavaScript(href()))
&gt; +    if (href().protocolIsJavaScript())
&gt;          return &quot;javascript:&quot;_s;

Seems like we don’t need this at all. If URL::protocol properly returns &quot;javascript&quot;, then the code below will work. If it doesn’t then it seems likely protocolIsJavaScript will give us false negatives.

I think that either this code and should be removed, or it needs to keep using the protocolIsJavaScript function that works on a string. See also my comments about the future in bug 211007.

This conflicts with my changes in bug 211025; no big deal, but I would like you to look at that one at some point.

&gt; Source/WebCore/html/URLUtils.h:111
&gt; -    setHref(url);
&gt; +    setHref(url.string());

This wouldn’t be needed after my changes in bug 211025; hope you get a chance to check that out.

&gt; Source/WebCore/html/URLUtils.h:125
&gt; -    setHref(url);
&gt; +    setHref(url.string());

Ditto.

&gt; Source/WebCore/page/Location.cpp:139
&gt; +    return setLocation(activeWindow, firstWindow, url.string());

Seems unfortunate to parse, convert to a string, and then reparse. If this is guaranteed to be a complete URL and not a relative URL piece, then we could make a setLocation overload that takes a URL and use it here.

&gt; Source/WebCore/page/Location.cpp:149
&gt; +    return setLocation(activeWindow, firstWindow, url.string());

Ditto.

&gt; Source/WebCore/page/Location.cpp:159
&gt; +    return setLocation(activeWindow, firstWindow, url.string());

Ditto.

&gt; Source/WebCore/page/Location.cpp:179
&gt; +    return setLocation(activeWindow, firstWindow, url.string());

Ditto.

&gt; Source/WebCore/page/Location.cpp:189
&gt; +    return setLocation(activeWindow, firstWindow, url.string());

Ditto.

&gt; Source/WebCore/page/Location.cpp:209
&gt; +    return setLocation(activeWindow, firstWindow, url.string());

Ditto.

&gt; Source/WebKit/UIProcess/ios/WKActionSheetAssistant.mm:345
&gt; +    NSURL *targetURL = [NSURL URLWithString:_positionInformation-&gt;url.string()];

Should consider whether we can change this to:

    NSURL *targetURL = _positionInformation-&gt;url;

It would change the semantics of how the URL is created to use the NSURL * conversion in the URL class, but maybe that’s good.

&gt; Source/WebKit/UIProcess/ios/WKGeolocationProviderIOS.mm:211
&gt; +            WebKit::decidePolicyForGeolocationRequestFromOrigin(request.frameInfo.securityOrigin.securityOrigin().ptr(), request.frameInfo.request.url().string(), policyListener.get(), request.view.get());

I think we should change decidePolicyForGeolocationRequestFromOrigin to take a const URL&amp; instead of a String.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1645719</commentid>
    <comment_count>7</comment_count>
      <attachid>397602</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-25 17:55:30 -0700</bug_when>
    <thetext>Comment on attachment 397602
Patch

New changes look good; all my comments should apply to this version as well as the one I reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654530</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-20 11:02:15 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #6)
&gt; &gt; Source/WebCore/html/HTMLPlugInElement.cpp:367
&gt; &gt; +        type = mimeTypeFromDataURL(url.string());
&gt; 
&gt; All the callers of the mimeTypeFromDataURL function have a URL. Maybe we
&gt; should just change it to take const URL&amp; instead of StringView instead of
&gt; changing all of them.

HTMLPlugInImageElement has only a String when it calls mimeTypeFromDataURL.  I&apos;m going to keep it taking a StringView for now.

&gt; &gt; Source/WebCore/page/Location.cpp:139
&gt; &gt; +    return setLocation(activeWindow, firstWindow, url.string());
&gt; 
&gt; Seems unfortunate to parse, convert to a string, and then reparse. If this
&gt; is guaranteed to be a complete URL and not a relative URL piece, then we
&gt; could make a setLocation overload that takes a URL and use it here.

This is a String because it is given to Document::completeURL, which uses the string as a relative URL.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654531</commentid>
    <comment_count>9</comment_count>
      <attachid>399856</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-20 11:03:04 -0700</bug_when>
    <thetext>Created attachment 399856
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654537</commentid>
    <comment_count>10</comment_count>
      <attachid>399856</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-20 11:14:19 -0700</bug_when>
    <thetext>Comment on attachment 399856
Patch

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

&gt; Source/WebKit/UIProcess/ios/WKPDFView.mm:532
&gt; +        (NSString *)kUTTypeUTF8PlainText : (NSString *)_positionInformation.url.string(),

Looking at this makes me realize that we should add a createNSString function on WTF::String so we can make a case like this work without autorelease and without a type cast. I’d like to deprecate the operator NSString * on WTF::String and use createNSString instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654563</commentid>
    <comment_count>11</comment_count>
      <attachid>399866</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-20 11:51:29 -0700</bug_when>
    <thetext>Created attachment 399866
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654587</commentid>
    <comment_count>12</comment_count>
      <attachid>399875</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-20 12:48:37 -0700</bug_when>
    <thetext>Created attachment 399875
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654637</commentid>
    <comment_count>13</comment_count>
      <attachid>399890</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-20 14:06:30 -0700</bug_when>
    <thetext>Created attachment 399890
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654653</commentid>
    <comment_count>14</comment_count>
      <attachid>399890</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-05-20 14:47:45 -0700</bug_when>
    <thetext>Comment on attachment 399890
Patch

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

&gt; Source/WebKitLegacy/win/Plugins/PluginStream.cpp:146
&gt; -    if (protocolIsJavaScript(responseURL))
&gt; +    if (responseURL.protocolIsJavaScript())

Is this change safe? I thought you told me that invalid URLs would return false from WebCore::URL::protocolIsJavaScript, but would return true from WebCore::protocolIsJavaScript.

&gt; Source/WebKitLegacy/win/Plugins/PluginView.cpp:106
&gt; -    if (!protocolIsJavaScript(url))
&gt; +    if (!url.protocolIsJavaScript())

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654673</commentid>
    <comment_count>15</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2020-05-20 15:29:42 -0700</bug_when>
    <thetext>Yes, if you look at URL::protocolIsJavaScript you see it is no change in behavior.  Detecting javascript URLs needs special behavior and that function takes it into account, and URL::protocolIs asserts that the protocol is not &quot;javascript&quot; to enforce this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654690</commentid>
    <comment_count>16</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-05-20 15:59:56 -0700</bug_when>
    <thetext>Committed r261968: &lt;https://trac.webkit.org/changeset/261968&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 399890.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1654693</commentid>
    <comment_count>17</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-05-20 16:00:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/63467643&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397595</attachid>
            <date>2020-04-25 16:32:04 -0700</date>
            <delta_ts>2020-04-25 16:53:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211033-20200425163203.patch</filename>
            <type>text/plain</type>
            <size>10883</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA0LTI1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGltcGxpY2l0IFVSTC0+
U3RyaW5nIGNvbnZlcnNpb24gb3BlcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGVzZSBvcGVyYXRvcnMgaGF2ZSBiZWVuIHRoZSBjYXVzZSBv
ZiBtYW55IHN1YnRsZSBidWdzIHJlbGF0ZWQgdG8gdHlwZSBpbmZlcmVuY2UgdGhhdCBhcmUgaGFy
ZCB0byBzZWUgaW4gdGhlIGNvZGUsCisgICAgICAgIGFzIHdlbGwgYXMgcGVyZm9ybWFuY2UgYnVn
cyB3aGVyZSB3ZSB1bm5lY2Vzc2FyaWx5IHJlLXBhcnNlIHBhcnNlZCBVUkxzLgorICAgICAgICBB
ZnRlciBteSByZWNlbnQgY2xlYW51cCB0aGlzIHdhcyBlYXNpZXIgdGhhbiBJIHRob3VnaHQgaXQg
d291bGQgYmUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6CisgICAgICAgIChXVEY6OlVSTDo6b3Bl
cmF0b3IgY29uc3QgU3RyaW5nJiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgU3RyaW5nVmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgTlNTdHJpbmcgKiBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDQtMjUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcmVwYXJl
IHRvIHJlbW92ZSBhdXRvbWF0aWMgVVJMLT5TdHJpbmcgY29udmVyc2lvbiBvcGVyYXRvcnMKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1VS
TC5oCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV1RGL3d0Zi9VUkwuaAkod29ya2luZyBj
b3B5KQpAQCAtMTY2LDkgKzE2Niw2IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwYXRoRW5kKCkg
Y29uc3Q7CiAgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7CiAKLSAgICBv
cGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLSAgICBv
cGVyYXRvciBTdHJpbmdWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLQogI2lmIFVT
RShDRikKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMKENGVVJMUmVmKTsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTCgpIGNvbnN0OwpAQCAt
MTc5LDEwICsxNzYsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIG9wZXJhdG9y
IE5TVVJMICooKSBjb25zdDsKICNlbmRpZgogCi0jaWZkZWYgX19PQkpDX18KLSAgICBvcGVyYXRv
ciBOU1N0cmluZyAqKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLSNlbmRpZgotCiAjaWZu
ZGVmIE5ERUJVRwogICAgIHZvaWQgcHJpbnQoKSBjb25zdDsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDQtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgaW1wbGljaXQgVVJMLT5T
dHJpbmcgY29udmVyc2lvbiBvcGVyYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0
cmluZ1ZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgICogaHRtbC9ET01VUkwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBl
KToKKyAgICAgICAgKiBodG1sL1VSTFV0aWxzLmg6CisgICAgICAgIChXZWJDb3JlOjpVUkxVdGls
czxUPjo6cHJvdG9jb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNl
dFVzZXJuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpzZXRQYXNzd29yZCk6
CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlv
bjo6c2V0UHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldEhvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldEhvc3RuYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2F0aW9uOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQ
YXRobmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0U2VhcmNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRIYXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZCk6CisKIDIwMjAtMDQtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBQcmVwYXJlIHRvIHJlbW92ZSBhdXRvbWF0aWMgVVJMLT5TdHJpbmcg
Y29udmVyc2lvbiBvcGVyYXRvcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
MjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY1MSw3ICszNjUxLDcgQEAgU3RyaW5n
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZwogICAgIGlmIChpc0xpbmthYmxlKCp0
aGlzKSkgewogICAgICAgICBFbGVtZW50KiBhbmNob3IgPSBhbmNob3JFbGVtZW50KCk7CiAgICAg
ICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4oYW5jaG9yKSkKLSAgICAgICAgICAgIHJldHVy
biBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmFuY2hvcikuaHJlZigpOworICAgICAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqYW5jaG9yKS5ocmVmKCkuc3Ry
aW5nKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9ET01VUkwuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVVSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgRXhjZXB0aW9uT3I8UmVm
PERPTVVSTD4+IERPTVVSTDo6Y3JlYXRlKAogCiBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9N
VVJMOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IERPTVVSTCYgYmFzZSkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlKHVybCwgYmFzZS5ocmVmKCkpOworICAgIHJldHVybiBjcmVhdGUodXJs
LCBiYXNlLmhyZWYoKS5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxET01VUkw+PiBE
T01VUkw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDcg
KzM2NCw3IEBAIHN0YXRpYyBSZXBsYWNlbWVudFBsdWdpbiogcGx1Z2luUmVwbGFjZW0KIAogICAg
IFN0cmluZyB0eXBlID0gbWltZVR5cGU7CiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpICYmIHVybC5w
cm90b2NvbElzRGF0YSgpKQotICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0YVVSTCh1cmwp
OworICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0YVVSTCh1cmwuc3RyaW5nKCkpOwogICAg
IAogICAgIGlmICh0eXBlLmlzRW1wdHkoKSAmJiAhZXh0ZW5zaW9uLmlzRW1wdHkoKSkgewogICAg
ICAgICBmb3IgKGF1dG8qIHJlcGxhY2VtZW50IDogcmVwbGFjZW1lbnRzKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9VUkxVdGlscy5oCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFV0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gU3RyaW5nIFVSTFV0aWxzPFQ+OgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTdHJp
bmcgVVJMVXRpbHM8VD46OnByb3RvY29sKCkgY29uc3QKIHsKLSAgICBpZiAoV1RGOjpwcm90b2Nv
bElzSmF2YVNjcmlwdChocmVmKCkpKQorICAgIGlmIChocmVmKCkucHJvdG9jb2xJc0phdmFTY3Jp
cHQoKSkKICAgICAgICAgcmV0dXJuICJqYXZhc2NyaXB0OiJfczsKICAgICByZXR1cm4gbWFrZVN0
cmluZyhocmVmKCkucHJvdG9jb2woKSwgJzonKTsKIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzCiAgICAgaWYgKHVybC5jYW5ub3RC
ZUFCYXNlVVJMKCkpCiAgICAgICAgIHJldHVybjsKICAgICB1cmwuc2V0VXNlcih1c2VyKTsKLSAg
ICBzZXRIcmVmKHVybCk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBTdHJpbmcgVVJMVXRpbHM8VD46OnBhc3N3b3JkKCkgY29uc3QKQEAgLTEy
Miw3ICsxMjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzCiAg
ICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkpCiAgICAgICAgIHJldHVybjsKICAgICB1cmwu
c2V0UGFzc3dvcmQocGFzc3dvcmQpOwotICAgIHNldEhyZWYodXJsKTsKKyAgICBzZXRIcmVmKHVy
bC5zdHJpbmcoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBVUkxVdGlsczxU
Pjo6aG9zdCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkocmV2aXNpb24g
MjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UHJv
dG9jb2woCiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAo
IXVybC5zZXRQcm90b2NvbChwcm90b2NvbCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
eW50YXhFcnJvciB9OwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93LCB1cmwpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6
c2V0SG9zdChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywg
Y29uc3QgU3RyaW5nJiBob3N0KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IExvY2F0aW9uOjpzZXRIb3N0KERPTVcKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJs
ID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRIb3N0QW5kUG9ydChob3N0
KTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJs
KTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJs
LnN0cmluZygpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhvc3RuYW1l
KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQpAQCAtMTU2LDcgKzE1Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExv
Y2F0aW9uOjpzZXRIb3N0bmFtZSgKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0g
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRIb3N0KGhvc3RuYW1lKTsKLSAg
ICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAg
ICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmlu
ZygpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBvcnQoRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgcG9y
dFN0cmluZykKQEAgLTE2Niw3ICsxNjYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6
c2V0UG9ydChET01XCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5k
b2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UG9ydChwYXJzZVVJbnQxNihwb3J0U3RyaW5n
KSk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQYXRobmFt
ZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3Qg
U3RyaW5nJiBwYXRobmFtZSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBM
b2NhdGlvbjo6c2V0UGF0aG5hbWUoCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9
IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UGF0aChwYXRobmFtZSk7Ci0g
ICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7Cisg
ICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJp
bmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRTZWFyY2goRE9NV2lu
ZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYg
c2VhcmNoKQpAQCAtMTg2LDcgKzE4Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpz
ZXRTZWFyY2goRE8KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRRdWVyeShzZWFyY2gpOwotICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SGFzaChET01XaW5kb3cmIGFjdGl2ZVdp
bmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBoYXNoKQpAQCAtMjA2
LDcgKzIwNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVcKICAg
ICAvLyBjYXNlcyB3aGVyZSBmcmFnbWVudCBpZGVudGlmaWVycyBhcmUgaWdub3JlZCBvciBpbnZh
bGlkLiAKICAgICBpZiAoZXF1YWxJZ25vcmluZ051bGxpdHkob2xkRnJhZ21lbnRJZGVudGlmaWVy
LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6YXNzaWduKERPTVdpbmRvdyYgYWN0
aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAJKHJldmlzaW9uIDI2MDcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDcgKzQ0MSw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGMKICAgICBBdG9tU3RyaW5nIGNvbnRh
aW5lclR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKICAgICBpZiAoY29udGFp
bmVyVHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3Ry
ZWFtKCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgewogICAgICAgICBpZiAobV91
cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50
VHlwZShtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRU
eXBlID0gQ29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5zdHJpbmcoKSkpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gbGFzdFBhdGhDb21wb25lbnQgPSB1cmwu
bGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgICAgIHNpemVfdCBwb3MgPSBsYXN0UGF0aENv
bXBvbmVudC5yZXZlcnNlRmluZCgnLicpOwpJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMv
Q2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjYwNzA5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDQtMjUgIEFsZXggQ2hyaXN0
ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgaW1wbGlj
aXQgVVJMLT5TdHJpbmcgY29udmVyc2lvbiBvcGVyYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTAzMworCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbToK
KyAgICAgICAgKC1bRE9NSFRNTEJhc2VFbGVtZW50IGhyZWZdKToKKwogMjAyMC0wNC0yNSAgQWxl
eCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByZXBh
cmUgdG8gcmVtb3ZlIGF1dG9tYXRpYyBVUkwtPlN0cmluZyBjb252ZXJzaW9uIG9wZXJhdG9ycwpJ
bmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbQo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VFbGVt
ZW50Lm1tCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00v
RE9NSFRNTEJhc2VFbGVtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAt
IChOU1N0cmluZyAqKWhyZWYKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUg
c3RhdGU7Ci0gICAgcmV0dXJuIElNUEwtPmhyZWYoKTsKKyAgICByZXR1cm4gSU1QTC0+aHJlZigp
LnN0cmluZygpOwogfQogCiAtICh2b2lkKXNldEhyZWY6KE5TU3RyaW5nICopbmV3SHJlZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397597</attachid>
            <date>2020-04-25 16:53:32 -0700</date>
            <delta_ts>2020-04-25 17:18:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211033-20200425165331.patch</filename>
            <type>text/plain</type>
            <size>14240</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA0LTI1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGltcGxpY2l0IFVSTC0+
U3RyaW5nIGNvbnZlcnNpb24gb3BlcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGVzZSBvcGVyYXRvcnMgaGF2ZSBiZWVuIHRoZSBjYXVzZSBv
ZiBtYW55IHN1YnRsZSBidWdzIHJlbGF0ZWQgdG8gdHlwZSBpbmZlcmVuY2UgdGhhdCBhcmUgaGFy
ZCB0byBzZWUgaW4gdGhlIGNvZGUsCisgICAgICAgIGFzIHdlbGwgYXMgcGVyZm9ybWFuY2UgYnVn
cyB3aGVyZSB3ZSB1bm5lY2Vzc2FyaWx5IHJlLXBhcnNlIHBhcnNlZCBVUkxzLgorICAgICAgICBB
ZnRlciBteSByZWNlbnQgY2xlYW51cCB0aGlzIHdhcyBlYXNpZXIgdGhhbiBJIHRob3VnaHQgaXQg
d291bGQgYmUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6CisgICAgICAgIChXVEY6OlVSTDo6b3Bl
cmF0b3IgY29uc3QgU3RyaW5nJiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgU3RyaW5nVmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgTlNTdHJpbmcgKiBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDQtMjUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcmVwYXJl
IHRvIHJlbW92ZSBhdXRvbWF0aWMgVVJMLT5TdHJpbmcgY29udmVyc2lvbiBvcGVyYXRvcnMKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1VS
TC5oCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV1RGL3d0Zi9VUkwuaAkod29ya2luZyBj
b3B5KQpAQCAtMTY2LDkgKzE2Niw2IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwYXRoRW5kKCkg
Y29uc3Q7CiAgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7CiAKLSAgICBv
cGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLSAgICBv
cGVyYXRvciBTdHJpbmdWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLQogI2lmIFVT
RShDRikKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMKENGVVJMUmVmKTsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTCgpIGNvbnN0OwpAQCAt
MTc5LDEwICsxNzYsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIG9wZXJhdG9y
IE5TVVJMICooKSBjb25zdDsKICNlbmRpZgogCi0jaWZkZWYgX19PQkpDX18KLSAgICBvcGVyYXRv
ciBOU1N0cmluZyAqKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLSNlbmRpZgotCiAjaWZu
ZGVmIE5ERUJVRwogICAgIHZvaWQgcHJpbnQoKSBjb25zdDsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDQtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgaW1wbGljaXQgVVJMLT5T
dHJpbmcgY29udmVyc2lvbiBvcGVyYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0
cmluZ1ZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgICogaHRtbC9ET01VUkwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBl
KToKKyAgICAgICAgKiBodG1sL1VSTFV0aWxzLmg6CisgICAgICAgIChXZWJDb3JlOjpVUkxVdGls
czxUPjo6cHJvdG9jb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNl
dFVzZXJuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpzZXRQYXNzd29yZCk6
CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlv
bjo6c2V0UHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldEhvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldEhvc3RuYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2F0aW9uOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQ
YXRobmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0U2VhcmNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRIYXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZCk6CisKIDIwMjAtMDQtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBQcmVwYXJlIHRvIHJlbW92ZSBhdXRvbWF0aWMgVVJMLT5TdHJpbmcg
Y29udmVyc2lvbiBvcGVyYXRvcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
MjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY1MSw3ICszNjUxLDcgQEAgU3RyaW5n
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZwogICAgIGlmIChpc0xpbmthYmxlKCp0
aGlzKSkgewogICAgICAgICBFbGVtZW50KiBhbmNob3IgPSBhbmNob3JFbGVtZW50KCk7CiAgICAg
ICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4oYW5jaG9yKSkKLSAgICAgICAgICAgIHJldHVy
biBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmFuY2hvcikuaHJlZigpOworICAgICAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqYW5jaG9yKS5ocmVmKCkuc3Ry
aW5nKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9ET01VUkwuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVVSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgRXhjZXB0aW9uT3I8UmVm
PERPTVVSTD4+IERPTVVSTDo6Y3JlYXRlKAogCiBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9N
VVJMOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IERPTVVSTCYgYmFzZSkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlKHVybCwgYmFzZS5ocmVmKCkpOworICAgIHJldHVybiBjcmVhdGUodXJs
LCBiYXNlLmhyZWYoKS5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxET01VUkw+PiBE
T01VUkw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDcg
KzM2NCw3IEBAIHN0YXRpYyBSZXBsYWNlbWVudFBsdWdpbiogcGx1Z2luUmVwbGFjZW0KIAogICAg
IFN0cmluZyB0eXBlID0gbWltZVR5cGU7CiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpICYmIHVybC5w
cm90b2NvbElzRGF0YSgpKQotICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0YVVSTCh1cmwp
OworICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0YVVSTCh1cmwuc3RyaW5nKCkpOwogICAg
IAogICAgIGlmICh0eXBlLmlzRW1wdHkoKSAmJiAhZXh0ZW5zaW9uLmlzRW1wdHkoKSkgewogICAg
ICAgICBmb3IgKGF1dG8qIHJlcGxhY2VtZW50IDogcmVwbGFjZW1lbnRzKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9VUkxVdGlscy5oCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFV0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gU3RyaW5nIFVSTFV0aWxzPFQ+OgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTdHJp
bmcgVVJMVXRpbHM8VD46OnByb3RvY29sKCkgY29uc3QKIHsKLSAgICBpZiAoV1RGOjpwcm90b2Nv
bElzSmF2YVNjcmlwdChocmVmKCkpKQorICAgIGlmIChocmVmKCkucHJvdG9jb2xJc0phdmFTY3Jp
cHQoKSkKICAgICAgICAgcmV0dXJuICJqYXZhc2NyaXB0OiJfczsKICAgICByZXR1cm4gbWFrZVN0
cmluZyhocmVmKCkucHJvdG9jb2woKSwgJzonKTsKIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzCiAgICAgaWYgKHVybC5jYW5ub3RC
ZUFCYXNlVVJMKCkpCiAgICAgICAgIHJldHVybjsKICAgICB1cmwuc2V0VXNlcih1c2VyKTsKLSAg
ICBzZXRIcmVmKHVybCk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBTdHJpbmcgVVJMVXRpbHM8VD46OnBhc3N3b3JkKCkgY29uc3QKQEAgLTEy
Miw3ICsxMjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzCiAg
ICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkpCiAgICAgICAgIHJldHVybjsKICAgICB1cmwu
c2V0UGFzc3dvcmQocGFzc3dvcmQpOwotICAgIHNldEhyZWYodXJsKTsKKyAgICBzZXRIcmVmKHVy
bC5zdHJpbmcoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBVUkxVdGlsczxU
Pjo6aG9zdCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkocmV2aXNpb24g
MjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UHJv
dG9jb2woCiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAo
IXVybC5zZXRQcm90b2NvbChwcm90b2NvbCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
eW50YXhFcnJvciB9OwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93LCB1cmwpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6
c2V0SG9zdChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywg
Y29uc3QgU3RyaW5nJiBob3N0KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IExvY2F0aW9uOjpzZXRIb3N0KERPTVcKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJs
ID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRIb3N0QW5kUG9ydChob3N0
KTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJs
KTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJs
LnN0cmluZygpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhvc3RuYW1l
KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQpAQCAtMTU2LDcgKzE1Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExv
Y2F0aW9uOjpzZXRIb3N0bmFtZSgKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0g
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRIb3N0KGhvc3RuYW1lKTsKLSAg
ICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAg
ICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmlu
ZygpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBvcnQoRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgcG9y
dFN0cmluZykKQEAgLTE2Niw3ICsxNjYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6
c2V0UG9ydChET01XCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5k
b2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UG9ydChwYXJzZVVJbnQxNihwb3J0U3RyaW5n
KSk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQYXRobmFt
ZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3Qg
U3RyaW5nJiBwYXRobmFtZSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBM
b2NhdGlvbjo6c2V0UGF0aG5hbWUoCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9
IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UGF0aChwYXRobmFtZSk7Ci0g
ICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7Cisg
ICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJp
bmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRTZWFyY2goRE9NV2lu
ZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYg
c2VhcmNoKQpAQCAtMTg2LDcgKzE4Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpz
ZXRTZWFyY2goRE8KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRRdWVyeShzZWFyY2gpOwotICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SGFzaChET01XaW5kb3cmIGFjdGl2ZVdp
bmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBoYXNoKQpAQCAtMjA2
LDcgKzIwNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVcKICAg
ICAvLyBjYXNlcyB3aGVyZSBmcmFnbWVudCBpZGVudGlmaWVycyBhcmUgaWdub3JlZCBvciBpbnZh
bGlkLiAKICAgICBpZiAoZXF1YWxJZ25vcmluZ051bGxpdHkob2xkRnJhZ21lbnRJZGVudGlmaWVy
LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6YXNzaWduKERPTVdpbmRvdyYgYWN0
aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAJKHJldmlzaW9uIDI2MDcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDcgKzQ0MSw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGMKICAgICBBdG9tU3RyaW5nIGNvbnRh
aW5lclR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKICAgICBpZiAoY29udGFp
bmVyVHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3Ry
ZWFtKCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgewogICAgICAgICBpZiAobV91
cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50
VHlwZShtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRU
eXBlID0gQ29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5zdHJpbmcoKSkpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gbGFzdFBhdGhDb21wb25lbnQgPSB1cmwu
bGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgICAgIHNpemVfdCBwb3MgPSBsYXN0UGF0aENv
bXBvbmVudC5yZXZlcnNlRmluZCgnLicpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxl
RGVsZWdhdGUuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBDdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZTo6
Y3VybERpZAogICAgICAgICBVUkwgY2FjaGVVcmwgPSBtX3Jlc3BvbnNlLnVybCgpOwogICAgICAg
ICBjYWNoZVVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAotICAgICAgICBpZiAoQ3Vy
bENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9uc2UoY2FjaGVVcmwsIG1f
cmVzcG9uc2UpKSB7CisgICAgICAgIGlmIChDdXJsQ2FjaGVNYW5hZ2VyOjpzaW5nbGV0b24oKS5n
ZXRDYWNoZWRSZXNwb25zZShjYWNoZVVybC5zdHJpbmcoKSwgbV9yZXNwb25zZSkpIHsKICAgICAg
ICAgICAgIGlmIChkKCktPm1fYWRkZWRDYWNoZVZhbGlkYXRpb25IZWFkZXJzKSB7CiAgICAgICAg
ICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDApOwogICAgICAgICAgICAg
ICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIik7CkluZGV4OiBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdv
cmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VTZXNzaW9uQ3VybC5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVsZXRlQ29va2llCiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVD
b29raWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkgY29uc3QKIHsKLSAgICBj
b29raWVEYXRhYmFzZSgpLmRlbGV0ZUNvb2tpZSh1cmwsIG5hbWUpOworICAgIGNvb2tpZURhdGFi
YXNlKCkuZGVsZXRlQ29va2llKHVybC5zdHJpbmcoKSwgbmFtZSk7CiB9CiAKIHZvaWQgTmV0d29y
a1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQv
VUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNl
c3Npb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09B
dXRob3JpemF0aW9uL1JlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQkocmV2aXNpb24g
MjYwNzA5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9u
L1JlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNzgs
NyArNzgsNyBAQCB2b2lkIFJlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tCiAgICAg
ICAgICAgICBwYWdlLT5zZXRTaG91bGRTdXBwcmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbigpOwogICAgICAgICAgICAgYXV0byBodG1sID0gbWFrZVN0cmlu
ZygiPHNjcmlwdD5sb2NhdGlvbiA9ICciLCByZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZ2V0
KEhUVFBIZWFkZXJOYW1lOjpMb2NhdGlvbiksICInPC9zY3JpcHQ+IikudXRmOCgpOwogICAgICAg
ICAgICAgYXV0byBkYXRhID0gSVBDOjpEYXRhUmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29u
c3QgdWludDhfdCo+KGh0bWwuZGF0YSgpKSwgaHRtbC5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBw
YWdlLT5sb2FkRGF0YShkYXRhLCAidGV4dC9odG1sIl9zLCAiVVRGLTgiX3MsIG5hdmlnYXRpb25B
Y3Rpb24tPnJlcXVlc3QoKS51cmwoKSwgbnVsbHB0ciwgbmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxk
T3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsKKyAgICAgICAgICAgIHBhZ2UtPmxvYWREYXRhKGRh
dGEsICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgp
LnVybCgpLnN0cmluZygpLCBudWxscHRyLCBuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRPcGVuRXh0
ZXJuYWxVUkxzUG9saWN5KCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjZW5k
aWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRXZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAJKHJldmlzaW9uIDI2
MDcwOSkKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xp
Yi9XZWJLaXRXZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDcgKzMxNiw3IEBAIHBy
aXZhdGU6CiAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZExpdGVyYWwoIjogIik7
CiAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZChlcnJvci5sb2NhbGl6ZWREZXNj
cmlwdGlvbigpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdlYmtpdFdlYlBhZ2VEaWRT
ZW5kQ29uc29sZU1lc3NhZ2UobV93ZWJQYWdlLCBNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UudG9TdHJpbmcoKSwgMCwgZXJyb3IuZmFpbGlu
Z1VSTCgpKTsKKyAgICAgICAgICAgIHdlYmtpdFdlYlBhZ2VEaWRTZW5kQ29uc29sZU1lc3NhZ2Uo
bV93ZWJQYWdlLCBNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBl
cnJvck1lc3NhZ2UudG9TdHJpbmcoKSwgMCwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpKTsK
ICAgICAgICAgfQogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2
aXNpb24gMjYwNzA5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDQtMjUgIEFsZXggQ2hyaXN0ZW5zZW4g
IDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgaW1wbGljaXQgVVJM
LT5TdHJpbmcgY29udmVyc2lvbiBvcGVyYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgICogRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbToKKyAgICAg
ICAgKC1bRE9NSFRNTEJhc2VFbGVtZW50IGhyZWZdKToKKwogMjAyMC0wNC0yNSAgQWxleCBDaHJp
c3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByZXBhcmUgdG8g
cmVtb3ZlIGF1dG9tYXRpYyBVUkwtPlN0cmluZyBjb252ZXJzaW9uIG9wZXJhdG9ycwpJbmRleDog
U291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbQo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VFbGVtZW50Lm1t
CShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRN
TEJhc2VFbGVtZW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAtIChOU1N0
cmluZyAqKWhyZWYKIHsKICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7
Ci0gICAgcmV0dXJuIElNUEwtPmhyZWYoKTsKKyAgICByZXR1cm4gSU1QTC0+aHJlZigpLnN0cmlu
ZygpOwogfQogCiAtICh2b2lkKXNldEhyZWY6KE5TU3RyaW5nICopbmV3SHJlZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397600</attachid>
            <date>2020-04-25 17:18:17 -0700</date>
            <delta_ts>2020-05-20 11:02:55 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211033-20200425171816.patch</filename>
            <type>text/plain</type>
            <size>21195</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA0LTI1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGltcGxpY2l0IFVSTC0+
U3RyaW5nIGNvbnZlcnNpb24gb3BlcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGVzZSBvcGVyYXRvcnMgaGF2ZSBiZWVuIHRoZSBjYXVzZSBv
ZiBtYW55IHN1YnRsZSBidWdzIHJlbGF0ZWQgdG8gdHlwZSBpbmZlcmVuY2UgdGhhdCBhcmUgaGFy
ZCB0byBzZWUgaW4gdGhlIGNvZGUsCisgICAgICAgIGFzIHdlbGwgYXMgcGVyZm9ybWFuY2UgYnVn
cyB3aGVyZSB3ZSB1bm5lY2Vzc2FyaWx5IHJlLXBhcnNlIHBhcnNlZCBVUkxzLgorICAgICAgICBB
ZnRlciBteSByZWNlbnQgY2xlYW51cCB0aGlzIHdhcyBlYXNpZXIgdGhhbiBJIHRob3VnaHQgaXQg
d291bGQgYmUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6CisgICAgICAgIChXVEY6OlVSTDo6b3Bl
cmF0b3IgY29uc3QgU3RyaW5nJiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgU3RyaW5nVmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgTlNTdHJpbmcgKiBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDQtMjUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcmVwYXJl
IHRvIHJlbW92ZSBhdXRvbWF0aWMgVVJMLT5TdHJpbmcgY29udmVyc2lvbiBvcGVyYXRvcnMKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1VS
TC5oCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV1RGL3d0Zi9VUkwuaAkod29ya2luZyBj
b3B5KQpAQCAtMTY2LDkgKzE2Niw2IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwYXRoRW5kKCkg
Y29uc3Q7CiAgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7CiAKLSAgICBv
cGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLSAgICBv
cGVyYXRvciBTdHJpbmdWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLQogI2lmIFVT
RShDRikKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMKENGVVJMUmVmKTsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTCgpIGNvbnN0OwpAQCAt
MTc5LDEwICsxNzYsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIG9wZXJhdG9y
IE5TVVJMICooKSBjb25zdDsKICNlbmRpZgogCi0jaWZkZWYgX19PQkpDX18KLSAgICBvcGVyYXRv
ciBOU1N0cmluZyAqKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLSNlbmRpZgotCiAjaWZu
ZGVmIE5ERUJVRwogICAgIHZvaWQgcHJpbnQoKSBjb25zdDsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDQtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgaW1wbGljaXQgVVJMLT5T
dHJpbmcgY29udmVyc2lvbiBvcGVyYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0
cmluZ1ZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgICogaHRtbC9ET01VUkwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBl
KToKKyAgICAgICAgKiBodG1sL1VSTFV0aWxzLmg6CisgICAgICAgIChXZWJDb3JlOjpVUkxVdGls
czxUPjo6cHJvdG9jb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNl
dFVzZXJuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpzZXRQYXNzd29yZCk6
CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlv
bjo6c2V0UHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldEhvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldEhvc3RuYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2F0aW9uOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQ
YXRobmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0U2VhcmNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRIYXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZCk6CisKIDIwMjAtMDQtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBQcmVwYXJlIHRvIHJlbW92ZSBhdXRvbWF0aWMgVVJMLT5TdHJpbmcg
Y29udmVyc2lvbiBvcGVyYXRvcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
MjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY1MSw3ICszNjUxLDcgQEAgU3RyaW5n
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZwogICAgIGlmIChpc0xpbmthYmxlKCp0
aGlzKSkgewogICAgICAgICBFbGVtZW50KiBhbmNob3IgPSBhbmNob3JFbGVtZW50KCk7CiAgICAg
ICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4oYW5jaG9yKSkKLSAgICAgICAgICAgIHJldHVy
biBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmFuY2hvcikuaHJlZigpOworICAgICAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqYW5jaG9yKS5ocmVmKCkuc3Ry
aW5nKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9ET01VUkwuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVVSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgRXhjZXB0aW9uT3I8UmVm
PERPTVVSTD4+IERPTVVSTDo6Y3JlYXRlKAogCiBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9N
VVJMOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IERPTVVSTCYgYmFzZSkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlKHVybCwgYmFzZS5ocmVmKCkpOworICAgIHJldHVybiBjcmVhdGUodXJs
LCBiYXNlLmhyZWYoKS5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxET01VUkw+PiBE
T01VUkw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDcg
KzM2NCw3IEBAIHN0YXRpYyBSZXBsYWNlbWVudFBsdWdpbiogcGx1Z2luUmVwbGFjZW0KIAogICAg
IFN0cmluZyB0eXBlID0gbWltZVR5cGU7CiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpICYmIHVybC5w
cm90b2NvbElzRGF0YSgpKQotICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0YVVSTCh1cmwp
OworICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0YVVSTCh1cmwuc3RyaW5nKCkpOwogICAg
IAogICAgIGlmICh0eXBlLmlzRW1wdHkoKSAmJiAhZXh0ZW5zaW9uLmlzRW1wdHkoKSkgewogICAg
ICAgICBmb3IgKGF1dG8qIHJlcGxhY2VtZW50IDogcmVwbGFjZW1lbnRzKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9VUkxVdGlscy5oCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFV0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gU3RyaW5nIFVSTFV0aWxzPFQ+OgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTdHJp
bmcgVVJMVXRpbHM8VD46OnByb3RvY29sKCkgY29uc3QKIHsKLSAgICBpZiAoV1RGOjpwcm90b2Nv
bElzSmF2YVNjcmlwdChocmVmKCkpKQorICAgIGlmIChocmVmKCkucHJvdG9jb2xJc0phdmFTY3Jp
cHQoKSkKICAgICAgICAgcmV0dXJuICJqYXZhc2NyaXB0OiJfczsKICAgICByZXR1cm4gbWFrZVN0
cmluZyhocmVmKCkucHJvdG9jb2woKSwgJzonKTsKIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzCiAgICAgaWYgKHVybC5jYW5ub3RC
ZUFCYXNlVVJMKCkpCiAgICAgICAgIHJldHVybjsKICAgICB1cmwuc2V0VXNlcih1c2VyKTsKLSAg
ICBzZXRIcmVmKHVybCk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBTdHJpbmcgVVJMVXRpbHM8VD46OnBhc3N3b3JkKCkgY29uc3QKQEAgLTEy
Miw3ICsxMjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzCiAg
ICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkpCiAgICAgICAgIHJldHVybjsKICAgICB1cmwu
c2V0UGFzc3dvcmQocGFzc3dvcmQpOwotICAgIHNldEhyZWYodXJsKTsKKyAgICBzZXRIcmVmKHVy
bC5zdHJpbmcoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBVUkxVdGlsczxU
Pjo6aG9zdCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkocmV2aXNpb24g
MjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UHJv
dG9jb2woCiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAo
IXVybC5zZXRQcm90b2NvbChwcm90b2NvbCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
eW50YXhFcnJvciB9OwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93LCB1cmwpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6
c2V0SG9zdChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywg
Y29uc3QgU3RyaW5nJiBob3N0KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IExvY2F0aW9uOjpzZXRIb3N0KERPTVcKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJs
ID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRIb3N0QW5kUG9ydChob3N0
KTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJs
KTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJs
LnN0cmluZygpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhvc3RuYW1l
KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQpAQCAtMTU2LDcgKzE1Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExv
Y2F0aW9uOjpzZXRIb3N0bmFtZSgKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0g
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRIb3N0KGhvc3RuYW1lKTsKLSAg
ICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAg
ICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmlu
ZygpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBvcnQoRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgcG9y
dFN0cmluZykKQEAgLTE2Niw3ICsxNjYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6
c2V0UG9ydChET01XCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5k
b2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UG9ydChwYXJzZVVJbnQxNihwb3J0U3RyaW5n
KSk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQYXRobmFt
ZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3Qg
U3RyaW5nJiBwYXRobmFtZSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBM
b2NhdGlvbjo6c2V0UGF0aG5hbWUoCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9
IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UGF0aChwYXRobmFtZSk7Ci0g
ICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7Cisg
ICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJp
bmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRTZWFyY2goRE9NV2lu
ZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYg
c2VhcmNoKQpAQCAtMTg2LDcgKzE4Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpz
ZXRTZWFyY2goRE8KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRRdWVyeShzZWFyY2gpOwotICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SGFzaChET01XaW5kb3cmIGFjdGl2ZVdp
bmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBoYXNoKQpAQCAtMjA2
LDcgKzIwNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVcKICAg
ICAvLyBjYXNlcyB3aGVyZSBmcmFnbWVudCBpZGVudGlmaWVycyBhcmUgaWdub3JlZCBvciBpbnZh
bGlkLiAKICAgICBpZiAoZXF1YWxJZ25vcmluZ051bGxpdHkob2xkRnJhZ21lbnRJZGVudGlmaWVy
LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6YXNzaWduKERPTVdpbmRvdyYgYWN0
aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAJKHJldmlzaW9uIDI2MDcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDcgKzQ0MSw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGMKICAgICBBdG9tU3RyaW5nIGNvbnRh
aW5lclR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKICAgICBpZiAoY29udGFp
bmVyVHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3Ry
ZWFtKCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgewogICAgICAgICBpZiAobV91
cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50
VHlwZShtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRU
eXBlID0gQ29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5zdHJpbmcoKSkpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gbGFzdFBhdGhDb21wb25lbnQgPSB1cmwu
bGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgICAgIHNpemVfdCBwb3MgPSBsYXN0UGF0aENv
bXBvbmVudC5yZXZlcnNlRmluZCgnLicpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0RyYWdEYXRhR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRHJhZ0RhdGFHdGsuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxNSAr
NzYsMTMgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGaWxlbmFtZUNvbnZlcnNpbwogICAgIGlm
ICghbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNVUkwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogICAgIGlmIChmaWxlbmFtZVBvbGljeSAhPSBDb252ZXJ0RmlsZW5hbWVzKSB7Ci0gICAgICAg
IFVSTCB1cmwoVVJMKCksIG1fcGxhdGZvcm1EcmFnRGF0YS0+dXJsKCkpOwotICAgICAgICBpZiAo
dXJsLmlzTG9jYWxGaWxlKCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAg
IGlmIChtX3BsYXRmb3JtRHJhZ0RhdGEtPnVybCgpLmlzTG9jYWxGaWxlKCkpCisgICAgICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIFN0cmluZyB1cmwobV9wbGF0Zm9ybURyYWdEYXRh
LT51cmwoKSk7CiAgICAgaWYgKHRpdGxlKQogICAgICAgICAqdGl0bGUgPSBtX3BsYXRmb3JtRHJh
Z0RhdGEtPnVybExhYmVsKCk7Ci0gICAgcmV0dXJuIHVybDsKKyAgICByZXR1cm4gbV9wbGF0Zm9y
bURyYWdEYXRhLT51cmwoKS5zdHJpbmcoKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAkocmV2aXNpb24gMjYwNzA5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDAsNyArMzAwLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29u
c3QgU3RyaQogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVVUklMaXN0OgogICAgICAgICByZXR1
cm4gbV9zZWxlY3Rpb25EYXRhLT51cmlMaXN0KCk7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlw
ZVVSTDoKLSAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uRGF0YS0+dXJsKCk7CisgICAgICAgIHJl
dHVybiBtX3NlbGVjdGlvbkRhdGEtPnVybCgpLnN0cmluZygpOwogICAgIGNhc2UgQ2xpcGJvYXJk
RGF0YVR5cGVNYXJrdXA6CiAgICAgICAgIHJldHVybiBtX3NlbGVjdGlvbkRhdGEtPm1hcmt1cCgp
OwogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVUZXh0OgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAkocmV2aXNpb24gMjYwNzA5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzIsMTUgKzE3Miw4IEBAIHZvaWQgUGFzdGVib2FyZEhlbHBlcjo6
ZmlsbFNlbGVjdGlvbkRhdGEKICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rp
b25EYXRhLCB1cmlMaXN0QXRvbSwgOCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBndWNoYXIqPih1
cmlMaXN0LmRhdGEoKSksIHVyaUxpc3QubGVuZ3RoKCkpOwogCiAgICAgfSBlbHNlIGlmIChpbmZv
ID09IFRhcmdldFR5cGVOZXRzY2FwZVVSTCAmJiBzZWxlY3Rpb24uaGFzVVJMKCkpIHsKLSAgICAg
ICAgU3RyaW5nIHVybChzZWxlY3Rpb24udXJsKCkpOwotICAgICAgICBTdHJpbmcgcmVzdWx0KHVy
bCk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIlxuIik7Ci0KLSAgICAgICAgaWYgKHNlbGVjdGlv
bi5oYXNUZXh0KCkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHNlbGVjdGlvbi50ZXh0KCkp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVybCk7Ci0KKyAgICAg
ICAgYXV0byYgdXJsU3RyaW5nID0gc2VsZWN0aW9uLnVybCgpLnN0cmluZygpOworICAgICAgICBh
dXRvIHJlc3VsdCA9IG1ha2VTdHJpbmcodXJsU3RyaW5nLCAnXG4nLCBzZWxlY3Rpb24uaGFzVGV4
dCgpID8gc2VsZWN0aW9uLnRleHQoKSA6IHVybFN0cmluZyk7CiAgICAgICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IHJlc3VsdERhdGEoZ19zdHJkdXAocmVzdWx0LnV0ZjgoKS5kYXRhKCkpKTsKICAgICAg
ICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCBuZXRzY2FwZVVSTEF0b20s
IDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4ocmVzdWx0RGF0YS5nZXQoKSksIHN0
cmxlbihyZXN1bHREYXRhLmdldCgpKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TZWxlY3Rpb25EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDI2MDcwOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzksMTIgKzc5LDEyIEBAIHZvaWQgU2VsZWN0aW9uRGF0YTo6c2V0VVJJTGlzdChjb25zdCBTdHIK
IHZvaWQgU2VsZWN0aW9uRGF0YTo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGxhYmVsKQogewogICAgIG1fdXJsID0gdXJsOwotICAgIG1fdXJpTGlzdCA9IHVybDsKKyAgICBt
X3VyaUxpc3QgPSB1cmwuc3RyaW5nKCk7CiAgICAgc2V0VGV4dCh1cmwuc3RyaW5nKCkpOwogCiAg
ICAgU3RyaW5nIGFjdHVhbExhYmVsKGxhYmVsKTsKICAgICBpZiAoYWN0dWFsTGFiZWwuaXNFbXB0
eSgpKQotICAgICAgICBhY3R1YWxMYWJlbCA9IHVybDsKKyAgICAgICAgYWN0dWFsTGFiZWwgPSB1
cmwuc3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1hcmt1cDsKICAgICBtYXJrdXAuYXBw
ZW5kKCI8YSBocmVmPVwiIik7CkBAIC0xMDIsNyArMTAyLDcgQEAgY29uc3QgU3RyaW5nJiBTZWxl
Y3Rpb25EYXRhOjp1cmxMYWJlbCgpIAogICAgICAgICByZXR1cm4gdGV4dCgpOwogCiAgICAgaWYg
KGhhc1VSTCgpKQotICAgICAgICByZXR1cm4gdXJsKCk7CisgICAgICAgIHJldHVybiB1cmwoKS5z
dHJpbmcoKTsKIAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBDdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZTo6Y3VybERpZAogICAgICAgICBVUkwgY2FjaGVVcmwgPSBtX3Jlc3BvbnNl
LnVybCgpOwogICAgICAgICBjYWNoZVVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAot
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwsIG1fcmVzcG9uc2UpKSB7CisgICAgICAgIGlmIChDdXJsQ2FjaGVNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5nZXRDYWNoZWRSZXNwb25zZShjYWNoZVVybC5zdHJpbmcoKSwgbV9yZXNw
b25zZSkpIHsKICAgICAgICAgICAgIGlmIChkKCktPm1fYWRkZWRDYWNoZVZhbGlkYXRpb25IZWFk
ZXJzKSB7CiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDAp
OwogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCShyZXZpc2lvbiAyNjA3MDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llCiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWxldGVDb29raWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkg
Y29uc3QKIHsKLSAgICBjb29raWVEYXRhYmFzZSgpLmRlbGV0ZUNvb2tpZSh1cmwsIG5hbWUpOwor
ICAgIGNvb2tpZURhdGFiYXNlKCkuZGVsZXRlQ29va2llKHVybC5zdHJpbmcoKSwgbmFtZSk7CiB9
CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI3LDEwICsxMjcsMTAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6YWRkQ2FjaGVW
YWxpZGF0aW9uSAogICAgIFVSTCBjYWNoZVVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgY2FjaGVV
cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKLSAgICBpZiAoY2FjaGUuaXNDYWNoZWQo
Y2FjaGVVcmwpKSB7Ci0gICAgICAgIGNhY2hlLmFkZENhY2hlRW50cnlDbGllbnQoY2FjaGVVcmws
IHRoaXMpOworICAgIGlmIChjYWNoZS5pc0NhY2hlZChjYWNoZVVybC5zdHJpbmcoKSkpIHsKKyAg
ICAgICAgY2FjaGUuYWRkQ2FjaGVFbnRyeUNsaWVudChjYWNoZVVybC5zdHJpbmcoKSwgdGhpcyk7
CiAKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGNhY2hlLnJlcXVlc3RIZWFkZXJz
KGNhY2hlVXJsKSkKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGNhY2hlLnJlcXVl
c3RIZWFkZXJzKGNhY2hlVXJsLnN0cmluZygpKSkKICAgICAgICAgICAgIHJlcXVlc3QuYWRkSFRU
UEhlYWRlckZpZWxkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOwogCiAgICAgICAgIGQtPm1fYWRk
ZWRDYWNoZVZhbGlkYXRpb25IZWFkZXJzID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDdXJsLmNwcAkocmV2aXNpb24gMjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6ZGlkRmFpbChDdXIKICAgICBpZiAoZXJyb3JDb2RlID09IENVUkxFX1JFQ1ZfRVJST1IpCiAg
ICAgICAgIG1fY2xpZW50LmRpZEZhaWxUb1JlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzKTsK
ICAgICBlbHNlCi0gICAgICAgIG1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNv
Y2tldFN0cmVhbUVycm9yKGVycm9yQ29kZSwgbV91cmwsIEN1cmxIYW5kbGU6OmVycm9yRGVzY3Jp
cHRpb24oZXJyb3JDb2RlKSkpOworICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFt
KCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcihlcnJvckNvZGUsIG1fdXJsLnN0cmluZygpLCBDdXJs
SGFuZGxlOjplcnJvckRlc2NyaXB0aW9uKGVycm9yQ29kZSkpKTsKIH0KIAogdm9pZCBTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsOjpkZXN0cnVjdFN0cmVhbSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNz
aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0
aG9yaXphdGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0JKHJldmlzaW9uIDI2
MDcwOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9S
ZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTc4LDcg
Kzc4LDcgQEAgdm9pZCBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbQogICAgICAg
ICAgICAgcGFnZS0+c2V0U2hvdWxkU3VwcHJlc3NTT0F1dGhvcml6YXRpb25Jbk5leHROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24oKTsKICAgICAgICAgICAgIGF1dG8gaHRtbCA9IG1ha2VTdHJpbmco
IjxzY3JpcHQ+bG9jYXRpb24gPSAnIiwgcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmdldChI
VFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pLCAiJzwvc2NyaXB0PiIpLnV0ZjgoKTsKICAgICAgICAg
ICAgIGF1dG8gZGF0YSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihodG1sLmRhdGEoKSksIGh0bWwubGVuZ3RoKCkpOwotICAgICAgICAgICAgcGFn
ZS0+bG9hZERhdGEoZGF0YSwgInRleHQvaHRtbCJfcywgIlVURi04Il9zLCBuYXZpZ2F0aW9uQWN0
aW9uLT5yZXF1ZXN0KCkudXJsKCksIG51bGxwdHIsIG5hdmlnYXRpb25BY3Rpb24tPnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisgICAgICAgICAgICBwYWdlLT5sb2FkRGF0YShkYXRh
LCAidGV4dC9odG1sIl9zLCAiVVRGLTgiX3MsIG5hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKS51
cmwoKS5zdHJpbmcoKSwgbnVsbHB0ciwgbmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25T
aGVldEFzc2lzdGFudC5tbQkocmV2aXNpb24gMjYwNzA5KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0
Miw3ICszNDIsNyBAQCAtICh2b2lkKV9jcmVhdGVTaGVldFdpdGhFbGVtZW50QWN0aW9uczooCiAg
ICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNV
UkwgKnRhcmdldFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOl9wb3NpdGlvbkluZm9ybWF0aW9u
LT51cmxdOworICAgIE5TVVJMICp0YXJnZXRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpfcG9z
aXRpb25JbmZvcm1hdGlvbi0+dXJsLnN0cmluZygpXTsKICAgICBOU1N0cmluZyAqdXJsU2NoZW1l
ID0gW3RhcmdldFVSTCBzY2hlbWVdOwogICAgIEJPT0wgaXNKYXZhU2NyaXB0VVJMID0gW3VybFNj
aGVtZSBsZW5ndGhdICYmIFt1cmxTY2hlbWUgY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTpAImphdmFz
Y3JpcHQiXSA9PSBOU09yZGVyZWRTYW1lOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hlY2sg
aWYgSmF2YXNjcmlwdCBpcyBlbmFibGVkIGluIHRoZSBwcmVmZXJlbmNlcy4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPUy5tbQkocmV2aXNpb24gMjYwNzA5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjA4LDcgKzIw
OCw3IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZAogCiAgICAgICAg
IGlmIChyZXF1aXJlc1VzZXJBdXRob3JpemF0aW9uKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8
V0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4gcG9saWN5TGlzdGVuZXIgPSBhZG9wdE5TKFtb
V0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDb21wbGV0aW9uSGFu
ZGxlcjpXVEZNb3ZlKHJlcXVlc3QuY29tcGxldGlvbkhhbmRsZXIpXSk7Ci0gICAgICAgICAgICBX
ZWJLaXQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW4ocmVxdWVz
dC5mcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5wdHIoKSwgcmVxdWVz
dC5mcmFtZUluZm8ucmVxdWVzdC51cmwoKSwgcG9saWN5TGlzdGVuZXIuZ2V0KCksIHJlcXVlc3Qu
dmlldy5nZXQoKSk7CisgICAgICAgICAgICBXZWJLaXQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUmVxdWVzdEZyb21PcmlnaW4ocmVxdWVzdC5mcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4uc2Vj
dXJpdHlPcmlnaW4oKS5wdHIoKSwgcmVxdWVzdC5mcmFtZUluZm8ucmVxdWVzdC51cmwoKS5zdHJp
bmcoKSwgcG9saWN5TGlzdGVuZXIuZ2V0KCksIHJlcXVlc3Qudmlldy5nZXQoKSk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgcmVxdWVzdC5jb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvV2ViS2l0V2ViUGFnZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9nbGliL1dlYktpdFdlYlBhZ2UuY3BwCShyZXZpc2lvbiAy
NjA3MDkpCisrKyBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2ds
aWIvV2ViS2l0V2ViUGFnZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMxNiw3ICszMTYsNyBAQCBw
cml2YXRlOgogICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZS5hcHBlbmRMaXRlcmFsKCI6ICIp
OwogICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZS5hcHBlbmQoZXJyb3IubG9jYWxpemVkRGVz
Y3JpcHRpb24oKSk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB3ZWJraXRXZWJQYWdlRGlk
U2VuZENvbnNvbGVNZXNzYWdlKG1fd2ViUGFnZSwgTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVz
c2FnZUxldmVsOjpFcnJvciwgZXJyb3JNZXNzYWdlLnRvU3RyaW5nKCksIDAsIGVycm9yLmZhaWxp
bmdVUkwoKSk7CisgICAgICAgICAgICB3ZWJraXRXZWJQYWdlRGlkU2VuZENvbnNvbGVNZXNzYWdl
KG1fd2ViUGFnZSwgTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2FnZUxldmVsOjpFcnJvciwg
ZXJyb3JNZXNzYWdlLnRvU3RyaW5nKCksIDAsIGVycm9yLmZhaWxpbmdVUkwoKS5zdHJpbmcoKSk7
CiAgICAgICAgIH0KICAgICB9CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5n
ZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDI2MDcwOSkKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkod29y
a2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA0LTI1ICBBbGV4IENocmlzdGVuc2Vu
ICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGltcGxpY2l0IFVS
TC0+U3RyaW5nIGNvbnZlcnNpb24gb3BlcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01IVE1MQmFzZUVsZW1lbnQubW06CisgICAg
ICAgICgtW0RPTUhUTUxCYXNlRWxlbWVudCBocmVmXSk6CisKIDIwMjAtMDQtMjUgIEFsZXggQ2hy
aXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcmVwYXJlIHRv
IHJlbW92ZSBhdXRvbWF0aWMgVVJMLT5TdHJpbmcgY29udmVyc2lvbiBvcGVyYXRvcnMKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5t
bQkocmV2aXNpb24gMjYwNzA5KQorKysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvRE9NL0RPTUhU
TUxCYXNlRWxlbWVudC5tbQkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNyBAQAogLSAoTlNT
dHJpbmcgKilocmVmCiB7CiAgICAgV2ViQ29yZTo6SlNNYWluVGhyZWFkTnVsbFN0YXRlIHN0YXRl
OwotICAgIHJldHVybiBJTVBMLT5ocmVmKCk7CisgICAgcmV0dXJuIElNUEwtPmhyZWYoKS5zdHJp
bmcoKTsKIH0KIAogLSAodm9pZClzZXRIcmVmOihOU1N0cmluZyAqKW5ld0hyZWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>397602</attachid>
            <date>2020-04-25 17:40:22 -0700</date>
            <delta_ts>2020-05-20 11:02:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211033-20200425174021.patch</filename>
            <type>text/plain</type>
            <size>21806</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA0LTI1ICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGltcGxpY2l0IFVSTC0+
U3RyaW5nIGNvbnZlcnNpb24gb3BlcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGVzZSBvcGVyYXRvcnMgaGF2ZSBiZWVuIHRoZSBjYXVzZSBv
ZiBtYW55IHN1YnRsZSBidWdzIHJlbGF0ZWQgdG8gdHlwZSBpbmZlcmVuY2UgdGhhdCBhcmUgaGFy
ZCB0byBzZWUgaW4gdGhlIGNvZGUsCisgICAgICAgIGFzIHdlbGwgYXMgcGVyZm9ybWFuY2UgYnVn
cyB3aGVyZSB3ZSB1bm5lY2Vzc2FyaWx5IHJlLXBhcnNlIHBhcnNlZCBVUkxzLgorICAgICAgICBB
ZnRlciBteSByZWNlbnQgY2xlYW51cCB0aGlzIHdhcyBlYXNpZXIgdGhhbiBJIHRob3VnaHQgaXQg
d291bGQgYmUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6CisgICAgICAgIChXVEY6OlVSTDo6b3Bl
cmF0b3IgY29uc3QgU3RyaW5nJiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgU3RyaW5nVmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgTlNTdHJpbmcgKiBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDQtMjUgIEFsZXgg
Q2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBQcmVwYXJl
IHRvIHJlbW92ZSBhdXRvbWF0aWMgVVJMLT5TdHJpbmcgY29udmVyc2lvbiBvcGVyYXRvcnMKSW5k
ZXg6IFNvdXJjZS9XVEYvd3RmL1VSTC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1VS
TC5oCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV1RGL3d0Zi9VUkwuaAkod29ya2luZyBj
b3B5KQpAQCAtMTY2LDkgKzE2Niw2IEBAIHB1YmxpYzoKICAgICB1bnNpZ25lZCBwYXRoRW5kKCkg
Y29uc3Q7CiAgICAgdW5zaWduZWQgcGF0aEFmdGVyTGFzdFNsYXNoKCkgY29uc3Q7CiAKLSAgICBv
cGVyYXRvciBjb25zdCBTdHJpbmcmKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLSAgICBv
cGVyYXRvciBTdHJpbmdWaWV3KCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLQogI2lmIFVT
RShDRikKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgVVJMKENGVVJMUmVmKTsKICAgICBXVEZfRVhQ
T1JUX1BSSVZBVEUgUmV0YWluUHRyPENGVVJMUmVmPiBjcmVhdGVDRlVSTCgpIGNvbnN0OwpAQCAt
MTc5LDEwICsxNzYsNiBAQCBwdWJsaWM6CiAgICAgV1RGX0VYUE9SVF9QUklWQVRFIG9wZXJhdG9y
IE5TVVJMICooKSBjb25zdDsKICNlbmRpZgogCi0jaWZkZWYgX19PQkpDX18KLSAgICBvcGVyYXRv
ciBOU1N0cmluZyAqKCkgY29uc3QgeyByZXR1cm4gbV9zdHJpbmc7IH0KLSNlbmRpZgotCiAjaWZu
ZGVmIE5ERUJVRwogICAgIHZvaWQgcHJpbnQoKSBjb25zdDsKICNlbmRpZgpJbmRleDogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwkocmV2aXNpb24gMjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMzEgQEAKKzIwMjAtMDQtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxh
Y2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgaW1wbGljaXQgVVJMLT5T
dHJpbmcgY29udmVyc2lvbiBvcGVyYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2Jq
ZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0
cmluZ1ZhbHVlRm9yTVNBQSBjb25zdCk6CisgICAgICAgICogaHRtbC9ET01VUkwuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NVVJMOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJ
bkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6cGx1Z2luUmVwbGFjZW1lbnRGb3JUeXBl
KToKKyAgICAgICAgKiBodG1sL1VSTFV0aWxzLmg6CisgICAgICAgIChXZWJDb3JlOjpVUkxVdGls
czxUPjo6cHJvdG9jb2wgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6VVJMVXRpbHM8VD46OnNl
dFVzZXJuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+OjpzZXRQYXNzd29yZCk6
CisgICAgICAgICogcGFnZS9Mb2NhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlv
bjo6c2V0UHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldEhvc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldEhvc3RuYW1lKToKKyAgICAgICAgKFdlYkNv
cmU6OkxvY2F0aW9uOjpzZXRQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQ
YXRobmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0U2VhcmNoKToKKyAgICAg
ICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRIYXNoKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9NZWRpYVBsYXllci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYVBsYXllcjo6bG9h
ZCk6CisKIDIwMjAtMDQtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0
Lm9yZz4KIAogICAgICAgICBQcmVwYXJlIHRvIHJlbW92ZSBhdXRvbWF0aWMgVVJMLT5TdHJpbmcg
Y29udmVyc2lvbiBvcGVyYXRvcnMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkv
QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0LmNwcAkocmV2aXNpb24g
MjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5UmVu
ZGVyT2JqZWN0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY1MSw3ICszNjUxLDcgQEAgU3RyaW5n
IEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnN0cmluZwogICAgIGlmIChpc0xpbmthYmxlKCp0
aGlzKSkgewogICAgICAgICBFbGVtZW50KiBhbmNob3IgPSBhbmNob3JFbGVtZW50KCk7CiAgICAg
ICAgIGlmIChpczxIVE1MQW5jaG9yRWxlbWVudD4oYW5jaG9yKSkKLSAgICAgICAgICAgIHJldHVy
biBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmFuY2hvcikuaHJlZigpOworICAgICAgICAg
ICAgcmV0dXJuIGRvd25jYXN0PEhUTUxBbmNob3JFbGVtZW50PigqYW5jaG9yKS5ocmVmKCkuc3Ry
aW5nKCk7CiAgICAgfQogCiAgICAgcmV0dXJuIHN0cmluZ1ZhbHVlKCk7CkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0RPTVVSTC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRt
bC9ET01VUkwuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0RP
TVVSTC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTU4LDcgKzU4LDcgQEAgRXhjZXB0aW9uT3I8UmVm
PERPTVVSTD4+IERPTVVSTDo6Y3JlYXRlKAogCiBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9N
VVJMOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IERPTVVSTCYgYmFzZSkKIHsKLSAg
ICByZXR1cm4gY3JlYXRlKHVybCwgYmFzZS5ocmVmKCkpOworICAgIHJldHVybiBjcmVhdGUodXJs
LCBiYXNlLmhyZWYoKS5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPFJlZjxET01VUkw+PiBE
T01VUkw6OmNyZWF0ZShjb25zdCBTdHJpbmcmIHVybCkKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzY0LDcg
KzM2NCw3IEBAIHN0YXRpYyBSZXBsYWNlbWVudFBsdWdpbiogcGx1Z2luUmVwbGFjZW0KIAogICAg
IFN0cmluZyB0eXBlID0gbWltZVR5cGU7CiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpICYmIHVybC5w
cm90b2NvbElzRGF0YSgpKQotICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0YVVSTCh1cmwp
OworICAgICAgICB0eXBlID0gbWltZVR5cGVGcm9tRGF0YVVSTCh1cmwuc3RyaW5nKCkpOwogICAg
IAogICAgIGlmICh0eXBlLmlzRW1wdHkoKSAmJiAhZXh0ZW5zaW9uLmlzRW1wdHkoKSkgewogICAg
ICAgICBmb3IgKGF1dG8qIHJlcGxhY2VtZW50IDogcmVwbGFjZW1lbnRzKSB7CkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL1VSTFV0aWxzLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUv
aHRtbC9VUkxVdGlscy5oCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1s
L1VSTFV0aWxzLmgJKHdvcmtpbmcgY29weSkKQEAgLTg1LDcgKzg1LDcgQEAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gU3RyaW5nIFVSTFV0aWxzPFQ+OgogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBTdHJp
bmcgVVJMVXRpbHM8VD46OnByb3RvY29sKCkgY29uc3QKIHsKLSAgICBpZiAoV1RGOjpwcm90b2Nv
bElzSmF2YVNjcmlwdChocmVmKCkpKQorICAgIGlmIChocmVmKCkucHJvdG9jb2xJc0phdmFTY3Jp
cHQoKSkKICAgICAgICAgcmV0dXJuICJqYXZhc2NyaXB0OiJfczsKICAgICByZXR1cm4gbWFrZVN0
cmluZyhocmVmKCkucHJvdG9jb2woKSwgJzonKTsKIH0KQEAgLTEwOCw3ICsxMDgsNyBAQCB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzCiAgICAgaWYgKHVybC5jYW5ub3RC
ZUFCYXNlVVJMKCkpCiAgICAgICAgIHJldHVybjsKICAgICB1cmwuc2V0VXNlcih1c2VyKTsKLSAg
ICBzZXRIcmVmKHVybCk7CisgICAgc2V0SHJlZih1cmwuc3RyaW5nKCkpOwogfQogCiB0ZW1wbGF0
ZTx0eXBlbmFtZSBUPiBTdHJpbmcgVVJMVXRpbHM8VD46OnBhc3N3b3JkKCkgY29uc3QKQEAgLTEy
Miw3ICsxMjIsNyBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkIFVSTFV0aWxzPFQ+OjpzCiAg
ICAgaWYgKHVybC5jYW5ub3RCZUFCYXNlVVJMKCkpCiAgICAgICAgIHJldHVybjsKICAgICB1cmwu
c2V0UGFzc3dvcmQocGFzc3dvcmQpOwotICAgIHNldEhyZWYodXJsKTsKKyAgICBzZXRIcmVmKHVy
bC5zdHJpbmcoKSk7CiB9CiAKIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IFN0cmluZyBVUkxVdGlsczxU
Pjo6aG9zdCgpIGNvbnN0CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkocmV2aXNpb24g
MjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEzNiw3ICsxMzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UHJv
dG9jb2woCiAgICAgVVJMIHVybCA9IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICBpZiAo
IXVybC5zZXRQcm90b2NvbChwcm90b2NvbCkpCiAgICAgICAgIHJldHVybiBFeGNlcHRpb24geyBT
eW50YXhFcnJvciB9OwotICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93LCB1cmwpOworICAgIHJldHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0
V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6
c2V0SG9zdChET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywg
Y29uc3QgU3RyaW5nJiBob3N0KQpAQCAtMTQ2LDcgKzE0Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IExvY2F0aW9uOjpzZXRIb3N0KERPTVcKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJs
ID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRIb3N0QW5kUG9ydChob3N0
KTsKLSAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJs
KTsKKyAgICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJs
LnN0cmluZygpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhvc3RuYW1l
KERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBT
dHJpbmcmIGhvc3RuYW1lKQpAQCAtMTU2LDcgKzE1Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExv
Y2F0aW9uOjpzZXRIb3N0bmFtZSgKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0g
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRIb3N0KGhvc3RuYW1lKTsKLSAg
ICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAg
ICByZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmlu
ZygpKTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBvcnQoRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgcG9y
dFN0cmluZykKQEAgLTE2Niw3ICsxNjYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6
c2V0UG9ydChET01XCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9IGZyYW1lLT5k
b2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UG9ydChwYXJzZVVJbnQxNihwb3J0U3RyaW5n
KSk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQYXRobmFt
ZShET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3Qg
U3RyaW5nJiBwYXRobmFtZSkKQEAgLTE3Niw3ICsxNzYsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBM
b2NhdGlvbjo6c2V0UGF0aG5hbWUoCiAgICAgICAgIHJldHVybiB7IH07CiAgICAgVVJMIHVybCA9
IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKICAgICB1cmwuc2V0UGF0aChwYXRobmFtZSk7Ci0g
ICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7Cisg
ICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJp
bmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRTZWFyY2goRE9NV2lu
ZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYg
c2VhcmNoKQpAQCAtMTg2LDcgKzE4Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpz
ZXRTZWFyY2goRE8KICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRRdWVyeShzZWFyY2gpOwotICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SGFzaChET01XaW5kb3cmIGFjdGl2ZVdp
bmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBoYXNoKQpAQCAtMjA2
LDcgKzIwNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVcKICAg
ICAvLyBjYXNlcyB3aGVyZSBmcmFnbWVudCBpZGVudGlmaWVycyBhcmUgaWdub3JlZCBvciBpbnZh
bGlkLiAKICAgICBpZiAoZXF1YWxJZ25vcmluZ051bGxpdHkob2xkRnJhZ21lbnRJZGVudGlmaWVy
LCB1cmwuZnJhZ21lbnRJZGVudGlmaWVyKCkpKQogICAgICAgICByZXR1cm4geyB9OwotICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6YXNzaWduKERPTVdpbmRvdyYgYWN0
aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHVybCkKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9NZWRpYVBsYXllci5j
cHAJKHJldmlzaW9uIDI2MDcwOSkKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L01lZGlhUGxheWVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDQxLDcgKzQ0MSw3IEBAIGJvb2wg
TWVkaWFQbGF5ZXI6OmxvYWQoY29uc3QgVVJMJiB1cmwsIGMKICAgICBBdG9tU3RyaW5nIGNvbnRh
aW5lclR5cGUgPSBtX2NvbnRlbnRUeXBlLmNvbnRhaW5lclR5cGUoKTsKICAgICBpZiAoY29udGFp
bmVyVHlwZS5pc0VtcHR5KCkgfHwgY29udGFpbmVyVHlwZSA9PSBhcHBsaWNhdGlvbk9jdGV0U3Ry
ZWFtKCkgfHwgY29udGFpbmVyVHlwZSA9PSB0ZXh0UGxhaW4oKSkgewogICAgICAgICBpZiAobV91
cmwucHJvdG9jb2xJc0RhdGEoKSkKLSAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250ZW50
VHlwZShtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsKSk7CisgICAgICAgICAgICBtX2NvbnRlbnRU
eXBlID0gQ29udGVudFR5cGUobWltZVR5cGVGcm9tRGF0YVVSTChtX3VybC5zdHJpbmcoKSkpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIGF1dG8gbGFzdFBhdGhDb21wb25lbnQgPSB1cmwu
bGFzdFBhdGhDb21wb25lbnQoKTsKICAgICAgICAgICAgIHNpemVfdCBwb3MgPSBsYXN0UGF0aENv
bXBvbmVudC5yZXZlcnNlRmluZCgnLicpOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3RrL0RyYWdEYXRhR3RrLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ndGsvRHJhZ0RhdGFHdGsuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvRHJhZ0RhdGFHdGsuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03NiwxNSAr
NzYsMTMgQEAgU3RyaW5nIERyYWdEYXRhOjphc1VSTChGaWxlbmFtZUNvbnZlcnNpbwogICAgIGlm
ICghbV9wbGF0Zm9ybURyYWdEYXRhLT5oYXNVUkwoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygp
OwogICAgIGlmIChmaWxlbmFtZVBvbGljeSAhPSBDb252ZXJ0RmlsZW5hbWVzKSB7Ci0gICAgICAg
IFVSTCB1cmwoVVJMKCksIG1fcGxhdGZvcm1EcmFnRGF0YS0+dXJsKCkpOwotICAgICAgICBpZiAo
dXJsLmlzTG9jYWxGaWxlKCkpCi0gICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CisgICAgICAg
IGlmIChtX3BsYXRmb3JtRHJhZ0RhdGEtPnVybCgpLmlzTG9jYWxGaWxlKCkpCisgICAgICAgICAg
ICByZXR1cm4geyB9OwogICAgIH0KIAotICAgIFN0cmluZyB1cmwobV9wbGF0Zm9ybURyYWdEYXRh
LT51cmwoKSk7CiAgICAgaWYgKHRpdGxlKQogICAgICAgICAqdGl0bGUgPSBtX3BsYXRmb3JtRHJh
Z0RhdGEtPnVybExhYmVsKCk7Ci0gICAgcmV0dXJuIHVybDsKKyAgICByZXR1cm4gbV9wbGF0Zm9y
bURyYWdEYXRhLT51cmwoKS5zdHJpbmcoKTsKIH0KIAogfQpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkR3RrLmNwcAkocmV2aXNpb24gMjYwNzA5KQorKysg
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCSh3b3JraW5nIGNv
cHkpCkBAIC0zMDAsNyArMzAwLDcgQEAgU3RyaW5nIFBhc3RlYm9hcmQ6OnJlYWRTdHJpbmcoY29u
c3QgU3RyaQogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVVUklMaXN0OgogICAgICAgICByZXR1
cm4gbV9zZWxlY3Rpb25EYXRhLT51cmlMaXN0KCk7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlw
ZVVSTDoKLSAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uRGF0YS0+dXJsKCk7CisgICAgICAgIHJl
dHVybiBtX3NlbGVjdGlvbkRhdGEtPnVybCgpLnN0cmluZygpOwogICAgIGNhc2UgQ2xpcGJvYXJk
RGF0YVR5cGVNYXJrdXA6CiAgICAgICAgIHJldHVybiBtX3NlbGVjdGlvbkRhdGEtPm1hcmt1cCgp
OwogICAgIGNhc2UgQ2xpcGJvYXJkRGF0YVR5cGVUZXh0OgpJbmRleDogU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9QYXN0ZWJvYXJkSGVscGVyLmNwcAkocmV2aXNpb24gMjYwNzA5
KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1Bhc3RlYm9hcmRIZWxwZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0xNzIsMTUgKzE3Miw4IEBAIHZvaWQgUGFzdGVib2FyZEhlbHBlcjo6
ZmlsbFNlbGVjdGlvbkRhdGEKICAgICAgICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rp
b25EYXRhLCB1cmlMaXN0QXRvbSwgOCwgcmVpbnRlcnByZXRfY2FzdDxjb25zdCBndWNoYXIqPih1
cmlMaXN0LmRhdGEoKSksIHVyaUxpc3QubGVuZ3RoKCkpOwogCiAgICAgfSBlbHNlIGlmIChpbmZv
ID09IFRhcmdldFR5cGVOZXRzY2FwZVVSTCAmJiBzZWxlY3Rpb24uaGFzVVJMKCkpIHsKLSAgICAg
ICAgU3RyaW5nIHVybChzZWxlY3Rpb24udXJsKCkpOwotICAgICAgICBTdHJpbmcgcmVzdWx0KHVy
bCk7Ci0gICAgICAgIHJlc3VsdC5hcHBlbmQoIlxuIik7Ci0KLSAgICAgICAgaWYgKHNlbGVjdGlv
bi5oYXNUZXh0KCkpCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHNlbGVjdGlvbi50ZXh0KCkp
OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHVybCk7Ci0KKyAgICAg
ICAgYXV0byYgdXJsU3RyaW5nID0gc2VsZWN0aW9uLnVybCgpLnN0cmluZygpOworICAgICAgICBh
dXRvIHJlc3VsdCA9IG1ha2VTdHJpbmcodXJsU3RyaW5nLCAnXG4nLCBzZWxlY3Rpb24uaGFzVGV4
dCgpID8gc2VsZWN0aW9uLnRleHQoKSA6IHVybFN0cmluZyk7CiAgICAgICAgIEdVbmlxdWVQdHI8
Z2NoYXI+IHJlc3VsdERhdGEoZ19zdHJkdXAocmVzdWx0LnV0ZjgoKS5kYXRhKCkpKTsKICAgICAg
ICAgZ3RrX3NlbGVjdGlvbl9kYXRhX3NldChzZWxlY3Rpb25EYXRhLCBuZXRzY2FwZVVSTEF0b20s
IDgsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgZ3VjaGFyKj4ocmVzdWx0RGF0YS5nZXQoKSksIHN0
cmxlbihyZXN1bHREYXRhLmdldCgpKSk7CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9TZWxlY3Rpb25EYXRhLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5jcHAJKHJldmlzaW9uIDI2MDcwOSkKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2d0ay9TZWxlY3Rpb25EYXRhLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzksMTIgKzc5LDEyIEBAIHZvaWQgU2VsZWN0aW9uRGF0YTo6c2V0VVJJTGlzdChjb25zdCBTdHIK
IHZvaWQgU2VsZWN0aW9uRGF0YTo6c2V0VVJMKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcm
IGxhYmVsKQogewogICAgIG1fdXJsID0gdXJsOwotICAgIG1fdXJpTGlzdCA9IHVybDsKKyAgICBt
X3VyaUxpc3QgPSB1cmwuc3RyaW5nKCk7CiAgICAgc2V0VGV4dCh1cmwuc3RyaW5nKCkpOwogCiAg
ICAgU3RyaW5nIGFjdHVhbExhYmVsKGxhYmVsKTsKICAgICBpZiAoYWN0dWFsTGFiZWwuaXNFbXB0
eSgpKQotICAgICAgICBhY3R1YWxMYWJlbCA9IHVybDsKKyAgICAgICAgYWN0dWFsTGFiZWwgPSB1
cmwuc3RyaW5nKCk7CiAKICAgICBTdHJpbmdCdWlsZGVyIG1hcmt1cDsKICAgICBtYXJrdXAuYXBw
ZW5kKCI8YSBocmVmPVwiIik7CkBAIC0xMDIsNyArMTAyLDcgQEAgY29uc3QgU3RyaW5nJiBTZWxl
Y3Rpb25EYXRhOjp1cmxMYWJlbCgpIAogICAgICAgICByZXR1cm4gdGV4dCgpOwogCiAgICAgaWYg
KGhhc1VSTCgpKQotICAgICAgICByZXR1cm4gdXJsKCk7CisgICAgICAgIHJldHVybiB1cmwoKS5z
dHJpbmcoKTsKIAogICAgIHJldHVybiBlbXB0eVN0cmluZygpOwogfQpJbmRleDogU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3Vy
bFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjYsNyArMTI2LDcgQEAgdm9pZCBDdXJsUmVzb3VyY2VI
YW5kbGVEZWxlZ2F0ZTo6Y3VybERpZAogICAgICAgICBVUkwgY2FjaGVVcmwgPSBtX3Jlc3BvbnNl
LnVybCgpOwogICAgICAgICBjYWNoZVVybC5yZW1vdmVGcmFnbWVudElkZW50aWZpZXIoKTsKIAot
ICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9u
c2UoY2FjaGVVcmwsIG1fcmVzcG9uc2UpKSB7CisgICAgICAgIGlmIChDdXJsQ2FjaGVNYW5hZ2Vy
OjpzaW5nbGV0b24oKS5nZXRDYWNoZWRSZXNwb25zZShjYWNoZVVybC5zdHJpbmcoKSwgbV9yZXNw
b25zZSkpIHsKICAgICAgICAgICAgIGlmIChkKCktPm1fYWRkZWRDYWNoZVZhbGlkYXRpb25IZWFk
ZXJzKSB7CiAgICAgICAgICAgICAgICAgbV9yZXNwb25zZS5zZXRIVFRQU3RhdHVzQ29kZSgyMDAp
OwogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c1RleHQoIk9LIik7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0
d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vzc2lvbkN1cmwuY3BwCShyZXZpc2lvbiAyNjA3MDkp
CisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE1MSw3ICsxNTEsNyBAQCB2b2lkIE5l
dHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQ29va2llCiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uOjpkZWxldGVDb29raWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbmFtZSkg
Y29uc3QKIHsKLSAgICBjb29raWVEYXRhYmFzZSgpLmRlbGV0ZUNvb2tpZSh1cmwsIG5hbWUpOwor
ICAgIGNvb2tpZURhdGFiYXNlKCkuZGVsZXRlQ29va2llKHVybC5zdHJpbmcoKSwgbmFtZSk7CiB9
CiAKIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxldGVBbGxDb29raWVzKCkKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwCShyZXZpc2lvbiAyNjA3MDkpCisrKyBTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTI3LDEwICsxMjcsMTAgQEAgdm9pZCBSZXNvdXJjZUhhbmRsZTo6YWRkQ2FjaGVW
YWxpZGF0aW9uSAogICAgIFVSTCBjYWNoZVVybCA9IHJlcXVlc3QudXJsKCk7CiAgICAgY2FjaGVV
cmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKLSAgICBpZiAoY2FjaGUuaXNDYWNoZWQo
Y2FjaGVVcmwpKSB7Ci0gICAgICAgIGNhY2hlLmFkZENhY2hlRW50cnlDbGllbnQoY2FjaGVVcmws
IHRoaXMpOworICAgIGlmIChjYWNoZS5pc0NhY2hlZChjYWNoZVVybC5zdHJpbmcoKSkpIHsKKyAg
ICAgICAgY2FjaGUuYWRkQ2FjaGVFbnRyeUNsaWVudChjYWNoZVVybC5zdHJpbmcoKSwgdGhpcyk7
CiAKLSAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGNhY2hlLnJlcXVlc3RIZWFkZXJz
KGNhY2hlVXJsKSkKKyAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlbnRyeSA6IGNhY2hlLnJlcXVl
c3RIZWFkZXJzKGNhY2hlVXJsLnN0cmluZygpKSkKICAgICAgICAgICAgIHJlcXVlc3QuYWRkSFRU
UEhlYWRlckZpZWxkKGVudHJ5LmtleSwgZW50cnkudmFsdWUpOwogCiAgICAgICAgIGQtPm1fYWRk
ZWRDYWNoZVZhbGlkYXRpb25IZWFkZXJzID0gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVh
bUhhbmRsZUltcGxDdXJsLmNwcAkocmV2aXNpb24gMjYwNzA5KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tldFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTIyLDcgKzEyMiw3IEBAIHZvaWQgU29ja2V0U3RyZWFtSGFuZGxlSW1w
bDo6ZGlkRmFpbChDdXIKICAgICBpZiAoZXJyb3JDb2RlID09IENVUkxFX1JFQ1ZfRVJST1IpCiAg
ICAgICAgIG1fY2xpZW50LmRpZEZhaWxUb1JlY2VpdmVTb2NrZXRTdHJlYW1EYXRhKCp0aGlzKTsK
ICAgICBlbHNlCi0gICAgICAgIG1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNv
Y2tldFN0cmVhbUVycm9yKGVycm9yQ29kZSwgbV91cmwsIEN1cmxIYW5kbGU6OmVycm9yRGVzY3Jp
cHRpb24oZXJyb3JDb2RlKSkpOworICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFt
KCp0aGlzLCBTb2NrZXRTdHJlYW1FcnJvcihlcnJvckNvZGUsIG1fdXJsLnN0cmluZygpLCBDdXJs
SGFuZGxlOjplcnJvckRlc2NyaXB0aW9uKGVycm9yQ29kZSkpKTsKIH0KIAogdm9pZCBTb2NrZXRT
dHJlYW1IYW5kbGVJbXBsOjpkZXN0cnVjdFN0cmVhbSgpCkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNz
aW9uLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0
aG9yaXphdGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0JKHJldmlzaW9uIDI2
MDcwOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXphdGlvbi9S
ZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0JKHdvcmtpbmcgY29weSkKQEAgLTc4LDcg
Kzc4LDcgQEAgdm9pZCBSZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb246OmNvbQogICAgICAg
ICAgICAgcGFnZS0+c2V0U2hvdWxkU3VwcHJlc3NTT0F1dGhvcml6YXRpb25Jbk5leHROYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb24oKTsKICAgICAgICAgICAgIGF1dG8gaHRtbCA9IG1ha2VTdHJpbmco
IjxzY3JpcHQ+bG9jYXRpb24gPSAnIiwgcmVzcG9uc2UuaHR0cEhlYWRlckZpZWxkcygpLmdldChI
VFRQSGVhZGVyTmFtZTo6TG9jYXRpb24pLCAiJzwvc2NyaXB0PiIpLnV0ZjgoKTsKICAgICAgICAg
ICAgIGF1dG8gZGF0YSA9IElQQzo6RGF0YVJlZmVyZW5jZShyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihodG1sLmRhdGEoKSksIGh0bWwubGVuZ3RoKCkpOwotICAgICAgICAgICAgcGFn
ZS0+bG9hZERhdGEoZGF0YSwgInRleHQvaHRtbCJfcywgIlVURi04Il9zLCBuYXZpZ2F0aW9uQWN0
aW9uLT5yZXF1ZXN0KCkudXJsKCksIG51bGxwdHIsIG5hdmlnYXRpb25BY3Rpb24tPnNob3VsZE9w
ZW5FeHRlcm5hbFVSTHNQb2xpY3koKSk7CisgICAgICAgICAgICBwYWdlLT5sb2FkRGF0YShkYXRh
LCAidGV4dC9odG1sIl9zLCAiVVRGLTgiX3MsIG5hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKS51
cmwoKS5zdHJpbmcoKSwgbnVsbHB0ciwgbmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkT3BlbkV4dGVy
bmFsVVJMc1BvbGljeSgpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogI2VuZGlm
CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFzc2lzdGFu
dC5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25T
aGVldEFzc2lzdGFudC5tbQkocmV2aXNpb24gMjYwNzA5KQorKysgU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTM0
Miw3ICszNDIsNyBAQCAtICh2b2lkKV9jcmVhdGVTaGVldFdpdGhFbGVtZW50QWN0aW9uczooCiAg
ICAgaWYgKCFfcG9zaXRpb25JbmZvcm1hdGlvbikKICAgICAgICAgcmV0dXJuOwogCi0gICAgTlNV
UkwgKnRhcmdldFVSTCA9IFtOU1VSTCBVUkxXaXRoU3RyaW5nOl9wb3NpdGlvbkluZm9ybWF0aW9u
LT51cmxdOworICAgIE5TVVJMICp0YXJnZXRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpfcG9z
aXRpb25JbmZvcm1hdGlvbi0+dXJsLnN0cmluZygpXTsKICAgICBOU1N0cmluZyAqdXJsU2NoZW1l
ID0gW3RhcmdldFVSTCBzY2hlbWVdOwogICAgIEJPT0wgaXNKYXZhU2NyaXB0VVJMID0gW3VybFNj
aGVtZSBsZW5ndGhdICYmIFt1cmxTY2hlbWUgY2FzZUluc2Vuc2l0aXZlQ29tcGFyZTpAImphdmFz
Y3JpcHQiXSA9PSBOU09yZGVyZWRTYW1lOwogICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgY2hlY2sg
aWYgSmF2YXNjcmlwdCBpcyBlbmFibGVkIGluIHRoZSBwcmVmZXJlbmNlcy4KSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0KPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPUy5tbQkocmV2aXNpb24gMjYwNzA5KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQkod29ya2luZyBjb3B5KQpAQCAtMjA4LDcgKzIw
OCw3IEBAIC0gKHZvaWQpZ2VvbG9jYXRpb25BdXRob3JpemF0aW9uR3JhbnRlZAogCiAgICAgICAg
IGlmIChyZXF1aXJlc1VzZXJBdXRob3JpemF0aW9uKSB7CiAgICAgICAgICAgICBSZXRhaW5QdHI8
V0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4gcG9saWN5TGlzdGVuZXIgPSBhZG9wdE5TKFtb
V0tXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhDb21wbGV0aW9uSGFu
ZGxlcjpXVEZNb3ZlKHJlcXVlc3QuY29tcGxldGlvbkhhbmRsZXIpXSk7Ci0gICAgICAgICAgICBX
ZWJLaXQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW4ocmVxdWVz
dC5mcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4uc2VjdXJpdHlPcmlnaW4oKS5wdHIoKSwgcmVxdWVz
dC5mcmFtZUluZm8ucmVxdWVzdC51cmwoKSwgcG9saWN5TGlzdGVuZXIuZ2V0KCksIHJlcXVlc3Qu
dmlldy5nZXQoKSk7CisgICAgICAgICAgICBXZWJLaXQ6OmRlY2lkZVBvbGljeUZvckdlb2xvY2F0
aW9uUmVxdWVzdEZyb21PcmlnaW4ocmVxdWVzdC5mcmFtZUluZm8uc2VjdXJpdHlPcmlnaW4uc2Vj
dXJpdHlPcmlnaW4oKS5wdHIoKSwgcmVxdWVzdC5mcmFtZUluZm8ucmVxdWVzdC51cmwoKS5zdHJp
bmcoKSwgcG9saWN5TGlzdGVuZXIuZ2V0KCksIHJlcXVlc3Qudmlldy5nZXQoKSk7CiAgICAgICAg
IH0gZWxzZQogICAgICAgICAgICAgcmVxdWVzdC5jb21wbGV0aW9uSGFuZGxlcih0cnVlKTsKICAg
ICB9CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0JKHJldmlz
aW9uIDI2MDcwOSkKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0J
KHdvcmtpbmcgY29weSkKQEAgLTUzNiw3ICs1MzYsNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0QXNz
aXN0YW50OihXS0FjdGlvblNoCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TRGljdGlvbmFyeSAq
cmVwcmVzZW50YXRpb25zID0gQHsKLSAgICAgICAgKE5TU3RyaW5nICopa1VUVHlwZVVURjhQbGFp
blRleHQgOiAoTlNTdHJpbmcgKilfcG9zaXRpb25JbmZvcm1hdGlvbi51cmwsCisgICAgICAgIChO
U1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IDogKE5TU3RyaW5nICopX3Bvc2l0aW9uSW5m
b3JtYXRpb24udXJsLnN0cmluZygpLAogICAgICAgICAoTlNTdHJpbmcgKilrVVRUeXBlVVJMIDog
KE5TVVJMICopX3Bvc2l0aW9uSW5mb3JtYXRpb24udXJsLAogICAgIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdl
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAJKHJldmlzaW9uIDI2MDcwOSkKKysrIFNvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdl
LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDcgKzMxNiw3IEBAIHByaXZhdGU6CiAgICAgICAg
ICAgICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZExpdGVyYWwoIjogIik7CiAgICAgICAgICAgICAg
ICAgZXJyb3JNZXNzYWdlLmFwcGVuZChlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsKICAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHdlYmtpdFdlYlBhZ2VEaWRTZW5kQ29uc29sZU1lc3Nh
Z2UobV93ZWJQYWdlLCBNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBlcnJvck1lc3NhZ2UudG9TdHJpbmcoKSwgMCwgZXJyb3IuZmFpbGluZ1VSTCgpKTsKKyAgICAg
ICAgICAgIHdlYmtpdFdlYlBhZ2VEaWRTZW5kQ29uc29sZU1lc3NhZ2UobV93ZWJQYWdlLCBNZXNz
YWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UudG9T
dHJpbmcoKSwgMCwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpKTsKICAgICAgICAgfQogICAg
IH0KIApJbmRleDogU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwkocmV2aXNpb24gMjYwNzA5KQor
KysgU291cmNlL1dlYktpdExlZ2FjeS9tYWMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0x
LDMgKzEsMTMgQEAKKzIwMjAtMDQtMjUgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5A
d2Via2l0Lm9yZz4KKworICAgICAgICBSZW1vdmUgaW1wbGljaXQgVVJMLT5TdHJpbmcgY29udmVy
c2lvbiBvcGVyYXRvcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIxMTAzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbToKKyAgICAgICAgKC1bRE9NSFRNTEJh
c2VFbGVtZW50IGhyZWZdKToKKwogMjAyMC0wNC0yNSAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFByZXBhcmUgdG8gcmVtb3ZlIGF1dG9tYXRp
YyBVUkwtPlN0cmluZyBjb252ZXJzaW9uIG9wZXJhdG9ycwpJbmRleDogU291cmNlL1dlYktpdExl
Z2FjeS9tYWMvRE9NL0RPTUhUTUxCYXNlRWxlbWVudC5tbQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VFbGVtZW50Lm1tCShyZXZpc2lvbiAyNjA3
MDkpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VFbGVtZW50Lm1t
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw3IEBACiAtIChOU1N0cmluZyAqKWhyZWYKIHsK
ICAgICBXZWJDb3JlOjpKU01haW5UaHJlYWROdWxsU3RhdGUgc3RhdGU7Ci0gICAgcmV0dXJuIElN
UEwtPmhyZWYoKTsKKyAgICByZXR1cm4gSU1QTC0+aHJlZigpLnN0cmluZygpOwogfQogCiAtICh2
b2lkKXNldEhyZWY6KE5TU3RyaW5nICopbmV3SHJlZgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399856</attachid>
            <date>2020-05-20 11:03:04 -0700</date>
            <delta_ts>2020-05-20 11:51:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211033-20200520110302.patch</filename>
            <type>text/plain</type>
            <size>21082</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA1LTIwICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGltcGxpY2l0IFVSTC0+
U3RyaW5nIGNvbnZlcnNpb24gb3BlcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGVzZSBvcGVyYXRvcnMgaGF2ZSBiZWVuIHRoZSBjYXVzZSBv
ZiBtYW55IHN1YnRsZSBidWdzIHJlbGF0ZWQgdG8gdHlwZSBpbmZlcmVuY2UgdGhhdCBhcmUgaGFy
ZCB0byBzZWUgaW4gdGhlIGNvZGUsCisgICAgICAgIGFzIHdlbGwgYXMgcGVyZm9ybWFuY2UgYnVn
cyB3aGVyZSB3ZSB1bm5lY2Vzc2FyaWx5IHJlLXBhcnNlIHBhcnNlZCBVUkxzLgorICAgICAgICBB
ZnRlciBteSByZWNlbnQgY2xlYW51cCB0aGlzIHdhcyBlYXNpZXIgdGhhbiBJIHRob3VnaHQgaXQg
d291bGQgYmUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6CisgICAgICAgIChXVEY6OlVSTDo6b3Bl
cmF0b3IgY29uc3QgU3RyaW5nJiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgU3RyaW5nVmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgTlNTdHJpbmcgKiBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDUtMTkgIEFkcmlh
biBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBXVEY6Okxv
Y2tlZFByaW50U3RyZWFtIHNob3VsZCBiZSBmaW5hbApJbmRleDogU291cmNlL1dURi93dGYvVVJM
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVVJMLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XVEYvd3RmL1VSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsOSArMTY2LDYg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIHBhdGhFbmQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBw
YXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdDsKIAotICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYo
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotICAgIG9wZXJhdG9yIFN0cmluZ1ZpZXcoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotCiAjaWYgVVNFKENGKQogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBVUkwoQ0ZVUkxSZWYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CkBAIC0xNzksMTAgKzE3Niw2IEBAIHB1Ymxp
YzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgb3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0OwogI2Vu
ZGlmCiAKLSNpZmRlZiBfX09CSkNfXwotICAgIG9wZXJhdG9yIE5TU3RyaW5nICooKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZzsgfQotI2VuZGlmCi0KICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBw
cmludCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4OTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBA
QAorMjAyMC0wNS0yMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlbW92ZSBpbXBsaWNpdCBVUkwtPlN0cmluZyBjb252ZXJzaW9uIG9wZXJh
dG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
MDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFsdWVGb3JNU0FBIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6
OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwbHVnaW5SZXBsYWNlbWVudEZvclR5cGUpOgorICAgICAgICAqIGh0bWwvVVJM
VXRpbHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+Ojpwcm90b2NvbCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpVUkxVdGlsczxUPjo6c2V0VXNlcm5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldFBhc3N3b3JkKToKKyAgICAgICAgKiBwYWdlL0xvY2F0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQcm90b2NvbCk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
dGlvbjo6c2V0SG9zdG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFBvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFBhdGhuYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2F0aW9uOjpzZXRTZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246
OnNldEhhc2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpsb2FkKToKKwogMjAyMC0wNS0xOSAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQmx1ZSBkb3R0ZWQgdW5k
ZXJsaW5lIHdpdGggYWx0ZXJuYXRpdmVzIG9ubHkgc2hvd24gZm9yIGxhc3Qgd29yZCwgZ2V0cyBs
b3N0IGZvciBwcmV2aW91cyBpbnNlcnRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NjQsNyArMzY2NCw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmcKICAgICBpZiAoaXNMaW5r
YWJsZSgqdGhpcykpIHsKICAgICAgICAgRWxlbWVudCogYW5jaG9yID0gYW5jaG9yRWxlbWVudCgp
OwogICAgICAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KGFuY2hvcikpCi0gICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KCphbmNob3IpLmhyZWYoKTsKKyAg
ICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmFuY2hvcikuaHJl
ZigpLnN0cmluZygpOwogICAgIH0KIAogICAgIHJldHVybiBzdHJpbmdWYWx1ZSgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAJKHJldmlzaW9uIDI2MTg4
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjQsNyArMzY0LDcgQEAgc3RhdGljIFJlcGxhY2VtZW50UGx1Z2luKiBwbHVn
aW5SZXBsYWNlbQogCiAgICAgU3RyaW5nIHR5cGUgPSBtaW1lVHlwZTsKICAgICBpZiAodHlwZS5p
c0VtcHR5KCkgJiYgdXJsLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgIHR5cGUgPSBtaW1lVHlw
ZUZyb21EYXRhVVJMKHVybCk7CisgICAgICAgIHR5cGUgPSBtaW1lVHlwZUZyb21EYXRhVVJMKHVy
bC5zdHJpbmcoKSk7CiAgICAgCiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpICYmICFleHRlbnNpb24u
aXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byogcmVwbGFjZW1lbnQgOiByZXBsYWNlbWVu
dHMpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCShyZXZpc2lvbiAyNjE4ODYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDcgKzEzNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQcm90b2NvbCgKICAg
ICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLnNldFBy
b3RvY29sKHByb3RvY29sKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9y
IH07Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIb3N0KERP
TVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJp
bmcmIGhvc3QpCkBAIC0xNDYsNyArMTQ2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246
OnNldEhvc3QoRE9NVwogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3RBbmRQb3J0KGhvc3QpOwotICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SG9zdG5hbWUoRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCkBAIC0xNTYsNyArMTU2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNl
dEhvc3RuYW1lKAogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3QoaG9zdG5hbWUpOwotICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UG9ydChET01XaW5kb3cmIGFjdGl2ZVdp
bmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBwb3J0U3RyaW5nKQpA
QCAtMTY2LDcgKzE2Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQb3J0KERP
TVcKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpOwogICAgIHVybC5zZXRQb3J0KHBhcnNlVUludDE2KHBvcnRTdHJpbmcpKTsKLSAgICBy
ZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAgICBy
ZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygp
KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBhdGhuYW1lKERPTVdpbmRv
dyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHBh
dGhuYW1lKQpAQCAtMTc2LDcgKzE3Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpz
ZXRQYXRobmFtZSgKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRQYXRoKHBhdGhuYW1lKTsKLSAgICByZXR1cm4g
c2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAgICByZXR1cm4g
c2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKIH0K
IAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFNlYXJjaChET01XaW5kb3cmIGFjdGl2
ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBzZWFyY2gpCkBA
IC0xODYsNyArMTg2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFNlYXJjaChE
TwogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCk7CiAgICAgdXJsLnNldFF1ZXJ5KHNlYXJjaCk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9u
KGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9u
KGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01X
aW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIGhhc2gpCkBAIC0yMDYsNyArMjA2LDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhhc2goRE9NVwogICAgIC8vIGNhc2Vz
IHdoZXJlIGZyYWdtZW50IGlkZW50aWZpZXJzIGFyZSBpZ25vcmVkIG9yIGludmFsaWQuIAogICAg
IGlmIChlcXVhbElnbm9yaW5nTnVsbGl0eShvbGRGcmFnbWVudElkZW50aWZpZXIsIHVybC5mcmFn
bWVudElkZW50aWZpZXIoKSkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHNldExv
Y2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CisgICAgcmV0dXJuIHNldExv
Y2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjphc3NpZ24oRE9NV2luZG93JiBhY3RpdmVXaW5kb3cs
IERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNp
b24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNyArNDQxLDcgQEAgYm9vbCBNZWRpYVBsYXll
cjo6bG9hZChjb25zdCBVUkwmIHVybCwgYwogICAgIEF0b21TdHJpbmcgY29udGFpbmVyVHlwZSA9
IG1fY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpOwogICAgIGlmIChjb250YWluZXJUeXBlLmlz
RW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSB8fCBj
b250YWluZXJUeXBlID09IHRleHRQbGFpbigpKSB7CiAgICAgICAgIGlmIChtX3VybC5wcm90b2Nv
bElzRGF0YSgpKQotICAgICAgICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVU
eXBlRnJvbURhdGFVUkwobV91cmwpKTsKKyAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250
ZW50VHlwZShtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsLnN0cmluZygpKSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENv
bXBvbmVudCgpOwogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IGxhc3RQYXRoQ29tcG9uZW50LnJl
dmVyc2VGaW5kKCcuJyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0Rh
dGFHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFn
RGF0YUd0ay5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9EcmFnRGF0YUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDE1ICs3NiwxMyBAQCBT
dHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVuYW1lQ29udmVyc2lvCiAgICAgaWYgKCFtX3BsYXRm
b3JtRHJhZ0RhdGEtPmhhc1VSTCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYg
KGZpbGVuYW1lUG9saWN5ICE9IENvbnZlcnRGaWxlbmFtZXMpIHsKLSAgICAgICAgVVJMIHVybChV
UkwoKSwgbV9wbGF0Zm9ybURyYWdEYXRhLT51cmwoKSk7Ci0gICAgICAgIGlmICh1cmwuaXNMb2Nh
bEZpbGUoKSkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgaWYgKG1fcGxh
dGZvcm1EcmFnRGF0YS0+dXJsKCkuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCi0gICAgU3RyaW5nIHVybChtX3BsYXRmb3JtRHJhZ0RhdGEtPnVybCgpKTsK
ICAgICBpZiAodGl0bGUpCiAgICAgICAgICp0aXRsZSA9IG1fcGxhdGZvcm1EcmFnRGF0YS0+dXJs
TGFiZWwoKTsKLSAgICByZXR1cm4gdXJsOworICAgIHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGEt
PnVybCgpLnN0cmluZygpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
NCw3ICszNzQsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhjb25zdCBTdHJpCiAg
ICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZVVSSUxpc3Q6CiAgICAgICAgIHJldHVybiBtX3NlbGVj
dGlvbkRhdGEtPnVyaUxpc3QoKTsKICAgICBjYXNlIENsaXBib2FyZERhdGFUeXBlVVJMOgotICAg
ICAgICByZXR1cm4gbV9zZWxlY3Rpb25EYXRhLT51cmwoKTsKKyAgICAgICAgcmV0dXJuIG1fc2Vs
ZWN0aW9uRGF0YS0+dXJsKCkuc3RyaW5nKCk7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZU1h
cmt1cDoKICAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uRGF0YS0+bWFya3VwKCk7CiAgICAgY2Fz
ZSBDbGlwYm9hcmREYXRhVHlwZVRleHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2VsZWN0aW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1NlbGVjdGlvbkRhdGEuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
OCw3ICsxMDgsNyBAQCBjb25zdCBTdHJpbmcmIFNlbGVjdGlvbkRhdGE6OnVybExhYmVsKCkgCiAg
ICAgICAgIHJldHVybiB0ZXh0KCk7CiAKICAgICBpZiAoaGFzVVJMKCkpCi0gICAgICAgIHJldHVy
biB1cmwoKTsKKyAgICAgICAgcmV0dXJuIHVybCgpLnN0cmluZygpOwogCiAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
Niw3ICsxMjYsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkCiAg
ICAgICAgIFVSTCBjYWNoZVVybCA9IG1fcmVzcG9uc2UudXJsKCk7CiAgICAgICAgIGNhY2hlVXJs
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCi0gICAgICAgIGlmIChDdXJsQ2FjaGVNYW5h
Z2VyOjpzaW5nbGV0b24oKS5nZXRDYWNoZWRSZXNwb25zZShjYWNoZVVybCwgbV9yZXNwb25zZSkp
IHsKKyAgICAgICAgaWYgKEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmdldENhY2hlZFJl
c3BvbnNlKGNhY2hlVXJsLnN0cmluZygpLCBtX3Jlc3BvbnNlKSkgewogICAgICAgICAgICAgaWYg
KGQoKS0+bV9hZGRlZENhY2hlVmFsaWRhdGlvbkhlYWRlcnMpIHsKICAgICAgICAgICAgICAgICBt
X3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7CiAgICAgICAgICAgICAgICAgbV9yZXNw
b25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxl
dGVDb29raWUKIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewotICAgIGNvb2tpZURhdGFi
YXNlKCkuZGVsZXRlQ29va2llKHVybCwgbmFtZSk7CisgICAgY29va2llRGF0YWJhc2UoKS5kZWxl
dGVDb29raWUodXJsLnN0cmluZygpLCBuYW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlbGV0ZUFsbENvb2tpZXMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsMTAgKzEyNywxMCBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjphZGRDYWNoZVZhbGlkYXRpb25ICiAgICAgVVJMIGNhY2hl
VXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBjYWNoZVVybC5yZW1vdmVGcmFnbWVudElkZW50aWZp
ZXIoKTsKIAotICAgIGlmIChjYWNoZS5pc0NhY2hlZChjYWNoZVVybCkpIHsKLSAgICAgICAgY2Fj
aGUuYWRkQ2FjaGVFbnRyeUNsaWVudChjYWNoZVVybCwgdGhpcyk7CisgICAgaWYgKGNhY2hlLmlz
Q2FjaGVkKGNhY2hlVXJsLnN0cmluZygpKSkgeworICAgICAgICBjYWNoZS5hZGRDYWNoZUVudHJ5
Q2xpZW50KGNhY2hlVXJsLnN0cmluZygpLCB0aGlzKTsKIAotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGVudHJ5IDogY2FjaGUucmVxdWVzdEhlYWRlcnMoY2FjaGVVcmwpKQorICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGVudHJ5IDogY2FjaGUucmVxdWVzdEhlYWRlcnMoY2FjaGVVcmwuc3RyaW5n
KCkpKQogICAgICAgICAgICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoZW50cnkua2V5LCBl
bnRyeS52YWx1ZSk7CiAKICAgICAgICAgZC0+bV9hZGRlZENhY2hlVmFsaWRhdGlvbkhlYWRlcnMg
PSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCShyZXZp
c2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIy
LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRGYWlsKEN1cgogICAgIGlmIChl
cnJvckNvZGUgPT0gQ1VSTEVfUkVDVl9FUlJPUikKICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFRv
UmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMpOwogICAgIGVsc2UKLSAgICAgICAgbV9jbGll
bnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoZXJyb3JDb2Rl
LCBtX3VybCwgQ3VybEhhbmRsZTo6ZXJyb3JEZXNjcmlwdGlvbihlcnJvckNvZGUpKSk7CisgICAg
ICAgIG1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNvY2tldFN0cmVhbUVycm9y
KGVycm9yQ29kZSwgbV91cmwuc3RyaW5nKCksIEN1cmxIYW5kbGU6OmVycm9yRGVzY3JpcHRpb24o
ZXJyb3JDb2RlKSkpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRlc3RydWN0
U3RyZWFtKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXph
dGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1JlZGlyZWN0U09BdXRo
b3JpemF0aW9uU2Vzc2lvbi5tbQkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1JlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vz
c2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlZGlyZWN0U09B
dXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tCiAgICAgICAgICAgICBwYWdlLT5zZXRTaG91bGRTdXBw
cmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbigpOwogICAg
ICAgICAgICAgYXV0byBodG1sID0gbWFrZVN0cmluZygiPHNjcmlwdD5sb2NhdGlvbiA9ICciLCBy
ZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZ2V0KEhUVFBIZWFkZXJOYW1lOjpMb2NhdGlvbiks
ICInPC9zY3JpcHQ+IikudXRmOCgpOwogICAgICAgICAgICAgYXV0byBkYXRhID0gSVBDOjpEYXRh
UmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGh0bWwuZGF0YSgpKSwg
aHRtbC5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBwYWdlLT5sb2FkRGF0YShkYXRhLCAidGV4dC9o
dG1sIl9zLCAiVVRGLTgiX3MsIG5hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKS51cmwoKSwgbnVs
bHB0ciwgbmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsK
KyAgICAgICAgICAgIHBhZ2UtPmxvYWREYXRhKGRhdGEsICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJf
cywgbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygpLCBudWxscHRyLCBu
YXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCShyZXZpc2lv
biAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFz
c2lzdGFudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQyLDcgKzM0Miw3IEBAIC0gKHZvaWQpX2Ny
ZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rpb25zOigKICAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0
aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU1VSTCAqdGFyZ2V0VVJMID0gW05TVVJMIFVS
TFdpdGhTdHJpbmc6X3Bvc2l0aW9uSW5mb3JtYXRpb24tPnVybF07CisgICAgTlNVUkwgKnRhcmdl
dFVSTCA9IF9wb3NpdGlvbkluZm9ybWF0aW9uLT51cmw7CiAgICAgTlNTdHJpbmcgKnVybFNjaGVt
ZSA9IFt0YXJnZXRVUkwgc2NoZW1lXTsKICAgICBCT09MIGlzSmF2YVNjcmlwdFVSTCA9IFt1cmxT
Y2hlbWUgbGVuZ3RoXSAmJiBbdXJsU2NoZW1lIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJqYXZh
c2NyaXB0Il0gPT0gTlNPcmRlcmVkU2FtZTsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNr
IGlmIEphdmFzY3JpcHQgaXMgZW5hYmxlZCBpbiB0aGUgcHJlZmVyZW5jZXMuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4
LDcgQEAgLSAodm9pZClkZW55T25seVRoaXNSZXF1ZXN0IE5PX1JFVFVSTl9EVQogQGVuZAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKLXZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0
RnJvbU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4sIFVJVmlldyopOwordm9pZCBkZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgVVJMJiwgaWQ8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+LCBVSVZp
ZXcqKTsKIH07CiAKIHN0cnVjdCBHZW9sb2NhdGlvblJlcXVlc3REYXRhIHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJp
dHlPcmlnaW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5tbQkocmV2aXNpb24gMjYx
ODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPU09iakNTZWN1cml0eU9yaWdpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQsMTcgKzQ0LDE2
IEBAIC0gKGlkKV9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjooV2UKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9y
aWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBp
ZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4sIFVJVmlldyAqKTsKK3ZvaWQgZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biosIGNvbnN0IFVSTCYsIGlkPFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPiwgVUlWaWV3ICop
OwogCi12b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW4oV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGlk
PFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPiBsaXN0ZW5lciwgVUlWaWV3ICp2aWV3KQordm9p
ZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBpZDxXZWJBbGxvd0RlbnlQb2xp
Y3lMaXN0ZW5lcj4gbGlzdGVuZXIsIFVJVmlldyAqdmlldykKIHsKICAgICBSZXRhaW5QdHI8V2Vi
U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3Jp
Z2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7Ci0gICAg
UmV0YWluUHRyPE5TVVJMPiByZXF1ZXN0VXJsID0gYWRvcHROUyhbW05TVVJMIGFsbG9jXSBpbml0
V2l0aFN0cmluZzp1cmxTdHJpbmddKTsKICAgICBSZXRhaW5QdHI8VUlXZWJHZW9sb2NhdGlvblBv
bGljeURlY2lkZXI+IGRlY2lkZXIgPSBbVUlXZWJHZW9sb2NhdGlvblBvbGljeURlY2lkZXIgc2hh
cmVkUG9saWN5RGVjaWRlcl07CiAgICAgaWYgKFtkZWNpZGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjpyZXF1
ZXN0aW5nVVJMOnZpZXc6bGlzdGVuZXI6KV0pCi0gICAgICAgIFtkZWNpZGVyIGRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46c2VjdXJpdHlPcmlnaW4uZ2V0KCkgcmVx
dWVzdGluZ1VSTDpyZXF1ZXN0VXJsLmdldCgpIHZpZXc6dmlldyBsaXN0ZW5lcjpsaXN0ZW5lcl07
CisgICAgICAgIFtkZWNpZGVyIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21P
cmlnaW46c2VjdXJpdHlPcmlnaW4uZ2V0KCkgcmVxdWVzdGluZ1VSTDp1cmwgdmlldzp2aWV3IGxp
c3RlbmVyOmxpc3RlbmVyXTsKICAgICBlbHNlCi0gICAgICAgIFtkZWNpZGVyIGRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46c2VjdXJpdHlPcmlnaW4uZ2V0KCkgcmVx
dWVzdGluZ1VSTDpyZXF1ZXN0VXJsLmdldCgpIHdpbmRvdzp2aWV3LndpbmRvdyBsaXN0ZW5lcjps
aXN0ZW5lcl07CisgICAgICAgIFtkZWNpZGVyIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVx
dWVzdEZyb21PcmlnaW46c2VjdXJpdHlPcmlnaW4uZ2V0KCkgcmVxdWVzdGluZ1VSTDp1cmwgd2lu
ZG93OnZpZXcud2luZG93IGxpc3RlbmVyOmxpc3RlbmVyXTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0JKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1MjksNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0
QXNzaXN0YW50OihXS0FjdGlvblNoCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TRGljdGlvbmFy
eSAqcmVwcmVzZW50YXRpb25zID0gQHsKLSAgICAgICAgKE5TU3RyaW5nICopa1VUVHlwZVVURjhQ
bGFpblRleHQgOiAoTlNTdHJpbmcgKilfcG9zaXRpb25JbmZvcm1hdGlvbi51cmwsCisgICAgICAg
IChOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IDogKE5TU3RyaW5nICopX3Bvc2l0aW9u
SW5mb3JtYXRpb24udXJsLnN0cmluZygpLAogICAgICAgICAoTlNTdHJpbmcgKilrVVRUeXBlVVJM
IDogKE5TVVJMICopX3Bvc2l0aW9uSW5mb3JtYXRpb24udXJsLAogICAgIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDcgKzMxNiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZExpdGVyYWwoIjogIik7CiAgICAgICAgICAg
ICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZChlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdlYmtpdFdlYlBhZ2VEaWRTZW5kQ29uc29sZU1l
c3NhZ2UobV93ZWJQYWdlLCBNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBlcnJvck1lc3NhZ2UudG9TdHJpbmcoKSwgMCwgZXJyb3IuZmFpbGluZ1VSTCgpKTsKKyAg
ICAgICAgICAgIHdlYmtpdFdlYlBhZ2VEaWRTZW5kQ29uc29sZU1lc3NhZ2UobV93ZWJQYWdlLCBN
ZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2Uu
dG9TdHJpbmcoKSwgMCwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpKTsKICAgICAgICAgfQog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYw
LDcgKzI2NjAsNyBAQCBzdGF0aWMgdm9pZCBpbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24oV2ViCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGluZm8uaXNJbWFnZSA9IHRydWU7Ci0gICAgaW5mby5pbWFn
ZVVSTCA9IGVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChyZW5kZXJJbWFnZS5jYWNoZWRJ
bWFnZSgpLT51cmwoKSk7CisgICAgaW5mby5pbWFnZVVSTCA9IGVsZW1lbnQuZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChyZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgpLT51cmwoKS5zdHJpbmcoKSk7CiAg
ICAgaW5mby5pc0FuaW1hdGVkSW1hZ2UgPSBpbWFnZS0+aXNBbmltYXRlZCgpOwogCiAgICAgaWYg
KCFyZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA1LTIwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGltcGxp
Y2l0IFVSTC0+U3RyaW5nIGNvbnZlcnNpb24gb3BlcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwMzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01IVE1MQmFzZUVsZW1lbnQubW06
CisgICAgICAgICgtW0RPTUhUTUxCYXNlRWxlbWVudCBocmVmXSk6CisKIDIwMjAtMDUtMTggIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIFRleHRJ
bmRpY2F0b3JPcHRpb25zIHdpdGggT3B0aW9uU2V0PFRleHRJbmRpY2F0b3JPcHRpb24+CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VFbGVtZW50Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQu
bW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQmFzZUVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKIC0gKE5T
U3RyaW5nICopaHJlZgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICByZXR1cm4gSU1QTC0+aHJlZigpOworICAgIHJldHVybiBJTVBMLT5ocmVmKCkuc3Ry
aW5nKCk7CiB9CiAKIC0gKHZvaWQpc2V0SHJlZjooTlNTdHJpbmcgKiluZXdIcmVmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399866</attachid>
            <date>2020-05-20 11:51:29 -0700</date>
            <delta_ts>2020-05-20 12:48:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211033-20200520115124.patch</filename>
            <type>text/plain</type>
            <size>23305</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA1LTIwICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGltcGxpY2l0IFVSTC0+
U3RyaW5nIGNvbnZlcnNpb24gb3BlcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGVzZSBvcGVyYXRvcnMgaGF2ZSBiZWVuIHRoZSBjYXVzZSBv
ZiBtYW55IHN1YnRsZSBidWdzIHJlbGF0ZWQgdG8gdHlwZSBpbmZlcmVuY2UgdGhhdCBhcmUgaGFy
ZCB0byBzZWUgaW4gdGhlIGNvZGUsCisgICAgICAgIGFzIHdlbGwgYXMgcGVyZm9ybWFuY2UgYnVn
cyB3aGVyZSB3ZSB1bm5lY2Vzc2FyaWx5IHJlLXBhcnNlIHBhcnNlZCBVUkxzLgorICAgICAgICBB
ZnRlciBteSByZWNlbnQgY2xlYW51cCB0aGlzIHdhcyBlYXNpZXIgdGhhbiBJIHRob3VnaHQgaXQg
d291bGQgYmUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6CisgICAgICAgIChXVEY6OlVSTDo6b3Bl
cmF0b3IgY29uc3QgU3RyaW5nJiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgU3RyaW5nVmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgTlNTdHJpbmcgKiBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDUtMTkgIEFkcmlh
biBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBXVEY6Okxv
Y2tlZFByaW50U3RyZWFtIHNob3VsZCBiZSBmaW5hbApJbmRleDogU291cmNlL1dURi93dGYvVVJM
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVVJMLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XVEYvd3RmL1VSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsOSArMTY2LDYg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIHBhdGhFbmQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBw
YXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdDsKIAotICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYo
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotICAgIG9wZXJhdG9yIFN0cmluZ1ZpZXcoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotCiAjaWYgVVNFKENGKQogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBVUkwoQ0ZVUkxSZWYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CkBAIC0xNzksMTAgKzE3Niw2IEBAIHB1Ymxp
YzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgb3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0OwogI2Vu
ZGlmCiAKLSNpZmRlZiBfX09CSkNfXwotICAgIG9wZXJhdG9yIE5TU3RyaW5nICooKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZzsgfQotI2VuZGlmCi0KICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBw
cmludCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4OTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBA
QAorMjAyMC0wNS0yMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlbW92ZSBpbXBsaWNpdCBVUkwtPlN0cmluZyBjb252ZXJzaW9uIG9wZXJh
dG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
MDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFsdWVGb3JNU0FBIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6
OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwbHVnaW5SZXBsYWNlbWVudEZvclR5cGUpOgorICAgICAgICAqIGh0bWwvVVJM
VXRpbHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+Ojpwcm90b2NvbCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpVUkxVdGlsczxUPjo6c2V0VXNlcm5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldFBhc3N3b3JkKToKKyAgICAgICAgKiBwYWdlL0xvY2F0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQcm90b2NvbCk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
dGlvbjo6c2V0SG9zdG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFBvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFBhdGhuYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2F0aW9uOjpzZXRTZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246
OnNldEhhc2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpsb2FkKToKKwogMjAyMC0wNS0xOSAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQmx1ZSBkb3R0ZWQgdW5k
ZXJsaW5lIHdpdGggYWx0ZXJuYXRpdmVzIG9ubHkgc2hvd24gZm9yIGxhc3Qgd29yZCwgZ2V0cyBs
b3N0IGZvciBwcmV2aW91cyBpbnNlcnRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NjQsNyArMzY2NCw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmcKICAgICBpZiAoaXNMaW5r
YWJsZSgqdGhpcykpIHsKICAgICAgICAgRWxlbWVudCogYW5jaG9yID0gYW5jaG9yRWxlbWVudCgp
OwogICAgICAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KGFuY2hvcikpCi0gICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KCphbmNob3IpLmhyZWYoKTsKKyAg
ICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmFuY2hvcikuaHJl
ZigpLnN0cmluZygpOwogICAgIH0KIAogICAgIHJldHVybiBzdHJpbmdWYWx1ZSgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NVVJMLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9ET01VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMSArMzksMjUgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgRE9NVVJMOjpET01VUkwoVVJMJiYgY29tcGxldGVV
UkwsIFVSTCYmIGJhc2VVUkwpCi0gICAgOiBtX2Jhc2VVUkwoV1RGTW92ZShiYXNlVVJMKSkKK2lu
bGluZSBET01VUkw6OkRPTVVSTChVUkwmJiBjb21wbGV0ZVVSTCwgY29uc3QgVVJMJiBiYXNlVVJM
KQorICAgIDogbV9iYXNlVVJMKGJhc2VVUkwpCiAgICAgLCBtX3VybChXVEZNb3ZlKGNvbXBsZXRl
VVJMKSkKIHsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPERPTVVSTD4+IERPTVVSTDo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGJhc2UpCitFeGNlcHRpb25PcjxSZWY8RE9N
VVJMPj4gRE9NVVJMOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFVSTCYgYmFzZSkK
IHsKLSAgICBVUkwgYmFzZVVSTCB7IFVSTCB7IH0sIGJhc2UgfTsKLSAgICBpZiAoIWJhc2VVUkwu
aXNWYWxpZCgpKQorICAgIGlmICghYmFzZS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IgfTsKLSAgICBVUkwgY29tcGxldGVVUkwgeyBiYXNlVVJMLCB1cmwg
fTsKKyAgICBVUkwgY29tcGxldGVVUkwgeyBiYXNlLCB1cmwgfTsKICAgICBpZiAoIWNvbXBsZXRl
VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9Owot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTVVSTChXVEZNb3ZlKGNvbXBsZXRlVVJMKSwgV1RG
TW92ZShiYXNlVVJMKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTVVSTChXVEZNb3Zl
KGNvbXBsZXRlVVJMKSwgYmFzZSkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9N
VVJMOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgYmFzZSkKK3sKKyAg
ICByZXR1cm4gY3JlYXRlKHVybCwgVVJMIHsgVVJMIHsgfSwgYmFzZSB9KTsKIH0KIAogRXhjZXB0
aW9uT3I8UmVmPERPTVVSTD4+IERPTVVSTDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBET01VUkwmIGJhc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYg
KzQxLDcgQEAgY2xhc3MgRE9NVVJMIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8RAogcHVibGlj
OgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIGJhc2UpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
RE9NVVJMPj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBET01VUkwmIGJhc2UpOwor
ICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBVUkwmIGJhc2UpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RE9NVVJM
Pj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB+RE9NVVJMKCk7CiAKQEAgLTU4LDcg
KzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlUHVibGljVVJMKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBVUkxSZWdpc3RyYWJsZSYpOwogCiBwcml2YXRlOgotICAgIERP
TVVSTChVUkwmJiBjb21wbGV0ZVVSTCwgVVJMJiYgYmFzZVVSTCk7CisgICAgRE9NVVJMKFVSTCYm
IGNvbXBsZXRlVVJMLCBjb25zdCBVUkwmIGJhc2VVUkwpOwogCiAgICAgVVJMIGZ1bGxVUkwoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQogICAgIHZvaWQgc2V0RnVsbFVSTChjb25zdCBV
UkwmIGZ1bGxVUkwpIGZpbmFsIHsgc2V0SHJlZihmdWxsVVJMLnN0cmluZygpKTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAJKHJldmlzaW9uIDI2MTg4
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjQsNyArMzY0LDcgQEAgc3RhdGljIFJlcGxhY2VtZW50UGx1Z2luKiBwbHVn
aW5SZXBsYWNlbQogCiAgICAgU3RyaW5nIHR5cGUgPSBtaW1lVHlwZTsKICAgICBpZiAodHlwZS5p
c0VtcHR5KCkgJiYgdXJsLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgIHR5cGUgPSBtaW1lVHlw
ZUZyb21EYXRhVVJMKHVybCk7CisgICAgICAgIHR5cGUgPSBtaW1lVHlwZUZyb21EYXRhVVJMKHVy
bC5zdHJpbmcoKSk7CiAgICAgCiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpICYmICFleHRlbnNpb24u
aXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byogcmVwbGFjZW1lbnQgOiByZXBsYWNlbWVu
dHMpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCShyZXZpc2lvbiAyNjE4ODYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDcgKzEzNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQcm90b2NvbCgKICAg
ICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLnNldFBy
b3RvY29sKHByb3RvY29sKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9y
IH07Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIb3N0KERP
TVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJp
bmcmIGhvc3QpCkBAIC0xNDYsNyArMTQ2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246
OnNldEhvc3QoRE9NVwogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3RBbmRQb3J0KGhvc3QpOwotICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SG9zdG5hbWUoRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCkBAIC0xNTYsNyArMTU2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNl
dEhvc3RuYW1lKAogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3QoaG9zdG5hbWUpOwotICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UG9ydChET01XaW5kb3cmIGFjdGl2ZVdp
bmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBwb3J0U3RyaW5nKQpA
QCAtMTY2LDcgKzE2Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQb3J0KERP
TVcKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpOwogICAgIHVybC5zZXRQb3J0KHBhcnNlVUludDE2KHBvcnRTdHJpbmcpKTsKLSAgICBy
ZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAgICBy
ZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygp
KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBhdGhuYW1lKERPTVdpbmRv
dyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHBh
dGhuYW1lKQpAQCAtMTc2LDcgKzE3Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpz
ZXRQYXRobmFtZSgKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRQYXRoKHBhdGhuYW1lKTsKLSAgICByZXR1cm4g
c2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAgICByZXR1cm4g
c2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKIH0K
IAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFNlYXJjaChET01XaW5kb3cmIGFjdGl2
ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBzZWFyY2gpCkBA
IC0xODYsNyArMTg2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFNlYXJjaChE
TwogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCk7CiAgICAgdXJsLnNldFF1ZXJ5KHNlYXJjaCk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9u
KGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9u
KGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01X
aW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIGhhc2gpCkBAIC0yMDYsNyArMjA2LDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhhc2goRE9NVwogICAgIC8vIGNhc2Vz
IHdoZXJlIGZyYWdtZW50IGlkZW50aWZpZXJzIGFyZSBpZ25vcmVkIG9yIGludmFsaWQuIAogICAg
IGlmIChlcXVhbElnbm9yaW5nTnVsbGl0eShvbGRGcmFnbWVudElkZW50aWZpZXIsIHVybC5mcmFn
bWVudElkZW50aWZpZXIoKSkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHNldExv
Y2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CisgICAgcmV0dXJuIHNldExv
Y2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjphc3NpZ24oRE9NV2luZG93JiBhY3RpdmVXaW5kb3cs
IERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNp
b24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNyArNDQxLDcgQEAgYm9vbCBNZWRpYVBsYXll
cjo6bG9hZChjb25zdCBVUkwmIHVybCwgYwogICAgIEF0b21TdHJpbmcgY29udGFpbmVyVHlwZSA9
IG1fY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpOwogICAgIGlmIChjb250YWluZXJUeXBlLmlz
RW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSB8fCBj
b250YWluZXJUeXBlID09IHRleHRQbGFpbigpKSB7CiAgICAgICAgIGlmIChtX3VybC5wcm90b2Nv
bElzRGF0YSgpKQotICAgICAgICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVU
eXBlRnJvbURhdGFVUkwobV91cmwpKTsKKyAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250
ZW50VHlwZShtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsLnN0cmluZygpKSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENv
bXBvbmVudCgpOwogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IGxhc3RQYXRoQ29tcG9uZW50LnJl
dmVyc2VGaW5kKCcuJyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0Rh
dGFHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFn
RGF0YUd0ay5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9EcmFnRGF0YUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDE1ICs3NiwxMyBAQCBT
dHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVuYW1lQ29udmVyc2lvCiAgICAgaWYgKCFtX3BsYXRm
b3JtRHJhZ0RhdGEtPmhhc1VSTCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYg
KGZpbGVuYW1lUG9saWN5ICE9IENvbnZlcnRGaWxlbmFtZXMpIHsKLSAgICAgICAgVVJMIHVybChV
UkwoKSwgbV9wbGF0Zm9ybURyYWdEYXRhLT51cmwoKSk7Ci0gICAgICAgIGlmICh1cmwuaXNMb2Nh
bEZpbGUoKSkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgaWYgKG1fcGxh
dGZvcm1EcmFnRGF0YS0+dXJsKCkuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCi0gICAgU3RyaW5nIHVybChtX3BsYXRmb3JtRHJhZ0RhdGEtPnVybCgpKTsK
ICAgICBpZiAodGl0bGUpCiAgICAgICAgICp0aXRsZSA9IG1fcGxhdGZvcm1EcmFnRGF0YS0+dXJs
TGFiZWwoKTsKLSAgICByZXR1cm4gdXJsOworICAgIHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGEt
PnVybCgpLnN0cmluZygpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
NCw3ICszNzQsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhjb25zdCBTdHJpCiAg
ICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZVVSSUxpc3Q6CiAgICAgICAgIHJldHVybiBtX3NlbGVj
dGlvbkRhdGEtPnVyaUxpc3QoKTsKICAgICBjYXNlIENsaXBib2FyZERhdGFUeXBlVVJMOgotICAg
ICAgICByZXR1cm4gbV9zZWxlY3Rpb25EYXRhLT51cmwoKTsKKyAgICAgICAgcmV0dXJuIG1fc2Vs
ZWN0aW9uRGF0YS0+dXJsKCkuc3RyaW5nKCk7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZU1h
cmt1cDoKICAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uRGF0YS0+bWFya3VwKCk7CiAgICAgY2Fz
ZSBDbGlwYm9hcmREYXRhVHlwZVRleHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2VsZWN0aW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1NlbGVjdGlvbkRhdGEuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEw
OCw3ICsxMDgsNyBAQCBjb25zdCBTdHJpbmcmIFNlbGVjdGlvbkRhdGE6OnVybExhYmVsKCkgCiAg
ICAgICAgIHJldHVybiB0ZXh0KCk7CiAKICAgICBpZiAoaGFzVVJMKCkpCi0gICAgICAgIHJldHVy
biB1cmwoKTsKKyAgICAgICAgcmV0dXJuIHVybCgpLnN0cmluZygpOwogCiAgICAgcmV0dXJuIGVt
cHR5U3RyaW5nKCk7CiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvQ3VybFJlc291cmNlSGFuZGxlRGVsZWdhdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5j
cHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
Y3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEy
Niw3ICsxMjYsNyBAQCB2b2lkIEN1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlOjpjdXJsRGlkCiAg
ICAgICAgIFVSTCBjYWNoZVVybCA9IG1fcmVzcG9uc2UudXJsKCk7CiAgICAgICAgIGNhY2hlVXJs
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCi0gICAgICAgIGlmIChDdXJsQ2FjaGVNYW5h
Z2VyOjpzaW5nbGV0b24oKS5nZXRDYWNoZWRSZXNwb25zZShjYWNoZVVybCwgbV9yZXNwb25zZSkp
IHsKKyAgICAgICAgaWYgKEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmdldENhY2hlZFJl
c3BvbnNlKGNhY2hlVXJsLnN0cmluZygpLCBtX3Jlc3BvbnNlKSkgewogICAgICAgICAgICAgaWYg
KGQoKS0+bV9hZGRlZENhY2hlVmFsaWRhdGlvbkhlYWRlcnMpIHsKICAgICAgICAgICAgICAgICBt
X3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNDb2RlKDIwMCk7CiAgICAgICAgICAgICAgICAgbV9yZXNw
b25zZS5zZXRIVFRQU3RhdHVzVGV4dCgiT0siKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvTmV0d29ya1N0b3JhZ2VT
ZXNzaW9uQ3VybC5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL25ldHdvcmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMTUxLDcgKzE1MSw3IEBAIHZvaWQgTmV0d29ya1N0b3JhZ2VTZXNzaW9uOjpkZWxl
dGVDb29raWUKIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZShjb25z
dCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBuYW1lKSBjb25zdAogewotICAgIGNvb2tpZURhdGFi
YXNlKCkuZGVsZXRlQ29va2llKHVybCwgbmFtZSk7CisgICAgY29va2llRGF0YWJhc2UoKS5kZWxl
dGVDb29raWUodXJsLnN0cmluZygpLCBuYW1lKTsKIH0KIAogdm9pZCBOZXR3b3JrU3RvcmFnZVNl
c3Npb246OmRlbGV0ZUFsbENvb2tpZXMoKQpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjcsMTAgKzEyNywxMCBA
QCB2b2lkIFJlc291cmNlSGFuZGxlOjphZGRDYWNoZVZhbGlkYXRpb25ICiAgICAgVVJMIGNhY2hl
VXJsID0gcmVxdWVzdC51cmwoKTsKICAgICBjYWNoZVVybC5yZW1vdmVGcmFnbWVudElkZW50aWZp
ZXIoKTsKIAotICAgIGlmIChjYWNoZS5pc0NhY2hlZChjYWNoZVVybCkpIHsKLSAgICAgICAgY2Fj
aGUuYWRkQ2FjaGVFbnRyeUNsaWVudChjYWNoZVVybCwgdGhpcyk7CisgICAgaWYgKGNhY2hlLmlz
Q2FjaGVkKGNhY2hlVXJsLnN0cmluZygpKSkgeworICAgICAgICBjYWNoZS5hZGRDYWNoZUVudHJ5
Q2xpZW50KGNhY2hlVXJsLnN0cmluZygpLCB0aGlzKTsKIAotICAgICAgICBmb3IgKGNvbnN0IGF1
dG8mIGVudHJ5IDogY2FjaGUucmVxdWVzdEhlYWRlcnMoY2FjaGVVcmwpKQorICAgICAgICBmb3Ig
KGNvbnN0IGF1dG8mIGVudHJ5IDogY2FjaGUucmVxdWVzdEhlYWRlcnMoY2FjaGVVcmwuc3RyaW5n
KCkpKQogICAgICAgICAgICAgcmVxdWVzdC5hZGRIVFRQSGVhZGVyRmllbGQoZW50cnkua2V5LCBl
bnRyeS52YWx1ZSk7CiAKICAgICAgICAgZC0+bV9hZGRlZENhY2hlVmFsaWRhdGlvbkhlYWRlcnMg
PSB0cnVlOwpJbmRleDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL1NvY2tl
dFN0cmVhbUhhbmRsZUltcGxDdXJsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCShyZXZp
c2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvU29j
a2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xMjIsNyArMTIy
LDcgQEAgdm9pZCBTb2NrZXRTdHJlYW1IYW5kbGVJbXBsOjpkaWRGYWlsKEN1cgogICAgIGlmIChl
cnJvckNvZGUgPT0gQ1VSTEVfUkVDVl9FUlJPUikKICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFRv
UmVjZWl2ZVNvY2tldFN0cmVhbURhdGEoKnRoaXMpOwogICAgIGVsc2UKLSAgICAgICAgbV9jbGll
bnQuZGlkRmFpbFNvY2tldFN0cmVhbSgqdGhpcywgU29ja2V0U3RyZWFtRXJyb3IoZXJyb3JDb2Rl
LCBtX3VybCwgQ3VybEhhbmRsZTo6ZXJyb3JEZXNjcmlwdGlvbihlcnJvckNvZGUpKSk7CisgICAg
ICAgIG1fY2xpZW50LmRpZEZhaWxTb2NrZXRTdHJlYW0oKnRoaXMsIFNvY2tldFN0cmVhbUVycm9y
KGVycm9yQ29kZSwgbV91cmwuc3RyaW5nKCksIEN1cmxIYW5kbGU6OmVycm9yRGVzY3JpcHRpb24o
ZXJyb3JDb2RlKSkpOwogfQogCiB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6OmRlc3RydWN0
U3RyZWFtKCkKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL0NvY29hL1NPQXV0aG9yaXph
dGlvbi9SZWRpcmVjdFNPQXV0aG9yaXphdGlvblNlc3Npb24ubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1JlZGlyZWN0U09BdXRo
b3JpemF0aW9uU2Vzc2lvbi5tbQkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1JlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vz
c2lvbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFJlZGlyZWN0U09B
dXRob3JpemF0aW9uU2Vzc2lvbjo6Y29tCiAgICAgICAgICAgICBwYWdlLT5zZXRTaG91bGRTdXBw
cmVzc1NPQXV0aG9yaXphdGlvbkluTmV4dE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbigpOwogICAg
ICAgICAgICAgYXV0byBodG1sID0gbWFrZVN0cmluZygiPHNjcmlwdD5sb2NhdGlvbiA9ICciLCBy
ZXNwb25zZS5odHRwSGVhZGVyRmllbGRzKCkuZ2V0KEhUVFBIZWFkZXJOYW1lOjpMb2NhdGlvbiks
ICInPC9zY3JpcHQ+IikudXRmOCgpOwogICAgICAgICAgICAgYXV0byBkYXRhID0gSVBDOjpEYXRh
UmVmZXJlbmNlKHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGh0bWwuZGF0YSgpKSwg
aHRtbC5sZW5ndGgoKSk7Ci0gICAgICAgICAgICBwYWdlLT5sb2FkRGF0YShkYXRhLCAidGV4dC9o
dG1sIl9zLCAiVVRGLTgiX3MsIG5hdmlnYXRpb25BY3Rpb24tPnJlcXVlc3QoKS51cmwoKSwgbnVs
bHB0ciwgbmF2aWdhdGlvbkFjdGlvbi0+c2hvdWxkT3BlbkV4dGVybmFsVVJMc1BvbGljeSgpKTsK
KyAgICAgICAgICAgIHBhZ2UtPmxvYWREYXRhKGRhdGEsICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJf
cywgbmF2aWdhdGlvbkFjdGlvbi0+cmVxdWVzdCgpLnVybCgpLnN0cmluZygpLCBudWxscHRyLCBu
YXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRPcGVuRXh0ZXJuYWxVUkxzUG9saWN5KCkpOwogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICB9CiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCShyZXZpc2lv
biAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tBY3Rpb25TaGVldEFz
c2lzdGFudC5tbQkod29ya2luZyBjb3B5KQpAQCAtMzQyLDcgKzM0Miw3IEBAIC0gKHZvaWQpX2Ny
ZWF0ZVNoZWV0V2l0aEVsZW1lbnRBY3Rpb25zOigKICAgICBpZiAoIV9wb3NpdGlvbkluZm9ybWF0
aW9uKQogICAgICAgICByZXR1cm47CiAKLSAgICBOU1VSTCAqdGFyZ2V0VVJMID0gW05TVVJMIFVS
TFdpdGhTdHJpbmc6X3Bvc2l0aW9uSW5mb3JtYXRpb24tPnVybF07CisgICAgTlNVUkwgKnRhcmdl
dFVSTCA9IF9wb3NpdGlvbkluZm9ybWF0aW9uLT51cmw7CiAgICAgTlNTdHJpbmcgKnVybFNjaGVt
ZSA9IFt0YXJnZXRVUkwgc2NoZW1lXTsKICAgICBCT09MIGlzSmF2YVNjcmlwdFVSTCA9IFt1cmxT
Y2hlbWUgbGVuZ3RoXSAmJiBbdXJsU2NoZW1lIGNhc2VJbnNlbnNpdGl2ZUNvbXBhcmU6QCJqYXZh
c2NyaXB0Il0gPT0gTlNPcmRlcmVkU2FtZTsKICAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGNoZWNr
IGlmIEphdmFzY3JpcHQgaXMgZW5hYmxlZCBpbiB0aGUgcHJlZmVyZW5jZXMuCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9TLm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlk
ZXJJT1MubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0JKHdvcmtpbmcgY29weSkKQEAgLTY4LDcgKzY4
LDcgQEAgLSAodm9pZClkZW55T25seVRoaXNSZXF1ZXN0IE5PX1JFVFVSTl9EVQogQGVuZAogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKLXZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0
RnJvbU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4sIFVJVmlldyopOwordm9pZCBkZWNp
ZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5
T3JpZ2luKiwgY29uc3QgVVJMJiwgaWQ8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+LCBVSVZp
ZXcqKTsKIH07CiAKIHN0cnVjdCBHZW9sb2NhdGlvblJlcXVlc3REYXRhIHsKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1NPYmpDU2VjdXJp
dHlPcmlnaW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dL
R2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5tbQkocmV2aXNpb24gMjYx
ODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRl
cklPU09iakNTZWN1cml0eU9yaWdpbi5tbQkod29ya2luZyBjb3B5KQpAQCAtNDQsMTcgKzQ0LDE2
IEBAIC0gKGlkKV9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjooV2UKIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKLXZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9y
aWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBp
ZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4sIFVJVmlldyAqKTsKK3ZvaWQgZGVjaWRlUG9s
aWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdp
biosIGNvbnN0IFVSTCYsIGlkPFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPiwgVUlWaWV3ICop
OwogCi12b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW4oV2Vi
Q29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGlk
PFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPiBsaXN0ZW5lciwgVUlWaWV3ICp2aWV3KQordm9p
ZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3JpZ2luKFdlYkNvcmU6OlNl
Y3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJsLCBpZDxXZWJBbGxvd0RlbnlQb2xp
Y3lMaXN0ZW5lcj4gbGlzdGVuZXIsIFVJVmlldyAqdmlldykKIHsKICAgICBSZXRhaW5QdHI8V2Vi
U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gYWRvcHROUyhbW1dlYlNlY3VyaXR5T3Jp
Z2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46b3JpZ2luXSk7Ci0gICAg
UmV0YWluUHRyPE5TVVJMPiByZXF1ZXN0VXJsID0gYWRvcHROUyhbW05TVVJMIGFsbG9jXSBpbml0
V2l0aFN0cmluZzp1cmxTdHJpbmddKTsKICAgICBSZXRhaW5QdHI8VUlXZWJHZW9sb2NhdGlvblBv
bGljeURlY2lkZXI+IGRlY2lkZXIgPSBbVUlXZWJHZW9sb2NhdGlvblBvbGljeURlY2lkZXIgc2hh
cmVkUG9saWN5RGVjaWRlcl07CiAgICAgaWYgKFtkZWNpZGVyIHJlc3BvbmRzVG9TZWxlY3RvcjpA
c2VsZWN0b3IoZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjpyZXF1
ZXN0aW5nVVJMOnZpZXc6bGlzdGVuZXI6KV0pCi0gICAgICAgIFtkZWNpZGVyIGRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46c2VjdXJpdHlPcmlnaW4uZ2V0KCkgcmVx
dWVzdGluZ1VSTDpyZXF1ZXN0VXJsLmdldCgpIHZpZXc6dmlldyBsaXN0ZW5lcjpsaXN0ZW5lcl07
CisgICAgICAgIFtkZWNpZGVyIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21P
cmlnaW46c2VjdXJpdHlPcmlnaW4uZ2V0KCkgcmVxdWVzdGluZ1VSTDp1cmwgdmlldzp2aWV3IGxp
c3RlbmVyOmxpc3RlbmVyXTsKICAgICBlbHNlCi0gICAgICAgIFtkZWNpZGVyIGRlY2lkZVBvbGlj
eUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46c2VjdXJpdHlPcmlnaW4uZ2V0KCkgcmVx
dWVzdGluZ1VSTDpyZXF1ZXN0VXJsLmdldCgpIHdpbmRvdzp2aWV3LndpbmRvdyBsaXN0ZW5lcjps
aXN0ZW5lcl07CisgICAgICAgIFtkZWNpZGVyIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVx
dWVzdEZyb21PcmlnaW46c2VjdXJpdHlPcmlnaW4uZ2V0KCkgcmVxdWVzdGluZ1VSTDp1cmwgd2lu
ZG93OnZpZXcud2luZG93IGxpc3RlbmVyOmxpc3RlbmVyXTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tQREZWaWV3Lm1tCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcubW0JKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS1BERlZpZXcu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1MjksNyBAQCAtICh2b2lkKWFjdGlvblNoZWV0
QXNzaXN0YW50OihXS0FjdGlvblNoCiAgICAgICAgIHJldHVybjsKIAogICAgIE5TRGljdGlvbmFy
eSAqcmVwcmVzZW50YXRpb25zID0gQHsKLSAgICAgICAgKE5TU3RyaW5nICopa1VUVHlwZVVURjhQ
bGFpblRleHQgOiAoTlNTdHJpbmcgKilfcG9zaXRpb25JbmZvcm1hdGlvbi51cmwsCisgICAgICAg
IChOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IDogKE5TU3RyaW5nICopX3Bvc2l0aW9u
SW5mb3JtYXRpb24udXJsLnN0cmluZygpLAogICAgICAgICAoTlNTdHJpbmcgKilrVVRUeXBlVVJM
IDogKE5TVVJMICopX3Bvc2l0aW9uSW5mb3JtYXRpb24udXJsLAogICAgIH07CiAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQ
YWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvSW5qZWN0ZWRC
dW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNv
dXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ2xpYi9XZWJLaXRXZWJQ
YWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDcgKzMxNiw3IEBAIHByaXZhdGU6CiAgICAg
ICAgICAgICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZExpdGVyYWwoIjogIik7CiAgICAgICAgICAg
ICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZChlcnJvci5sb2NhbGl6ZWREZXNjcmlwdGlvbigpKTsK
ICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdlYmtpdFdlYlBhZ2VEaWRTZW5kQ29uc29sZU1l
c3NhZ2UobV93ZWJQYWdlLCBNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBlcnJvck1lc3NhZ2UudG9TdHJpbmcoKSwgMCwgZXJyb3IuZmFpbGluZ1VSTCgpKTsKKyAg
ICAgICAgICAgIHdlYmtpdFdlYlBhZ2VEaWRTZW5kQ29uc29sZU1lc3NhZ2UobV93ZWJQYWdlLCBN
ZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2Uu
dG9TdHJpbmcoKSwgMCwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0cmluZygpKTsKICAgICAgICAgfQog
ICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBh
Z2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYlBhZ2Uv
aW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3b3JraW5nIGNvcHkpCkBAIC0yNjYw
LDcgKzI2NjAsNyBAQCBzdGF0aWMgdm9pZCBpbWFnZVBvc2l0aW9uSW5mb3JtYXRpb24oV2ViCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGluZm8uaXNJbWFnZSA9IHRydWU7Ci0gICAgaW5mby5pbWFn
ZVVSTCA9IGVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChyZW5kZXJJbWFnZS5jYWNoZWRJ
bWFnZSgpLT51cmwoKSk7CisgICAgaW5mby5pbWFnZVVSTCA9IGVsZW1lbnQuZG9jdW1lbnQoKS5j
b21wbGV0ZVVSTChyZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgpLT51cmwoKS5zdHJpbmcoKSk7CiAg
ICAgaW5mby5pc0FuaW1hdGVkSW1hZ2UgPSBpbWFnZS0+aXNBbmltYXRlZCgpOwogCiAgICAgaWYg
KCFyZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCkKSW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFj
L0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9DaGFuZ2VM
b2cJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxv
Zwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA1LTIwICBBbGV4IENocmlz
dGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGltcGxp
Y2l0IFVSTC0+U3RyaW5nIGNvbnZlcnNpb24gb3BlcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwMzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01IVE1MQmFzZUVsZW1lbnQubW06
CisgICAgICAgICgtW0RPTUhUTUxCYXNlRWxlbWVudCBocmVmXSk6CisKIDIwMjAtMDUtMTggIERh
dmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXBsYWNlIFRleHRJ
bmRpY2F0b3JPcHRpb25zIHdpdGggT3B0aW9uU2V0PFRleHRJbmRpY2F0b3JPcHRpb24+CkluZGV4
OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VFbGVtZW50Lm1tCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQu
bW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQmFzZUVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAKIC0gKE5T
U3RyaW5nICopaHJlZgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVhZE51bGxTdGF0ZSBzdGF0
ZTsKLSAgICByZXR1cm4gSU1QTC0+aHJlZigpOworICAgIHJldHVybiBJTVBMLT5ocmVmKCkuc3Ry
aW5nKCk7CiB9CiAKIC0gKHZvaWQpc2V0SHJlZjooTlNTdHJpbmcgKiluZXdIcmVmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399875</attachid>
            <date>2020-05-20 12:48:37 -0700</date>
            <delta_ts>2020-05-20 14:06:19 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211033-20200520124836.patch</filename>
            <type>text/plain</type>
            <size>26562</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA1LTIwICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGltcGxpY2l0IFVSTC0+
U3RyaW5nIGNvbnZlcnNpb24gb3BlcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGVzZSBvcGVyYXRvcnMgaGF2ZSBiZWVuIHRoZSBjYXVzZSBv
ZiBtYW55IHN1YnRsZSBidWdzIHJlbGF0ZWQgdG8gdHlwZSBpbmZlcmVuY2UgdGhhdCBhcmUgaGFy
ZCB0byBzZWUgaW4gdGhlIGNvZGUsCisgICAgICAgIGFzIHdlbGwgYXMgcGVyZm9ybWFuY2UgYnVn
cyB3aGVyZSB3ZSB1bm5lY2Vzc2FyaWx5IHJlLXBhcnNlIHBhcnNlZCBVUkxzLgorICAgICAgICBB
ZnRlciBteSByZWNlbnQgY2xlYW51cCB0aGlzIHdhcyBlYXNpZXIgdGhhbiBJIHRob3VnaHQgaXQg
d291bGQgYmUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6CisgICAgICAgIChXVEY6OlVSTDo6b3Bl
cmF0b3IgY29uc3QgU3RyaW5nJiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgU3RyaW5nVmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgTlNTdHJpbmcgKiBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDUtMTkgIEFkcmlh
biBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBXVEY6Okxv
Y2tlZFByaW50U3RyZWFtIHNob3VsZCBiZSBmaW5hbApJbmRleDogU291cmNlL1dURi93dGYvVVJM
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVVJMLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XVEYvd3RmL1VSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsOSArMTY2LDYg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIHBhdGhFbmQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBw
YXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdDsKIAotICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYo
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotICAgIG9wZXJhdG9yIFN0cmluZ1ZpZXcoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotCiAjaWYgVVNFKENGKQogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBVUkwoQ0ZVUkxSZWYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CkBAIC0xNzksMTAgKzE3Niw2IEBAIHB1Ymxp
YzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgb3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0OwogI2Vu
ZGlmCiAKLSNpZmRlZiBfX09CSkNfXwotICAgIG9wZXJhdG9yIE5TU3RyaW5nICooKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZzsgfQotI2VuZGlmCi0KICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBw
cmludCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4OTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBA
QAorMjAyMC0wNS0yMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlbW92ZSBpbXBsaWNpdCBVUkwtPlN0cmluZyBjb252ZXJzaW9uIG9wZXJh
dG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
MDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFsdWVGb3JNU0FBIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6
OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwbHVnaW5SZXBsYWNlbWVudEZvclR5cGUpOgorICAgICAgICAqIGh0bWwvVVJM
VXRpbHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+Ojpwcm90b2NvbCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpVUkxVdGlsczxUPjo6c2V0VXNlcm5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldFBhc3N3b3JkKToKKyAgICAgICAgKiBwYWdlL0xvY2F0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQcm90b2NvbCk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
dGlvbjo6c2V0SG9zdG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFBvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFBhdGhuYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2F0aW9uOjpzZXRTZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246
OnNldEhhc2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpsb2FkKToKKwogMjAyMC0wNS0xOSAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQmx1ZSBkb3R0ZWQgdW5k
ZXJsaW5lIHdpdGggYWx0ZXJuYXRpdmVzIG9ubHkgc2hvd24gZm9yIGxhc3Qgd29yZCwgZ2V0cyBs
b3N0IGZvciBwcmV2aW91cyBpbnNlcnRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NjQsNyArMzY2NCw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmcKICAgICBpZiAoaXNMaW5r
YWJsZSgqdGhpcykpIHsKICAgICAgICAgRWxlbWVudCogYW5jaG9yID0gYW5jaG9yRWxlbWVudCgp
OwogICAgICAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KGFuY2hvcikpCi0gICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KCphbmNob3IpLmhyZWYoKTsKKyAg
ICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmFuY2hvcikuaHJl
ZigpLnN0cmluZygpOwogICAgIH0KIAogICAgIHJldHVybiBzdHJpbmdWYWx1ZSgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NVVJMLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9ET01VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMSArMzksMjUgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgRE9NVVJMOjpET01VUkwoVVJMJiYgY29tcGxldGVV
UkwsIFVSTCYmIGJhc2VVUkwpCi0gICAgOiBtX2Jhc2VVUkwoV1RGTW92ZShiYXNlVVJMKSkKK2lu
bGluZSBET01VUkw6OkRPTVVSTChVUkwmJiBjb21wbGV0ZVVSTCwgY29uc3QgVVJMJiBiYXNlVVJM
KQorICAgIDogbV9iYXNlVVJMKGJhc2VVUkwpCiAgICAgLCBtX3VybChXVEZNb3ZlKGNvbXBsZXRl
VVJMKSkKIHsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPERPTVVSTD4+IERPTVVSTDo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGJhc2UpCitFeGNlcHRpb25PcjxSZWY8RE9N
VVJMPj4gRE9NVVJMOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFVSTCYgYmFzZSkK
IHsKLSAgICBVUkwgYmFzZVVSTCB7IFVSTCB7IH0sIGJhc2UgfTsKLSAgICBpZiAoIWJhc2VVUkwu
aXNWYWxpZCgpKQorICAgIGlmICghYmFzZS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IgfTsKLSAgICBVUkwgY29tcGxldGVVUkwgeyBiYXNlVVJMLCB1cmwg
fTsKKyAgICBVUkwgY29tcGxldGVVUkwgeyBiYXNlLCB1cmwgfTsKICAgICBpZiAoIWNvbXBsZXRl
VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9Owot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTVVSTChXVEZNb3ZlKGNvbXBsZXRlVVJMKSwgV1RG
TW92ZShiYXNlVVJMKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTVVSTChXVEZNb3Zl
KGNvbXBsZXRlVVJMKSwgYmFzZSkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9N
VVJMOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgYmFzZSkKK3sKKyAg
ICByZXR1cm4gY3JlYXRlKHVybCwgVVJMIHsgVVJMIHsgfSwgYmFzZSB9KTsKIH0KIAogRXhjZXB0
aW9uT3I8UmVmPERPTVVSTD4+IERPTVVSTDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBET01VUkwmIGJhc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYg
KzQxLDcgQEAgY2xhc3MgRE9NVVJMIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8RAogcHVibGlj
OgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIGJhc2UpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
RE9NVVJMPj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBET01VUkwmIGJhc2UpOwor
ICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBVUkwmIGJhc2UpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RE9NVVJM
Pj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB+RE9NVVJMKCk7CiAKQEAgLTU4LDcg
KzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlUHVibGljVVJMKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBVUkxSZWdpc3RyYWJsZSYpOwogCiBwcml2YXRlOgotICAgIERP
TVVSTChVUkwmJiBjb21wbGV0ZVVSTCwgVVJMJiYgYmFzZVVSTCk7CisgICAgRE9NVVJMKFVSTCYm
IGNvbXBsZXRlVVJMLCBjb25zdCBVUkwmIGJhc2VVUkwpOwogCiAgICAgVVJMIGZ1bGxVUkwoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQogICAgIHZvaWQgc2V0RnVsbFVSTChjb25zdCBV
UkwmIGZ1bGxVUkwpIGZpbmFsIHsgc2V0SHJlZihmdWxsVVJMLnN0cmluZygpKTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAJKHJldmlzaW9uIDI2MTg4
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjQsNyArMzY0LDcgQEAgc3RhdGljIFJlcGxhY2VtZW50UGx1Z2luKiBwbHVn
aW5SZXBsYWNlbQogCiAgICAgU3RyaW5nIHR5cGUgPSBtaW1lVHlwZTsKICAgICBpZiAodHlwZS5p
c0VtcHR5KCkgJiYgdXJsLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgIHR5cGUgPSBtaW1lVHlw
ZUZyb21EYXRhVVJMKHVybCk7CisgICAgICAgIHR5cGUgPSBtaW1lVHlwZUZyb21EYXRhVVJMKHVy
bC5zdHJpbmcoKSk7CiAgICAgCiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpICYmICFleHRlbnNpb24u
aXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byogcmVwbGFjZW1lbnQgOiByZXBsYWNlbWVu
dHMpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCShyZXZpc2lvbiAyNjE4ODYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDcgKzEzNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQcm90b2NvbCgKICAg
ICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLnNldFBy
b3RvY29sKHByb3RvY29sKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9y
IH07Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIb3N0KERP
TVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJp
bmcmIGhvc3QpCkBAIC0xNDYsNyArMTQ2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246
OnNldEhvc3QoRE9NVwogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3RBbmRQb3J0KGhvc3QpOwotICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SG9zdG5hbWUoRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCkBAIC0xNTYsNyArMTU2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNl
dEhvc3RuYW1lKAogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3QoaG9zdG5hbWUpOwotICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UG9ydChET01XaW5kb3cmIGFjdGl2ZVdp
bmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBwb3J0U3RyaW5nKQpA
QCAtMTY2LDcgKzE2Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQb3J0KERP
TVcKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpOwogICAgIHVybC5zZXRQb3J0KHBhcnNlVUludDE2KHBvcnRTdHJpbmcpKTsKLSAgICBy
ZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAgICBy
ZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygp
KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBhdGhuYW1lKERPTVdpbmRv
dyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHBh
dGhuYW1lKQpAQCAtMTc2LDcgKzE3Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpz
ZXRQYXRobmFtZSgKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRQYXRoKHBhdGhuYW1lKTsKLSAgICByZXR1cm4g
c2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAgICByZXR1cm4g
c2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKIH0K
IAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFNlYXJjaChET01XaW5kb3cmIGFjdGl2
ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBzZWFyY2gpCkBA
IC0xODYsNyArMTg2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFNlYXJjaChE
TwogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCk7CiAgICAgdXJsLnNldFF1ZXJ5KHNlYXJjaCk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9u
KGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9u
KGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01X
aW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIGhhc2gpCkBAIC0yMDYsNyArMjA2LDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhhc2goRE9NVwogICAgIC8vIGNhc2Vz
IHdoZXJlIGZyYWdtZW50IGlkZW50aWZpZXJzIGFyZSBpZ25vcmVkIG9yIGludmFsaWQuIAogICAg
IGlmIChlcXVhbElnbm9yaW5nTnVsbGl0eShvbGRGcmFnbWVudElkZW50aWZpZXIsIHVybC5mcmFn
bWVudElkZW50aWZpZXIoKSkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHNldExv
Y2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CisgICAgcmV0dXJuIHNldExv
Y2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjphc3NpZ24oRE9NV2luZG93JiBhY3RpdmVXaW5kb3cs
IERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNp
b24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNyArNDQxLDcgQEAgYm9vbCBNZWRpYVBsYXll
cjo6bG9hZChjb25zdCBVUkwmIHVybCwgYwogICAgIEF0b21TdHJpbmcgY29udGFpbmVyVHlwZSA9
IG1fY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpOwogICAgIGlmIChjb250YWluZXJUeXBlLmlz
RW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSB8fCBj
b250YWluZXJUeXBlID09IHRleHRQbGFpbigpKSB7CiAgICAgICAgIGlmIChtX3VybC5wcm90b2Nv
bElzRGF0YSgpKQotICAgICAgICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVU
eXBlRnJvbURhdGFVUkwobV91cmwpKTsKKyAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250
ZW50VHlwZShtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsLnN0cmluZygpKSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENv
bXBvbmVudCgpOwogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IGxhc3RQYXRoQ29tcG9uZW50LnJl
dmVyc2VGaW5kKCcuJyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0Rh
dGFHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFn
RGF0YUd0ay5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9EcmFnRGF0YUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDE1ICs3NiwxMyBAQCBT
dHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVuYW1lQ29udmVyc2lvCiAgICAgaWYgKCFtX3BsYXRm
b3JtRHJhZ0RhdGEtPmhhc1VSTCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYg
KGZpbGVuYW1lUG9saWN5ICE9IENvbnZlcnRGaWxlbmFtZXMpIHsKLSAgICAgICAgVVJMIHVybChV
UkwoKSwgbV9wbGF0Zm9ybURyYWdEYXRhLT51cmwoKSk7Ci0gICAgICAgIGlmICh1cmwuaXNMb2Nh
bEZpbGUoKSkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgaWYgKG1fcGxh
dGZvcm1EcmFnRGF0YS0+dXJsKCkuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCi0gICAgU3RyaW5nIHVybChtX3BsYXRmb3JtRHJhZ0RhdGEtPnVybCgpKTsK
ICAgICBpZiAodGl0bGUpCiAgICAgICAgICp0aXRsZSA9IG1fcGxhdGZvcm1EcmFnRGF0YS0+dXJs
TGFiZWwoKTsKLSAgICByZXR1cm4gdXJsOworICAgIHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGEt
PnVybCgpLnN0cmluZygpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
NCw3ICszNzQsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhjb25zdCBTdHJpCiAg
ICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZVVSSUxpc3Q6CiAgICAgICAgIHJldHVybiBtX3NlbGVj
dGlvbkRhdGEtPnVyaUxpc3QoKTsKICAgICBjYXNlIENsaXBib2FyZERhdGFUeXBlVVJMOgotICAg
ICAgICByZXR1cm4gbV9zZWxlY3Rpb25EYXRhLT51cmwoKTsKKyAgICAgICAgcmV0dXJuIG1fc2Vs
ZWN0aW9uRGF0YS0+dXJsKCkuc3RyaW5nKCk7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZU1h
cmt1cDoKICAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uRGF0YS0+bWFya3VwKCk7CiAgICAgY2Fz
ZSBDbGlwYm9hcmREYXRhVHlwZVRleHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2VsZWN0aW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1NlbGVjdGlvbkRhdGEuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgw
LDcgKzgwLDcgQEAgdm9pZCBTZWxlY3Rpb25EYXRhOjpzZXRVUkwoY29uc3QgVVJMJiB1cgogewog
ICAgIG1fdXJsID0gdXJsOwogICAgIGlmIChtX3VyaUxpc3QuaXNFbXB0eSgpKQotICAgICAgICBt
X3VyaUxpc3QgPSB1cmw7CisgICAgICAgIG1fdXJpTGlzdCA9IHVybC5zdHJpbmcoKTsKIAogICAg
IGlmICghaGFzVGV4dCgpKQogICAgICAgICBzZXRUZXh0KHVybC5zdHJpbmcoKSk7CkBAIC05MCw3
ICs5MCw3IEBAIHZvaWQgU2VsZWN0aW9uRGF0YTo6c2V0VVJMKGNvbnN0IFVSTCYgdXIKIAogICAg
IFN0cmluZyBhY3R1YWxMYWJlbChsYWJlbCk7CiAgICAgaWYgKGFjdHVhbExhYmVsLmlzRW1wdHko
KSkKLSAgICAgICAgYWN0dWFsTGFiZWwgPSB1cmw7CisgICAgICAgIGFjdHVhbExhYmVsID0gdXJs
LnN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBtYXJrdXA7CiAgICAgbWFya3VwLmFwcGVu
ZCgiPGEgaHJlZj1cIiIpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIGNvbnN0IFN0cmluZyYgU2VsZWN0
aW9uRGF0YTo6dXJsTGFiZWwoKSAKICAgICAgICAgcmV0dXJuIHRleHQoKTsKIAogICAgIGlmICho
YXNVUkwoKSkKLSAgICAgICAgcmV0dXJuIHVybCgpOworICAgICAgICByZXR1cm4gdXJsKCkuc3Ry
aW5nKCk7CiAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGU6OmN1cmxEaWQKICAgICAgICAgVVJMIGNhY2hlVXJsID0gbV9yZXNwb25zZS51
cmwoKTsKICAgICAgICAgY2FjaGVVcmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKLSAg
ICAgICAgaWYgKEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmdldENhY2hlZFJlc3BvbnNl
KGNhY2hlVXJsLCBtX3Jlc3BvbnNlKSkgeworICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6
c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9uc2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9u
c2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgpLT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVy
cykgewogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsK
ICAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAkocmV2aXNpb24gMjYxODg2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpIGNv
bnN0CiB7Ci0gICAgY29va2llRGF0YWJhc2UoKS5kZWxldGVDb29raWUodXJsLCBuYW1lKTsKKyAg
ICBjb29raWVEYXRhYmFzZSgpLmRlbGV0ZUNvb2tpZSh1cmwuc3RyaW5nKCksIG5hbWUpOwogfQog
CiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcygpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVDdXJsLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmFkZENhY2hlVmFs
aWRhdGlvbkgKICAgICBVUkwgY2FjaGVVcmwgPSByZXF1ZXN0LnVybCgpOwogICAgIGNhY2hlVXJs
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCi0gICAgaWYgKGNhY2hlLmlzQ2FjaGVkKGNh
Y2hlVXJsKSkgewotICAgICAgICBjYWNoZS5hZGRDYWNoZUVudHJ5Q2xpZW50KGNhY2hlVXJsLCB0
aGlzKTsKKyAgICBpZiAoY2FjaGUuaXNDYWNoZWQoY2FjaGVVcmwuc3RyaW5nKCkpKSB7CisgICAg
ICAgIGNhY2hlLmFkZENhY2hlRW50cnlDbGllbnQoY2FjaGVVcmwuc3RyaW5nKCksIHRoaXMpOwog
Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBjYWNoZS5yZXF1ZXN0SGVhZGVycyhj
YWNoZVVybCkpCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBjYWNoZS5yZXF1ZXN0
SGVhZGVycyhjYWNoZVVybC5zdHJpbmcoKSkpCiAgICAgICAgICAgICByZXF1ZXN0LmFkZEhUVFBI
ZWFkZXJGaWVsZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsKIAogICAgICAgICBkLT5tX2FkZGVk
Q2FjaGVWYWxpZGF0aW9uSGVhZGVycyA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsQ3VybC5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OmRpZEZhaWwoQ3VyCiAgICAgaWYgKGVycm9yQ29kZSA9PSBDVVJMRV9SRUNWX0VSUk9SKQogICAg
ICAgICBtX2NsaWVudC5kaWRGYWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgqdGhpcyk7CiAg
ICAgZWxzZQotICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2Nr
ZXRTdHJlYW1FcnJvcihlcnJvckNvZGUsIG1fdXJsLCBDdXJsSGFuZGxlOjplcnJvckRlc2NyaXB0
aW9uKGVycm9yQ29kZSkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgq
dGhpcywgU29ja2V0U3RyZWFtRXJyb3IoZXJyb3JDb2RlLCBtX3VybC5zdHJpbmcoKSwgQ3VybEhh
bmRsZTo6ZXJyb3JEZXNjcmlwdGlvbihlcnJvckNvZGUpKSk7CiB9CiAKIHZvaWQgU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbDo6ZGVzdHJ1Y3RTdHJlYW0oKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1JlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lv
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhv
cml6YXRpb24vUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCShyZXZpc2lvbiAyNjE4
ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUmVk
aXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3
OCw3IEBAIHZvaWQgUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb20KICAgICAgICAg
ICAgIHBhZ2UtPnNldFNob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5OZXh0TmF2aWdhdGlv
blBvbGljeURlY2lzaW9uKCk7CiAgICAgICAgICAgICBhdXRvIGh0bWwgPSBtYWtlU3RyaW5nKCI8
c2NyaXB0PmxvY2F0aW9uID0gJyIsIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5nZXQoSFRU
UEhlYWRlck5hbWU6OkxvY2F0aW9uKSwgIic8L3NjcmlwdD4iKS51dGY4KCk7CiAgICAgICAgICAg
ICBhdXRvIGRhdGEgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oaHRtbC5kYXRhKCkpLCBodG1sLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIHBhZ2Ut
PmxvYWREYXRhKGRhdGEsICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgbmF2aWdhdGlvbkFjdGlv
bi0+cmVxdWVzdCgpLnVybCgpLCBudWxscHRyLCBuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KCkpOworICAgICAgICAgICAgcGFnZS0+bG9hZERhdGEoZGF0YSwg
InRleHQvaHRtbCJfcywgIlVURi04Il9zLCBuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkudXJs
KCkuc3RyaW5nKCksIG51bGxwdHIsIG5hdmlnYXRpb25BY3Rpb24tPnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hl
ZXRBc3Npc3RhbnQubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIs
NyArMzQyLDcgQEAgLSAodm9pZClfY3JlYXRlU2hlZXRXaXRoRWxlbWVudEFjdGlvbnM6KAogICAg
IGlmICghX3Bvc2l0aW9uSW5mb3JtYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TVVJM
ICp0YXJnZXRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpfcG9zaXRpb25JbmZvcm1hdGlvbi0+
dXJsXTsKKyAgICBOU1VSTCAqdGFyZ2V0VVJMID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24tPnVybDsK
ICAgICBOU1N0cmluZyAqdXJsU2NoZW1lID0gW3RhcmdldFVSTCBzY2hlbWVdOwogICAgIEJPT0wg
aXNKYXZhU2NyaXB0VVJMID0gW3VybFNjaGVtZSBsZW5ndGhdICYmIFt1cmxTY2hlbWUgY2FzZUlu
c2Vuc2l0aXZlQ29tcGFyZTpAImphdmFzY3JpcHQiXSA9PSBOU09yZGVyZWRTYW1lOwogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgY2hlY2sgaWYgSmF2YXNjcmlwdCBpcyBlbmFibGVkIGluIHRoZSBw
cmVmZXJlbmNlcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMjYxODg2KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTY1NSw3ICs5NjU1LDcgQEAgLSAoVUlWaWV3Q29udHJvbGxlciAqKV9w
cmVzZW50ZWRWaWV3Q29udAogCiAgICAgTlNVUkwgKnRhcmdldFVSTCA9IGNvbnRyb2xsZXIucHJl
dmlld0RhdGFbVUlQcmV2aWV3RGF0YUxpbmtdOwogICAgIFVSTCBjb3JlVGFyZ2V0VVJMID0gdGFy
Z2V0VVJMOwotICAgIGJvb2wgaXNWYWxpZFVSTEZvckltYWdlUHJldmlldyA9ICFjb3JlVGFyZ2V0
VVJMLmlzRW1wdHkoKSAmJiAoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvcmVUYXJnZXRV
UkwpIHx8IFdURjo6cHJvdG9jb2xJcyhjb3JlVGFyZ2V0VVJMLCAiZGF0YSIpKTsKKyAgICBib29s
IGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0VtcHR5KCkgJiYg
KGNvcmVUYXJnZXRVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IGNvcmVUYXJnZXRVUkwu
cHJvdG9jb2xJcygiZGF0YSIpKTsKIAogICAgIGlmIChbX3ByZXZpZXdJdGVtQ29udHJvbGxlciB0
eXBlXSA9PSBVSVByZXZpZXdJdGVtVHlwZUxpbmspIHsKICAgICAgICAgX2xvbmdQcmVzc0NhbkNs
aWNrID0gTk87CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgLSAodm9pZClkZW55T25seVRoaXNSZXF1ZXN0IE5P
X1JFVFVSTl9EVQogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXZvaWQgZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbios
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4s
IFVJVmlldyopOwordm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3Jp
Z2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgaWQ8V2ViQWxsb3dEZW55
UG9saWN5TGlzdGVuZXI+LCBVSVZpZXcqKTsKIH07CiAKIHN0cnVjdCBHZW9sb2NhdGlvblJlcXVl
c3REYXRhIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9y
aWdpbi5tbQkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLR2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDQsMTcgKzQ0LDE2IEBAIC0gKGlkKV9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9y
aWdpbjooV2UKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgZGVjaWRlUG9saWN5Rm9yR2Vv
bG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4sIFVJVmll
dyAqKTsKK3ZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGlkPFdlYkFsbG93RGVueVBvbGlj
eUxpc3RlbmVyPiwgVUlWaWV3ICopOwogCi12b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UmVxdWVzdEZyb21PcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGlkPFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPiBsaXN0ZW5l
ciwgVUlWaWV3ICp2aWV3KQordm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RG
cm9tT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJs
LCBpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4gbGlzdGVuZXIsIFVJVmlldyAqdmlldykK
IHsKICAgICBSZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gYWRv
cHROUyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlP
cmlnaW46b3JpZ2luXSk7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiByZXF1ZXN0VXJsID0gYWRvcHRO
UyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzp1cmxTdHJpbmddKTsKICAgICBSZXRhaW5Q
dHI8VUlXZWJHZW9sb2NhdGlvblBvbGljeURlY2lkZXI+IGRlY2lkZXIgPSBbVUlXZWJHZW9sb2Nh
dGlvblBvbGljeURlY2lkZXIgc2hhcmVkUG9saWN5RGVjaWRlcl07CiAgICAgaWYgKFtkZWNpZGVy
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25S
ZXF1ZXN0RnJvbU9yaWdpbjpyZXF1ZXN0aW5nVVJMOnZpZXc6bGlzdGVuZXI6KV0pCi0gICAgICAg
IFtkZWNpZGVyIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46c2Vj
dXJpdHlPcmlnaW4uZ2V0KCkgcmVxdWVzdGluZ1VSTDpyZXF1ZXN0VXJsLmdldCgpIHZpZXc6dmll
dyBsaXN0ZW5lcjpsaXN0ZW5lcl07CisgICAgICAgIFtkZWNpZGVyIGRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46c2VjdXJpdHlPcmlnaW4uZ2V0KCkgcmVxdWVzdGlu
Z1VSTDp1cmwgdmlldzp2aWV3IGxpc3RlbmVyOmxpc3RlbmVyXTsKICAgICBlbHNlCi0gICAgICAg
IFtkZWNpZGVyIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46c2Vj
dXJpdHlPcmlnaW4uZ2V0KCkgcmVxdWVzdGluZ1VSTDpyZXF1ZXN0VXJsLmdldCgpIHdpbmRvdzp2
aWV3LndpbmRvdyBsaXN0ZW5lcjpsaXN0ZW5lcl07CisgICAgICAgIFtkZWNpZGVyIGRlY2lkZVBv
bGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46c2VjdXJpdHlPcmlnaW4uZ2V0KCkg
cmVxdWVzdGluZ1VSTDp1cmwgd2luZG93OnZpZXcud2luZG93IGxpc3RlbmVyOmxpc3RlbmVyXTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tQREZWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS1BERlZpZXcubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1BERlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1MjksNyBA
QCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoCiAgICAgICAgIHJldHVy
bjsKIAogICAgIE5TRGljdGlvbmFyeSAqcmVwcmVzZW50YXRpb25zID0gQHsKLSAgICAgICAgKE5T
U3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQgOiAoTlNTdHJpbmcgKilfcG9zaXRpb25JbmZv
cm1hdGlvbi51cmwsCisgICAgICAgIChOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IDog
KE5TU3RyaW5nICopX3Bvc2l0aW9uSW5mb3JtYXRpb24udXJsLnN0cmluZygpLAogICAgICAgICAo
TlNTdHJpbmcgKilrVVRUeXBlVVJMIDogKE5TVVJMICopX3Bvc2l0aW9uSW5mb3JtYXRpb24udXJs
LAogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDcgKzMx
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZExpdGVy
YWwoIjogIik7CiAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZChlcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdlYmtpdFdl
YlBhZ2VEaWRTZW5kQ29uc29sZU1lc3NhZ2UobV93ZWJQYWdlLCBNZXNzYWdlU291cmNlOjpOZXR3
b3JrLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UudG9TdHJpbmcoKSwgMCwgZXJy
b3IuZmFpbGluZ1VSTCgpKTsKKyAgICAgICAgICAgIHdlYmtpdFdlYlBhZ2VEaWRTZW5kQ29uc29s
ZU1lc3NhZ2UobV93ZWJQYWdlLCBNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBlcnJvck1lc3NhZ2UudG9TdHJpbmcoKSwgMCwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0
cmluZygpKTsKICAgICAgICAgfQogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjYwLDcgKzI2NjAsNyBAQCBzdGF0aWMgdm9pZCBpbWFnZVBvc2l0
aW9uSW5mb3JtYXRpb24oV2ViCiAgICAgICAgIHJldHVybjsKIAogICAgIGluZm8uaXNJbWFnZSA9
IHRydWU7Ci0gICAgaW5mby5pbWFnZVVSTCA9IGVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVS
TChyZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgpLT51cmwoKSk7CisgICAgaW5mby5pbWFnZVVSTCA9
IGVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChyZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgp
LT51cmwoKS5zdHJpbmcoKSk7CiAgICAgaW5mby5pc0FuaW1hdGVkSW1hZ2UgPSBpbWFnZS0+aXNB
bmltYXRlZCgpOwogCiAgICAgaWYgKCFyZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCkKQEAgLTMxNTAs
NyArMzE1MCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGkKICAg
ICAgICAgSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KCpmb2N1c2VkRWxlbWVudCk7CiAgICAgICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IGVs
ZW1lbnQuZm9ybSgpOwogICAgICAgICBpZiAoZm9ybSkKLSAgICAgICAgICAgIGluZm9ybWF0aW9u
LmZvcm1BY3Rpb24gPSBmb3JtLT5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjph
Y3Rpb25BdHRyKTsKKyAgICAgICAgICAgIGluZm9ybWF0aW9uLmZvcm1BY3Rpb24gPSBmb3JtLT5n
ZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjphY3Rpb25BdHRyKS5zdHJpbmcoKTsK
ICAgICAgICAgaWYgKGF1dG8gYXV0b2ZpbGxFbGVtZW50cyA9IFdlYkNvcmU6OkF1dG9maWxsRWxl
bWVudHM6OmNvbXB1dGVBdXRvZmlsbEVsZW1lbnRzKGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBp
bmZvcm1hdGlvbi5hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMgPSB0cnVlOwogICAg
ICAgICAgICAgaW5mb3JtYXRpb24uaXNBdXRvZmlsbGFibGVVc2VybmFtZUZpZWxkID0gYXV0b2Zp
bGxFbGVtZW50cy0+dXNlcm5hbWUoKSA9PSBmb2N1c2VkRWxlbWVudDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA1
LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGltcGxpY2l0IFVSTC0+U3RyaW5nIGNvbnZlcnNpb24gb3BlcmF0b3JzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwMzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01IVE1M
QmFzZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxCYXNlRWxlbWVudCBocmVmXSk6CisK
IDIwMjAtMDUtMTggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXBsYWNlIFRleHRJbmRpY2F0b3JPcHRpb25zIHdpdGggT3B0aW9uU2V0PFRleHRJbmRpY2F0
b3JPcHRpb24+CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VF
bGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQmFzZUVsZW1lbnQubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDcg
KzQyLDcgQEAKIC0gKE5TU3RyaW5nICopaHJlZgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+aHJlZigpOworICAgIHJldHVybiBJ
TVBMLT5ocmVmKCkuc3RyaW5nKCk7CiB9CiAKIC0gKHZvaWQpc2V0SHJlZjooTlNTdHJpbmcgKilu
ZXdIcmVmCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVh
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5TdHJlYW0uY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMs
NyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6c3RhcnRTdHJlYW0oKQogCiAgICAgLy8gU29tZSBwbHVn
aW5zIChGbGFzaCkgZXhwZWN0IHRoYXQgamF2YXNjcmlwdCBVUkxzIGFyZSBwYXNzZWQgYmFjayBk
ZWNvZGVkIGFzIHRoaXMgaXMgdGhlCiAgICAgLy8gZm9ybWF0IHVzZWQgd2hlbiByZXF1ZXN0aW5n
IHRoZSBVUkwuCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlc3BvbnNlVVJMKSkKKyAg
ICBpZiAocmVzcG9uc2VVUkwucHJvdG9jb2xJc0phdmFTY3JpcHQoKSkKICAgICAgICAgbV9zdHJl
YW0udXJsID0gZmFzdFN0ckR1cChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMocmVzcG9uc2VVUkwu
c3RyaW5nKCkpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGVsc2UKICAgICAgICAgbV9zdHJlYW0udXJs
ID0gZmFzdFN0ckR1cChyZXNwb25zZVVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2
aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBJbnN0YW5j
ZU1hcCYgaW5zdGFuY2VNYXAoKQogCiBzdGF0aWMgU3RyaW5nIHNjcmlwdFN0cmluZ0lmSmF2YVNj
cmlwdFVSTChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0
KHVybCkpCisgICAgaWYgKCF1cmwucHJvdG9jb2xJc0phdmFTY3JpcHQoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCiAgICAgLy8gVGhpcyByZXR1cm5zIGFuIHVuZXNjYXBlZCBzdHJpbmcK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>399890</attachid>
            <date>2020-05-20 14:06:30 -0700</date>
            <delta_ts>2020-05-20 15:59:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-211033-20200520140623.patch</filename>
            <type>text/plain</type>
            <size>27836</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDIwLTA1LTIwICBBbGV4IENocmlzdGVuc2VuICA8
YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVtb3ZlIGltcGxpY2l0IFVSTC0+
U3RyaW5nIGNvbnZlcnNpb24gb3BlcmF0b3JzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwMzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBUaGVzZSBvcGVyYXRvcnMgaGF2ZSBiZWVuIHRoZSBjYXVzZSBv
ZiBtYW55IHN1YnRsZSBidWdzIHJlbGF0ZWQgdG8gdHlwZSBpbmZlcmVuY2UgdGhhdCBhcmUgaGFy
ZCB0byBzZWUgaW4gdGhlIGNvZGUsCisgICAgICAgIGFzIHdlbGwgYXMgcGVyZm9ybWFuY2UgYnVn
cyB3aGVyZSB3ZSB1bm5lY2Vzc2FyaWx5IHJlLXBhcnNlIHBhcnNlZCBVUkxzLgorICAgICAgICBB
ZnRlciBteSByZWNlbnQgY2xlYW51cCB0aGlzIHdhcyBlYXNpZXIgdGhhbiBJIHRob3VnaHQgaXQg
d291bGQgYmUuCisKKyAgICAgICAgKiB3dGYvVVJMLmg6CisgICAgICAgIChXVEY6OlVSTDo6b3Bl
cmF0b3IgY29uc3QgU3RyaW5nJiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgU3RyaW5nVmlldyBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXVEY6OlVSTDo6
b3BlcmF0b3IgTlNTdHJpbmcgKiBjb25zdCk6IERlbGV0ZWQuCisKIDIwMjAtMDUtMTkgIEFkcmlh
biBQZXJleiBkZSBDYXN0cm8gIDxhcGVyZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBXVEY6Okxv
Y2tlZFByaW50U3RyZWFtIHNob3VsZCBiZSBmaW5hbApJbmRleDogU291cmNlL1dURi93dGYvVVJM
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvVVJMLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XVEYvd3RmL1VSTC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjYsOSArMTY2LDYg
QEAgcHVibGljOgogICAgIHVuc2lnbmVkIHBhdGhFbmQoKSBjb25zdDsKICAgICB1bnNpZ25lZCBw
YXRoQWZ0ZXJMYXN0U2xhc2goKSBjb25zdDsKIAotICAgIG9wZXJhdG9yIGNvbnN0IFN0cmluZyYo
KSBjb25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotICAgIG9wZXJhdG9yIFN0cmluZ1ZpZXcoKSBj
b25zdCB7IHJldHVybiBtX3N0cmluZzsgfQotCiAjaWYgVVNFKENGKQogICAgIFdURl9FWFBPUlRf
UFJJVkFURSBVUkwoQ0ZVUkxSZWYpOwogICAgIFdURl9FWFBPUlRfUFJJVkFURSBSZXRhaW5QdHI8
Q0ZVUkxSZWY+IGNyZWF0ZUNGVVJMKCkgY29uc3Q7CkBAIC0xNzksMTAgKzE3Niw2IEBAIHB1Ymxp
YzoKICAgICBXVEZfRVhQT1JUX1BSSVZBVEUgb3BlcmF0b3IgTlNVUkwgKigpIGNvbnN0OwogI2Vu
ZGlmCiAKLSNpZmRlZiBfX09CSkNfXwotICAgIG9wZXJhdG9yIE5TU3RyaW5nICooKSBjb25zdCB7
IHJldHVybiBtX3N0cmluZzsgfQotI2VuZGlmCi0KICNpZm5kZWYgTkRFQlVHCiAgICAgdm9pZCBw
cmludCgpIGNvbnN0OwogI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyNjE4OTgpCisr
KyBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwzMSBA
QAorMjAyMC0wNS0yMCAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJpc3RlbnNlbkB3ZWJraXQub3Jn
PgorCisgICAgICAgIFJlbW92ZSBpbXBsaWNpdCBVUkwtPlN0cmluZyBjb252ZXJzaW9uIG9wZXJh
dG9ycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjEx
MDMzCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBh
Y2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdDo6c3RyaW5nVmFsdWVGb3JNU0FBIGNvbnN0
KToKKyAgICAgICAgKiBodG1sL0RPTVVSTC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01VUkw6
OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpwbHVnaW5SZXBsYWNlbWVudEZvclR5cGUpOgorICAgICAgICAqIGh0bWwvVVJM
VXRpbHMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlVSTFV0aWxzPFQ+Ojpwcm90b2NvbCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpVUkxVdGlsczxUPjo6c2V0VXNlcm5hbWUpOgorICAgICAgICAo
V2ViQ29yZTo6VVJMVXRpbHM8VD46OnNldFBhc3N3b3JkKToKKyAgICAgICAgKiBwYWdlL0xvY2F0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQcm90b2NvbCk6CisgICAg
ICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0SG9zdCk6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
dGlvbjo6c2V0SG9zdG5hbWUpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFBvcnQp
OgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldFBhdGhuYW1lKToKKyAgICAgICAgKFdl
YkNvcmU6OkxvY2F0aW9uOjpzZXRTZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246
OnNldEhhc2gpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyOjpsb2FkKToKKwogMjAyMC0wNS0xOSAgRGFu
aWVsIEJhdGVzICA8ZGFiYXRlc0BhcHBsZS5jb20+CiAKICAgICAgICAgQmx1ZSBkb3R0ZWQgdW5k
ZXJsaW5lIHdpdGggYWx0ZXJuYXRpdmVzIG9ubHkgc2hvd24gZm9yIGxhc3Qgd29yZCwgZ2V0cyBs
b3N0IGZvciBwcmV2aW91cyBpbnNlcnRpb25zCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdC5jcHAJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJp
bGl0eVJlbmRlck9iamVjdC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM2NjQsNyArMzY2NCw3IEBA
IFN0cmluZyBBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpzdHJpbmcKICAgICBpZiAoaXNMaW5r
YWJsZSgqdGhpcykpIHsKICAgICAgICAgRWxlbWVudCogYW5jaG9yID0gYW5jaG9yRWxlbWVudCgp
OwogICAgICAgICBpZiAoaXM8SFRNTEFuY2hvckVsZW1lbnQ+KGFuY2hvcikpCi0gICAgICAgICAg
ICByZXR1cm4gZG93bmNhc3Q8SFRNTEFuY2hvckVsZW1lbnQ+KCphbmNob3IpLmhyZWYoKTsKKyAg
ICAgICAgICAgIHJldHVybiBkb3duY2FzdDxIVE1MQW5jaG9yRWxlbWVudD4oKmFuY2hvcikuaHJl
ZigpLnN0cmluZygpOwogICAgIH0KIAogICAgIHJldHVybiBzdHJpbmdWYWx1ZSgpOwpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9ET01VUkwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvRE9NVVJMLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9ET01VUkwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zOSwyMSArMzksMjUgQEAKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1pbmxpbmUgRE9NVVJMOjpET01VUkwoVVJMJiYgY29tcGxldGVV
UkwsIFVSTCYmIGJhc2VVUkwpCi0gICAgOiBtX2Jhc2VVUkwoV1RGTW92ZShiYXNlVVJMKSkKK2lu
bGluZSBET01VUkw6OkRPTVVSTChVUkwmJiBjb21wbGV0ZVVSTCwgY29uc3QgVVJMJiBiYXNlVVJM
KQorICAgIDogbV9iYXNlVVJMKGJhc2VVUkwpCiAgICAgLCBtX3VybChXVEZNb3ZlKGNvbXBsZXRl
VVJMKSkKIHsKIH0KIAotRXhjZXB0aW9uT3I8UmVmPERPTVVSTD4+IERPTVVSTDo6Y3JlYXRlKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGJhc2UpCitFeGNlcHRpb25PcjxSZWY8RE9N
VVJMPj4gRE9NVVJMOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFVSTCYgYmFzZSkK
IHsKLSAgICBVUkwgYmFzZVVSTCB7IFVSTCB7IH0sIGJhc2UgfTsKLSAgICBpZiAoIWJhc2VVUkwu
aXNWYWxpZCgpKQorICAgIGlmICghYmFzZS5pc1ZhbGlkKCkpCiAgICAgICAgIHJldHVybiBFeGNl
cHRpb24geyBUeXBlRXJyb3IgfTsKLSAgICBVUkwgY29tcGxldGVVUkwgeyBiYXNlVVJMLCB1cmwg
fTsKKyAgICBVUkwgY29tcGxldGVVUkwgeyBiYXNlLCB1cmwgfTsKICAgICBpZiAoIWNvbXBsZXRl
VVJMLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFR5cGVFcnJvciB9Owot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTVVSTChXVEZNb3ZlKGNvbXBsZXRlVVJMKSwgV1RG
TW92ZShiYXNlVVJMKSkpOworICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERPTVVSTChXVEZNb3Zl
KGNvbXBsZXRlVVJMKSwgYmFzZSkpOworfQorCitFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gRE9N
VVJMOjpjcmVhdGUoY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgYmFzZSkKK3sKKyAg
ICByZXR1cm4gY3JlYXRlKHVybCwgVVJMIHsgVVJMIHsgfSwgYmFzZSB9KTsKIH0KIAogRXhjZXB0
aW9uT3I8UmVmPERPTVVSTD4+IERPTVVSTDo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25z
dCBET01VUkwmIGJhc2UpCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0RPTVVSTC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvRE9NVVJMLmgJKHdvcmtpbmcgY29weSkKQEAgLTQxLDYg
KzQxLDcgQEAgY2xhc3MgRE9NVVJMIGZpbmFsIDogcHVibGljIFJlZkNvdW50ZWQ8RAogcHVibGlj
OgogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgdXJsLCBjb25zdCBTdHJpbmcmIGJhc2UpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8
RE9NVVJMPj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBET01VUkwmIGJhc2UpOwor
ICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RE9NVVJMPj4gY3JlYXRlKGNvbnN0IFN0cmluZyYg
dXJsLCBjb25zdCBVUkwmIGJhc2UpOwogICAgIHN0YXRpYyBFeGNlcHRpb25PcjxSZWY8RE9NVVJM
Pj4gY3JlYXRlKGNvbnN0IFN0cmluZyYgdXJsKTsKICAgICB+RE9NVVJMKCk7CiAKQEAgLTU4LDcg
KzU5LDcgQEAgcHVibGljOgogICAgIHN0YXRpYyBTdHJpbmcgY3JlYXRlUHVibGljVVJMKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBVUkxSZWdpc3RyYWJsZSYpOwogCiBwcml2YXRlOgotICAgIERP
TVVSTChVUkwmJiBjb21wbGV0ZVVSTCwgVVJMJiYgYmFzZVVSTCk7CisgICAgRE9NVVJMKFVSTCYm
IGNvbXBsZXRlVVJMLCBjb25zdCBVUkwmIGJhc2VVUkwpOwogCiAgICAgVVJMIGZ1bGxVUkwoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3VybDsgfQogICAgIHZvaWQgc2V0RnVsbFVSTChjb25zdCBV
UkwmIGZ1bGxVUkwpIGZpbmFsIHsgc2V0SHJlZihmdWxsVVJMLnN0cmluZygpKTsgfQpJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5jcHAJKHJldmlzaW9uIDI2MTg4
NikKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0zNjQsNyArMzY0LDcgQEAgc3RhdGljIFJlcGxhY2VtZW50UGx1Z2luKiBwbHVn
aW5SZXBsYWNlbQogCiAgICAgU3RyaW5nIHR5cGUgPSBtaW1lVHlwZTsKICAgICBpZiAodHlwZS5p
c0VtcHR5KCkgJiYgdXJsLnByb3RvY29sSXNEYXRhKCkpCi0gICAgICAgIHR5cGUgPSBtaW1lVHlw
ZUZyb21EYXRhVVJMKHVybCk7CisgICAgICAgIHR5cGUgPSBtaW1lVHlwZUZyb21EYXRhVVJMKHVy
bC5zdHJpbmcoKSk7CiAgICAgCiAgICAgaWYgKHR5cGUuaXNFbXB0eSgpICYmICFleHRlbnNpb24u
aXNFbXB0eSgpKSB7CiAgICAgICAgIGZvciAoYXV0byogcmVwbGFjZW1lbnQgOiByZXBsYWNlbWVu
dHMpIHsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCShyZXZpc2lvbiAyNjE4ODYpCisr
KyBTb3VyY2UvV2ViQ29yZS9wYWdlL0xvY2F0aW9uLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDcgKzEzNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQcm90b2NvbCgKICAg
ICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwogICAgIGlmICghdXJsLnNldFBy
b3RvY29sKHByb3RvY29sKSkKICAgICAgICAgcmV0dXJuIEV4Y2VwdGlvbiB7IFN5bnRheEVycm9y
IH07Ci0gICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVy
bC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIb3N0KERP
TVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJp
bmcmIGhvc3QpCkBAIC0xNDYsNyArMTQ2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246
OnNldEhvc3QoRE9NVwogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3RBbmRQb3J0KGhvc3QpOwotICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJl
dHVybiBzZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkp
OwogfQogCiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0SG9zdG5hbWUoRE9NV2luZG93
JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgaG9z
dG5hbWUpCkBAIC0xNTYsNyArMTU2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNl
dEhvc3RuYW1lKAogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9j
dW1lbnQoKS0+dXJsKCk7CiAgICAgdXJsLnNldEhvc3QoaG9zdG5hbWUpOwotICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwpOworICAgIHJldHVybiBz
ZXRMb2NhdGlvbihhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93LCB1cmwuc3RyaW5nKCkpOwogfQog
CiBFeGNlcHRpb25Pcjx2b2lkPiBMb2NhdGlvbjo6c2V0UG9ydChET01XaW5kb3cmIGFjdGl2ZVdp
bmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBwb3J0U3RyaW5nKQpA
QCAtMTY2LDcgKzE2Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRQb3J0KERP
TVcKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpOwogICAgIHVybC5zZXRQb3J0KHBhcnNlVUludDE2KHBvcnRTdHJpbmcpKTsKLSAgICBy
ZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAgICBy
ZXR1cm4gc2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygp
KTsKIH0KIAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFBhdGhuYW1lKERPTVdpbmRv
dyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIHBh
dGhuYW1lKQpAQCAtMTc2LDcgKzE3Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjpz
ZXRQYXRobmFtZSgKICAgICAgICAgcmV0dXJuIHsgfTsKICAgICBVUkwgdXJsID0gZnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpOwogICAgIHVybC5zZXRQYXRoKHBhdGhuYW1lKTsKLSAgICByZXR1cm4g
c2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsKTsKKyAgICByZXR1cm4g
c2V0TG9jYXRpb24oYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywgdXJsLnN0cmluZygpKTsKIH0K
IAogRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFNlYXJjaChET01XaW5kb3cmIGFjdGl2
ZVdpbmRvdywgRE9NV2luZG93JiBmaXJzdFdpbmRvdywgY29uc3QgU3RyaW5nJiBzZWFyY2gpCkBA
IC0xODYsNyArMTg2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldFNlYXJjaChE
TwogICAgICAgICByZXR1cm4geyB9OwogICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCk7CiAgICAgdXJsLnNldFF1ZXJ5KHNlYXJjaCk7Ci0gICAgcmV0dXJuIHNldExvY2F0aW9u
KGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CisgICAgcmV0dXJuIHNldExvY2F0aW9u
KGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CiB9CiAKIEV4Y2VwdGlv
bk9yPHZvaWQ+IExvY2F0aW9uOjpzZXRIYXNoKERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01X
aW5kb3cmIGZpcnN0V2luZG93LCBjb25zdCBTdHJpbmcmIGhhc2gpCkBAIC0yMDYsNyArMjA2LDcg
QEAgRXhjZXB0aW9uT3I8dm9pZD4gTG9jYXRpb246OnNldEhhc2goRE9NVwogICAgIC8vIGNhc2Vz
IHdoZXJlIGZyYWdtZW50IGlkZW50aWZpZXJzIGFyZSBpZ25vcmVkIG9yIGludmFsaWQuIAogICAg
IGlmIChlcXVhbElnbm9yaW5nTnVsbGl0eShvbGRGcmFnbWVudElkZW50aWZpZXIsIHVybC5mcmFn
bWVudElkZW50aWZpZXIoKSkpCiAgICAgICAgIHJldHVybiB7IH07Ci0gICAgcmV0dXJuIHNldExv
Y2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybCk7CisgICAgcmV0dXJuIHNldExv
Y2F0aW9uKGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3csIHVybC5zdHJpbmcoKSk7CiB9CiAKIEV4
Y2VwdGlvbk9yPHZvaWQ+IExvY2F0aW9uOjphc3NpZ24oRE9NV2luZG93JiBhY3RpdmVXaW5kb3cs
IERPTVdpbmRvdyYgZmlyc3RXaW5kb3csIGNvbnN0IFN0cmluZyYgdXJsKQpJbmRleDogU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5ZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL01lZGlhUGxheWVyLmNwcAkocmV2aXNp
b24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvTWVkaWFQbGF5
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NDEsNyArNDQxLDcgQEAgYm9vbCBNZWRpYVBsYXll
cjo6bG9hZChjb25zdCBVUkwmIHVybCwgYwogICAgIEF0b21TdHJpbmcgY29udGFpbmVyVHlwZSA9
IG1fY29udGVudFR5cGUuY29udGFpbmVyVHlwZSgpOwogICAgIGlmIChjb250YWluZXJUeXBlLmlz
RW1wdHkoKSB8fCBjb250YWluZXJUeXBlID09IGFwcGxpY2F0aW9uT2N0ZXRTdHJlYW0oKSB8fCBj
b250YWluZXJUeXBlID09IHRleHRQbGFpbigpKSB7CiAgICAgICAgIGlmIChtX3VybC5wcm90b2Nv
bElzRGF0YSgpKQotICAgICAgICAgICAgbV9jb250ZW50VHlwZSA9IENvbnRlbnRUeXBlKG1pbWVU
eXBlRnJvbURhdGFVUkwobV91cmwpKTsKKyAgICAgICAgICAgIG1fY29udGVudFR5cGUgPSBDb250
ZW50VHlwZShtaW1lVHlwZUZyb21EYXRhVVJMKG1fdXJsLnN0cmluZygpKSk7CiAgICAgICAgIGVs
c2UgewogICAgICAgICAgICAgYXV0byBsYXN0UGF0aENvbXBvbmVudCA9IHVybC5sYXN0UGF0aENv
bXBvbmVudCgpOwogICAgICAgICAgICAgc2l6ZV90IHBvcyA9IGxhc3RQYXRoQ29tcG9uZW50LnJl
dmVyc2VGaW5kKCcuJyk7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvRHJhZ0Rh
dGFHdGsuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9EcmFn
RGF0YUd0ay5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2d0ay9EcmFnRGF0YUd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc2LDE1ICs3NiwxMyBAQCBT
dHJpbmcgRHJhZ0RhdGE6OmFzVVJMKEZpbGVuYW1lQ29udmVyc2lvCiAgICAgaWYgKCFtX3BsYXRm
b3JtRHJhZ0RhdGEtPmhhc1VSTCgpKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgaWYg
KGZpbGVuYW1lUG9saWN5ICE9IENvbnZlcnRGaWxlbmFtZXMpIHsKLSAgICAgICAgVVJMIHVybChV
UkwoKSwgbV9wbGF0Zm9ybURyYWdEYXRhLT51cmwoKSk7Ci0gICAgICAgIGlmICh1cmwuaXNMb2Nh
bEZpbGUoKSkKLSAgICAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKKyAgICAgICAgaWYgKG1fcGxh
dGZvcm1EcmFnRGF0YS0+dXJsKCkuaXNMb2NhbEZpbGUoKSkKKyAgICAgICAgICAgIHJldHVybiB7
IH07CiAgICAgfQogCi0gICAgU3RyaW5nIHVybChtX3BsYXRmb3JtRHJhZ0RhdGEtPnVybCgpKTsK
ICAgICBpZiAodGl0bGUpCiAgICAgICAgICp0aXRsZSA9IG1fcGxhdGZvcm1EcmFnRGF0YS0+dXJs
TGFiZWwoKTsKLSAgICByZXR1cm4gdXJsOworICAgIHJldHVybiBtX3BsYXRmb3JtRHJhZ0RhdGEt
PnVybCgpLnN0cmluZygpOwogfQogCiB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvUGFzdGVib2FyZEd0ay5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1Bhc3RlYm9hcmRHdGsuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvUGFzdGVib2FyZEd0ay5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM3
NCw3ICszNzQsNyBAQCBTdHJpbmcgUGFzdGVib2FyZDo6cmVhZFN0cmluZyhjb25zdCBTdHJpCiAg
ICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZVVSSUxpc3Q6CiAgICAgICAgIHJldHVybiBtX3NlbGVj
dGlvbkRhdGEtPnVyaUxpc3QoKTsKICAgICBjYXNlIENsaXBib2FyZERhdGFUeXBlVVJMOgotICAg
ICAgICByZXR1cm4gbV9zZWxlY3Rpb25EYXRhLT51cmwoKTsKKyAgICAgICAgcmV0dXJuIG1fc2Vs
ZWN0aW9uRGF0YS0+dXJsKCkuc3RyaW5nKCk7CiAgICAgY2FzZSBDbGlwYm9hcmREYXRhVHlwZU1h
cmt1cDoKICAgICAgICAgcmV0dXJuIG1fc2VsZWN0aW9uRGF0YS0+bWFya3VwKCk7CiAgICAgY2Fz
ZSBDbGlwYm9hcmREYXRhVHlwZVRleHQ6CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
dGsvU2VsZWN0aW9uRGF0YS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3RrL1NlbGVjdGlvbkRhdGEuY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ndGsvU2VsZWN0aW9uRGF0YS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgw
LDcgKzgwLDcgQEAgdm9pZCBTZWxlY3Rpb25EYXRhOjpzZXRVUkwoY29uc3QgVVJMJiB1cgogewog
ICAgIG1fdXJsID0gdXJsOwogICAgIGlmIChtX3VyaUxpc3QuaXNFbXB0eSgpKQotICAgICAgICBt
X3VyaUxpc3QgPSB1cmw7CisgICAgICAgIG1fdXJpTGlzdCA9IHVybC5zdHJpbmcoKTsKIAogICAg
IGlmICghaGFzVGV4dCgpKQogICAgICAgICBzZXRUZXh0KHVybC5zdHJpbmcoKSk7CkBAIC05MCw3
ICs5MCw3IEBAIHZvaWQgU2VsZWN0aW9uRGF0YTo6c2V0VVJMKGNvbnN0IFVSTCYgdXIKIAogICAg
IFN0cmluZyBhY3R1YWxMYWJlbChsYWJlbCk7CiAgICAgaWYgKGFjdHVhbExhYmVsLmlzRW1wdHko
KSkKLSAgICAgICAgYWN0dWFsTGFiZWwgPSB1cmw7CisgICAgICAgIGFjdHVhbExhYmVsID0gdXJs
LnN0cmluZygpOwogCiAgICAgU3RyaW5nQnVpbGRlciBtYXJrdXA7CiAgICAgbWFya3VwLmFwcGVu
ZCgiPGEgaHJlZj1cIiIpOwpAQCAtMTA4LDcgKzEwOCw3IEBAIGNvbnN0IFN0cmluZyYgU2VsZWN0
aW9uRGF0YTo6dXJsTGFiZWwoKSAKICAgICAgICAgcmV0dXJuIHRleHQoKTsKIAogICAgIGlmICho
YXNVUkwoKSkKLSAgICAgICAgcmV0dXJuIHVybCgpOworICAgICAgICByZXR1cm4gdXJsKCkuc3Ry
aW5nKCk7CiAKICAgICByZXR1cm4gZW1wdHlTdHJpbmcoKTsKIH0KSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9DdXJsUmVzb3VyY2VIYW5kbGVEZWxlZ2F0ZS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxS
ZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL0N1cmxSZXNvdXJjZUhhbmRsZURlbGVnYXRlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMTI2LDcgKzEyNiw3IEBAIHZvaWQgQ3VybFJlc291cmNlSGFu
ZGxlRGVsZWdhdGU6OmN1cmxEaWQKICAgICAgICAgVVJMIGNhY2hlVXJsID0gbV9yZXNwb25zZS51
cmwoKTsKICAgICAgICAgY2FjaGVVcmwucmVtb3ZlRnJhZ21lbnRJZGVudGlmaWVyKCk7CiAKLSAg
ICAgICAgaWYgKEN1cmxDYWNoZU1hbmFnZXI6OnNpbmdsZXRvbigpLmdldENhY2hlZFJlc3BvbnNl
KGNhY2hlVXJsLCBtX3Jlc3BvbnNlKSkgeworICAgICAgICBpZiAoQ3VybENhY2hlTWFuYWdlcjo6
c2luZ2xldG9uKCkuZ2V0Q2FjaGVkUmVzcG9uc2UoY2FjaGVVcmwuc3RyaW5nKCksIG1fcmVzcG9u
c2UpKSB7CiAgICAgICAgICAgICBpZiAoZCgpLT5tX2FkZGVkQ2FjaGVWYWxpZGF0aW9uSGVhZGVy
cykgewogICAgICAgICAgICAgICAgIG1fcmVzcG9uc2Uuc2V0SFRUUFN0YXR1c0NvZGUoMjAwKTsK
ICAgICAgICAgICAgICAgICBtX3Jlc3BvbnNlLnNldEhUVFBTdGF0dXNUZXh0KCJPSyIpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9OZXR3b3JrU3RvcmFnZVNlc3Npb25DdXJsLmNwcAkocmV2aXNpb24gMjYxODg2KQor
KysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jdXJsL05ldHdvcmtTdG9yYWdlU2Vz
c2lvbkN1cmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTEsNyArMTUxLDcgQEAgdm9pZCBOZXR3
b3JrU3RvcmFnZVNlc3Npb246OmRlbGV0ZUNvb2tpZQogCiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vz
c2lvbjo6ZGVsZXRlQ29va2llKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG5hbWUpIGNv
bnN0CiB7Ci0gICAgY29va2llRGF0YWJhc2UoKS5kZWxldGVDb29raWUodXJsLCBuYW1lKTsKKyAg
ICBjb29raWVEYXRhYmFzZSgpLmRlbGV0ZUNvb2tpZSh1cmwuc3RyaW5nKCksIG5hbWUpOwogfQog
CiB2b2lkIE5ldHdvcmtTdG9yYWdlU2Vzc2lvbjo6ZGVsZXRlQWxsQ29va2llcygpCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1cmwvUmVz
b3VyY2VIYW5kbGVDdXJsLmNwcAkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9jdXJsL1Jlc291cmNlSGFuZGxlQ3VybC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTEyNywxMCArMTI3LDEwIEBAIHZvaWQgUmVzb3VyY2VIYW5kbGU6OmFkZENhY2hlVmFs
aWRhdGlvbkgKICAgICBVUkwgY2FjaGVVcmwgPSByZXF1ZXN0LnVybCgpOwogICAgIGNhY2hlVXJs
LnJlbW92ZUZyYWdtZW50SWRlbnRpZmllcigpOwogCi0gICAgaWYgKGNhY2hlLmlzQ2FjaGVkKGNh
Y2hlVXJsKSkgewotICAgICAgICBjYWNoZS5hZGRDYWNoZUVudHJ5Q2xpZW50KGNhY2hlVXJsLCB0
aGlzKTsKKyAgICBpZiAoY2FjaGUuaXNDYWNoZWQoY2FjaGVVcmwuc3RyaW5nKCkpKSB7CisgICAg
ICAgIGNhY2hlLmFkZENhY2hlRW50cnlDbGllbnQoY2FjaGVVcmwuc3RyaW5nKCksIHRoaXMpOwog
Ci0gICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBjYWNoZS5yZXF1ZXN0SGVhZGVycyhj
YWNoZVVybCkpCisgICAgICAgIGZvciAoY29uc3QgYXV0byYgZW50cnkgOiBjYWNoZS5yZXF1ZXN0
SGVhZGVycyhjYWNoZVVybC5zdHJpbmcoKSkpCiAgICAgICAgICAgICByZXF1ZXN0LmFkZEhUVFBI
ZWFkZXJGaWVsZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsKIAogICAgICAgICBkLT5tX2FkZGVk
Q2FjaGVWYWxpZGF0aW9uSGVhZGVycyA9IHRydWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9uZXR3b3JrL2N1cmwvU29ja2V0U3RyZWFtSGFuZGxlSW1wbEN1cmwuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1I
YW5kbGVJbXBsQ3VybC5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvY3VybC9Tb2NrZXRTdHJlYW1IYW5kbGVJbXBsQ3VybC5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTEyMiw3ICsxMjIsNyBAQCB2b2lkIFNvY2tldFN0cmVhbUhhbmRsZUltcGw6
OmRpZEZhaWwoQ3VyCiAgICAgaWYgKGVycm9yQ29kZSA9PSBDVVJMRV9SRUNWX0VSUk9SKQogICAg
ICAgICBtX2NsaWVudC5kaWRGYWlsVG9SZWNlaXZlU29ja2V0U3RyZWFtRGF0YSgqdGhpcyk7CiAg
ICAgZWxzZQotICAgICAgICBtX2NsaWVudC5kaWRGYWlsU29ja2V0U3RyZWFtKCp0aGlzLCBTb2Nr
ZXRTdHJlYW1FcnJvcihlcnJvckNvZGUsIG1fdXJsLCBDdXJsSGFuZGxlOjplcnJvckRlc2NyaXB0
aW9uKGVycm9yQ29kZSkpKTsKKyAgICAgICAgbV9jbGllbnQuZGlkRmFpbFNvY2tldFN0cmVhbSgq
dGhpcywgU29ja2V0U3RyZWFtRXJyb3IoZXJyb3JDb2RlLCBtX3VybC5zdHJpbmcoKSwgQ3VybEhh
bmRsZTo6ZXJyb3JEZXNjcmlwdGlvbihlcnJvckNvZGUpKSk7CiB9CiAKIHZvaWQgU29ja2V0U3Ry
ZWFtSGFuZGxlSW1wbDo6ZGVzdHJ1Y3RTdHJlYW0oKQpJbmRleDogU291cmNlL1dlYktpdC9VSVBy
b2Nlc3MvQ29jb2EvU09BdXRob3JpemF0aW9uL1JlZGlyZWN0U09BdXRob3JpemF0aW9uU2Vzc2lv
bi5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhv
cml6YXRpb24vUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCShyZXZpc2lvbiAyNjE4
ODYpCisrKyBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9Db2NvYS9TT0F1dGhvcml6YXRpb24vUmVk
aXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uLm1tCSh3b3JraW5nIGNvcHkpCkBAIC03OCw3ICs3
OCw3IEBAIHZvaWQgUmVkaXJlY3RTT0F1dGhvcml6YXRpb25TZXNzaW9uOjpjb20KICAgICAgICAg
ICAgIHBhZ2UtPnNldFNob3VsZFN1cHByZXNzU09BdXRob3JpemF0aW9uSW5OZXh0TmF2aWdhdGlv
blBvbGljeURlY2lzaW9uKCk7CiAgICAgICAgICAgICBhdXRvIGh0bWwgPSBtYWtlU3RyaW5nKCI8
c2NyaXB0PmxvY2F0aW9uID0gJyIsIHJlc3BvbnNlLmh0dHBIZWFkZXJGaWVsZHMoKS5nZXQoSFRU
UEhlYWRlck5hbWU6OkxvY2F0aW9uKSwgIic8L3NjcmlwdD4iKS51dGY4KCk7CiAgICAgICAgICAg
ICBhdXRvIGRhdGEgPSBJUEM6OkRhdGFSZWZlcmVuY2UocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1
aW50OF90Kj4oaHRtbC5kYXRhKCkpLCBodG1sLmxlbmd0aCgpKTsKLSAgICAgICAgICAgIHBhZ2Ut
PmxvYWREYXRhKGRhdGEsICJ0ZXh0L2h0bWwiX3MsICJVVEYtOCJfcywgbmF2aWdhdGlvbkFjdGlv
bi0+cmVxdWVzdCgpLnVybCgpLCBudWxscHRyLCBuYXZpZ2F0aW9uQWN0aW9uLT5zaG91bGRPcGVu
RXh0ZXJuYWxVUkxzUG9saWN5KCkpOworICAgICAgICAgICAgcGFnZS0+bG9hZERhdGEoZGF0YSwg
InRleHQvaHRtbCJfcywgIlVURi04Il9zLCBuYXZpZ2F0aW9uQWN0aW9uLT5yZXF1ZXN0KCkudXJs
KCkuc3RyaW5nKCksIG51bGxwdHIsIG5hdmlnYXRpb25BY3Rpb24tPnNob3VsZE9wZW5FeHRlcm5h
bFVSTHNQb2xpY3koKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hlZXRBc3Npc3RhbnQu
bW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQWN0aW9uU2hl
ZXRBc3Npc3RhbnQubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL2lvcy9XS0FjdGlvblNoZWV0QXNzaXN0YW50Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zNDIs
NyArMzQyLDcgQEAgLSAodm9pZClfY3JlYXRlU2hlZXRXaXRoRWxlbWVudEFjdGlvbnM6KAogICAg
IGlmICghX3Bvc2l0aW9uSW5mb3JtYXRpb24pCiAgICAgICAgIHJldHVybjsKIAotICAgIE5TVVJM
ICp0YXJnZXRVUkwgPSBbTlNVUkwgVVJMV2l0aFN0cmluZzpfcG9zaXRpb25JbmZvcm1hdGlvbi0+
dXJsXTsKKyAgICBOU1VSTCAqdGFyZ2V0VVJMID0gX3Bvc2l0aW9uSW5mb3JtYXRpb24tPnVybDsK
ICAgICBOU1N0cmluZyAqdXJsU2NoZW1lID0gW3RhcmdldFVSTCBzY2hlbWVdOwogICAgIEJPT0wg
aXNKYXZhU2NyaXB0VVJMID0gW3VybFNjaGVtZSBsZW5ndGhdICYmIFt1cmxTY2hlbWUgY2FzZUlu
c2Vuc2l0aXZlQ29tcGFyZTpAImphdmFzY3JpcHQiXSA9PSBOU09yZGVyZWRTYW1lOwogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgY2hlY2sgaWYgSmF2YXNjcmlwdCBpcyBlbmFibGVkIGluIHRoZSBw
cmVmZXJlbmNlcy4KSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0NvbnRlbnRW
aWV3SW50ZXJhY3Rpb24ubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdC9VSVByb2Nlc3Mv
aW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkocmV2aXNpb24gMjYxODg2KQorKysgU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9zL1dLQ29udGVudFZpZXdJbnRlcmFjdGlvbi5tbQkod29y
a2luZyBjb3B5KQpAQCAtOTY1NSw3ICs5NjU1LDcgQEAgLSAoVUlWaWV3Q29udHJvbGxlciAqKV9w
cmVzZW50ZWRWaWV3Q29udAogCiAgICAgTlNVUkwgKnRhcmdldFVSTCA9IGNvbnRyb2xsZXIucHJl
dmlld0RhdGFbVUlQcmV2aWV3RGF0YUxpbmtdOwogICAgIFVSTCBjb3JlVGFyZ2V0VVJMID0gdGFy
Z2V0VVJMOwotICAgIGJvb2wgaXNWYWxpZFVSTEZvckltYWdlUHJldmlldyA9ICFjb3JlVGFyZ2V0
VVJMLmlzRW1wdHkoKSAmJiAoV1RGOjpwcm90b2NvbElzSW5IVFRQRmFtaWx5KGNvcmVUYXJnZXRV
UkwpIHx8IFdURjo6cHJvdG9jb2xJcyhjb3JlVGFyZ2V0VVJMLCAiZGF0YSIpKTsKKyAgICBib29s
IGlzVmFsaWRVUkxGb3JJbWFnZVByZXZpZXcgPSAhY29yZVRhcmdldFVSTC5pc0VtcHR5KCkgJiYg
KGNvcmVUYXJnZXRVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpIHx8IGNvcmVUYXJnZXRVUkwu
cHJvdG9jb2xJcygiZGF0YSIpKTsKIAogICAgIGlmIChbX3ByZXZpZXdJdGVtQ29udHJvbGxlciB0
eXBlXSA9PSBVSVByZXZpZXdJdGVtVHlwZUxpbmspIHsKICAgICAgICAgX2xvbmdQcmVzc0NhbkNs
aWNrID0gTk87CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lv
cy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0JKHdvcmtp
bmcgY29weSkKQEAgLTY4LDcgKzY4LDcgQEAgLSAodm9pZClkZW55T25seVRoaXNSZXF1ZXN0IE5P
X1JFVFVSTl9EVQogQGVuZAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLXZvaWQgZGVjaWRlUG9saWN5
Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbios
IGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4s
IFVJVmlldyopOwordm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3Jp
Z2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiwgY29uc3QgVVJMJiwgaWQ8V2ViQWxsb3dEZW55
UG9saWN5TGlzdGVuZXI+LCBVSVZpZXcqKTsKIH07CiAKIHN0cnVjdCBHZW9sb2NhdGlvblJlcXVl
c3REYXRhIHsKSW5kZXg6IFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL2lvcy9XS0dlb2xvY2F0aW9u
UHJvdmlkZXJJT1NPYmpDU2VjdXJpdHlPcmlnaW4ubW0KPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9y
aWdpbi5tbQkocmV2aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdC9VSVByb2Nlc3MvaW9z
L1dLR2VvbG9jYXRpb25Qcm92aWRlcklPU09iakNTZWN1cml0eU9yaWdpbi5tbQkod29ya2luZyBj
b3B5KQpAQCAtNDQsMTcgKzQ0LDE2IEBAIC0gKGlkKV9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9y
aWdpbjooV2UKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKLXZvaWQgZGVjaWRlUG9saWN5Rm9yR2Vv
bG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihXZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0
IFN0cmluZyYgdXJsU3RyaW5nLCBpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4sIFVJVmll
dyAqKTsKK3ZvaWQgZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbihX
ZWJDb3JlOjpTZWN1cml0eU9yaWdpbiosIGNvbnN0IFVSTCYsIGlkPFdlYkFsbG93RGVueVBvbGlj
eUxpc3RlbmVyPiwgVUlWaWV3ICopOwogCi12b2lkIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9u
UmVxdWVzdEZyb21PcmlnaW4oV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW4qIG9yaWdpbiwgY29uc3Qg
U3RyaW5nJiB1cmxTdHJpbmcsIGlkPFdlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyPiBsaXN0ZW5l
ciwgVUlWaWV3ICp2aWV3KQordm9pZCBkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RG
cm9tT3JpZ2luKFdlYkNvcmU6OlNlY3VyaXR5T3JpZ2luKiBvcmlnaW4sIGNvbnN0IFVSTCYgdXJs
LCBpZDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4gbGlzdGVuZXIsIFVJVmlldyAqdmlldykK
IHsKICAgICBSZXRhaW5QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gYWRv
cHROUyhbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlP
cmlnaW46b3JpZ2luXSk7Ci0gICAgUmV0YWluUHRyPE5TVVJMPiByZXF1ZXN0VXJsID0gYWRvcHRO
UyhbW05TVVJMIGFsbG9jXSBpbml0V2l0aFN0cmluZzp1cmxTdHJpbmddKTsKICAgICBSZXRhaW5Q
dHI8VUlXZWJHZW9sb2NhdGlvblBvbGljeURlY2lkZXI+IGRlY2lkZXIgPSBbVUlXZWJHZW9sb2Nh
dGlvblBvbGljeURlY2lkZXIgc2hhcmVkUG9saWN5RGVjaWRlcl07CiAgICAgaWYgKFtkZWNpZGVy
IHJlc3BvbmRzVG9TZWxlY3RvcjpAc2VsZWN0b3IoZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25S
ZXF1ZXN0RnJvbU9yaWdpbjpyZXF1ZXN0aW5nVVJMOnZpZXc6bGlzdGVuZXI6KV0pCi0gICAgICAg
IFtkZWNpZGVyIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46c2Vj
dXJpdHlPcmlnaW4uZ2V0KCkgcmVxdWVzdGluZ1VSTDpyZXF1ZXN0VXJsLmdldCgpIHZpZXc6dmll
dyBsaXN0ZW5lcjpsaXN0ZW5lcl07CisgICAgICAgIFtkZWNpZGVyIGRlY2lkZVBvbGljeUZvckdl
b2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46c2VjdXJpdHlPcmlnaW4uZ2V0KCkgcmVxdWVzdGlu
Z1VSTDp1cmwgdmlldzp2aWV3IGxpc3RlbmVyOmxpc3RlbmVyXTsKICAgICBlbHNlCi0gICAgICAg
IFtkZWNpZGVyIGRlY2lkZVBvbGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46c2Vj
dXJpdHlPcmlnaW4uZ2V0KCkgcmVxdWVzdGluZ1VSTDpyZXF1ZXN0VXJsLmdldCgpIHdpbmRvdzp2
aWV3LndpbmRvdyBsaXN0ZW5lcjpsaXN0ZW5lcl07CisgICAgICAgIFtkZWNpZGVyIGRlY2lkZVBv
bGljeUZvckdlb2xvY2F0aW9uUmVxdWVzdEZyb21PcmlnaW46c2VjdXJpdHlPcmlnaW4uZ2V0KCkg
cmVxdWVzdGluZ1VSTDp1cmwgd2luZG93OnZpZXcud2luZG93IGxpc3RlbmVyOmxpc3RlbmVyXTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0L1VJUHJvY2Vz
cy9pb3MvV0tQREZWaWV3Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L2lvcy9XS1BERlZpZXcubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvVUlQ
cm9jZXNzL2lvcy9XS1BERlZpZXcubW0JKHdvcmtpbmcgY29weSkKQEAgLTUyOSw3ICs1MjksNyBA
QCAtICh2b2lkKWFjdGlvblNoZWV0QXNzaXN0YW50OihXS0FjdGlvblNoCiAgICAgICAgIHJldHVy
bjsKIAogICAgIE5TRGljdGlvbmFyeSAqcmVwcmVzZW50YXRpb25zID0gQHsKLSAgICAgICAgKE5T
U3RyaW5nICopa1VUVHlwZVVURjhQbGFpblRleHQgOiAoTlNTdHJpbmcgKilfcG9zaXRpb25JbmZv
cm1hdGlvbi51cmwsCisgICAgICAgIChOU1N0cmluZyAqKWtVVFR5cGVVVEY4UGxhaW5UZXh0IDog
KE5TU3RyaW5nICopX3Bvc2l0aW9uSW5mb3JtYXRpb24udXJsLnN0cmluZygpLAogICAgICAgICAo
TlNTdHJpbmcgKilrVVRUeXBlVVJMIDogKE5TVVJMICopX3Bvc2l0aW9uSW5mb3JtYXRpb24udXJs
LAogICAgIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2dsaWIvV2ViS2l0V2ViUGFnZS5jcHAJKHJl
dmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9BUEkvZ2xpYi9XZWJLaXRXZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzE2LDcgKzMx
Niw3IEBAIHByaXZhdGU6CiAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZExpdGVy
YWwoIjogIik7CiAgICAgICAgICAgICAgICAgZXJyb3JNZXNzYWdlLmFwcGVuZChlcnJvci5sb2Nh
bGl6ZWREZXNjcmlwdGlvbigpKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdlYmtpdFdl
YlBhZ2VEaWRTZW5kQ29uc29sZU1lc3NhZ2UobV93ZWJQYWdlLCBNZXNzYWdlU291cmNlOjpOZXR3
b3JrLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvck1lc3NhZ2UudG9TdHJpbmcoKSwgMCwgZXJy
b3IuZmFpbGluZ1VSTCgpKTsKKyAgICAgICAgICAgIHdlYmtpdFdlYlBhZ2VEaWRTZW5kQ29uc29s
ZU1lc3NhZ2UobV93ZWJQYWdlLCBNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6
OkVycm9yLCBlcnJvck1lc3NhZ2UudG9TdHJpbmcoKSwgMCwgZXJyb3IuZmFpbGluZ1VSTCgpLnN0
cmluZygpKTsKICAgICAgICAgfQogICAgIH0KIApJbmRleDogU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0JKHJldmlzaW9uIDI2MTg4NikK
KysrIFNvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCSh3
b3JraW5nIGNvcHkpCkBAIC0yNjYwLDcgKzI2NjAsNyBAQCBzdGF0aWMgdm9pZCBpbWFnZVBvc2l0
aW9uSW5mb3JtYXRpb24oV2ViCiAgICAgICAgIHJldHVybjsKIAogICAgIGluZm8uaXNJbWFnZSA9
IHRydWU7Ci0gICAgaW5mby5pbWFnZVVSTCA9IGVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVS
TChyZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgpLT51cmwoKSk7CisgICAgaW5mby5pbWFnZVVSTCA9
IGVsZW1lbnQuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTChyZW5kZXJJbWFnZS5jYWNoZWRJbWFnZSgp
LT51cmwoKS5zdHJpbmcoKSk7CiAgICAgaW5mby5pc0FuaW1hdGVkSW1hZ2UgPSBpbWFnZS0+aXNB
bmltYXRlZCgpOwogCiAgICAgaWYgKCFyZXF1ZXN0LmluY2x1ZGVTbmFwc2hvdCkKQEAgLTMxNTAs
NyArMzE1MCw3IEBAIHZvaWQgV2ViUGFnZTo6Z2V0Rm9jdXNlZEVsZW1lbnRJbmZvcm1hdGkKICAg
ICAgICAgSFRNTElucHV0RWxlbWVudCYgZWxlbWVudCA9IGRvd25jYXN0PEhUTUxJbnB1dEVsZW1l
bnQ+KCpmb2N1c2VkRWxlbWVudCk7CiAgICAgICAgIEhUTUxGb3JtRWxlbWVudCogZm9ybSA9IGVs
ZW1lbnQuZm9ybSgpOwogICAgICAgICBpZiAoZm9ybSkKLSAgICAgICAgICAgIGluZm9ybWF0aW9u
LmZvcm1BY3Rpb24gPSBmb3JtLT5nZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjph
Y3Rpb25BdHRyKTsKKyAgICAgICAgICAgIGluZm9ybWF0aW9uLmZvcm1BY3Rpb24gPSBmb3JtLT5n
ZXRVUkxBdHRyaWJ1dGUoV2ViQ29yZTo6SFRNTE5hbWVzOjphY3Rpb25BdHRyKS5zdHJpbmcoKTsK
ICAgICAgICAgaWYgKGF1dG8gYXV0b2ZpbGxFbGVtZW50cyA9IFdlYkNvcmU6OkF1dG9maWxsRWxl
bWVudHM6OmNvbXB1dGVBdXRvZmlsbEVsZW1lbnRzKGVsZW1lbnQpKSB7CiAgICAgICAgICAgICBp
bmZvcm1hdGlvbi5hY2NlcHRzQXV0b2ZpbGxlZExvZ2luQ3JlZGVudGlhbHMgPSB0cnVlOwogICAg
ICAgICAgICAgaW5mb3JtYXRpb24uaXNBdXRvZmlsbGFibGVVc2VybmFtZUZpZWxkID0gYXV0b2Zp
bGxFbGVtZW50cy0+dXNlcm5hbWUoKSA9PSBmb2N1c2VkRWxlbWVudDsKSW5kZXg6IFNvdXJjZS9X
ZWJLaXRMZWdhY3kvbWFjL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVn
YWN5L21hYy9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA1
LTIwICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVtb3ZlIGltcGxpY2l0IFVSTC0+U3RyaW5nIGNvbnZlcnNpb24gb3BlcmF0b3JzCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTEwMzMKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIERPTS9ET01IVE1M
QmFzZUVsZW1lbnQubW06CisgICAgICAgICgtW0RPTUhUTUxCYXNlRWxlbWVudCBocmVmXSk6CisK
IDIwMjAtMDUtMTggIERhdmlkIEtpbHplciAgPGRka2lsemVyQGFwcGxlLmNvbT4KIAogICAgICAg
ICBSZXBsYWNlIFRleHRJbmRpY2F0b3JPcHRpb25zIHdpdGggT3B0aW9uU2V0PFRleHRJbmRpY2F0
b3JPcHRpb24+CkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L21hYy9ET00vRE9NSFRNTEJhc2VF
bGVtZW50Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXRMZWdhY3kvbWFjL0RPTS9ET01I
VE1MQmFzZUVsZW1lbnQubW0JKHJldmlzaW9uIDI2MTg4NikKKysrIFNvdXJjZS9XZWJLaXRMZWdh
Y3kvbWFjL0RPTS9ET01IVE1MQmFzZUVsZW1lbnQubW0JKHdvcmtpbmcgY29weSkKQEAgLTQyLDcg
KzQyLDcgQEAKIC0gKE5TU3RyaW5nICopaHJlZgogewogICAgIFdlYkNvcmU6OkpTTWFpblRocmVh
ZE51bGxTdGF0ZSBzdGF0ZTsKLSAgICByZXR1cm4gSU1QTC0+aHJlZigpOworICAgIHJldHVybiBJ
TVBMLT5ocmVmKCkuc3RyaW5nKCk7CiB9CiAKIC0gKHZvaWQpc2V0SHJlZjooTlNTdHJpbmcgKilu
ZXdIcmVmCkluZGV4OiBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9QbHVnaW5zL1BsdWdpblN0cmVh
bS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVn
aW5TdHJlYW0uY3BwCShyZXZpc2lvbiAyNjE4ODYpCisrKyBTb3VyY2UvV2ViS2l0TGVnYWN5L3dp
bi9QbHVnaW5zL1BsdWdpblN0cmVhbS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTE0Myw3ICsxNDMs
NyBAQCB2b2lkIFBsdWdpblN0cmVhbTo6c3RhcnRTdHJlYW0oKQogCiAgICAgLy8gU29tZSBwbHVn
aW5zIChGbGFzaCkgZXhwZWN0IHRoYXQgamF2YXNjcmlwdCBVUkxzIGFyZSBwYXNzZWQgYmFjayBk
ZWNvZGVkIGFzIHRoaXMgaXMgdGhlCiAgICAgLy8gZm9ybWF0IHVzZWQgd2hlbiByZXF1ZXN0aW5n
IHRoZSBVUkwuCi0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KHJlc3BvbnNlVVJMKSkKKyAg
ICBpZiAocmVzcG9uc2VVUkwucHJvdG9jb2xJc0phdmFTY3JpcHQoKSkKICAgICAgICAgbV9zdHJl
YW0udXJsID0gZmFzdFN0ckR1cChkZWNvZGVVUkxFc2NhcGVTZXF1ZW5jZXMocmVzcG9uc2VVUkwu
c3RyaW5nKCkpLnV0ZjgoKS5kYXRhKCkpOwogICAgIGVsc2UKICAgICAgICAgbV9zdHJlYW0udXJs
ID0gZmFzdFN0ckR1cChyZXNwb25zZVVSTC5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKTsKSW5kZXg6
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAkocmV2
aXNpb24gMjYxODg2KQorKysgU291cmNlL1dlYktpdExlZ2FjeS93aW4vUGx1Z2lucy9QbHVnaW5W
aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTAzLDcgKzEwMyw3IEBAIHN0YXRpYyBJbnN0YW5j
ZU1hcCYgaW5zdGFuY2VNYXAoKQogCiBzdGF0aWMgU3RyaW5nIHNjcmlwdFN0cmluZ0lmSmF2YVNj
cmlwdFVSTChjb25zdCBVUkwmIHVybCkKIHsKLSAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0
KHVybCkpCisgICAgaWYgKCF1cmwucHJvdG9jb2xJc0phdmFTY3JpcHQoKSkKICAgICAgICAgcmV0
dXJuIFN0cmluZygpOwogCiAgICAgLy8gVGhpcyByZXR1cm5zIGFuIHVuZXNjYXBlZCBzdHJpbmcK
SW5kZXg6IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9h
ZGVyQ2xpZW50LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0TGVnYWN5L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAJKHJldmlzaW9uIDI2MTg4NikKKysr
IFNvdXJjZS9XZWJLaXRMZWdhY3kvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzAxLDggKzcwMSw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OnVwZGF0ZUdsb2JhbEgKICAgICAgICAgQ09NUHRyPElXZWJVUkxSZXNwb25z
ZT4gdXJsUmVzcG9uc2UoQWRvcHRDT00sIFdlYlVSTFJlc3BvbnNlOjpjcmVhdGVJbnN0YW5jZShs
b2FkZXItPnJlc3BvbnNlKCkpKTsKICAgICAgICAgQ09NUHRyPElXZWJVUkxSZXF1ZXN0PiB1cmxS
ZXF1ZXN0KEFkb3B0Q09NLCBXZWJNdXRhYmxlVVJMUmVxdWVzdDo6Y3JlYXRlSW5zdGFuY2UobG9h
ZGVyLT5vcmlnaW5hbFJlcXVlc3RDb3B5KCkpKTsKICAgICAgICAgCi0gICAgICAgIENPTVB0cjxJ
V2ViTmF2aWdhdGlvbkRhdGE+IG5hdmlnYXRpb25EYXRhKEFkb3B0Q09NLCBXZWJOYXZpZ2F0aW9u
RGF0YTo6Y3JlYXRlSW5zdGFuY2UoCi0gICAgICAgICAgICBsb2FkZXItPnVybEZvckhpc3Rvcnko
KSwgbG9hZGVyLT50aXRsZSgpLnN0cmluZywgdXJsUmVxdWVzdC5nZXQoKSwgdXJsUmVzcG9uc2Uu
Z2V0KCksIGxvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCksIGxvYWRlci0+Y2xpZW50
UmVkaXJlY3RTb3VyY2VGb3JIaXN0b3J5KCkpKTsKKyAgICAgICAgQ09NUHRyPElXZWJOYXZpZ2F0
aW9uRGF0YT4gbmF2aWdhdGlvbkRhdGEoQWRvcHRDT00sIFdlYk5hdmlnYXRpb25EYXRhOjpjcmVh
dGVJbnN0YW5jZShsb2FkZXItPnVybEZvckhpc3RvcnkoKS5zdHJpbmcoKSwgbG9hZGVyLT50aXRs
ZSgpLnN0cmluZywgdXJsUmVxdWVzdC5nZXQoKSwgdXJsUmVzcG9uc2UuZ2V0KCksIGxvYWRlci0+
c3Vic3RpdHV0ZURhdGEoKS5pc1ZhbGlkKCksIGxvYWRlci0+Y2xpZW50UmVkaXJlY3RTb3VyY2VG
b3JIaXN0b3J5KCkpKTsKIAogICAgICAgICBoaXN0b3J5RGVsZWdhdGUtPmRpZE5hdmlnYXRlV2l0
aE5hdmlnYXRpb25EYXRhKHdlYlZpZXcsIG5hdmlnYXRpb25EYXRhLmdldCgpLCBtX3dlYkZyYW1l
KTsKICAgICAgICAgcmV0dXJuOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>