<?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>157706</bug_id>
          
          <creation_ts>2016-05-13 22:11:16 -0700</creation_ts>
          <short_desc>Update the list of elements attachShadow is allowed</short_desc>
          <delta_ts>2016-07-14 08:29:56 -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>DOM</component>
          <version>Other</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>
          <dependson>159767</dependson>
          <blocked>148695</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ryosuke Niwa">rniwa</reporter>
          <assigned_to name="Ryosuke Niwa">rniwa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>esprehn</cc>
    
    <cc>koivisto</cc>
    
    <cc>sam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1193054</commentid>
    <comment_count>0</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-13 22:11:16 -0700</bug_when>
    <thetext>The spec has updated the list of element on which attachShadow is allowed.
We should update our implementation accordingly to avoid the future compatibility issues.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1195114</commentid>
    <comment_count>1</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-05-20 02:02:44 -0700</bug_when>
    <thetext>*** Bug 157928 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198496</commentid>
    <comment_count>2</comment_count>
      <attachid>280320</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-06-02 01:50:36 -0700</bug_when>
    <thetext>Created attachment 280320
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1198498</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-02 01:52:30 -0700</bug_when>
    <thetext>Attachment 280320 did not pass style-queue:


ERROR: Source/WebCore/dom/Document.cpp:1129:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 10 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199217</commentid>
    <comment_count>4</comment_count>
      <attachid>280507</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-06-03 21:26:58 -0700</bug_when>
    <thetext>Created attachment 280507
Fixed GTK/Windows builds</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199218</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-03 21:29:56 -0700</bug_when>
    <thetext>Attachment 280507 did not pass style-queue:


ERROR: Source/WebCore/dom/Document.cpp:1129:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199222</commentid>
    <comment_count>6</comment_count>
      <attachid>280509</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-06-03 22:59:33 -0700</bug_when>
    <thetext>Created attachment 280509
Another build fix attempt</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199224</commentid>
    <comment_count>7</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-06-03 23:02:04 -0700</bug_when>
    <thetext>Attachment 280509 did not pass style-queue:


ERROR: Source/WebCore/dom/Document.cpp:1129:  Multi line control clauses should use braces.  [whitespace/braces] [4]
Total errors found: 1 in 11 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199260</commentid>
    <comment_count>8</comment_count>
      <attachid>280509</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-04 12:34:57 -0700</bug_when>
    <thetext>Comment on attachment 280509
Another build fix attempt

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

Did you change all the headers that you touched to pragma once? Would be nice to do that.

&gt; Source/WebCore/dom/Document.cpp:1124
&gt; +    for (unsigned i = 0; i &lt; localName.length(); i++) {
&gt; +        if (isASCIIUpper(localName[i]))
&gt; +            return CustomElementNameValidationStatus::ContainsUpperCase;
&gt; +        if (localName[i] == &apos;-&apos;)
&gt; +            containsHyphen = true;
&gt; +    }

More efficient not to call length() over and over again and index into the string over and over again.

Could use a couple local variables, or alternatively something like the StringView::codeUnits() iterator.

&gt; Source/WebCore/dom/Document.cpp:1138
&gt; +#if ENABLE(MATHML)
&gt; +        || localName == MathMLNames::annotation_xmlTag.localName()
&gt; +#endif

Seems like we might want to check this even if MathML was not turned on.

&gt; Source/WebCore/dom/Element.cpp:1714
&gt; +    static NeverDestroyed&lt;HashSet&lt;AtomicString&gt;&gt; tagNames;
&gt; +    if (tagNames.get().isEmpty()) {
&gt; +        const AtomicString nameList[] = {
&gt; +            articleTag.localName(),
&gt; +            asideTag.localName(),
&gt; +            blockquoteTag.localName(),
&gt; +            bodyTag.localName(),
&gt; +            divTag.localName(),
&gt; +            footerTag.localName(),
&gt; +            h1Tag.localName(),
&gt; +            h2Tag.localName(),
&gt; +            h3Tag.localName(),
&gt; +            h4Tag.localName(),
&gt; +            h5Tag.localName(),
&gt; +            h6Tag.localName(),
&gt; +            headerTag.localName(),
&gt; +            navTag.localName(),
&gt; +            pTag.localName(),
&gt; +            sectionTag.localName(),
&gt; +            spanTag.localName()
&gt; +        };
&gt; +        for (auto&amp; name : nameList)
&gt; +            tagNames.get().add(name);
&gt; +    }

This is not the best idiom, because we end up checking if the set is empty every time.

Also, we don’t want an array of reference counted local names. Instead we want an array of tags, ideally something that can be initialized without any code running.

Something like this:

    static NeverDestroyed&lt;HashSet&lt;AtomicString&gt;&gt; tagNames = [] {
        HashSet&lt;AtomicString&gt; set;
        const HTMLQualifiedName&amp; const tagList[] = {
            articleTag,
            ...
        };
        for (auto&amp; tag : tagList)
            set.add(tag());
        return set;
    };

&gt; Source/WebCore/dom/Element.cpp:1717
&gt; +    if (element.namespaceURI() != xhtmlNamespaceURI)
&gt; +        return false;

I believe it’s more efficient to just check is&lt;HTMLElement&gt;, and I am pretty sure it accomplishes the same thing.

&gt; Source/WebCore/dom/Element.cpp:1719
&gt; +    return tagNames.get().contains(element.localName()) || Document::validateCustomElementName(element.localName()) == CustomElementNameValidationStatus::Valid;

I suggest putting element.localName() into a local variable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199261</commentid>
    <comment_count>9</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-06-04 12:35:44 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt;         const HTMLQualifiedName&amp; const tagList[] = {

Actually I think this:

    static const HTMLQualifiedName&amp; const tagList[] = {</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199891</commentid>
    <comment_count>10</comment_count>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2016-06-06 21:00:44 -0700</bug_when>
    <thetext>Committed r201739: &lt;http://trac.webkit.org/changeset/201739&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1199892</commentid>
    <comment_count>11</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-06-06 21:10:30 -0700</bug_when>
    <thetext>&lt;rdar://problem/26666315&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280320</attachid>
            <date>2016-06-02 01:50:36 -0700</date>
            <delta_ts>2016-06-03 21:26:54 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-157706-20160602015155.patch</filename>
            <type>text/plain</type>
            <size>28781</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTU5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE2LTA2LTAyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVwZGF0ZSB0aGUgbGlzdCBvZiBl
bGVtZW50cyBhdHRhY2hTaGFkb3cgaXMgYWxsb3dlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSBsaXN0IG9mIGVsZW1lbnRzIG9uIHdo
aWNoIGF0dGFjaFNoYWRvdyBpcyBhbGxvd2VkIHBlciB0aGUgbGF0ZXN0IHNoYWRvdyBET00gc3Bl
YzoKKyAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvc2hhZG93LWRvbS8jd2lkbC1FbGVtZW50
LWF0dGFjaFNoYWRvdy1TaGFkb3dSb290LVNoYWRvd1Jvb3RJbml0LXNoYWRvd1Jvb3RJbml0RGlj
dAorICAgICAgICB3aGljaCBub3cgb25seSBhbGxvd3MgYXR0YWNoU2hhZG93IG9uIHRoZSBmb2xs
b3dpbmcgZWxlbWVudHMgYW5kIGN1c3RvbSBlbGVtZW50czoKKyAgICAgICAgYnV0dG9uLCBkZXRh
aWxzLCBpbnB1dCwgbWFycXVlZSwgbWV0ZXIsIHByb2dyZXNzLCBzZWxlY3QsIHRleHRhcmVhLCBr
ZXlnZW4KKworICAgICAgICBJbiBvcmRlciB0byBjaGVjayB0aGF0IGEgZ2l2ZW4gSFRNTCBlbGVt
ZW50J3MgbG9jYWwgbmFtZSBpcyBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IG5hbWUsCisgICAgICAg
IHRoaXMgcGF0Y2ggbW92ZXMgQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpjaGVja05hbWUgdG8g
RG9jdW1lbnQ6OnZhbGlkYXRlQ3VzdG9tRWxlbWVudE5hbWUgc28gdGhhdAorICAgICAgICBpdCBj
b3VsZCBiZSB1c2VkIHdoZW4gZWl0aGVyIFNIQURPV19ET00gb3IgQ1VTVE9NX0VMRU1FTlRTIGJ1
aWxkIGZsYWcgaXMgdHVybmVkIG9uLgorCisgICAgICAgIEFsc28gcmVtb3ZlZCBFbGVtZW50Ojpj
YW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCBzaW5jZSBpdCB3YXMgb25seSB1c2VkIGluIEVsZW1l
bnQ6OmF0dGFjaFNoYWRvdy4KKworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vRWxlbWVu
dC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93Lmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6ZGVmaW5l
RWxlbWVudCk6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6OmNoZWNrTmFtZSk6IE1v
dmVkIHRvIERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lLgorICAgICAgICAqIGRv
bS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZSk6IE1vdmVkIGZy
b20gQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpjaGVja05hbWUuCisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FuQXR0YWNoQXV0aG9yU2hhZG93Um9vdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6YXR0YWNoU2hhZG93KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTEtleWdlbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTE1ldGVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxRdW90ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxU
YWdOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxVbmtub3duRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rp
b25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UpOgor
CiAyMDE2LTA2LTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbV2F5bGFuZF0gUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBkZXN0cnVjdG9yIGlz
IHN1cGVyIGNyYXNoeQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
b2N1bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsMTQg
KzE1OCwxNCBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmRlZmluZUVsZW1lbnQoRXhlY1N0CiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAotICAgIHN3aXRjaCAoQ3VzdG9tRWxl
bWVudERlZmluaXRpb25zOjpjaGVja05hbWUodGFnTmFtZSkpIHsKLSAgICBjYXNlIEN1c3RvbUVs
ZW1lbnREZWZpbml0aW9uczo6TmFtZVN0YXR1czo6VmFsaWQ6CisgICAgc3dpdGNoIChEb2N1bWVu
dDo6dmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZSh0YWdOYW1lKSkgeworICAgIGNhc2UgQ3VzdG9t
RWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZDoKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6Ok5hbWVTdGF0dXM6OkNvbmZsaWN0c1dpdGhC
dWlsdGluTmFtZXM6CisgICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6
OkNvbmZsaWN0c1dpdGhCdWlsdGluTmFtZXM6CiAgICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVy
cm9yKCZzdGF0ZSwgIkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGJlIHNhbWUgYXMgb25lIG9m
IHRoZSBidWlsdGluIGVsZW1lbnRzIik7Ci0gICAgY2FzZSBDdXN0b21FbGVtZW50RGVmaW5pdGlv
bnM6Ok5hbWVTdGF0dXM6Ok5vSHlwaGVuOgorICAgIGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxp
ZGF0aW9uU3RhdHVzOjpOb0h5cGhlbjoKICAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3Io
JnN0YXRlLCAiQ3VzdG9tIGVsZW1lbnQgbmFtZSBtdXN0IGNvbnRhaW4gYSBoeXBoZW4iKTsKLSAg
ICBjYXNlIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6TmFtZVN0YXR1czo6Q29udGFpbnNVcHBl
ckNhc2U6CisgICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OkNvbnRh
aW5zVXBwZXJDYXNlOgogICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcigmc3RhdGUsICJD
dXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBjb250YWluIGFuIHVwcGVyIGNhc2UgbGV0dGVyIik7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudERlZmluaXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudERl
ZmluaXRpb25zLmNwcAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnREZWZpbml0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDM2ICszOSw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpO
YW1lU3RhdHVzIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6Y2hlY2tOYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFnTmFtZSkKLXsKLSAgICBib29sIGNvbnRhaW5zSHlwaGVuID0gZmFsc2U7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhZ05hbWUubGVuZ3RoKCk7IGkrKykgewotICAg
ICAgICBpZiAoaXNBU0NJSVVwcGVyKHRhZ05hbWVbaV0pKQotICAgICAgICAgICAgcmV0dXJuIE5h
bWVTdGF0dXM6OkNvbnRhaW5zVXBwZXJDYXNlOwotICAgICAgICBpZiAodGFnTmFtZVtpXSA9PSAn
LScpCi0gICAgICAgICAgICBjb250YWluc0h5cGhlbiA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYg
KCFjb250YWluc0h5cGhlbikKLSAgICAgICAgcmV0dXJuIE5hbWVTdGF0dXM6Ok5vSHlwaGVuOwot
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSB0YWtpbmcgdGhlIGFkdmFudGFnZSBvZiBRdWFs
aWZpZWROYW1lcyBpbiBTVkcgYW5kIE1hdGhNTC4KLSAgICBpZiAodGFnTmFtZSA9PSBTVkdOYW1l
czo6Y29sb3JfcHJvZmlsZVRhZy5sb2NhbE5hbWUoKQotICAgICAgICB8fCB0YWdOYW1lID09IFNW
R05hbWVzOjpmb250X2ZhY2VUYWcubG9jYWxOYW1lKCkKLSAgICAgICAgfHwgdGFnTmFtZSA9PSBT
VkdOYW1lczo6Zm9udF9mYWNlX2Zvcm1hdFRhZy5sb2NhbE5hbWUoKQotICAgICAgICB8fCB0YWdO
YW1lID09IFNWR05hbWVzOjpmb250X2ZhY2VfbmFtZVRhZy5sb2NhbE5hbWUoKQotICAgICAgICB8
fCB0YWdOYW1lID09IFNWR05hbWVzOjpmb250X2ZhY2Vfc3JjVGFnLmxvY2FsTmFtZSgpCi0gICAg
ICAgIHx8IHRhZ05hbWUgPT0gU1ZHTmFtZXM6OmZvbnRfZmFjZV91cmlUYWcubG9jYWxOYW1lKCkK
LSAgICAgICAgfHwgdGFnTmFtZSA9PSBTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZy5sb2NhbE5h
bWUoKQotI2lmIEVOQUJMRShNQVRITUwpCi0gICAgICAgIHx8IHRhZ05hbWUgPT0gTWF0aE1MTmFt
ZXM6OmFubm90YXRpb25feG1sVGFnLmxvY2FsTmFtZSgpCi0jZW5kaWYKLSAgICAgICAgKQotICAg
ICAgICByZXR1cm4gTmFtZVN0YXR1czo6Q29uZmxpY3RzV2l0aEJ1aWx0aW5OYW1lczsKLQotICAg
IHJldHVybiBOYW1lU3RhdHVzOjpWYWxpZDsKLX0KLQogdm9pZCBDdXN0b21FbGVtZW50RGVmaW5p
dGlvbnM6OmFkZEVsZW1lbnREZWZpbml0aW9uKFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+
JiYgaW50ZXJmYWNlKQogewogICAgIEF0b21pY1N0cmluZyBsb2NhbE5hbWUgPSBpbnRlcmZhY2Ut
Pm5hbWUoKS5sb2NhbE5hbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVt
ZW50RGVmaW5pdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudERlZmluaXRpb25zLmgJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsOSAr
NTYsNiBAQCBwdWJsaWM6CiAgICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBmaW5kSW50ZXJm
YWNlKGNvbnN0IEpTQzo6SlNPYmplY3QqKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ29uc3Ry
dWN0b3IoY29uc3QgSlNDOjpKU09iamVjdCopIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBOYW1l
U3RhdHVzIHsgVmFsaWQsIENvbmZsaWN0c1dpdGhCdWlsdGluTmFtZXMsIE5vSHlwaGVuLCBDb250
YWluc1VwcGVyQ2FzZSB9OwotICAgIHN0YXRpYyBOYW1lU3RhdHVzIGNoZWNrTmFtZShjb25zdCBB
dG9taWNTdHJpbmcmIHRhZ05hbWUpOwotCiBwcml2YXRlOgogICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+Pj4gbV91cGdyYWRlQ2FuZGlkYXRlc01hcDsKICAg
ICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmUHRyPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4+
IG1fbmFtZU1hcDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjAxNTkx
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODg5LDcgKzg4OSw3IEBAIHN0YXRpYyBSZWZQdHI8RWxlbWVudD4gY3JlYXRlSFRNTEVsZW1lbnQK
ICAgICBRdWFsaWZpZWROYW1lIHF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgeGh0
bWxOYW1lc3BhY2VVUkkpOwogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKLSAgICBpZiAo
Q3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpjaGVja05hbWUobG9jYWxOYW1lKSA9PSBDdXN0b21F
bGVtZW50RGVmaW5pdGlvbnM6Ok5hbWVTdGF0dXM6OlZhbGlkKSB7CisgICAgaWYgKERvY3VtZW50
Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGxvY2FsTmFtZSkgPT0gQ3VzdG9tRWxlbWVudE5h
bWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZCkgewogICAgICAgICBSZWY8SFRNTEVsZW1lbnQ+IGVs
ZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHF1YWxpZmllZE5hbWUsIGRvY3VtZW50KTsKICAg
ICAgICAgZWxlbWVudC0+c2V0SXNVbnJlc29sdmVkQ3VzdG9tRWxlbWVudCgpOwogICAgICAgICBk
b2N1bWVudC5lbnN1cmVDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMoKS5hZGRVcGdyYWRlQ2FuZGlk
YXRlKGVsZW1lbnQuZ2V0KCkpOwpAQCAtMTA3NCw3ICsxMDc0LDcgQEAgc3RhdGljIFJlZjxIVE1M
RWxlbWVudD4gY3JlYXRlRmFsbGJhY2tIVAogICAgICAgICB9CiAgICAgfQogICAgIC8vIEZJWE1F
OiBTaG91bGQgd2UgYWxzbyBjaGVjayB0aGUgZXF1YWxpdHkgb2YgcHJlZml4IGJldHdlZW4gdGhl
IGN1c3RvbSBlbGVtZW50IGFuZCBuYW1lPwotICAgIGlmIChDdXN0b21FbGVtZW50RGVmaW5pdGlv
bnM6OmNoZWNrTmFtZShuYW1lLmxvY2FsTmFtZSgpKSA9PSBDdXN0b21FbGVtZW50RGVmaW5pdGlv
bnM6Ok5hbWVTdGF0dXM6OlZhbGlkKSB7CisgICAgaWYgKERvY3VtZW50Ojp2YWxpZGF0ZUN1c3Rv
bUVsZW1lbnROYW1lKG5hbWUubG9jYWxOYW1lKCkpID09IEN1c3RvbUVsZW1lbnROYW1lVmFsaWRh
dGlvblN0YXR1czo6VmFsaWQpIHsKICAgICAgICAgUmVmPEhUTUxFbGVtZW50PiBlbGVtZW50ID0g
SFRNTEVsZW1lbnQ6OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7CiAgICAgICAgIGVsZW1lbnQtPnNl
dElzVW5yZXNvbHZlZEN1c3RvbUVsZW1lbnQoKTsKICAgICAgICAgZG9jdW1lbnQuZW5zdXJlQ3Vz
dG9tRWxlbWVudERlZmluaXRpb25zKCkuYWRkVXBncmFkZUNhbmRpZGF0ZShlbGVtZW50LmdldCgp
KTsKQEAgLTExMTIsNiArMTExMiwzNyBAQCBSZWY8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVs
ZW1lbnQoY29uCiAgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKTsKIH0KIAorI2lm
IEVOQUJMRShDVVNUT01fRUxFTUVOVFMpIHx8IEVOQUJMRShTSEFET1dfRE9NKQorQ3VzdG9tRWxl
bWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzIERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnRO
YW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQoreworICAgIGJvb2wgY29udGFpbnNI
eXBoZW4gPSBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9jYWxOYW1lLmxl
bmd0aCgpOyBpKyspIHsKKyAgICAgICAgaWYgKGlzQVNDSUlVcHBlcihsb2NhbE5hbWVbaV0pKQor
ICAgICAgICAgICAgcmV0dXJuIEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6Q29u
dGFpbnNVcHBlckNhc2U7CisgICAgICAgIGlmIChsb2NhbE5hbWVbaV0gPT0gJy0nKQorICAgICAg
ICAgICAgY29udGFpbnNIeXBoZW4gPSB0cnVlOworICAgIH0KKworICAgIGlmICghY29udGFpbnNI
eXBoZW4pCisgICAgICAgIHJldHVybiBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6
Ok5vSHlwaGVuOworCisgICAgaWYgKGxvY2FsTmFtZSA9PSBTVkdOYW1lczo6Y29sb3JfcHJvZmls
ZVRhZy5sb2NhbE5hbWUoKQorICAgICAgICB8fCBsb2NhbE5hbWUgPT0gU1ZHTmFtZXM6OmZvbnRf
ZmFjZVRhZy5sb2NhbE5hbWUoKQorICAgICAgICB8fCBsb2NhbE5hbWUgPT0gU1ZHTmFtZXM6OmZv
bnRfZmFjZV9mb3JtYXRUYWcubG9jYWxOYW1lKCkKKyAgICAgICAgfHwgbG9jYWxOYW1lID09IFNW
R05hbWVzOjpmb250X2ZhY2VfbmFtZVRhZy5sb2NhbE5hbWUoKQorICAgICAgICB8fCBsb2NhbE5h
bWUgPT0gU1ZHTmFtZXM6OmZvbnRfZmFjZV9zcmNUYWcubG9jYWxOYW1lKCkKKyAgICAgICAgfHwg
bG9jYWxOYW1lID09IFNWR05hbWVzOjpmb250X2ZhY2VfdXJpVGFnLmxvY2FsTmFtZSgpCisgICAg
ICAgIHx8IGxvY2FsTmFtZSA9PSBTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZy5sb2NhbE5hbWUo
KQorI2lmIEVOQUJMRShNQVRITUwpCisgICAgICAgIHx8IGxvY2FsTmFtZSA9PSBNYXRoTUxOYW1l
czo6YW5ub3RhdGlvbl94bWxUYWcubG9jYWxOYW1lKCkKKyNlbmRpZgorICAgICAgICApCisgICAg
ICAgIHJldHVybiBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OkNvbmZsaWN0c1dp
dGhCdWlsdGluTmFtZXM7CisKKyAgICByZXR1cm4gQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9u
U3RhdHVzOjpWYWxpZDsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkK
IGJvb2wgRG9jdW1lbnQ6OmlzQ1NTR3JpZExheW91dEVuYWJsZWQoKSBjb25zdAogewpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNiArMjgxLDggQEAgZW51bSBjbGFz
cyBIdHRwRXF1aXZQb2xpY3kgewogICAgIERpc2FibGVkQnlDb250ZW50RGlzcG9zaXRpb25BdHRh
Y2htZW50U2FuZGJveAogfTsKIAorZW51bSBjbGFzcyBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRp
b25TdGF0dXMgeyBWYWxpZCwgQ29uZmxpY3RzV2l0aEJ1aWx0aW5OYW1lcywgTm9IeXBoZW4sIENv
bnRhaW5zVXBwZXJDYXNlIH07CisKIGNsYXNzIERvY3VtZW50CiAgICAgOiBwdWJsaWMgQ29udGFp
bmVyTm9kZQogICAgICwgcHVibGljIFRyZWVTY29wZQpAQCAtMzg3LDYgKzM4OSwxMCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnROUyhj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAorI2lm
IEVOQUJMRShDVVNUT01fRUxFTUVOVFMpIHx8IEVOQUJMRShTSEFET1dfRE9NKQorICAgIHN0YXRp
YyBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXMgdmFsaWRhdGVDdXN0b21FbGVtZW50
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19HUklE
X0xBWU9VVCkKICAgICBib29sIGlzQ1NTR3JpZExheW91dEVuYWJsZWQoKSBjb25zdDsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjg1LDE0ICsxNjg1
LDQyIEBAIFJlZlB0cjxTaGFkb3dSb290PiBFbGVtZW50OjpjcmVhdGVTaGFkb3cKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBFbGVtZW50OjpjYW5IYXZlVXNlckFnZW50U2hhZG93Um9v
dCgpIGNvbnN0CitzdGF0aWMgYm9vbCBjYW5BdHRhY2hBdXRob3JTaGFkb3dSb290KGNvbnN0IEVs
ZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGZhbHNlOworICAgIHN0YXRpYyBOZXZlckRl
c3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IHRhZ05hbWVzOworICAgIGlmICh0YWdOYW1l
cy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29uc3QgQXRvbWljU3RyaW5nIG5hbWVMaXN0
W10gPSB7CisgICAgICAgICAgICBhcnRpY2xlVGFnLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAg
YXNpZGVUYWcubG9jYWxOYW1lKCksCisgICAgICAgICAgICBibG9ja3F1b3RlVGFnLmxvY2FsTmFt
ZSgpLAorICAgICAgICAgICAgYm9keVRhZy5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIGRpdlRh
Zy5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIGZvb3RlclRhZy5sb2NhbE5hbWUoKSwKKyAgICAg
ICAgICAgIGgxVGFnLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAgaDJUYWcubG9jYWxOYW1lKCks
CisgICAgICAgICAgICBoM1RhZy5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIGg0VGFnLmxvY2Fs
TmFtZSgpLAorICAgICAgICAgICAgaDVUYWcubG9jYWxOYW1lKCksCisgICAgICAgICAgICBoNlRh
Zy5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIGhlYWRlclRhZy5sb2NhbE5hbWUoKSwKKyAgICAg
ICAgICAgIG5hdlRhZy5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIHBUYWcubG9jYWxOYW1lKCks
CisgICAgICAgICAgICBzZWN0aW9uVGFnLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAgc3BhblRh
Zy5sb2NhbE5hbWUoKQorICAgICAgICB9OworICAgICAgICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1l
TGlzdCkKKyAgICAgICAgICAgIHRhZ05hbWVzLmdldCgpLmFkZChuYW1lKTsKKyAgICB9CisKKyAg
ICBpZiAoZWxlbWVudC5uYW1lc3BhY2VVUkkoKSAhPSB4aHRtbE5hbWVzcGFjZVVSSSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRhZ05hbWVzLmdldCgpLmNvbnRhaW5zKGVs
ZW1lbnQubG9jYWxOYW1lKCkpIHx8IERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1l
KGVsZW1lbnQubG9jYWxOYW1lKCkpID09IEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1
czo6VmFsaWQ7CiB9CiAKIFJlZlB0cjxTaGFkb3dSb290PiBFbGVtZW50OjphdHRhY2hTaGFkb3co
Y29uc3QgU2hhZG93Um9vdEluaXQmIGluaXQsIEV4Y2VwdGlvbkNvZGUmIGVjKQogewotICAgIGlm
IChjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpKSB7CisgICAgaWYgKCFjYW5BdHRhY2hBdXRo
b3JTaGFkb3dSb290KCp0aGlzKSkgewogICAgICAgICBlYyA9IE5PVF9TVVBQT1JURURfRVJSOwog
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHJl
dmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTU5NCw3ICs1OTQsNiBAQCBwcml2YXRlOgogICAgIFJlZjxOb2RlPiBjbG9uZU5v
ZGVJbnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgUmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRyaWJ1dGVzQW5kQ2hpbGRy
ZW4oRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93
Um9vdCgpIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdCgpOwogCiAgICAgY29uc3Qg
UmVuZGVyU3R5bGUqIGV4aXN0aW5nQ29tcHV0ZWRTdHlsZSgpOwpJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Miw3ICs1
Miw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBIVE1MRm9ybUNvbnRyb2xFbGVtZW50IGFsd2F5cyBj
cmVhdGVzIG9uZSwgYnV0IGJ1dHRvbnMgZG9uJ3QgbmVlZCBpdC4KICAgICBib29sIGFsd2F5c0Ny
ZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBmYWxzZTsg
fQotICAgIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBmaW5hbCB7IHJl
dHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICBib29sIGlzUHJlc2VudGF0
aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBvdmVycmlkZTsKSW5kZXg6
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaAkocmV2aXNpb24gMjAxNTkx
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNyArNDIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogCiAg
ICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsK
LSAgICBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgbV9pc09wZW4geyBmYWxzZSB9OwpJbmRleDogU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0z
MzMsNyArMzMzLDYgQEAgcHJpdmF0ZToKICAgICBlbnVtIEF1dG9Db21wbGV0ZVNldHRpbmcgeyBV
bmluaXRpYWxpemVkLCBPbiwgT2ZmIH07CiAKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRv
d1Jvb3QoU2hhZG93Um9vdCopIGZpbmFsOwotICAgIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRv
d1Jvb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHdpbGxDaGFu
Z2VGb3JtKCkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VGb3JtKCkgZmluYWw7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oCShyZXZpc2lvbiAyMDE1OTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTU1LDggKzU1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0KCkgb3ZlcnJpZGU7CiAg
ICAgYm9vbCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3RhdGUoKSBjb25zdCBvdmVy
cmlkZTsKIAotICAgIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBmaW5h
bCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBib29sIGlzS2V5dHlwZVJTQSgpIGNvbnN0OwogCiAg
ICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNoYWRvd1NlbGVjdCgpIGNvbnN0OwpJbmRleDogU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCShyZXZpc2lvbiAyMDE1OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBA
IC02Miw4ICs2Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXN1bWUoKSBvdmVycmlkZTsKICAg
ICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1
cm4gIkhUTUxNYXJxdWVlRWxlbWVudCI7IH0KIAotICAgIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNo
YWRvd1Jvb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBSZW5kZXJNYXJx
dWVlKiByZW5kZXJNYXJxdWVlKCkgY29uc3Q7CiB9OwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTUwNCw5ICs1MDQsNiBA
QCBwcml2YXRlOgogCiAgICAgYm9vbCBhbHdheXNDcmVhdGVVc2VyQWdlbnRTaGFkb3dSb290KCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgLy8gRklYTUU6IFNoYWRvdyBE
T00gc3BlYyBzYXlzIHdlIHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBzaGFkb3cgcm9vdCBvbiBh
dWRpbyBhbmQgdmlkZW8gZWxlbWVudHMKLSAgICBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dS
b290KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAgYm9vbCBzdXBwb3J0c0Zv
Y3VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01vdXNlRm9jdXNhYmxlKCkgY29uc3Qg
b3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJikg
b3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRlckVsZW1lbnQuaAkocmV2
aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWV0ZXJFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlk
RWxlbWVudFN0YXRlQ2hhbmdlKCk7CiAgICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290
KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKLSAgICBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dS
b290KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgUmVmUHRyPE1ldGVyVmFs
dWVFbGVtZW50PiBtX3ZhbHVlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBs
dWdJbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVn
SW5FbGVtZW50LmgJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFBsdWdJbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDkgKzExNyw2IEBAIHByaXZh
dGU6CiAKICAgICBib29sIGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNvbnN0IFN0cmluZyYgc291
cmNlVVJMKTsgLy8gTm90IGltcGxlbWVudGVkLCBnZW5lcmF0ZXMgYSBjb21waWxlIGVycm9yIGlm
IHN1YmNsYXNzZXMgY2FsbCB0aGlzIGJ5IG1pc3Rha2UuCiAKLSAgICAvLyBGSVhNRTogU2hhZG93
IERPTSBzcGVjIHNheXMgd2Ugc2hvdWxkIGJlIGFibGUgdG8gY3JlYXRlIHNoYWRvdyByb290IG9u
IGFwcGxldCwgZW1iZWQsIGFuZCBvYmplY3QuCi0gICAgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hh
ZG93Um9vdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIC8vIFRoaXMgd2ls
bCBsb2FkIHRoZSBwbHVnaW4gaWYgbmVjZXNzYXJ5LgogICAgIHZpcnR1YWwgUmVuZGVyV2lkZ2V0
KiByZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgY29uc3QgPSAwOwogCkluZGV4OiBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaAkocmV2aXNpb24gMjAxNTkxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTYyLDcgKzYyLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkRWxlbWVudFN0YXRlQ2hh
bmdlKCk7CiAgICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBv
dmVycmlkZTsKLSAgICBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNEZXRlcm1pbmF0ZSgpIGNvbnN0OwogCiAg
ICAgUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQqIG1fdmFsdWU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxRdW90ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1s
L0hUTUxRdW90ZUVsZW1lbnQuaAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUXVvdGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1LDcgKzM1LDcgQEAg
cHVibGljOgogCiBwcml2YXRlOgogICAgIEhUTUxRdW90ZUVsZW1lbnQoY29uc3QgUXVhbGlmaWVk
TmFtZSYsIERvY3VtZW50Jik7Ci0gICAgCisKICAgICBib29sIGlzVVJMQXR0cmlidXRlKGNvbnN0
IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTksOCArMTE5
LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIGNhblN0YXJ0U2VsZWN0aW9uKCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRv
d1Jvb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBib29sIGlzRW51bWVy
YXRhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgc3VwcG9ydExh
YmVscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApJbmRleDogU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCShyZXZpc2lvbiAyMDE1OTEpCisrKyBTb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00Miw4
ICs0Miw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3Qo
U2hhZG93Um9vdCopIG92ZXJyaWRlOwogCi0gICAgLy8gRklYTUU6IFNoYWRvdyBET00gc3BlYyBz
YXlzIHdlIHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBzaGFkb3cgcm9vdCBvbiB0aGlzIGVsZW1l
bnQKLSAgICBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEhUTUxEZXRhaWxzRWxlbWVudCogZGV0YWlsc0VsZW1l
bnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVzLmluCShyZXZpc2lv
biAyMDE1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdOYW1lcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQCBjb2RlIGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQK
IGNvbCBpbnRlcmZhY2VOYW1lPUhUTUxUYWJsZUNvbEVsZW1lbnQKIGNvbGdyb3VwIGludGVyZmFj
ZU5hbWU9SFRNTFRhYmxlQ29sRWxlbWVudAogY29tbWFuZCBpbnRlcmZhY2VOYW1lPUhUTUxFbGVt
ZW50Ci13ZWJraXRTaGFkb3dDb250ZW50IGludGVyZmFjZU5hbWU9SFRNTEVsZW1lbnQsIG5vQ29u
c3RydWN0b3IKIGRhdGEKIGRhdGFsaXN0IGludGVyZmFjZU5hbWU9SFRNTERhdGFMaXN0RWxlbWVu
dCwgY29uZGl0aW9uYWw9REFUQUxJU1RfRUxFTUVOVAogZGQgaW50ZXJmYWNlTmFtZT1IVE1MRWxl
bWVudApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFyZWFFbGVtZW50LmgJKHJl
dmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRleHRBcmVhRWxlbWVu
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw2IEBAIHByaXZhdGU6CiAgICAgZW51bSBX
cmFwTWV0aG9kIHsgTm9XcmFwLCBTb2Z0V3JhcCwgSGFyZFdyYXAgfTsKIAogICAgIHZvaWQgZGlk
QWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7Ci0gICAgYm9vbCBj
YW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0K
IAogICAgIHZvaWQgbWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25zdCBBdG9taWNTdHJpbmcm
IG5ld1ZhbHVlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVW5rbm93bkVsZW1l
bnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVbmtub3duRWxlbWVu
dC5oCShyZXZpc2lvbiAyMDE1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxVbmtub3du
RWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMiArNDcsNiBAQCBwcml2YXRlOgogICAg
IHsKICAgICB9CiAKLSNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKLSAgICBib29sIGNhbkhhdmVV
c2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KLSNlbHNl
Ci0gICAgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIGxvY2FsTmFtZSgpID09ICJtZXRlciI7IH0KLSNlbmRpZgotCiAgICAgYm9vbCBpc0hUTUxV
bmtub3duRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KIH07CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MQ29uc3RydWN0aW9u
U2l0ZS5jcHAJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2Vy
L0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNjczLDcgKzY3Myw3
IEBAIFJlZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6Y3IKIAogICAgICAgICBR
dWFsaWZpZWROYW1lIHF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgeGh0bWxOYW1l
c3BhY2VVUkkpOwogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCi0gICAgICAgIGlmIChDdXN0
b21FbGVtZW50RGVmaW5pdGlvbnM6OmNoZWNrTmFtZShsb2NhbE5hbWUpID09IEN1c3RvbUVsZW1l
bnREZWZpbml0aW9uczo6TmFtZVN0YXR1czo6VmFsaWQpIHsKKyAgICAgICAgaWYgKERvY3VtZW50
Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGxvY2FsTmFtZSkgPT0gQ3VzdG9tRWxlbWVudE5h
bWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZCkgewogICAgICAgICAgICAgZWxlbWVudCA9IEhUTUxF
bGVtZW50OjpjcmVhdGUocXVhbGlmaWVkTmFtZSwgb3duZXJEb2N1bWVudCk7CiAgICAgICAgICAg
ICBlbGVtZW50LT5zZXRJc1VucmVzb2x2ZWRDdXN0b21FbGVtZW50KCk7CiAgICAgICAgICAgICBv
d25lckRvY3VtZW50LmVuc3VyZUN1c3RvbUVsZW1lbnREZWZpbml0aW9ucygpLmFkZFVwZ3JhZGVD
YW5kaWRhdGUoKmVsZW1lbnQpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAxNTkxKQorKysgTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTYtMDYt
MDIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAgICAgICAgVXBkYXRlIHRo
ZSBsaXN0IG9mIGVsZW1lbnRzIGF0dGFjaFNoYWRvdyBpcyBhbGxvd2VkCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc3MDYKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBtb3JlIHRlc3QgY2FzZXMg
Zm9yIHZhbGlkYXRpbmcgZWxlbWVudHMgb24gd2hpY2ggYXR0YWNoU2hhZG93IGlzIGFsbG93ZWQg
YW5kIGRpc2FsbG93ZWQuCisKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1kb20vRWxlbWVudC1pbnRl
cmZhY2UtYXR0YWNoU2hhZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1k
b20vRWxlbWVudC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93Lmh0bWw6CisKIDIwMTYtMDYtMDEgIEJl
bmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gU29t
ZSBzZXR0ZXJzIGZvciBjb21wb25lbnRzIG9mIERhdGUgZG8gbm90IHRpbWVDbGlwKCkgdGhlaXIg
cmVzdWx0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vRWxlbWVudC1pbnRlcmZh
Y2UtYXR0YWNoU2hhZG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9m
YXN0L3NoYWRvdy1kb20vRWxlbWVudC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93LWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMjAxNTkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL0VsZW1l
bnQtaW50ZXJmYWNlLWF0dGFjaFNoYWRvdy1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTQsNSArNCw4IEBAIFBBU1MgTm9kZXMgb3RoZXIgdGhhbiBFbGVtZW50IHNob3VsZCBub3QKIFBB
U1MgRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBhIFR5cGVFcnJvciBpZiBtb2RlIGlz
IG5vdCAib3BlbiIgb3IgImNsb3NlZCIgCiBQQVNTIEVsZW1lbnQuYXR0YWNoU2hhZG93IG11c3Qg
Y3JlYXRlIGFuIGluc3RhbmNlIG9mIFNoYWRvd1Jvb3QgCiBQQVNTIEVsZW1lbnQuYXR0YWNoU2hh
ZG93IG11c3QgdGhyb3cgYSBJbnZhbGlkU3RhdGVFcnJvciBpZiB0aGUgY29udGV4dCBvYmplY3Qg
YWxyZWFkeSBob3N0cyBhIHNoYWRvdyB0cmVlIAotUEFTUyBFbGVtZW50LmF0dGFjaFNoYWRvdyBt
dXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3IgZm9yIGJ1dHRvbiwgZGV0YWlscywgaW5wdXQs
IG1hcnF1ZWUsIG1ldGVyLCBwcm9ncmVzcywgc2VsZWN0LCB0ZXh0YXJlYSwgYW5kIGtleWdlbiBl
bGVtZW50cyAKK1BBU1MgRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBhIE5vdFN1cHBv
cnRlZEVycm9yIG9uIEhUTUwgZWxlbWVudHMgd2hvc2UgbG9jYWwgbmFtZSBpcyBub3Qgb25lIG9m
IGFydGljbGUsIGFzaWRlLCBibG9ja3F1b3RlLCBib2R5LCBkaXYsIGZvb3RlciwgaDEsIGgyLCBo
MywgaDQsIGg1LCBoNiwgaGVhZGVyLCBuYXYsIHAsIHNlY3Rpb24sIHNwYW4gCitQQVNTIEVsZW1l
bnQuYXR0YWNoU2hhZG93IG11c3Qgbm90IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igb24gYXJ0
aWNsZSwgYXNpZGUsIGJsb2NrcXVvdGUsIGJvZHksIGRpdiwgZm9vdGVyLCBoMSwgaDIsIGgzLCBo
NCwgaDUsIGg2LCBoZWFkZXIsIG5hdiwgcCwgc2VjdGlvbiwgc3BhbiAKK1BBU1MgRWxlbWVudC5h
dHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIG9uIGEgSFRNTEtub3du
RWxlbWVudCB3aGljaCBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgCitQQVNT
IEVsZW1lbnQuYXR0YWNoU2hhZG93IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciBvbiBh
IEhUTUxLbm93bkVsZW1lbnQgd2hpY2ggaGFzIGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQgCiAKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9FbGVtZW50LWludGVyZmFjZS1hdHRhY2hT
aGFkb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vRWxl
bWVudC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93Lmh0bWwJKHJldmlzaW9uIDIwMTU5MSkKKysrIExh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9FbGVtZW50LWludGVyZmFjZS1hdHRhY2hTaGFkb3cu
aHRtbAkod29ya2luZyBjb3B5KQpAQCAtNzgsOCArNzgsMjIgQEAgdGVzdChmdW5jdGlvbiAoKSB7
CiAgICAgfSwgJ0NhbGxpbmcgYXR0YWNoU2hhZG93KHttb2RlOiAib3BlbiJ9KSBhZnRlciBhdHRh
Y2hTaGFkb3coe21vZGU6ICJjbG9zZWQifSkgb24gdGhlIHNhbWUgZWxlbWVudCBtdXN0IHRocm93
Jyk7CiB9LCAnRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBhIEludmFsaWRTdGF0ZUVy
cm9yIGlmIHRoZSBjb250ZXh0IG9iamVjdCBhbHJlYWR5IGhvc3RzIGEgc2hhZG93IHRyZWUnKTsK
IAordmFyIGh0bWxFbGVtZW50TmFtZXMgPSBbJ2EnLCAnYWJicicsICdhY3JvbnltJywgJ2FkZHJl
c3MnLCAnYXBwbGV0JywgJ2FyZWEnLCAnYXJ0aWNsZScsICdhc2lkZScsICdhdWRpbycsICdiJywg
J2Jhc2UnLCAnYmFzZWZvbnQnLCAnYmRpJywKKyAgICAnYmRvJywgJ2Jnc291bmQnLCAnYmlnJywg
J2Jsb2NrcXVvdGUnLCAnYm9keScsICdicicsICdidXR0b24nLCAnY2FudmFzJywgJ2NhcHRpb24n
LCAnY2VudGVyJywgJ2NpdGUnLCAnY29kZScsICdjb2wnLCAnY29sZ3JvdXAnLAorICAgICdjb21t
YW5kJywgJ2RhdGEnLCAnZGF0YWxpc3QnLCAnZGQnLCAnZGVsJywgJ2RldGFpbHMnLCAnZGZuJywg
J2RpcicsICdkaXYnLCAnZGwnLCAnZHQnLCAnZW0nLCAnZW1iZWQnLCAnZmllbGRzZXQnLCAnZmln
Y2FwdGlvbicsCisgICAgJ2ZpZ3VyZScsICdmb250JywgJ2Zvb3RlcicsICdmb3JtJywgJ2ZyYW1l
JywgJ2ZyYW1lc2V0JywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1JywgJ2g2JywgJ2hlYWQn
LCAnaGVhZGVyJywgJ2hncm91cCcsICdocicsCisgICAgJ2h0bWwnLCAnaScsICdpZnJhbWUnLCAn
aW1hZ2UnLCAnaW1nJywgJ2lucHV0JywgJ2lucycsICdpc2luZGV4JywgJ2tiZCcsICdrZXlnZW4n
LCAnbGFiZWwnLCAnbGF5ZXInLCAnbGVnZW5kJywgJ2xpJywgJ2xpbmsnLCAnbGlzdGluZycsCisg
ICAgJ21haW4nLCAnbWFwJywgJ21hcmsnLCAnbWFycXVlZScsICdtZW51JywgJ21ldGEnLCAnbWV0
ZXInLCAnbmF2JywgJ25vYnInLCAnbm9lbWJlZCcsICdub2ZyYW1lcycsICdub2xheWVyJywgJ29i
amVjdCcsICdvbCcsICdvcHRncm91cCcsCisgICAgJ29wdGlvbicsICdvdXRwdXQnLCAncCcsICdw
YXJhbScsICdwaWN0dXJlJywgJ3BsYWludGV4dCcsICdwcmUnLCAncHJvZ3Jlc3MnLCAncScsICdy
YicsICdycCcsICdydCcsICdydGMnLCAncnVieScsICdzJywgJ3NhbXAnLCAnc2NyaXB0JywKKyAg
ICAnc2VjdGlvbicsICdzZWxlY3QnLCAnc2xvdCcsICdzbWFsbCcsICdzb3VyY2UnLCAnc3Bhbics
ICdzdHJpa2UnLCAnc3Ryb25nJywgJ3N0eWxlJywgJ3N1YicsICdzdW1tYXJ5JywgJ3N1cCcsICd0
YWJsZScsICd0Ym9keScsICd0ZCcsCisgICAgJ3RlbXBsYXRlJywgJ3RleHRhcmVhJywgJ3Rmb290
JywgJ3RoJywgJ3RoZWFkJywgJ3RpbWUnLCAndGl0bGUnLCAndHInLCAndHJhY2snLCAndHQnLCAn
dScsICd1bCcsICd2YXInLCAndmlkZW8nLCAnd2JyJywgJ3htcCcsICdub3NjcmlwdCddOwordmFy
IGFsbG93aW5nQXR0YWNoU2hhZG93ID0gWyJhcnRpY2xlIiwgImFzaWRlIiwgImJsb2NrcXVvdGUi
LCAiYm9keSIsICJkaXYiLCAiZm9vdGVyIiwgImgxIiwgImgyIiwgImgzIiwgImg0IiwgImg1Iiwg
Img2IiwgImhlYWRlciIsICJuYXYiLCAicCIsICJzZWN0aW9uIiwgInNwYW4iXTsKKwogdGVzdChm
dW5jdGlvbiAoKSB7Ci0gICAgZm9yICh2YXIgZWxlbWVudE5hbWUgb2YgWydidXR0b24nLCAnZGV0
YWlscycsICdpbnB1dCcsICdtYXJxdWVlJywgJ21ldGVyJywgJ3Byb2dyZXNzJywgJ3NlbGVjdCcs
ICd0ZXh0YXJlYScsICdrZXlnZW4nXSkgeworICAgIGZvciAodmFyIGVsZW1lbnROYW1lIG9mIGh0
bWxFbGVtZW50TmFtZXMpIHsKKyAgICAgICAgaWYgKGFsbG93aW5nQXR0YWNoU2hhZG93LmluZGV4
T2YoZWxlbWVudE5hbWUpID49IDApCisgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICBh
c3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdOb3RTdXBwb3J0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnROYW1lKS5hdHRhY2hT
aGFkb3coe21vZGU6ICJvcGVuIn0pOwogICAgICAgICB9LCAnQ2FsbGluZyBhdHRhY2hTaGFkb3co
e21vZGU6ICJvcGVuIn0pIG9uICcgKyBlbGVtZW50TmFtZSArICcgZWxlbWVudCBtdXN0IHRocm93
Jyk7CkBAIC04OCw3ICsxMDIsMzcgQEAgdGVzdChmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnROYW1lKS5hdHRhY2hTaGFkb3coe21vZGU6ICJj
bG9zZWQifSk7CiAgICAgICAgIH0sICdDYWxsaW5nIGF0dGFjaFNoYWRvdyh7bW9kZTogImNsb3Nl
ZCJ9KSBvbiAnICsgZWxlbWVudE5hbWUgKyAnIGVsZW1lbnQgbXVzdCB0aHJvdycpOwogICAgIH0K
LX0sICdFbGVtZW50LmF0dGFjaFNoYWRvdyBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Ig
Zm9yIGJ1dHRvbiwgZGV0YWlscywgaW5wdXQsIG1hcnF1ZWUsIG1ldGVyLCBwcm9ncmVzcywgc2Vs
ZWN0LCB0ZXh0YXJlYSwgYW5kIGtleWdlbiBlbGVtZW50cycpOworfSwgJ0VsZW1lbnQuYXR0YWNo
U2hhZG93IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciBvbiBIVE1MIGVsZW1lbnRzIHdo
b3NlIGxvY2FsIG5hbWUgaXMgbm90IG9uZSBvZiAnICsgYWxsb3dpbmdBdHRhY2hTaGFkb3cuam9p
bignLCAnKSk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGZvciAodmFyIGVsZW1lbnROYW1l
IG9mIGFsbG93aW5nQXR0YWNoU2hhZG93KSB7CisgICAgICAgIGFzc2VydF90cnVlKGRvY3VtZW50
LmNyZWF0ZUVsZW1lbnQoZWxlbWVudE5hbWUpLmF0dGFjaFNoYWRvdyh7bW9kZTogIm9wZW4ifSkg
aW5zdGFuY2VvZiBTaGFkb3dSb290LAorICAgICAgICAgICAgJ0NhbGxpbmcgYXR0YWNoU2hhZG93
KHttb2RlOiAib3BlbiJ9KSBvbiAnICsgZWxlbWVudE5hbWUgKyAnIGVsZW1lbnQgbXVzdCBub3Qg
dGhyb3cnKTsKKworICAgICAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVs
ZW1lbnROYW1lKS5hdHRhY2hTaGFkb3coe21vZGU6ICJjbG9zZWQifSkgaW5zdGFuY2VvZiBTaGFk
b3dSb290LAorICAgICAgICAgICAgJ0NhbGxpbmcgYXR0YWNoU2hhZG93KHttb2RlOiAiY2xvc2Vk
In0pIG9uICcgKyBlbGVtZW50TmFtZSArICcgZWxlbWVudCBtdXN0IG5vdCB0aHJvdycpOworICAg
IH0KK30sICdFbGVtZW50LmF0dGFjaFNoYWRvdyBtdXN0IG5vdCB0aHJvdyBhIE5vdFN1cHBvcnRl
ZEVycm9yIG9uICcgKyBhbGxvd2luZ0F0dGFjaFNoYWRvdy5qb2luKCcsICcpKTsKKwordGVzdChm
dW5jdGlvbiAoKSB7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnTm90U3VwcG9ydGVkRXJy
b3InfSwgZnVuY3Rpb24gKCkgeworICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd3M2Nm
dXR1cmVlbGVtZW50JykuYXR0YWNoU2hhZG93KHttb2RlOiAib3BlbiJ9KTsKKyAgICB9LCAnQ2Fs
bGluZyBhdHRhY2hTaGFkb3coe21vZGU6ICJvcGVuIn0pIG9uIGEgSFRNTCBlbGVtZW50IHdob3Nl
IGxvY2FsIG5hbWUgaXMgInczY2Z1dHVyZWVsZW1lbnQiIG11c3QgdGhyb3cnKTsKKworICAgIGFz
c2VydF90aHJvd3MoeyduYW1lJzogJ05vdFN1cHBvcnRlZEVycm9yJ30sIGZ1bmN0aW9uICgpIHsK
KyAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndzNjZnV0dXJlZWxlbWVudCcpLmF0dGFj
aFNoYWRvdyh7bW9kZTogImNsb3NlZCJ9KTsKKyAgICB9LCAnQ2FsbGluZyBhdHRhY2hTaGFkb3co
e21vZGU6ICJjbG9zZWQifSkgb24gYSBIVE1MIGVsZW1lbnQgd2hvc2UgbG9jYWwgbmFtZSBpcyAi
dzNjZnV0dXJlZWxlbWVudCIgbXVzdCB0aHJvdycpOworCit9LCAnRWxlbWVudC5hdHRhY2hTaGFk
b3cgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIG9uIGEgSFRNTEtub3duRWxlbWVudCB3
aGljaCBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQnKTsKKwordGVzdChmdW5j
dGlvbiAoKSB7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnY3VzdG9t
LWVsZW1lbnQnKS5hdHRhY2hTaGFkb3coe21vZGU6ICJvcGVuIn0pIGluc3RhbmNlb2YgU2hhZG93
Um9vdCwKKyAgICAgICAgJ0NhbGxpbmcgYXR0YWNoU2hhZG93KHttb2RlOiAib3BlbiJ9KSBvbiBh
IEhUTUwgZWxlbWVudCB3aG9zZSBsb2NhbCBuYW1lIGlzICJjdXN0b20tZWxlbWVudCIgZWxlbWVu
dCBtdXN0IG5vdCB0aHJvdycpOworCisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQuY3JlYXRlRWxl
bWVudCgnY3VzdG9tLWVsZW1lbnQnKS5hdHRhY2hTaGFkb3coe21vZGU6ICJjbG9zZWQifSkgaW5z
dGFuY2VvZiBTaGFkb3dSb290LAorICAgICAgICAnQ2FsbGluZyBhdHRhY2hTaGFkb3coe21vZGU6
ICJjbG9zZWQifSkgb24gYSBIVE1MIGVsZW1lbnQgd2hvc2UgbG9jYWwgbmFtZSBpcyAiY3VzdG9t
LWVsZW1lbnQiIG11c3Qgbm90IHRocm93Jyk7CisKK30sICdFbGVtZW50LmF0dGFjaFNoYWRvdyBt
dXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igb24gYSBIVE1MS25vd25FbGVtZW50IHdoaWNo
IGhhcyBhIHZhbGlkIGN1c3RvbSBlbGVtZW50Jyk7CiAKIDwvc2NyaXB0PgogPC9ib2R5Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280507</attachid>
            <date>2016-06-03 21:26:58 -0700</date>
            <delta_ts>2016-06-03 22:59:29 -0700</delta_ts>
            <desc>Fixed GTK/Windows builds</desc>
            <filename>bug-157706-20160603212819.patch</filename>
            <type>text/plain</type>
            <size>29533</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTU5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE2LTA2LTAyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVwZGF0ZSB0aGUgbGlzdCBvZiBl
bGVtZW50cyBhdHRhY2hTaGFkb3cgaXMgYWxsb3dlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSBsaXN0IG9mIGVsZW1lbnRzIG9uIHdo
aWNoIGF0dGFjaFNoYWRvdyBpcyBhbGxvd2VkIHBlciB0aGUgbGF0ZXN0IHNoYWRvdyBET00gc3Bl
YzoKKyAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvc2hhZG93LWRvbS8jd2lkbC1FbGVtZW50
LWF0dGFjaFNoYWRvdy1TaGFkb3dSb290LVNoYWRvd1Jvb3RJbml0LXNoYWRvd1Jvb3RJbml0RGlj
dAorICAgICAgICB3aGljaCBub3cgb25seSBhbGxvd3MgYXR0YWNoU2hhZG93IG9uIHRoZSBmb2xs
b3dpbmcgZWxlbWVudHMgYW5kIGN1c3RvbSBlbGVtZW50czoKKyAgICAgICAgYnV0dG9uLCBkZXRh
aWxzLCBpbnB1dCwgbWFycXVlZSwgbWV0ZXIsIHByb2dyZXNzLCBzZWxlY3QsIHRleHRhcmVhLCBr
ZXlnZW4KKworICAgICAgICBJbiBvcmRlciB0byBjaGVjayB0aGF0IGEgZ2l2ZW4gSFRNTCBlbGVt
ZW50J3MgbG9jYWwgbmFtZSBpcyBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IG5hbWUsCisgICAgICAg
IHRoaXMgcGF0Y2ggbW92ZXMgQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpjaGVja05hbWUgdG8g
RG9jdW1lbnQ6OnZhbGlkYXRlQ3VzdG9tRWxlbWVudE5hbWUgc28gdGhhdAorICAgICAgICBpdCBj
b3VsZCBiZSB1c2VkIHdoZW4gZWl0aGVyIFNIQURPV19ET00gb3IgQ1VTVE9NX0VMRU1FTlRTIGJ1
aWxkIGZsYWcgaXMgdHVybmVkIG9uLgorCisgICAgICAgIEFsc28gcmVtb3ZlZCBFbGVtZW50Ojpj
YW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCBzaW5jZSBpdCB3YXMgb25seSB1c2VkIGluIEVsZW1l
bnQ6OmF0dGFjaFNoYWRvdy4KKworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vRWxlbWVu
dC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93Lmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6ZGVmaW5l
RWxlbWVudCk6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6OmNoZWNrTmFtZSk6IE1v
dmVkIHRvIERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lLgorICAgICAgICAqIGRv
bS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZSk6IE1vdmVkIGZy
b20gQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpjaGVja05hbWUuCisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FuQXR0YWNoQXV0aG9yU2hhZG93Um9vdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6YXR0YWNoU2hhZG93KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTEtleWdlbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTE1ldGVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxRdW90ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxU
YWdOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxVbmtub3duRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rp
b25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UpOgor
CiAyMDE2LTA2LTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbV2F5bGFuZF0gUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBkZXN0cnVjdG9yIGlz
IHN1cGVyIGNyYXNoeQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
b2N1bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsMTQg
KzE1OCwxNCBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmRlZmluZUVsZW1lbnQoRXhlY1N0CiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAotICAgIHN3aXRjaCAoQ3VzdG9tRWxl
bWVudERlZmluaXRpb25zOjpjaGVja05hbWUodGFnTmFtZSkpIHsKLSAgICBjYXNlIEN1c3RvbUVs
ZW1lbnREZWZpbml0aW9uczo6TmFtZVN0YXR1czo6VmFsaWQ6CisgICAgc3dpdGNoIChEb2N1bWVu
dDo6dmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZSh0YWdOYW1lKSkgeworICAgIGNhc2UgQ3VzdG9t
RWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZDoKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6Ok5hbWVTdGF0dXM6OkNvbmZsaWN0c1dpdGhC
dWlsdGluTmFtZXM6CisgICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6
OkNvbmZsaWN0c1dpdGhCdWlsdGluTmFtZXM6CiAgICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVy
cm9yKCZzdGF0ZSwgIkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGJlIHNhbWUgYXMgb25lIG9m
IHRoZSBidWlsdGluIGVsZW1lbnRzIik7Ci0gICAgY2FzZSBDdXN0b21FbGVtZW50RGVmaW5pdGlv
bnM6Ok5hbWVTdGF0dXM6Ok5vSHlwaGVuOgorICAgIGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxp
ZGF0aW9uU3RhdHVzOjpOb0h5cGhlbjoKICAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3Io
JnN0YXRlLCAiQ3VzdG9tIGVsZW1lbnQgbmFtZSBtdXN0IGNvbnRhaW4gYSBoeXBoZW4iKTsKLSAg
ICBjYXNlIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6TmFtZVN0YXR1czo6Q29udGFpbnNVcHBl
ckNhc2U6CisgICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OkNvbnRh
aW5zVXBwZXJDYXNlOgogICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcigmc3RhdGUsICJD
dXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBjb250YWluIGFuIHVwcGVyIGNhc2UgbGV0dGVyIik7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudERlZmluaXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudERl
ZmluaXRpb25zLmNwcAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnREZWZpbml0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDM2ICszOSw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpO
YW1lU3RhdHVzIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6Y2hlY2tOYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFnTmFtZSkKLXsKLSAgICBib29sIGNvbnRhaW5zSHlwaGVuID0gZmFsc2U7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhZ05hbWUubGVuZ3RoKCk7IGkrKykgewotICAg
ICAgICBpZiAoaXNBU0NJSVVwcGVyKHRhZ05hbWVbaV0pKQotICAgICAgICAgICAgcmV0dXJuIE5h
bWVTdGF0dXM6OkNvbnRhaW5zVXBwZXJDYXNlOwotICAgICAgICBpZiAodGFnTmFtZVtpXSA9PSAn
LScpCi0gICAgICAgICAgICBjb250YWluc0h5cGhlbiA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYg
KCFjb250YWluc0h5cGhlbikKLSAgICAgICAgcmV0dXJuIE5hbWVTdGF0dXM6Ok5vSHlwaGVuOwot
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSB0YWtpbmcgdGhlIGFkdmFudGFnZSBvZiBRdWFs
aWZpZWROYW1lcyBpbiBTVkcgYW5kIE1hdGhNTC4KLSAgICBpZiAodGFnTmFtZSA9PSBTVkdOYW1l
czo6Y29sb3JfcHJvZmlsZVRhZy5sb2NhbE5hbWUoKQotICAgICAgICB8fCB0YWdOYW1lID09IFNW
R05hbWVzOjpmb250X2ZhY2VUYWcubG9jYWxOYW1lKCkKLSAgICAgICAgfHwgdGFnTmFtZSA9PSBT
VkdOYW1lczo6Zm9udF9mYWNlX2Zvcm1hdFRhZy5sb2NhbE5hbWUoKQotICAgICAgICB8fCB0YWdO
YW1lID09IFNWR05hbWVzOjpmb250X2ZhY2VfbmFtZVRhZy5sb2NhbE5hbWUoKQotICAgICAgICB8
fCB0YWdOYW1lID09IFNWR05hbWVzOjpmb250X2ZhY2Vfc3JjVGFnLmxvY2FsTmFtZSgpCi0gICAg
ICAgIHx8IHRhZ05hbWUgPT0gU1ZHTmFtZXM6OmZvbnRfZmFjZV91cmlUYWcubG9jYWxOYW1lKCkK
LSAgICAgICAgfHwgdGFnTmFtZSA9PSBTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZy5sb2NhbE5h
bWUoKQotI2lmIEVOQUJMRShNQVRITUwpCi0gICAgICAgIHx8IHRhZ05hbWUgPT0gTWF0aE1MTmFt
ZXM6OmFubm90YXRpb25feG1sVGFnLmxvY2FsTmFtZSgpCi0jZW5kaWYKLSAgICAgICAgKQotICAg
ICAgICByZXR1cm4gTmFtZVN0YXR1czo6Q29uZmxpY3RzV2l0aEJ1aWx0aW5OYW1lczsKLQotICAg
IHJldHVybiBOYW1lU3RhdHVzOjpWYWxpZDsKLX0KLQogdm9pZCBDdXN0b21FbGVtZW50RGVmaW5p
dGlvbnM6OmFkZEVsZW1lbnREZWZpbml0aW9uKFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+
JiYgaW50ZXJmYWNlKQogewogICAgIEF0b21pY1N0cmluZyBsb2NhbE5hbWUgPSBpbnRlcmZhY2Ut
Pm5hbWUoKS5sb2NhbE5hbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVt
ZW50RGVmaW5pdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudERlZmluaXRpb25zLmgJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsOSAr
NTYsNiBAQCBwdWJsaWM6CiAgICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBmaW5kSW50ZXJm
YWNlKGNvbnN0IEpTQzo6SlNPYmplY3QqKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ29uc3Ry
dWN0b3IoY29uc3QgSlNDOjpKU09iamVjdCopIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBOYW1l
U3RhdHVzIHsgVmFsaWQsIENvbmZsaWN0c1dpdGhCdWlsdGluTmFtZXMsIE5vSHlwaGVuLCBDb250
YWluc1VwcGVyQ2FzZSB9OwotICAgIHN0YXRpYyBOYW1lU3RhdHVzIGNoZWNrTmFtZShjb25zdCBB
dG9taWNTdHJpbmcmIHRhZ05hbWUpOwotCiBwcml2YXRlOgogICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+Pj4gbV91cGdyYWRlQ2FuZGlkYXRlc01hcDsKICAg
ICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmUHRyPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4+
IG1fbmFtZU1hcDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjAxNTkx
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODg5LDcgKzg4OSw3IEBAIHN0YXRpYyBSZWZQdHI8RWxlbWVudD4gY3JlYXRlSFRNTEVsZW1lbnQK
ICAgICBRdWFsaWZpZWROYW1lIHF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgeGh0
bWxOYW1lc3BhY2VVUkkpOwogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKLSAgICBpZiAo
Q3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpjaGVja05hbWUobG9jYWxOYW1lKSA9PSBDdXN0b21F
bGVtZW50RGVmaW5pdGlvbnM6Ok5hbWVTdGF0dXM6OlZhbGlkKSB7CisgICAgaWYgKERvY3VtZW50
Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGxvY2FsTmFtZSkgPT0gQ3VzdG9tRWxlbWVudE5h
bWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZCkgewogICAgICAgICBSZWY8SFRNTEVsZW1lbnQ+IGVs
ZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHF1YWxpZmllZE5hbWUsIGRvY3VtZW50KTsKICAg
ICAgICAgZWxlbWVudC0+c2V0SXNVbnJlc29sdmVkQ3VzdG9tRWxlbWVudCgpOwogICAgICAgICBk
b2N1bWVudC5lbnN1cmVDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMoKS5hZGRVcGdyYWRlQ2FuZGlk
YXRlKGVsZW1lbnQuZ2V0KCkpOwpAQCAtMTA3NCw3ICsxMDc0LDcgQEAgc3RhdGljIFJlZjxIVE1M
RWxlbWVudD4gY3JlYXRlRmFsbGJhY2tIVAogICAgICAgICB9CiAgICAgfQogICAgIC8vIEZJWE1F
OiBTaG91bGQgd2UgYWxzbyBjaGVjayB0aGUgZXF1YWxpdHkgb2YgcHJlZml4IGJldHdlZW4gdGhl
IGN1c3RvbSBlbGVtZW50IGFuZCBuYW1lPwotICAgIGlmIChDdXN0b21FbGVtZW50RGVmaW5pdGlv
bnM6OmNoZWNrTmFtZShuYW1lLmxvY2FsTmFtZSgpKSA9PSBDdXN0b21FbGVtZW50RGVmaW5pdGlv
bnM6Ok5hbWVTdGF0dXM6OlZhbGlkKSB7CisgICAgaWYgKERvY3VtZW50Ojp2YWxpZGF0ZUN1c3Rv
bUVsZW1lbnROYW1lKG5hbWUubG9jYWxOYW1lKCkpID09IEN1c3RvbUVsZW1lbnROYW1lVmFsaWRh
dGlvblN0YXR1czo6VmFsaWQpIHsKICAgICAgICAgUmVmPEhUTUxFbGVtZW50PiBlbGVtZW50ID0g
SFRNTEVsZW1lbnQ6OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7CiAgICAgICAgIGVsZW1lbnQtPnNl
dElzVW5yZXNvbHZlZEN1c3RvbUVsZW1lbnQoKTsKICAgICAgICAgZG9jdW1lbnQuZW5zdXJlQ3Vz
dG9tRWxlbWVudERlZmluaXRpb25zKCkuYWRkVXBncmFkZUNhbmRpZGF0ZShlbGVtZW50LmdldCgp
KTsKQEAgLTExMTIsNiArMTExMiwzNyBAQCBSZWY8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVs
ZW1lbnQoY29uCiAgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKTsKIH0KIAorI2lm
IEVOQUJMRShDVVNUT01fRUxFTUVOVFMpIHx8IEVOQUJMRShTSEFET1dfRE9NKQorQ3VzdG9tRWxl
bWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzIERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnRO
YW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQoreworICAgIGJvb2wgY29udGFpbnNI
eXBoZW4gPSBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9jYWxOYW1lLmxl
bmd0aCgpOyBpKyspIHsKKyAgICAgICAgaWYgKGlzQVNDSUlVcHBlcihsb2NhbE5hbWVbaV0pKQor
ICAgICAgICAgICAgcmV0dXJuIEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6Q29u
dGFpbnNVcHBlckNhc2U7CisgICAgICAgIGlmIChsb2NhbE5hbWVbaV0gPT0gJy0nKQorICAgICAg
ICAgICAgY29udGFpbnNIeXBoZW4gPSB0cnVlOworICAgIH0KKworICAgIGlmICghY29udGFpbnNI
eXBoZW4pCisgICAgICAgIHJldHVybiBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6
Ok5vSHlwaGVuOworCisgICAgaWYgKGxvY2FsTmFtZSA9PSBTVkdOYW1lczo6Y29sb3JfcHJvZmls
ZVRhZy5sb2NhbE5hbWUoKQorICAgICAgICB8fCBsb2NhbE5hbWUgPT0gU1ZHTmFtZXM6OmZvbnRf
ZmFjZVRhZy5sb2NhbE5hbWUoKQorICAgICAgICB8fCBsb2NhbE5hbWUgPT0gU1ZHTmFtZXM6OmZv
bnRfZmFjZV9mb3JtYXRUYWcubG9jYWxOYW1lKCkKKyAgICAgICAgfHwgbG9jYWxOYW1lID09IFNW
R05hbWVzOjpmb250X2ZhY2VfbmFtZVRhZy5sb2NhbE5hbWUoKQorICAgICAgICB8fCBsb2NhbE5h
bWUgPT0gU1ZHTmFtZXM6OmZvbnRfZmFjZV9zcmNUYWcubG9jYWxOYW1lKCkKKyAgICAgICAgfHwg
bG9jYWxOYW1lID09IFNWR05hbWVzOjpmb250X2ZhY2VfdXJpVGFnLmxvY2FsTmFtZSgpCisgICAg
ICAgIHx8IGxvY2FsTmFtZSA9PSBTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZy5sb2NhbE5hbWUo
KQorI2lmIEVOQUJMRShNQVRITUwpCisgICAgICAgIHx8IGxvY2FsTmFtZSA9PSBNYXRoTUxOYW1l
czo6YW5ub3RhdGlvbl94bWxUYWcubG9jYWxOYW1lKCkKKyNlbmRpZgorICAgICAgICApCisgICAg
ICAgIHJldHVybiBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OkNvbmZsaWN0c1dp
dGhCdWlsdGluTmFtZXM7CisKKyAgICByZXR1cm4gQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9u
U3RhdHVzOjpWYWxpZDsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkK
IGJvb2wgRG9jdW1lbnQ6OmlzQ1NTR3JpZExheW91dEVuYWJsZWQoKSBjb25zdAogewpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNiArMjgxLDggQEAgZW51bSBjbGFz
cyBIdHRwRXF1aXZQb2xpY3kgewogICAgIERpc2FibGVkQnlDb250ZW50RGlzcG9zaXRpb25BdHRh
Y2htZW50U2FuZGJveAogfTsKIAorZW51bSBjbGFzcyBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRp
b25TdGF0dXMgeyBWYWxpZCwgQ29uZmxpY3RzV2l0aEJ1aWx0aW5OYW1lcywgTm9IeXBoZW4sIENv
bnRhaW5zVXBwZXJDYXNlIH07CisKIGNsYXNzIERvY3VtZW50CiAgICAgOiBwdWJsaWMgQ29udGFp
bmVyTm9kZQogICAgICwgcHVibGljIFRyZWVTY29wZQpAQCAtMzg3LDYgKzM4OSwxMCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnROUyhj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAorI2lm
IEVOQUJMRShDVVNUT01fRUxFTUVOVFMpIHx8IEVOQUJMRShTSEFET1dfRE9NKQorICAgIHN0YXRp
YyBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXMgdmFsaWRhdGVDdXN0b21FbGVtZW50
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19HUklE
X0xBWU9VVCkKICAgICBib29sIGlzQ1NTR3JpZExheW91dEVuYWJsZWQoKSBjb25zdDsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjg1LDE0ICsxNjg1
LDQzIEBAIFJlZlB0cjxTaGFkb3dSb290PiBFbGVtZW50OjpjcmVhdGVTaGFkb3cKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBFbGVtZW50OjpjYW5IYXZlVXNlckFnZW50U2hhZG93Um9v
dCgpIGNvbnN0CisjaWYgRU5BQkxFKFNIQURPV19ET00pCitzdGF0aWMgYm9vbCBjYW5BdHRhY2hB
dXRob3JTaGFkb3dSb290KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IHRh
Z05hbWVzOworICAgIGlmICh0YWdOYW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nIG5hbWVMaXN0W10gPSB7CisgICAgICAgICAgICBhcnRpY2xlVGFnLmxv
Y2FsTmFtZSgpLAorICAgICAgICAgICAgYXNpZGVUYWcubG9jYWxOYW1lKCksCisgICAgICAgICAg
ICBibG9ja3F1b3RlVGFnLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAgYm9keVRhZy5sb2NhbE5h
bWUoKSwKKyAgICAgICAgICAgIGRpdlRhZy5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIGZvb3Rl
clRhZy5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIGgxVGFnLmxvY2FsTmFtZSgpLAorICAgICAg
ICAgICAgaDJUYWcubG9jYWxOYW1lKCksCisgICAgICAgICAgICBoM1RhZy5sb2NhbE5hbWUoKSwK
KyAgICAgICAgICAgIGg0VGFnLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAgaDVUYWcubG9jYWxO
YW1lKCksCisgICAgICAgICAgICBoNlRhZy5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIGhlYWRl
clRhZy5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIG5hdlRhZy5sb2NhbE5hbWUoKSwKKyAgICAg
ICAgICAgIHBUYWcubG9jYWxOYW1lKCksCisgICAgICAgICAgICBzZWN0aW9uVGFnLmxvY2FsTmFt
ZSgpLAorICAgICAgICAgICAgc3BhblRhZy5sb2NhbE5hbWUoKQorICAgICAgICB9OworICAgICAg
ICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1lTGlzdCkKKyAgICAgICAgICAgIHRhZ05hbWVzLmdldCgp
LmFkZChuYW1lKTsKKyAgICB9CisKKyAgICBpZiAoZWxlbWVudC5uYW1lc3BhY2VVUkkoKSAhPSB4
aHRtbE5hbWVzcGFjZVVSSSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRh
Z05hbWVzLmdldCgpLmNvbnRhaW5zKGVsZW1lbnQubG9jYWxOYW1lKCkpIHx8IERvY3VtZW50Ojp2
YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGVsZW1lbnQubG9jYWxOYW1lKCkpID09IEN1c3RvbUVs
ZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6VmFsaWQ7CiB9CiAKIFJlZlB0cjxTaGFkb3dSb290
PiBFbGVtZW50OjphdHRhY2hTaGFkb3coY29uc3QgU2hhZG93Um9vdEluaXQmIGluaXQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIGlmIChjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpKSB7
CisgICAgaWYgKCFjYW5BdHRhY2hBdXRob3JTaGFkb3dSb290KCp0aGlzKSkgewogICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBA
IC0xNzE5LDYgKzE3NDgsNyBAQCBTaGFkb3dSb290KiBFbGVtZW50OjpzaGFkb3dSb290Rm9yQmlu
ZGluCiAgICAgfQogICAgIHJldHVybiByb290OwogfQorI2VuZGlmCiAKIFNoYWRvd1Jvb3QqIEVs
ZW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCShyZXZpc2lvbiAyMDE1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNDksNiArMjQ5LDcgQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQ
T1JUIFNoYWRvd1Jvb3QqIHNoYWRvd1Jvb3QoKSBjb25zdDsKICAgICBXRUJDT1JFX0VYUE9SVCBS
ZWZQdHI8U2hhZG93Um9vdD4gY3JlYXRlU2hhZG93Um9vdChFeGNlcHRpb25Db2RlJik7CiAKKyNp
ZiBFTkFCTEUoU0hBRE9XX0RPTSkKICAgICBlbnVtIGNsYXNzIFNoYWRvd1Jvb3RNb2RlIHsgT3Bl
biwgQ2xvc2VkIH07CiAgICAgc3RydWN0IFNoYWRvd1Jvb3RJbml0IHsKICAgICAgICAgU2hhZG93
Um9vdE1vZGUgbW9kZTsKQEAgLTI1Niw2ICsyNTcsNyBAQCBwdWJsaWM6CiAKICAgICBTaGFkb3dS
b290KiBzaGFkb3dSb290Rm9yQmluZGluZ3MoSlNDOjpFeGVjU3RhdGUmKSBjb25zdDsKICAgICBS
ZWZQdHI8U2hhZG93Um9vdD4gYXR0YWNoU2hhZG93KGNvbnN0IFNoYWRvd1Jvb3RJbml0JiwgRXhj
ZXB0aW9uQ29kZSYpOworI2VuZGlmCiAKICAgICBTaGFkb3dSb290KiB1c2VyQWdlbnRTaGFkb3dS
b290KCkgY29uc3Q7CiAgICAgV0VCQ09SRV9FWFBPUlQgU2hhZG93Um9vdCYgZW5zdXJlVXNlckFn
ZW50U2hhZG93Um9vdCgpOwpAQCAtNTk0LDcgKzU5Niw2IEBAIHByaXZhdGU6CiAgICAgUmVmPE5v
ZGU+IGNsb25lTm9kZUludGVybmFsKERvY3VtZW50JiwgQ2xvbmluZ09wZXJhdGlvbikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCBSZWY8RWxlbWVudD4gY2xvbmVFbGVtZW50V2l0aG91dEF0dHJpYnV0
ZXNBbmRDaGlsZHJlbihEb2N1bWVudCYpOwogCi0gICAgdmlydHVhbCBib29sIGNhbkhhdmVVc2Vy
QWdlbnRTaGFkb3dSb290KCkgY29uc3Q7CiAgICAgdm9pZCByZW1vdmVTaGFkb3dSb290KCk7CiAK
ICAgICBjb25zdCBSZW5kZXJTdHlsZSogZXhpc3RpbmdDb21wdXRlZFN0eWxlKCk7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCShyZXZpc2lvbiAyMDE1OTEpCisr
KyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxCdXR0b25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkK
QEAgLTUyLDcgKzUyLDYgQEAgcHJpdmF0ZToKIAogICAgIC8vIEhUTUxGb3JtQ29udHJvbEVsZW1l
bnQgYWx3YXlzIGNyZWF0ZXMgb25lLCBidXQgYnV0dG9ucyBkb24ndCBuZWVkIGl0LgogICAgIGJv
b2wgYWx3YXlzQ3JlYXRlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0
dXJuIGZhbHNlOyB9Ci0gICAgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgcGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYpIG92ZXJyaWRlOwogICAgIGJvb2wg
aXNQcmVzZW50YXRpb25BdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0IG92ZXJy
aWRlOwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5oCShyZXZp
c2lvbiAyMDE1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxEZXRhaWxzRWxlbWVudC5o
CSh3b3JraW5nIGNvcHkpCkBAIC00Miw3ICs0Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbWljU3RyaW5nJikgb3Zl
cnJpZGU7CiAKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCop
IG92ZXJyaWRlOwotICAgIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBm
aW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgYm9vbCBtX2lzT3BlbiB7IGZhbHNlIH07
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxJbnB1dEVsZW1lbnQuaAkocmV2aXNpb24gMjAx
NTkxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHdvcmtpbmcg
Y29weSkKQEAgLTMzMyw3ICszMzMsNiBAQCBwcml2YXRlOgogICAgIGVudW0gQXV0b0NvbXBsZXRl
U2V0dGluZyB7IFVuaW5pdGlhbGl6ZWQsIE9uLCBPZmYgfTsKIAogICAgIHZvaWQgZGlkQWRkVXNl
ckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290KikgZmluYWw7Ci0gICAgYm9vbCBjYW5IYXZlVXNl
ckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIHZv
aWQgd2lsbENoYW5nZUZvcm0oKSBmaW5hbDsKICAgICB2b2lkIGRpZENoYW5nZUZvcm0oKSBmaW5h
bDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmgJKHJldmlzaW9u
IDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEtleWdlbkVsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNTUsOCArNTUsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVzZXQoKSBv
dmVycmlkZTsKICAgICBib29sIHNob3VsZFNhdmVBbmRSZXN0b3JlRm9ybUNvbnRyb2xTdGF0ZSgp
IGNvbnN0IG92ZXJyaWRlOwogCi0gICAgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIGJvb2wgaXNLZXl0eXBlUlNBKCkg
Y29uc3Q7CiAKICAgICBIVE1MU2VsZWN0RWxlbWVudCogc2hhZG93U2VsZWN0KCkgY29uc3Q7Cklu
ZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgJKHJldmlzaW9uIDIw
MTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1hcnF1ZWVFbGVtZW50LmgJKHdvcmtp
bmcgY29weSkKQEAgLTYyLDggKzYyLDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc3VtZSgpIG92
ZXJyaWRlOwogICAgIGNvbnN0IGNoYXIqIGFjdGl2ZURPTU9iamVjdE5hbWUoKSBjb25zdCBvdmVy
cmlkZSB7IHJldHVybiAiSFRNTE1hcnF1ZWVFbGVtZW50IjsgfQogCi0gICAgYm9vbCBjYW5IYXZl
VXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQogICAg
IFJlbmRlck1hcnF1ZWUqIHJlbmRlck1hcnF1ZWUoKSBjb25zdDsKIH07CiAKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCShyZXZpc2lvbiAyMDE1OTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNTA0
LDkgKzUwNCw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIGFsd2F5c0NyZWF0ZVVzZXJBZ2VudFNo
YWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0cnVlOyB9CiAKLSAgICAvLyBGSVhN
RTogU2hhZG93IERPTSBzcGVjIHNheXMgd2Ugc2hvdWxkIGJlIGFibGUgdG8gY3JlYXRlIHNoYWRv
dyByb290IG9uIGF1ZGlvIGFuZCB2aWRlbyBlbGVtZW50cwotICAgIGJvb2wgY2FuSGF2ZVVzZXJB
Z2VudFNoYWRvd1Jvb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBib29s
IHN1cHBvcnRzRm9jdXMoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIGlzTW91c2VGb2N1c2Fi
bGUoKSBjb25zdCBvdmVycmlkZTsKICAgICBib29sIHJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVu
ZGVyU3R5bGUmKSBvdmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVy
RWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1ldGVyRWxl
bWVudC5oCShyZXZpc2lvbiAyMDE1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRl
ckVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtNzYsNyArNzYsNiBAQCBwcml2YXRlOgogCiAg
ICAgdm9pZCBkaWRFbGVtZW50U3RhdGVDaGFuZ2UoKTsKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2Vu
dFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIG92ZXJyaWRlOwotICAgIGJvb2wgY2FuSGF2ZVVzZXJB
Z2VudFNoYWRvd1Jvb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICBSZWZQ
dHI8TWV0ZXJWYWx1ZUVsZW1lbnQ+IG1fdmFsdWU7CiB9OwpJbmRleDogU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0
bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MUGx1Z0luRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsOSArMTE3
LDYgQEAgcHJpdmF0ZToKIAogICAgIGJvb2wgZGlzcGF0Y2hCZWZvcmVMb2FkRXZlbnQoY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpOyAvLyBOb3QgaW1wbGVtZW50ZWQsIGdlbmVyYXRlcyBhIGNvbXBp
bGUgZXJyb3IgaWYgc3ViY2xhc3NlcyBjYWxsIHRoaXMgYnkgbWlzdGFrZS4KIAotICAgIC8vIEZJ
WE1FOiBTaGFkb3cgRE9NIHNwZWMgc2F5cyB3ZSBzaG91bGQgYmUgYWJsZSB0byBjcmVhdGUgc2hh
ZG93IHJvb3Qgb24gYXBwbGV0LCBlbWJlZCwgYW5kIG9iamVjdC4KLSAgICBib29sIGNhbkhhdmVV
c2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAg
Ly8gVGhpcyB3aWxsIGxvYWQgdGhlIHBsdWdpbiBpZiBuZWNlc3NhcnkuCiAgICAgdmlydHVhbCBS
ZW5kZXJXaWRnZXQqIHJlbmRlcldpZGdldExvYWRpbmdQbHVnaW4oKSBjb25zdCA9IDA7CiAKSW5k
ZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFByb2dyZXNzRWxlbWVudC5oCShyZXZpc2lvbiAy
MDE1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaAkod29y
a2luZyBjb3B5KQpAQCAtNjIsNyArNjIsNiBAQCBwcml2YXRlOgogCiAgICAgdm9pZCBkaWRFbGVt
ZW50U3RhdGVDaGFuZ2UoKTsKICAgICB2b2lkIGRpZEFkZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hh
ZG93Um9vdCopIG92ZXJyaWRlOwotICAgIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3Qo
KSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBpc0RldGVybWluYXRlKCkg
Y29uc3Q7CiAKICAgICBQcm9ncmVzc1ZhbHVlRWxlbWVudCogbV92YWx1ZTsKSW5kZXg6IFNvdXJj
ZS9XZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFF1b3RlRWxlbWVudC5oCShyZXZpc2lvbiAyMDE1OTEpCisrKyBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMzUs
NyArMzUsNyBAQCBwdWJsaWM6CiAKIHByaXZhdGU6CiAgICAgSFRNTFF1b3RlRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKLSAgICAKKwogICAgIGJvb2wgaXNVUkxBdHRy
aWJ1dGUoY29uc3QgQXR0cmlidXRlJikgY29uc3Qgb3ZlcnJpZGU7CiB9OwogCkluZGV4OiBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCShyZXZpc2lvbiAyMDE1OTEpCisrKyBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTZWxlY3RFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTExOSw4ICsxMTksNiBAQCBwcml2YXRlOgogICAgIAogICAgIGJvb2wgY2FuU3RhcnRTZWxlY3Rp
b24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxzZTsgfQogCi0gICAgYm9vbCBjYW5IYXZlVXNl
ckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQogICAgIGJv
b2wgaXNFbnVtZXJhdGFibGUoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9v
bCBzdXBwb3J0TGFiZWxzKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmgJKHJldmlzaW9uIDIwMTU5MSkK
KysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFN1bW1hcnlFbGVtZW50LmgJKHdvcmtpbmcgY29w
eSkKQEAgLTQyLDggKzQyLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlkQWRkVXNlckFnZW50
U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJpZGU7CiAKLSAgICAvLyBGSVhNRTogU2hhZG93
IERPTSBzcGVjIHNheXMgd2Ugc2hvdWxkIGJlIGFibGUgdG8gY3JlYXRlIHNoYWRvdyByb290IG9u
IHRoaXMgZWxlbWVudAotICAgIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25z
dCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAgICAgYm9vbCBoYXNDdXN0b21Gb2N1c0xvZ2ljKCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAgSFRNTERldGFpbHNFbGVtZW50KiBk
ZXRhaWxzRWxlbWVudCgpIGNvbnN0OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFn
TmFtZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGFnTmFtZXMu
aW4JKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05hbWVz
LmluCSh3b3JraW5nIGNvcHkpCkBAIC0zMyw3ICszMyw2IEBAIGNvZGUgaW50ZXJmYWNlTmFtZT1I
VE1MRWxlbWVudAogY29sIGludGVyZmFjZU5hbWU9SFRNTFRhYmxlQ29sRWxlbWVudAogY29sZ3Jv
dXAgaW50ZXJmYWNlTmFtZT1IVE1MVGFibGVDb2xFbGVtZW50CiBjb21tYW5kIGludGVyZmFjZU5h
bWU9SFRNTEVsZW1lbnQKLXdlYmtpdFNoYWRvd0NvbnRlbnQgaW50ZXJmYWNlTmFtZT1IVE1MRWxl
bWVudCwgbm9Db25zdHJ1Y3RvcgogZGF0YQogZGF0YWxpc3QgaW50ZXJmYWNlTmFtZT1IVE1MRGF0
YUxpc3RFbGVtZW50LCBjb25kaXRpb25hbD1EQVRBTElTVF9FTEVNRU5UCiBkZCBpbnRlcmZhY2VO
YW1lPUhUTUxFbGVtZW50CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUZXh0QXJlYUVs
ZW1lbnQuaAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4
dEFyZWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDcgKzcxLDYgQEAgcHJpdmF0ZToK
ICAgICBlbnVtIFdyYXBNZXRob2QgeyBOb1dyYXAsIFNvZnRXcmFwLCBIYXJkV3JhcCB9OwogCiAg
ICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsK
LSAgICBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QgZmluYWwgeyByZXR1
cm4gdHJ1ZTsgfQogCiAgICAgdm9pZCBtYXhMZW5ndGhBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IEF0
b21pY1N0cmluZyYgbmV3VmFsdWUpOwogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxV
bmtub3duRWxlbWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFVu
a25vd25FbGVtZW50LmgJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTFVua25vd25FbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTQ3LDEyICs0Nyw2IEBAIHBy
aXZhdGU6CiAgICAgewogICAgIH0KIAotI2lmIEVOQUJMRShNRVRFUl9FTEVNRU5UKQotICAgIGJv
b2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBmYWxz
ZTsgfQotI2Vsc2UKLSAgICBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3Qg
ZmluYWwgeyByZXR1cm4gbG9jYWxOYW1lKCkgPT0gIm1ldGVyIjsgfQotI2VuZGlmCi0KICAgICBi
b29sIGlzSFRNTFVua25vd25FbGVtZW50KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsg
fQogfTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlv
blNpdGUuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxD
b25zdHJ1Y3Rpb25TaXRlLmNwcAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dlYkNvcmUv
aHRtbC9wYXJzZXIvSFRNTENvbnN0cnVjdGlvblNpdGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NzMsNyArNjczLDcgQEAgUmVmUHRyPEVsZW1lbnQ+IEhUTUxDb25zdHJ1Y3Rpb25TaXRlOjpjcgog
CiAgICAgICAgIFF1YWxpZmllZE5hbWUgcXVhbGlmaWVkTmFtZShudWxsQXRvbSwgbG9jYWxOYW1l
LCB4aHRtbE5hbWVzcGFjZVVSSSk7CiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKLSAgICAg
ICAgaWYgKEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6Y2hlY2tOYW1lKGxvY2FsTmFtZSkgPT0g
Q3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpOYW1lU3RhdHVzOjpWYWxpZCkgeworICAgICAgICBp
ZiAoRG9jdW1lbnQ6OnZhbGlkYXRlQ3VzdG9tRWxlbWVudE5hbWUobG9jYWxOYW1lKSA9PSBDdXN0
b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OlZhbGlkKSB7CiAgICAgICAgICAgICBlbGVt
ZW50ID0gSFRNTEVsZW1lbnQ6OmNyZWF0ZShxdWFsaWZpZWROYW1lLCBvd25lckRvY3VtZW50KTsK
ICAgICAgICAgICAgIGVsZW1lbnQtPnNldElzVW5yZXNvbHZlZEN1c3RvbUVsZW1lbnQoKTsKICAg
ICAgICAgICAgIG93bmVyRG9jdW1lbnQuZW5zdXJlQ3VzdG9tRWxlbWVudERlZmluaXRpb25zKCku
YWRkVXBncmFkZUNhbmRpZGF0ZSgqZWxlbWVudCk7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMDE1OTEp
CisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNSBA
QAorMjAxNi0wNi0wMiAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KKworICAgICAg
ICBVcGRhdGUgdGhlIGxpc3Qgb2YgZWxlbWVudHMgYXR0YWNoU2hhZG93IGlzIGFsbG93ZWQKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1NzcwNgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVkIG1vcmUg
dGVzdCBjYXNlcyBmb3IgdmFsaWRhdGluZyBlbGVtZW50cyBvbiB3aGljaCBhdHRhY2hTaGFkb3cg
aXMgYWxsb3dlZCBhbmQgZGlzYWxsb3dlZC4KKworICAgICAgICAqIGZhc3Qvc2hhZG93LWRvbS9F
bGVtZW50LWludGVyZmFjZS1hdHRhY2hTaGFkb3ctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGZh
c3Qvc2hhZG93LWRvbS9FbGVtZW50LWludGVyZmFjZS1hdHRhY2hTaGFkb3cuaHRtbDoKKwogMjAx
Ni0wNi0wMSAgQmVuamFtaW4gUG91bGFpbiAgPGJwb3VsYWluQGFwcGxlLmNvbT4KIAogICAgICAg
ICBbSlNDXSBTb21lIHNldHRlcnMgZm9yIGNvbXBvbmVudHMgb2YgRGF0ZSBkbyBub3QgdGltZUNs
aXAoKSB0aGVpciByZXN1bHQKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9FbGVt
ZW50LWludGVyZmFjZS1hdHRhY2hTaGFkb3ctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExh
eW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9FbGVtZW50LWludGVyZmFjZS1hdHRhY2hTaGFkb3ct
ZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAyMDE1OTEpCisrKyBMYXlvdXRUZXN0cy9mYXN0L3NoYWRv
dy1kb20vRWxlbWVudC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93LWV4cGVjdGVkLnR4dAkod29ya2lu
ZyBjb3B5KQpAQCAtNCw1ICs0LDggQEAgUEFTUyBOb2RlcyBvdGhlciB0aGFuIEVsZW1lbnQgc2hv
dWxkIG5vdAogUEFTUyBFbGVtZW50LmF0dGFjaFNoYWRvdyBtdXN0IHRocm93IGEgVHlwZUVycm9y
IGlmIG1vZGUgaXMgbm90ICJvcGVuIiBvciAiY2xvc2VkIiAKIFBBU1MgRWxlbWVudC5hdHRhY2hT
aGFkb3cgbXVzdCBjcmVhdGUgYW4gaW5zdGFuY2Ugb2YgU2hhZG93Um9vdCAKIFBBU1MgRWxlbWVu
dC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBhIEludmFsaWRTdGF0ZUVycm9yIGlmIHRoZSBjb250
ZXh0IG9iamVjdCBhbHJlYWR5IGhvc3RzIGEgc2hhZG93IHRyZWUgCi1QQVNTIEVsZW1lbnQuYXR0
YWNoU2hhZG93IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciBmb3IgYnV0dG9uLCBkZXRh
aWxzLCBpbnB1dCwgbWFycXVlZSwgbWV0ZXIsIHByb2dyZXNzLCBzZWxlY3QsIHRleHRhcmVhLCBh
bmQga2V5Z2VuIGVsZW1lbnRzIAorUEFTUyBFbGVtZW50LmF0dGFjaFNoYWRvdyBtdXN0IHRocm93
IGEgTm90U3VwcG9ydGVkRXJyb3Igb24gSFRNTCBlbGVtZW50cyB3aG9zZSBsb2NhbCBuYW1lIGlz
IG5vdCBvbmUgb2YgYXJ0aWNsZSwgYXNpZGUsIGJsb2NrcXVvdGUsIGJvZHksIGRpdiwgZm9vdGVy
LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBoZWFkZXIsIG5hdiwgcCwgc2VjdGlvbiwgc3BhbiAK
K1BBU1MgRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCBub3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRF
cnJvciBvbiBhcnRpY2xlLCBhc2lkZSwgYmxvY2txdW90ZSwgYm9keSwgZGl2LCBmb290ZXIsIGgx
LCBoMiwgaDMsIGg0LCBoNSwgaDYsIGhlYWRlciwgbmF2LCBwLCBzZWN0aW9uLCBzcGFuIAorUEFT
UyBFbGVtZW50LmF0dGFjaFNoYWRvdyBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igb24g
YSBIVE1MS25vd25FbGVtZW50IHdoaWNoIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBjdXN0b20gZWxl
bWVudCAKK1BBU1MgRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRl
ZEVycm9yIG9uIGEgSFRNTEtub3duRWxlbWVudCB3aGljaCBoYXMgYSB2YWxpZCBjdXN0b20gZWxl
bWVudCAKIApJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL0VsZW1lbnQtaW50ZXJm
YWNlLWF0dGFjaFNoYWRvdy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3Qvc2hh
ZG93LWRvbS9FbGVtZW50LWludGVyZmFjZS1hdHRhY2hTaGFkb3cuaHRtbAkocmV2aXNpb24gMjAx
NTkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9zaGFkb3ctZG9tL0VsZW1lbnQtaW50ZXJmYWNlLWF0
dGFjaFNoYWRvdy5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC03OCw4ICs3OCwyMiBAQCB0ZXN0KGZ1
bmN0aW9uICgpIHsKICAgICB9LCAnQ2FsbGluZyBhdHRhY2hTaGFkb3coe21vZGU6ICJvcGVuIn0p
IGFmdGVyIGF0dGFjaFNoYWRvdyh7bW9kZTogImNsb3NlZCJ9KSBvbiB0aGUgc2FtZSBlbGVtZW50
IG11c3QgdGhyb3cnKTsKIH0sICdFbGVtZW50LmF0dGFjaFNoYWRvdyBtdXN0IHRocm93IGEgSW52
YWxpZFN0YXRlRXJyb3IgaWYgdGhlIGNvbnRleHQgb2JqZWN0IGFscmVhZHkgaG9zdHMgYSBzaGFk
b3cgdHJlZScpOwogCit2YXIgaHRtbEVsZW1lbnROYW1lcyA9IFsnYScsICdhYmJyJywgJ2Fjcm9u
eW0nLCAnYWRkcmVzcycsICdhcHBsZXQnLCAnYXJlYScsICdhcnRpY2xlJywgJ2FzaWRlJywgJ2F1
ZGlvJywgJ2InLCAnYmFzZScsICdiYXNlZm9udCcsICdiZGknLAorICAgICdiZG8nLCAnYmdzb3Vu
ZCcsICdiaWcnLCAnYmxvY2txdW90ZScsICdib2R5JywgJ2JyJywgJ2J1dHRvbicsICdjYW52YXMn
LCAnY2FwdGlvbicsICdjZW50ZXInLCAnY2l0ZScsICdjb2RlJywgJ2NvbCcsICdjb2xncm91cCcs
CisgICAgJ2NvbW1hbmQnLCAnZGF0YScsICdkYXRhbGlzdCcsICdkZCcsICdkZWwnLCAnZGV0YWls
cycsICdkZm4nLCAnZGlyJywgJ2RpdicsICdkbCcsICdkdCcsICdlbScsICdlbWJlZCcsICdmaWVs
ZHNldCcsICdmaWdjYXB0aW9uJywKKyAgICAnZmlndXJlJywgJ2ZvbnQnLCAnZm9vdGVyJywgJ2Zv
cm0nLCAnZnJhbWUnLCAnZnJhbWVzZXQnLCAnaDEnLCAnaDInLCAnaDMnLCAnaDQnLCAnaDUnLCAn
aDYnLCAnaGVhZCcsICdoZWFkZXInLCAnaGdyb3VwJywgJ2hyJywKKyAgICAnaHRtbCcsICdpJywg
J2lmcmFtZScsICdpbWFnZScsICdpbWcnLCAnaW5wdXQnLCAnaW5zJywgJ2lzaW5kZXgnLCAna2Jk
JywgJ2tleWdlbicsICdsYWJlbCcsICdsYXllcicsICdsZWdlbmQnLCAnbGknLCAnbGluaycsICds
aXN0aW5nJywKKyAgICAnbWFpbicsICdtYXAnLCAnbWFyaycsICdtYXJxdWVlJywgJ21lbnUnLCAn
bWV0YScsICdtZXRlcicsICduYXYnLCAnbm9icicsICdub2VtYmVkJywgJ25vZnJhbWVzJywgJ25v
bGF5ZXInLCAnb2JqZWN0JywgJ29sJywgJ29wdGdyb3VwJywKKyAgICAnb3B0aW9uJywgJ291dHB1
dCcsICdwJywgJ3BhcmFtJywgJ3BpY3R1cmUnLCAncGxhaW50ZXh0JywgJ3ByZScsICdwcm9ncmVz
cycsICdxJywgJ3JiJywgJ3JwJywgJ3J0JywgJ3J0YycsICdydWJ5JywgJ3MnLCAnc2FtcCcsICdz
Y3JpcHQnLAorICAgICdzZWN0aW9uJywgJ3NlbGVjdCcsICdzbG90JywgJ3NtYWxsJywgJ3NvdXJj
ZScsICdzcGFuJywgJ3N0cmlrZScsICdzdHJvbmcnLCAnc3R5bGUnLCAnc3ViJywgJ3N1bW1hcnkn
LCAnc3VwJywgJ3RhYmxlJywgJ3Rib2R5JywgJ3RkJywKKyAgICAndGVtcGxhdGUnLCAndGV4dGFy
ZWEnLCAndGZvb3QnLCAndGgnLCAndGhlYWQnLCAndGltZScsICd0aXRsZScsICd0cicsICd0cmFj
aycsICd0dCcsICd1JywgJ3VsJywgJ3ZhcicsICd2aWRlbycsICd3YnInLCAneG1wJywgJ25vc2Ny
aXB0J107Cit2YXIgYWxsb3dpbmdBdHRhY2hTaGFkb3cgPSBbImFydGljbGUiLCAiYXNpZGUiLCAi
YmxvY2txdW90ZSIsICJib2R5IiwgImRpdiIsICJmb290ZXIiLCAiaDEiLCAiaDIiLCAiaDMiLCAi
aDQiLCAiaDUiLCAiaDYiLCAiaGVhZGVyIiwgIm5hdiIsICJwIiwgInNlY3Rpb24iLCAic3BhbiJd
OworCiB0ZXN0KGZ1bmN0aW9uICgpIHsKLSAgICBmb3IgKHZhciBlbGVtZW50TmFtZSBvZiBbJ2J1
dHRvbicsICdkZXRhaWxzJywgJ2lucHV0JywgJ21hcnF1ZWUnLCAnbWV0ZXInLCAncHJvZ3Jlc3Mn
LCAnc2VsZWN0JywgJ3RleHRhcmVhJywgJ2tleWdlbiddKSB7CisgICAgZm9yICh2YXIgZWxlbWVu
dE5hbWUgb2YgaHRtbEVsZW1lbnROYW1lcykgeworICAgICAgICBpZiAoYWxsb3dpbmdBdHRhY2hT
aGFkb3cuaW5kZXhPZihlbGVtZW50TmFtZSkgPj0gMCkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CiAgICAgICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ05vdFN1cHBvcnRlZEVycm9yJ30sIGZ1
bmN0aW9uICgpIHsKICAgICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWxlbWVudE5h
bWUpLmF0dGFjaFNoYWRvdyh7bW9kZTogIm9wZW4ifSk7CiAgICAgICAgIH0sICdDYWxsaW5nIGF0
dGFjaFNoYWRvdyh7bW9kZTogIm9wZW4ifSkgb24gJyArIGVsZW1lbnROYW1lICsgJyBlbGVtZW50
IG11c3QgdGhyb3cnKTsKQEAgLTg4LDcgKzEwMiwzNyBAQCB0ZXN0KGZ1bmN0aW9uICgpIHsKICAg
ICAgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWxlbWVudE5hbWUpLmF0dGFjaFNoYWRv
dyh7bW9kZTogImNsb3NlZCJ9KTsKICAgICAgICAgfSwgJ0NhbGxpbmcgYXR0YWNoU2hhZG93KHtt
b2RlOiAiY2xvc2VkIn0pIG9uICcgKyBlbGVtZW50TmFtZSArICcgZWxlbWVudCBtdXN0IHRocm93
Jyk7CiAgICAgfQotfSwgJ0VsZW1lbnQuYXR0YWNoU2hhZG93IG11c3QgdGhyb3cgYSBOb3RTdXBw
b3J0ZWRFcnJvciBmb3IgYnV0dG9uLCBkZXRhaWxzLCBpbnB1dCwgbWFycXVlZSwgbWV0ZXIsIHBy
b2dyZXNzLCBzZWxlY3QsIHRleHRhcmVhLCBhbmQga2V5Z2VuIGVsZW1lbnRzJyk7Cit9LCAnRWxl
bWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIG9uIEhUTUwg
ZWxlbWVudHMgd2hvc2UgbG9jYWwgbmFtZSBpcyBub3Qgb25lIG9mICcgKyBhbGxvd2luZ0F0dGFj
aFNoYWRvdy5qb2luKCcsICcpKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgZm9yICh2YXIg
ZWxlbWVudE5hbWUgb2YgYWxsb3dpbmdBdHRhY2hTaGFkb3cpIHsKKyAgICAgICAgYXNzZXJ0X3Ry
dWUoZG9jdW1lbnQuY3JlYXRlRWxlbWVudChlbGVtZW50TmFtZSkuYXR0YWNoU2hhZG93KHttb2Rl
OiAib3BlbiJ9KSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QsCisgICAgICAgICAgICAnQ2FsbGluZyBh
dHRhY2hTaGFkb3coe21vZGU6ICJvcGVuIn0pIG9uICcgKyBlbGVtZW50TmFtZSArICcgZWxlbWVu
dCBtdXN0IG5vdCB0aHJvdycpOworCisgICAgICAgIGFzc2VydF90cnVlKGRvY3VtZW50LmNyZWF0
ZUVsZW1lbnQoZWxlbWVudE5hbWUpLmF0dGFjaFNoYWRvdyh7bW9kZTogImNsb3NlZCJ9KSBpbnN0
YW5jZW9mIFNoYWRvd1Jvb3QsCisgICAgICAgICAgICAnQ2FsbGluZyBhdHRhY2hTaGFkb3coe21v
ZGU6ICJjbG9zZWQifSkgb24gJyArIGVsZW1lbnROYW1lICsgJyBlbGVtZW50IG11c3Qgbm90IHRo
cm93Jyk7CisgICAgfQorfSwgJ0VsZW1lbnQuYXR0YWNoU2hhZG93IG11c3Qgbm90IHRocm93IGEg
Tm90U3VwcG9ydGVkRXJyb3Igb24gJyArIGFsbG93aW5nQXR0YWNoU2hhZG93LmpvaW4oJywgJykp
OworCit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdOb3RT
dXBwb3J0ZWRFcnJvcid9LCBmdW5jdGlvbiAoKSB7CisgICAgICAgIGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoJ3czY2Z1dHVyZWVsZW1lbnQnKS5hdHRhY2hTaGFkb3coe21vZGU6ICJvcGVuIn0pOwor
ICAgIH0sICdDYWxsaW5nIGF0dGFjaFNoYWRvdyh7bW9kZTogIm9wZW4ifSkgb24gYSBIVE1MIGVs
ZW1lbnQgd2hvc2UgbG9jYWwgbmFtZSBpcyAidzNjZnV0dXJlZWxlbWVudCIgbXVzdCB0aHJvdycp
OworCisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAnTm90U3VwcG9ydGVkRXJyb3InfSwgZnVu
Y3Rpb24gKCkgeworICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCd3M2NmdXR1cmVlbGVt
ZW50JykuYXR0YWNoU2hhZG93KHttb2RlOiAiY2xvc2VkIn0pOworICAgIH0sICdDYWxsaW5nIGF0
dGFjaFNoYWRvdyh7bW9kZTogImNsb3NlZCJ9KSBvbiBhIEhUTUwgZWxlbWVudCB3aG9zZSBsb2Nh
bCBuYW1lIGlzICJ3M2NmdXR1cmVlbGVtZW50IiBtdXN0IHRocm93Jyk7CisKK30sICdFbGVtZW50
LmF0dGFjaFNoYWRvdyBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igb24gYSBIVE1MS25v
d25FbGVtZW50IHdoaWNoIGRvZXMgbm90IGhhdmUgYSB2YWxpZCBjdXN0b20gZWxlbWVudCcpOwor
Cit0ZXN0KGZ1bmN0aW9uICgpIHsKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCdjdXN0b20tZWxlbWVudCcpLmF0dGFjaFNoYWRvdyh7bW9kZTogIm9wZW4ifSkgaW5zdGFu
Y2VvZiBTaGFkb3dSb290LAorICAgICAgICAnQ2FsbGluZyBhdHRhY2hTaGFkb3coe21vZGU6ICJv
cGVuIn0pIG9uIGEgSFRNTCBlbGVtZW50IHdob3NlIGxvY2FsIG5hbWUgaXMgImN1c3RvbS1lbGVt
ZW50IiBlbGVtZW50IG11c3Qgbm90IHRocm93Jyk7CisKKyAgICBhc3NlcnRfdHJ1ZShkb2N1bWVu
dC5jcmVhdGVFbGVtZW50KCdjdXN0b20tZWxlbWVudCcpLmF0dGFjaFNoYWRvdyh7bW9kZTogImNs
b3NlZCJ9KSBpbnN0YW5jZW9mIFNoYWRvd1Jvb3QsCisgICAgICAgICdDYWxsaW5nIGF0dGFjaFNo
YWRvdyh7bW9kZTogImNsb3NlZCJ9KSBvbiBhIEhUTUwgZWxlbWVudCB3aG9zZSBsb2NhbCBuYW1l
IGlzICJjdXN0b20tZWxlbWVudCIgbXVzdCBub3QgdGhyb3cnKTsKKworfSwgJ0VsZW1lbnQuYXR0
YWNoU2hhZG93IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciBvbiBhIEhUTUxLbm93bkVs
ZW1lbnQgd2hpY2ggaGFzIGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQnKTsKIAogPC9zY3JpcHQ+CiA8
L2JvZHk+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>280509</attachid>
            <date>2016-06-03 22:59:33 -0700</date>
            <delta_ts>2016-06-04 12:34:57 -0700</delta_ts>
            <desc>Another build fix attempt</desc>
            <filename>bug-157706-20160603230054.patch</filename>
            <type>text/plain</type>
            <size>29309</size>
            <attacher name="Ryosuke Niwa">rniwa</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMTU5NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDU1IEBACisyMDE2LTA2LTAyICBSeW9zdWtl
IE5pd2EgIDxybml3YUB3ZWJraXQub3JnPgorCisgICAgICAgIFVwZGF0ZSB0aGUgbGlzdCBvZiBl
bGVtZW50cyBhdHRhY2hTaGFkb3cgaXMgYWxsb3dlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU3NzA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIHRoZSBsaXN0IG9mIGVsZW1lbnRzIG9uIHdo
aWNoIGF0dGFjaFNoYWRvdyBpcyBhbGxvd2VkIHBlciB0aGUgbGF0ZXN0IHNoYWRvdyBET00gc3Bl
YzoKKyAgICAgICAgaHR0cDovL3d3dy53My5vcmcvVFIvc2hhZG93LWRvbS8jd2lkbC1FbGVtZW50
LWF0dGFjaFNoYWRvdy1TaGFkb3dSb290LVNoYWRvd1Jvb3RJbml0LXNoYWRvd1Jvb3RJbml0RGlj
dAorICAgICAgICB3aGljaCBub3cgb25seSBhbGxvd3MgYXR0YWNoU2hhZG93IG9uIHRoZSBmb2xs
b3dpbmcgZWxlbWVudHMgYW5kIGN1c3RvbSBlbGVtZW50czoKKyAgICAgICAgYnV0dG9uLCBkZXRh
aWxzLCBpbnB1dCwgbWFycXVlZSwgbWV0ZXIsIHByb2dyZXNzLCBzZWxlY3QsIHRleHRhcmVhLCBr
ZXlnZW4KKworICAgICAgICBJbiBvcmRlciB0byBjaGVjayB0aGF0IGEgZ2l2ZW4gSFRNTCBlbGVt
ZW50J3MgbG9jYWwgbmFtZSBpcyBhIHZhbGlkIGN1c3RvbSBlbGVtZW50IG5hbWUsCisgICAgICAg
IHRoaXMgcGF0Y2ggbW92ZXMgQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpjaGVja05hbWUgdG8g
RG9jdW1lbnQ6OnZhbGlkYXRlQ3VzdG9tRWxlbWVudE5hbWUgc28gdGhhdAorICAgICAgICBpdCBj
b3VsZCBiZSB1c2VkIHdoZW4gZWl0aGVyIFNIQURPV19ET00gb3IgQ1VTVE9NX0VMRU1FTlRTIGJ1
aWxkIGZsYWcgaXMgdHVybmVkIG9uLgorCisgICAgICAgIEFsc28gcmVtb3ZlZCBFbGVtZW50Ojpj
YW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCBzaW5jZSBpdCB3YXMgb25seSB1c2VkIGluIEVsZW1l
bnQ6OmF0dGFjaFNoYWRvdy4KKworICAgICAgICBUZXN0OiBmYXN0L3NoYWRvdy1kb20vRWxlbWVu
dC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93Lmh0bWwKKworICAgICAgICAqIGJpbmRpbmdzL2pzL0pT
RG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6ZGVmaW5l
RWxlbWVudCk6CisgICAgICAgICogZG9tL0N1c3RvbUVsZW1lbnREZWZpbml0aW9ucy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6OmNoZWNrTmFtZSk6IE1v
dmVkIHRvIERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lLgorICAgICAgICAqIGRv
bS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaDoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlSFRNTEVsZW1lbnRXaXRoTmFtZVZhbGlkYXRpb24p
OgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRmFsbGJhY2tIVE1MRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpEb2N1bWVudDo6dmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZSk6IE1vdmVkIGZy
b20gQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpjaGVja05hbWUuCisgICAgICAgICogZG9tL0Rv
Y3VtZW50Lmg6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Y2FuQXR0YWNoQXV0aG9yU2hhZG93Um9vdCk6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6YXR0YWNoU2hhZG93KToKKyAgICAgICAgKiBkb20vRWxlbWVudC5oOgorICAgICAgICAq
IGh0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxEZXRhaWxzRWxl
bWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTElucHV0RWxlbWVudC5oOgorICAgICAgICAqIGh0
bWwvSFRNTEtleWdlbkVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxNYXJxdWVlRWxlbWVu
dC5oOgorICAgICAgICAqIGh0bWwvSFRNTE1lZGlhRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTE1ldGVyRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaDoK
KyAgICAgICAgKiBodG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hU
TUxRdW90ZUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxTZWxlY3RFbGVtZW50Lmg6Cisg
ICAgICAgICogaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaDoKKyAgICAgICAgKiBodG1sL0hUTUxU
YWdOYW1lcy5pbjoKKyAgICAgICAgKiBodG1sL0hUTUxUZXh0QXJlYUVsZW1lbnQuaDoKKyAgICAg
ICAgKiBodG1sL0hUTUxVbmtub3duRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hU
TUxDb25zdHJ1Y3Rpb25TaXRlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxDb25zdHJ1Y3Rp
b25TaXRlOjpjcmVhdGVIVE1MRWxlbWVudE9yRmluZEN1c3RvbUVsZW1lbnRJbnRlcmZhY2UpOgor
CiAyMDE2LTA2LTAyICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4K
IAogICAgICAgICBbV2F5bGFuZF0gUGxhdGZvcm1EaXNwbGF5V2F5bGFuZCBkZXN0cnVjdG9yIGlz
IHN1cGVyIGNyYXNoeQpJbmRleDogU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNEb2N1bWVu
dEN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNE
b2N1bWVudEN1c3RvbS5jcHAJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNTgsMTQg
KzE1OCwxNCBAQCBKU1ZhbHVlIEpTRG9jdW1lbnQ6OmRlZmluZUVsZW1lbnQoRXhlY1N0CiAgICAg
ICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIH0KIAotICAgIHN3aXRjaCAoQ3VzdG9tRWxl
bWVudERlZmluaXRpb25zOjpjaGVja05hbWUodGFnTmFtZSkpIHsKLSAgICBjYXNlIEN1c3RvbUVs
ZW1lbnREZWZpbml0aW9uczo6TmFtZVN0YXR1czo6VmFsaWQ6CisgICAgc3dpdGNoIChEb2N1bWVu
dDo6dmFsaWRhdGVDdXN0b21FbGVtZW50TmFtZSh0YWdOYW1lKSkgeworICAgIGNhc2UgQ3VzdG9t
RWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZDoKICAgICAgICAgYnJlYWs7Ci0gICAg
Y2FzZSBDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6Ok5hbWVTdGF0dXM6OkNvbmZsaWN0c1dpdGhC
dWlsdGluTmFtZXM6CisgICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6
OkNvbmZsaWN0c1dpdGhCdWlsdGluTmFtZXM6CiAgICAgICAgIHJldHVybiB0aHJvd1N5bnRheEVy
cm9yKCZzdGF0ZSwgIkN1c3RvbSBlbGVtZW50IG5hbWUgY2Fubm90IGJlIHNhbWUgYXMgb25lIG9m
IHRoZSBidWlsdGluIGVsZW1lbnRzIik7Ci0gICAgY2FzZSBDdXN0b21FbGVtZW50RGVmaW5pdGlv
bnM6Ok5hbWVTdGF0dXM6Ok5vSHlwaGVuOgorICAgIGNhc2UgQ3VzdG9tRWxlbWVudE5hbWVWYWxp
ZGF0aW9uU3RhdHVzOjpOb0h5cGhlbjoKICAgICAgICAgcmV0dXJuIHRocm93U3ludGF4RXJyb3Io
JnN0YXRlLCAiQ3VzdG9tIGVsZW1lbnQgbmFtZSBtdXN0IGNvbnRhaW4gYSBoeXBoZW4iKTsKLSAg
ICBjYXNlIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6TmFtZVN0YXR1czo6Q29udGFpbnNVcHBl
ckNhc2U6CisgICAgY2FzZSBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OkNvbnRh
aW5zVXBwZXJDYXNlOgogICAgICAgICByZXR1cm4gdGhyb3dTeW50YXhFcnJvcigmc3RhdGUsICJD
dXN0b20gZWxlbWVudCBuYW1lIGNhbm5vdCBjb250YWluIGFuIHVwcGVyIGNhc2UgbGV0dGVyIik7
CiAgICAgfQogCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudERlZmluaXRp
b25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9tRWxlbWVudERl
ZmluaXRpb25zLmNwcAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dlYkNvcmUvZG9tL0N1
c3RvbUVsZW1lbnREZWZpbml0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM5LDM2ICszOSw2
IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotQ3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpO
YW1lU3RhdHVzIEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6Y2hlY2tOYW1lKGNvbnN0IEF0b21p
Y1N0cmluZyYgdGFnTmFtZSkKLXsKLSAgICBib29sIGNvbnRhaW5zSHlwaGVuID0gZmFsc2U7Ci0g
ICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHRhZ05hbWUubGVuZ3RoKCk7IGkrKykgewotICAg
ICAgICBpZiAoaXNBU0NJSVVwcGVyKHRhZ05hbWVbaV0pKQotICAgICAgICAgICAgcmV0dXJuIE5h
bWVTdGF0dXM6OkNvbnRhaW5zVXBwZXJDYXNlOwotICAgICAgICBpZiAodGFnTmFtZVtpXSA9PSAn
LScpCi0gICAgICAgICAgICBjb250YWluc0h5cGhlbiA9IHRydWU7Ci0gICAgfQotCi0gICAgaWYg
KCFjb250YWluc0h5cGhlbikKLSAgICAgICAgcmV0dXJuIE5hbWVTdGF0dXM6Ok5vSHlwaGVuOwot
Ci0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBiZSB0YWtpbmcgdGhlIGFkdmFudGFnZSBvZiBRdWFs
aWZpZWROYW1lcyBpbiBTVkcgYW5kIE1hdGhNTC4KLSAgICBpZiAodGFnTmFtZSA9PSBTVkdOYW1l
czo6Y29sb3JfcHJvZmlsZVRhZy5sb2NhbE5hbWUoKQotICAgICAgICB8fCB0YWdOYW1lID09IFNW
R05hbWVzOjpmb250X2ZhY2VUYWcubG9jYWxOYW1lKCkKLSAgICAgICAgfHwgdGFnTmFtZSA9PSBT
VkdOYW1lczo6Zm9udF9mYWNlX2Zvcm1hdFRhZy5sb2NhbE5hbWUoKQotICAgICAgICB8fCB0YWdO
YW1lID09IFNWR05hbWVzOjpmb250X2ZhY2VfbmFtZVRhZy5sb2NhbE5hbWUoKQotICAgICAgICB8
fCB0YWdOYW1lID09IFNWR05hbWVzOjpmb250X2ZhY2Vfc3JjVGFnLmxvY2FsTmFtZSgpCi0gICAg
ICAgIHx8IHRhZ05hbWUgPT0gU1ZHTmFtZXM6OmZvbnRfZmFjZV91cmlUYWcubG9jYWxOYW1lKCkK
LSAgICAgICAgfHwgdGFnTmFtZSA9PSBTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZy5sb2NhbE5h
bWUoKQotI2lmIEVOQUJMRShNQVRITUwpCi0gICAgICAgIHx8IHRhZ05hbWUgPT0gTWF0aE1MTmFt
ZXM6OmFubm90YXRpb25feG1sVGFnLmxvY2FsTmFtZSgpCi0jZW5kaWYKLSAgICAgICAgKQotICAg
ICAgICByZXR1cm4gTmFtZVN0YXR1czo6Q29uZmxpY3RzV2l0aEJ1aWx0aW5OYW1lczsKLQotICAg
IHJldHVybiBOYW1lU3RhdHVzOjpWYWxpZDsKLX0KLQogdm9pZCBDdXN0b21FbGVtZW50RGVmaW5p
dGlvbnM6OmFkZEVsZW1lbnREZWZpbml0aW9uKFJlZjxKU0N1c3RvbUVsZW1lbnRJbnRlcmZhY2U+
JiYgaW50ZXJmYWNlKQogewogICAgIEF0b21pY1N0cmluZyBsb2NhbE5hbWUgPSBpbnRlcmZhY2Ut
Pm5hbWUoKS5sb2NhbE5hbWUoKTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9DdXN0b21FbGVt
ZW50RGVmaW5pdGlvbnMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vQ3VzdG9t
RWxlbWVudERlZmluaXRpb25zLmgJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3Jl
L2RvbS9DdXN0b21FbGVtZW50RGVmaW5pdGlvbnMuaAkod29ya2luZyBjb3B5KQpAQCAtNTYsOSAr
NTYsNiBAQCBwdWJsaWM6CiAgICAgSlNDdXN0b21FbGVtZW50SW50ZXJmYWNlKiBmaW5kSW50ZXJm
YWNlKGNvbnN0IEpTQzo6SlNPYmplY3QqKSBjb25zdDsKICAgICBib29sIGNvbnRhaW5zQ29uc3Ry
dWN0b3IoY29uc3QgSlNDOjpKU09iamVjdCopIGNvbnN0OwogCi0gICAgZW51bSBjbGFzcyBOYW1l
U3RhdHVzIHsgVmFsaWQsIENvbmZsaWN0c1dpdGhCdWlsdGluTmFtZXMsIE5vSHlwaGVuLCBDb250
YWluc1VwcGVyQ2FzZSB9OwotICAgIHN0YXRpYyBOYW1lU3RhdHVzIGNoZWNrTmFtZShjb25zdCBB
dG9taWNTdHJpbmcmIHRhZ05hbWUpOwotCiBwcml2YXRlOgogICAgIEhhc2hNYXA8QXRvbWljU3Ry
aW5nLCBWZWN0b3I8UmVmUHRyPEVsZW1lbnQ+Pj4gbV91cGdyYWRlQ2FuZGlkYXRlc01hcDsKICAg
ICBIYXNoTWFwPEF0b21pY1N0cmluZywgUmVmUHRyPEpTQ3VzdG9tRWxlbWVudEludGVyZmFjZT4+
IG1fbmFtZU1hcDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2aXNpb24gMjAxNTkx
KQorKysgU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODg5LDcgKzg4OSw3IEBAIHN0YXRpYyBSZWZQdHI8RWxlbWVudD4gY3JlYXRlSFRNTEVsZW1lbnQK
ICAgICBRdWFsaWZpZWROYW1lIHF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2FsTmFtZSwgeGh0
bWxOYW1lc3BhY2VVUkkpOwogCiAjaWYgRU5BQkxFKENVU1RPTV9FTEVNRU5UUykKLSAgICBpZiAo
Q3VzdG9tRWxlbWVudERlZmluaXRpb25zOjpjaGVja05hbWUobG9jYWxOYW1lKSA9PSBDdXN0b21F
bGVtZW50RGVmaW5pdGlvbnM6Ok5hbWVTdGF0dXM6OlZhbGlkKSB7CisgICAgaWYgKERvY3VtZW50
Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGxvY2FsTmFtZSkgPT0gQ3VzdG9tRWxlbWVudE5h
bWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZCkgewogICAgICAgICBSZWY8SFRNTEVsZW1lbnQ+IGVs
ZW1lbnQgPSBIVE1MRWxlbWVudDo6Y3JlYXRlKHF1YWxpZmllZE5hbWUsIGRvY3VtZW50KTsKICAg
ICAgICAgZWxlbWVudC0+c2V0SXNVbnJlc29sdmVkQ3VzdG9tRWxlbWVudCgpOwogICAgICAgICBk
b2N1bWVudC5lbnN1cmVDdXN0b21FbGVtZW50RGVmaW5pdGlvbnMoKS5hZGRVcGdyYWRlQ2FuZGlk
YXRlKGVsZW1lbnQuZ2V0KCkpOwpAQCAtMTA3NCw3ICsxMDc0LDcgQEAgc3RhdGljIFJlZjxIVE1M
RWxlbWVudD4gY3JlYXRlRmFsbGJhY2tIVAogICAgICAgICB9CiAgICAgfQogICAgIC8vIEZJWE1F
OiBTaG91bGQgd2UgYWxzbyBjaGVjayB0aGUgZXF1YWxpdHkgb2YgcHJlZml4IGJldHdlZW4gdGhl
IGN1c3RvbSBlbGVtZW50IGFuZCBuYW1lPwotICAgIGlmIChDdXN0b21FbGVtZW50RGVmaW5pdGlv
bnM6OmNoZWNrTmFtZShuYW1lLmxvY2FsTmFtZSgpKSA9PSBDdXN0b21FbGVtZW50RGVmaW5pdGlv
bnM6Ok5hbWVTdGF0dXM6OlZhbGlkKSB7CisgICAgaWYgKERvY3VtZW50Ojp2YWxpZGF0ZUN1c3Rv
bUVsZW1lbnROYW1lKG5hbWUubG9jYWxOYW1lKCkpID09IEN1c3RvbUVsZW1lbnROYW1lVmFsaWRh
dGlvblN0YXR1czo6VmFsaWQpIHsKICAgICAgICAgUmVmPEhUTUxFbGVtZW50PiBlbGVtZW50ID0g
SFRNTEVsZW1lbnQ6OmNyZWF0ZShuYW1lLCBkb2N1bWVudCk7CiAgICAgICAgIGVsZW1lbnQtPnNl
dElzVW5yZXNvbHZlZEN1c3RvbUVsZW1lbnQoKTsKICAgICAgICAgZG9jdW1lbnQuZW5zdXJlQ3Vz
dG9tRWxlbWVudERlZmluaXRpb25zKCkuYWRkVXBncmFkZUNhbmRpZGF0ZShlbGVtZW50LmdldCgp
KTsKQEAgLTExMTIsNiArMTExMiwzNyBAQCBSZWY8RWxlbWVudD4gRG9jdW1lbnQ6OmNyZWF0ZUVs
ZW1lbnQoY29uCiAgICAgcmV0dXJuIGVsZW1lbnQucmVsZWFzZU5vbk51bGwoKTsKIH0KIAorI2lm
IEVOQUJMRShDVVNUT01fRUxFTUVOVFMpIHx8IEVOQUJMRShTSEFET1dfRE9NKQorQ3VzdG9tRWxl
bWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzIERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnRO
YW1lKGNvbnN0IEF0b21pY1N0cmluZyYgbG9jYWxOYW1lKQoreworICAgIGJvb2wgY29udGFpbnNI
eXBoZW4gPSBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbG9jYWxOYW1lLmxl
bmd0aCgpOyBpKyspIHsKKyAgICAgICAgaWYgKGlzQVNDSUlVcHBlcihsb2NhbE5hbWVbaV0pKQor
ICAgICAgICAgICAgcmV0dXJuIEN1c3RvbUVsZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6Q29u
dGFpbnNVcHBlckNhc2U7CisgICAgICAgIGlmIChsb2NhbE5hbWVbaV0gPT0gJy0nKQorICAgICAg
ICAgICAgY29udGFpbnNIeXBoZW4gPSB0cnVlOworICAgIH0KKworICAgIGlmICghY29udGFpbnNI
eXBoZW4pCisgICAgICAgIHJldHVybiBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6
Ok5vSHlwaGVuOworCisgICAgaWYgKGxvY2FsTmFtZSA9PSBTVkdOYW1lczo6Y29sb3JfcHJvZmls
ZVRhZy5sb2NhbE5hbWUoKQorICAgICAgICB8fCBsb2NhbE5hbWUgPT0gU1ZHTmFtZXM6OmZvbnRf
ZmFjZVRhZy5sb2NhbE5hbWUoKQorICAgICAgICB8fCBsb2NhbE5hbWUgPT0gU1ZHTmFtZXM6OmZv
bnRfZmFjZV9mb3JtYXRUYWcubG9jYWxOYW1lKCkKKyAgICAgICAgfHwgbG9jYWxOYW1lID09IFNW
R05hbWVzOjpmb250X2ZhY2VfbmFtZVRhZy5sb2NhbE5hbWUoKQorICAgICAgICB8fCBsb2NhbE5h
bWUgPT0gU1ZHTmFtZXM6OmZvbnRfZmFjZV9zcmNUYWcubG9jYWxOYW1lKCkKKyAgICAgICAgfHwg
bG9jYWxOYW1lID09IFNWR05hbWVzOjpmb250X2ZhY2VfdXJpVGFnLmxvY2FsTmFtZSgpCisgICAg
ICAgIHx8IGxvY2FsTmFtZSA9PSBTVkdOYW1lczo6bWlzc2luZ19nbHlwaFRhZy5sb2NhbE5hbWUo
KQorI2lmIEVOQUJMRShNQVRITUwpCisgICAgICAgIHx8IGxvY2FsTmFtZSA9PSBNYXRoTUxOYW1l
czo6YW5ub3RhdGlvbl94bWxUYWcubG9jYWxOYW1lKCkKKyNlbmRpZgorICAgICAgICApCisgICAg
ICAgIHJldHVybiBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXM6OkNvbmZsaWN0c1dp
dGhCdWlsdGluTmFtZXM7CisKKyAgICByZXR1cm4gQ3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9u
U3RhdHVzOjpWYWxpZDsKK30KKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19HUklEX0xBWU9VVCkK
IGJvb2wgRG9jdW1lbnQ6OmlzQ1NTR3JpZExheW91dEVuYWJsZWQoKSBjb25zdAogewpJbmRleDog
U291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNv
cmUvZG9tL0RvY3VtZW50LmgJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2Rv
bS9Eb2N1bWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yODEsNiArMjgxLDggQEAgZW51bSBjbGFz
cyBIdHRwRXF1aXZQb2xpY3kgewogICAgIERpc2FibGVkQnlDb250ZW50RGlzcG9zaXRpb25BdHRh
Y2htZW50U2FuZGJveAogfTsKIAorZW51bSBjbGFzcyBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRp
b25TdGF0dXMgeyBWYWxpZCwgQ29uZmxpY3RzV2l0aEJ1aWx0aW5OYW1lcywgTm9IeXBoZW4sIENv
bnRhaW5zVXBwZXJDYXNlIH07CisKIGNsYXNzIERvY3VtZW50CiAgICAgOiBwdWJsaWMgQ29udGFp
bmVyTm9kZQogICAgICwgcHVibGljIFRyZWVTY29wZQpAQCAtMzg3LDYgKzM4OSwxMCBAQCBwdWJs
aWM6CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmUHRyPEVsZW1lbnQ+IGNyZWF0ZUVsZW1lbnROUyhj
b25zdCBTdHJpbmcmIG5hbWVzcGFjZVVSSSwgY29uc3QgU3RyaW5nJiBxdWFsaWZpZWROYW1lLCBF
eGNlcHRpb25Db2RlJik7CiAgICAgV0VCQ09SRV9FWFBPUlQgUmVmPEVsZW1lbnQ+IGNyZWF0ZUVs
ZW1lbnQoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGJvb2wgY3JlYXRlZEJ5UGFyc2VyKTsKIAorI2lm
IEVOQUJMRShDVVNUT01fRUxFTUVOVFMpIHx8IEVOQUJMRShTSEFET1dfRE9NKQorICAgIHN0YXRp
YyBDdXN0b21FbGVtZW50TmFtZVZhbGlkYXRpb25TdGF0dXMgdmFsaWRhdGVDdXN0b21FbGVtZW50
TmFtZShjb25zdCBBdG9taWNTdHJpbmcmKTsKKyNlbmRpZgorCiAjaWYgRU5BQkxFKENTU19HUklE
X0xBWU9VVCkKICAgICBib29sIGlzQ1NTR3JpZExheW91dEVuYWJsZWQoKSBjb25zdDsKICNlbmRp
ZgpJbmRleDogU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xNjg1LDE0ICsxNjg1
LDQzIEBAIFJlZlB0cjxTaGFkb3dSb290PiBFbGVtZW50OjpjcmVhdGVTaGFkb3cKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotYm9vbCBFbGVtZW50OjpjYW5IYXZlVXNlckFnZW50U2hhZG93Um9v
dCgpIGNvbnN0CisjaWYgRU5BQkxFKFNIQURPV19ET00pCitzdGF0aWMgYm9vbCBjYW5BdHRhY2hB
dXRob3JTaGFkb3dSb290KGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgcmV0dXJuIGZh
bHNlOworICAgIHN0YXRpYyBOZXZlckRlc3Ryb3llZDxIYXNoU2V0PEF0b21pY1N0cmluZz4+IHRh
Z05hbWVzOworICAgIGlmICh0YWdOYW1lcy5nZXQoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgY29u
c3QgQXRvbWljU3RyaW5nIG5hbWVMaXN0W10gPSB7CisgICAgICAgICAgICBhcnRpY2xlVGFnLmxv
Y2FsTmFtZSgpLAorICAgICAgICAgICAgYXNpZGVUYWcubG9jYWxOYW1lKCksCisgICAgICAgICAg
ICBibG9ja3F1b3RlVGFnLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAgYm9keVRhZy5sb2NhbE5h
bWUoKSwKKyAgICAgICAgICAgIGRpdlRhZy5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIGZvb3Rl
clRhZy5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIGgxVGFnLmxvY2FsTmFtZSgpLAorICAgICAg
ICAgICAgaDJUYWcubG9jYWxOYW1lKCksCisgICAgICAgICAgICBoM1RhZy5sb2NhbE5hbWUoKSwK
KyAgICAgICAgICAgIGg0VGFnLmxvY2FsTmFtZSgpLAorICAgICAgICAgICAgaDVUYWcubG9jYWxO
YW1lKCksCisgICAgICAgICAgICBoNlRhZy5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIGhlYWRl
clRhZy5sb2NhbE5hbWUoKSwKKyAgICAgICAgICAgIG5hdlRhZy5sb2NhbE5hbWUoKSwKKyAgICAg
ICAgICAgIHBUYWcubG9jYWxOYW1lKCksCisgICAgICAgICAgICBzZWN0aW9uVGFnLmxvY2FsTmFt
ZSgpLAorICAgICAgICAgICAgc3BhblRhZy5sb2NhbE5hbWUoKQorICAgICAgICB9OworICAgICAg
ICBmb3IgKGF1dG8mIG5hbWUgOiBuYW1lTGlzdCkKKyAgICAgICAgICAgIHRhZ05hbWVzLmdldCgp
LmFkZChuYW1lKTsKKyAgICB9CisKKyAgICBpZiAoZWxlbWVudC5uYW1lc3BhY2VVUkkoKSAhPSB4
aHRtbE5hbWVzcGFjZVVSSSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRh
Z05hbWVzLmdldCgpLmNvbnRhaW5zKGVsZW1lbnQubG9jYWxOYW1lKCkpIHx8IERvY3VtZW50Ojp2
YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGVsZW1lbnQubG9jYWxOYW1lKCkpID09IEN1c3RvbUVs
ZW1lbnROYW1lVmFsaWRhdGlvblN0YXR1czo6VmFsaWQ7CiB9CiAKIFJlZlB0cjxTaGFkb3dSb290
PiBFbGVtZW50OjphdHRhY2hTaGFkb3coY29uc3QgU2hhZG93Um9vdEluaXQmIGluaXQsIEV4Y2Vw
dGlvbkNvZGUmIGVjKQogewotICAgIGlmIChjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpKSB7
CisgICAgaWYgKCFjYW5BdHRhY2hBdXRob3JTaGFkb3dSb290KCp0aGlzKSkgewogICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICB9CkBA
IC0xNzE5LDYgKzE3NDgsNyBAQCBTaGFkb3dSb290KiBFbGVtZW50OjpzaGFkb3dSb290Rm9yQmlu
ZGluCiAgICAgfQogICAgIHJldHVybiByb290OwogfQorI2VuZGlmCiAKIFNoYWRvd1Jvb3QqIEVs
ZW1lbnQ6OnVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdAogewpJbmRleDogU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dC5oCShyZXZpc2lvbiAyMDE1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC0yNTQsOCArMjU0LDEwIEBAIHB1YmxpYzoKICAgICAgICAgU2hhZG93
Um9vdE1vZGUgbW9kZTsKICAgICB9OwogCisjaWYgRU5BQkxFKFNIQURPV19ET00pCiAgICAgU2hh
ZG93Um9vdCogc2hhZG93Um9vdEZvckJpbmRpbmdzKEpTQzo6RXhlY1N0YXRlJikgY29uc3Q7CiAg
ICAgUmVmUHRyPFNoYWRvd1Jvb3Q+IGF0dGFjaFNoYWRvdyhjb25zdCBTaGFkb3dSb290SW5pdCYs
IEV4Y2VwdGlvbkNvZGUmKTsKKyNlbmRpZgogCiAgICAgU2hhZG93Um9vdCogdXNlckFnZW50U2hh
ZG93Um9vdCgpIGNvbnN0OwogICAgIFdFQkNPUkVfRVhQT1JUIFNoYWRvd1Jvb3QmIGVuc3VyZVVz
ZXJBZ2VudFNoYWRvd1Jvb3QoKTsKQEAgLTU5NCw3ICs1OTYsNiBAQCBwcml2YXRlOgogICAgIFJl
ZjxOb2RlPiBjbG9uZU5vZGVJbnRlcm5hbChEb2N1bWVudCYsIENsb25pbmdPcGVyYXRpb24pIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgUmVmPEVsZW1lbnQ+IGNsb25lRWxlbWVudFdpdGhvdXRBdHRy
aWJ1dGVzQW5kQ2hpbGRyZW4oRG9jdW1lbnQmKTsKIAotICAgIHZpcnR1YWwgYm9vbCBjYW5IYXZl
VXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0OwogICAgIHZvaWQgcmVtb3ZlU2hhZG93Um9vdCgp
OwogCiAgICAgY29uc3QgUmVuZGVyU3R5bGUqIGV4aXN0aW5nQ29tcHV0ZWRTdHlsZSgpOwpJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTEJ1dHRvbkVsZW1lbnQuaAkocmV2aXNpb24gMjAxNTkx
KQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQnV0dG9uRWxlbWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC01Miw3ICs1Miw2IEBAIHByaXZhdGU6CiAKICAgICAvLyBIVE1MRm9ybUNvbnRyb2xF
bGVtZW50IGFsd2F5cyBjcmVhdGVzIG9uZSwgYnV0IGJ1dHRvbnMgZG9uJ3QgbmVlZCBpdC4KICAg
ICBib29sIGFsd2F5c0NyZWF0ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBvdmVycmlkZSB7
IHJldHVybiBmYWxzZTsgfQotICAgIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9taWNTdHJpbmcmKSBvdmVycmlkZTsKICAgICBi
b29sIGlzUHJlc2VudGF0aW9uQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBjb25zdCBv
dmVycmlkZTsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTERldGFpbHNFbGVtZW50LmgK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1lbnQuaAko
cmV2aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRGV0YWlsc0VsZW1l
bnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNyArNDIsNiBAQCBwcml2YXRlOgogICAgIHZvaWQg
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYsIGNvbnN0IEF0b21pY1N0cmluZyYp
IG92ZXJyaWRlOwogCiAgICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290KFNoYWRvd1Jv
b3QqKSBvdmVycmlkZTsKLSAgICBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29u
c3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dpYygp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIGJvb2wgbV9pc09wZW4geyBmYWxz
ZSB9OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MSW5wdXRFbGVtZW50LmgJKHJldmlzaW9u
IDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTElucHV0RWxlbWVudC5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zMzMsNyArMzMzLDYgQEAgcHJpdmF0ZToKICAgICBlbnVtIEF1dG9Db21w
bGV0ZVNldHRpbmcgeyBVbmluaXRpYWxpemVkLCBPbiwgT2ZmIH07CiAKICAgICB2b2lkIGRpZEFk
ZFVzZXJBZ2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIGZpbmFsOwotICAgIGJvb2wgY2FuSGF2
ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKICAg
ICB2b2lkIHdpbGxDaGFuZ2VGb3JtKCkgZmluYWw7CiAgICAgdm9pZCBkaWRDaGFuZ2VGb3JtKCkg
ZmluYWw7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MS2V5Z2VuRWxlbWVudC5oCShyZXZp
c2lvbiAyMDE1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxLZXlnZW5FbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTU1LDggKzU1LDYgQEAgcHJpdmF0ZToKICAgICB2b2lkIHJlc2V0
KCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBzaG91bGRTYXZlQW5kUmVzdG9yZUZvcm1Db250cm9sU3Rh
dGUoKSBjb25zdCBvdmVycmlkZTsKIAotICAgIGJvb2wgY2FuSGF2ZVVzZXJBZ2VudFNoYWRvd1Jv
b3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0KICAgICBib29sIGlzS2V5dHlwZVJT
QSgpIGNvbnN0OwogCiAgICAgSFRNTFNlbGVjdEVsZW1lbnQqIHNoYWRvd1NlbGVjdCgpIGNvbnN0
OwpJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWFycXVlZUVsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCShyZXZpc2lv
biAyMDE1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNYXJxdWVlRWxlbWVudC5oCSh3
b3JraW5nIGNvcHkpCkBAIC02Miw4ICs2Miw2IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZXN1bWUo
KSBvdmVycmlkZTsKICAgICBjb25zdCBjaGFyKiBhY3RpdmVET01PYmplY3ROYW1lKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gIkhUTUxNYXJxdWVlRWxlbWVudCI7IH0KIAotICAgIGJvb2wgY2Fu
SGF2ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0K
ICAgICBSZW5kZXJNYXJxdWVlKiByZW5kZXJNYXJxdWVlKCkgY29uc3Q7CiB9OwogCkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaAkocmV2aXNpb24gMjAxNTkxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTUwNCw5ICs1MDQsNiBAQCBwcml2YXRlOgogCiAgICAgYm9vbCBhbHdheXNDcmVhdGVVc2VyQWdl
bnRTaGFkb3dSb290KCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgLy8g
RklYTUU6IFNoYWRvdyBET00gc3BlYyBzYXlzIHdlIHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBz
aGFkb3cgcm9vdCBvbiBhdWRpbyBhbmQgdmlkZW8gZWxlbWVudHMKLSAgICBib29sIGNhbkhhdmVV
c2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotCiAgICAg
Ym9vbCBzdXBwb3J0c0ZvY3VzKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCBpc01vdXNlRm9j
dXNhYmxlKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAgYm9vbCByZW5kZXJlcklzTmVlZGVkKGNvbnN0
IFJlbmRlclN0eWxlJikgb3ZlcnJpZGU7CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxN
ZXRlckVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZXRl
ckVsZW1lbnQuaAkocmV2aXNpb24gMjAxNTkxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
TWV0ZXJFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDYgQEAgcHJpdmF0ZToK
IAogICAgIHZvaWQgZGlkRWxlbWVudFN0YXRlQ2hhbmdlKCk7CiAgICAgdm9pZCBkaWRBZGRVc2Vy
QWdlbnRTaGFkb3dSb290KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKLSAgICBib29sIGNhbkhhdmVV
c2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogCiAgICAg
UmVmUHRyPE1ldGVyVmFsdWVFbGVtZW50PiBtX3ZhbHVlOwogfTsKSW5kZXg6IFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29y
ZS9odG1sL0hUTUxQbHVnSW5FbGVtZW50LmgJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTFBsdWdJbkVsZW1lbnQuaAkod29ya2luZyBjb3B5KQpAQCAtMTE3LDkg
KzExNyw2IEBAIHByaXZhdGU6CiAKICAgICBib29sIGRpc3BhdGNoQmVmb3JlTG9hZEV2ZW50KGNv
bnN0IFN0cmluZyYgc291cmNlVVJMKTsgLy8gTm90IGltcGxlbWVudGVkLCBnZW5lcmF0ZXMgYSBj
b21waWxlIGVycm9yIGlmIHN1YmNsYXNzZXMgY2FsbCB0aGlzIGJ5IG1pc3Rha2UuCiAKLSAgICAv
LyBGSVhNRTogU2hhZG93IERPTSBzcGVjIHNheXMgd2Ugc2hvdWxkIGJlIGFibGUgdG8gY3JlYXRl
IHNoYWRvdyByb290IG9uIGFwcGxldCwgZW1iZWQsIGFuZCBvYmplY3QuCi0gICAgYm9vbCBjYW5I
YXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQog
ICAgIC8vIFRoaXMgd2lsbCBsb2FkIHRoZSBwbHVnaW4gaWYgbmVjZXNzYXJ5LgogICAgIHZpcnR1
YWwgUmVuZGVyV2lkZ2V0KiByZW5kZXJXaWRnZXRMb2FkaW5nUGx1Z2luKCkgY29uc3QgPSAwOwog
CkluZGV4OiBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQcm9ncmVzc0VsZW1lbnQuaAkocmV2aXNp
b24gMjAxNTkxKQorKysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUHJvZ3Jlc3NFbGVtZW50LmgJ
KHdvcmtpbmcgY29weSkKQEAgLTYyLDcgKzYyLDYgQEAgcHJpdmF0ZToKIAogICAgIHZvaWQgZGlk
RWxlbWVudFN0YXRlQ2hhbmdlKCk7CiAgICAgdm9pZCBkaWRBZGRVc2VyQWdlbnRTaGFkb3dSb290
KFNoYWRvd1Jvb3QqKSBvdmVycmlkZTsKLSAgICBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dS
b290KCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaXNEZXRlcm1pbmF0
ZSgpIGNvbnN0OwogCiAgICAgUHJvZ3Jlc3NWYWx1ZUVsZW1lbnQqIG1fdmFsdWU7CkluZGV4OiBT
b3VyY2UvV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxRdW90ZUVsZW1lbnQuaAkocmV2aXNpb24gMjAxNTkxKQorKysg
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MUXVvdGVFbGVtZW50LmgJKHdvcmtpbmcgY29weSkKQEAg
LTM1LDcgKzM1LDcgQEAgcHVibGljOgogCiBwcml2YXRlOgogICAgIEhUTUxRdW90ZUVsZW1lbnQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Jik7Ci0gICAgCisKICAgICBib29sIGlzVVJM
QXR0cmlidXRlKGNvbnN0IEF0dHJpYnV0ZSYpIGNvbnN0IG92ZXJyaWRlOwogfTsKIApJbmRleDog
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTFNlbGVjdEVsZW1lbnQuaAkocmV2aXNpb24gMjAxNTkxKQor
KysgU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU2VsZWN0RWxlbWVudC5oCSh3b3JraW5nIGNvcHkp
CkBAIC0xMTksOCArMTE5LDYgQEAgcHJpdmF0ZToKICAgICAKICAgICBib29sIGNhblN0YXJ0U2Vs
ZWN0aW9uKCkgY29uc3QgZmluYWwgeyByZXR1cm4gZmFsc2U7IH0KIAotICAgIGJvb2wgY2FuSGF2
ZVVzZXJBZ2VudFNoYWRvd1Jvb3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9Ci0KICAg
ICBib29sIGlzRW51bWVyYXRhYmxlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAg
IGJvb2wgc3VwcG9ydExhYmVscygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIApJbmRl
eDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MU3VtbWFyeUVsZW1lbnQuaAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCShyZXZpc2lvbiAyMDE1
OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTdW1tYXJ5RWxlbWVudC5oCSh3b3JraW5n
IGNvcHkpCkBAIC00Miw4ICs0Miw2IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpZEFkZFVzZXJB
Z2VudFNoYWRvd1Jvb3QoU2hhZG93Um9vdCopIG92ZXJyaWRlOwogCi0gICAgLy8gRklYTUU6IFNo
YWRvdyBET00gc3BlYyBzYXlzIHdlIHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZSBzaGFkb3cgcm9v
dCBvbiB0aGlzIGVsZW1lbnQKLSAgICBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkg
Y29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQogICAgIGJvb2wgaGFzQ3VzdG9tRm9jdXNMb2dp
YygpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KIAogICAgIEhUTUxEZXRhaWxzRWxlbWVu
dCogZGV0YWlsc0VsZW1lbnQoKSBjb25zdDsKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRhZ05hbWVzLmluCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRhZ05h
bWVzLmluCShyZXZpc2lvbiAyMDE1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUYWdO
YW1lcy5pbgkod29ya2luZyBjb3B5KQpAQCAtMzMsNyArMzMsNiBAQCBjb2RlIGludGVyZmFjZU5h
bWU9SFRNTEVsZW1lbnQKIGNvbCBpbnRlcmZhY2VOYW1lPUhUTUxUYWJsZUNvbEVsZW1lbnQKIGNv
bGdyb3VwIGludGVyZmFjZU5hbWU9SFRNTFRhYmxlQ29sRWxlbWVudAogY29tbWFuZCBpbnRlcmZh
Y2VOYW1lPUhUTUxFbGVtZW50Ci13ZWJraXRTaGFkb3dDb250ZW50IGludGVyZmFjZU5hbWU9SFRN
TEVsZW1lbnQsIG5vQ29uc3RydWN0b3IKIGRhdGEKIGRhdGFsaXN0IGludGVyZmFjZU5hbWU9SFRN
TERhdGFMaXN0RWxlbWVudCwgY29uZGl0aW9uYWw9REFUQUxJU1RfRUxFTUVOVAogZGQgaW50ZXJm
YWNlTmFtZT1IVE1MRWxlbWVudApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVGV4dEFy
ZWFFbGVtZW50LmgJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRleHRBcmVhRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw3ICs3MSw2IEBAIHByaXZh
dGU6CiAgICAgZW51bSBXcmFwTWV0aG9kIHsgTm9XcmFwLCBTb2Z0V3JhcCwgSGFyZFdyYXAgfTsK
IAogICAgIHZvaWQgZGlkQWRkVXNlckFnZW50U2hhZG93Um9vdChTaGFkb3dSb290Kikgb3ZlcnJp
ZGU7Ci0gICAgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KIAogICAgIHZvaWQgbWF4TGVuZ3RoQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBBdG9taWNTdHJpbmcmIG5ld1ZhbHVlKTsKIApJbmRleDogU291cmNlL1dlYkNvcmUvaHRtbC9I
VE1MVW5rbm93bkVsZW1lbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxVbmtub3duRWxlbWVudC5oCShyZXZpc2lvbiAyMDE1OTEpCisrKyBTb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxVbmtub3duRWxlbWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC00NywxMiArNDcsNiBA
QCBwcml2YXRlOgogICAgIHsKICAgICB9CiAKLSNpZiBFTkFCTEUoTUVURVJfRUxFTUVOVCkKLSAg
ICBib29sIGNhbkhhdmVVc2VyQWdlbnRTaGFkb3dSb290KCkgY29uc3QgZmluYWwgeyByZXR1cm4g
ZmFsc2U7IH0KLSNlbHNlCi0gICAgYm9vbCBjYW5IYXZlVXNlckFnZW50U2hhZG93Um9vdCgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIGxvY2FsTmFtZSgpID09ICJtZXRlciI7IH0KLSNlbmRpZgotCiAg
ICAgYm9vbCBpc0hUTUxVbmtub3duRWxlbWVudCgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRy
dWU7IH0KIH07CiAKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1
Y3Rpb25TaXRlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MQ29uc3RydWN0aW9uU2l0ZS5jcHAJKHJldmlzaW9uIDIwMTU5MSkKKysrIFNvdXJjZS9XZWJD
b3JlL2h0bWwvcGFyc2VyL0hUTUxDb25zdHJ1Y3Rpb25TaXRlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtNjczLDcgKzY3Myw3IEBAIFJlZlB0cjxFbGVtZW50PiBIVE1MQ29uc3RydWN0aW9uU2l0ZTo6
Y3IKIAogICAgICAgICBRdWFsaWZpZWROYW1lIHF1YWxpZmllZE5hbWUobnVsbEF0b20sIGxvY2Fs
TmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkpOwogI2lmIEVOQUJMRShDVVNUT01fRUxFTUVOVFMpCi0g
ICAgICAgIGlmIChDdXN0b21FbGVtZW50RGVmaW5pdGlvbnM6OmNoZWNrTmFtZShsb2NhbE5hbWUp
ID09IEN1c3RvbUVsZW1lbnREZWZpbml0aW9uczo6TmFtZVN0YXR1czo6VmFsaWQpIHsKKyAgICAg
ICAgaWYgKERvY3VtZW50Ojp2YWxpZGF0ZUN1c3RvbUVsZW1lbnROYW1lKGxvY2FsTmFtZSkgPT0g
Q3VzdG9tRWxlbWVudE5hbWVWYWxpZGF0aW9uU3RhdHVzOjpWYWxpZCkgewogICAgICAgICAgICAg
ZWxlbWVudCA9IEhUTUxFbGVtZW50OjpjcmVhdGUocXVhbGlmaWVkTmFtZSwgb3duZXJEb2N1bWVu
dCk7CiAgICAgICAgICAgICBlbGVtZW50LT5zZXRJc1VucmVzb2x2ZWRDdXN0b21FbGVtZW50KCk7
CiAgICAgICAgICAgICBvd25lckRvY3VtZW50LmVuc3VyZUN1c3RvbUVsZW1lbnREZWZpbml0aW9u
cygpLmFkZFVwZ3JhZGVDYW5kaWRhdGUoKmVsZW1lbnQpOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMjAx
NTkxKQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMTYtMDYtMDIgIFJ5b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgVXBkYXRlIHRoZSBsaXN0IG9mIGVsZW1lbnRzIGF0dGFjaFNoYWRvdyBpcyBhbGxvd2Vk
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTc3MDYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBZGRlZCBt
b3JlIHRlc3QgY2FzZXMgZm9yIHZhbGlkYXRpbmcgZWxlbWVudHMgb24gd2hpY2ggYXR0YWNoU2hh
ZG93IGlzIGFsbG93ZWQgYW5kIGRpc2FsbG93ZWQuCisKKyAgICAgICAgKiBmYXN0L3NoYWRvdy1k
b20vRWxlbWVudC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93LWV4cGVjdGVkLnR4dDoKKyAgICAgICAg
KiBmYXN0L3NoYWRvdy1kb20vRWxlbWVudC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93Lmh0bWw6CisK
IDIwMTYtMDYtMDEgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgW0pTQ10gU29tZSBzZXR0ZXJzIGZvciBjb21wb25lbnRzIG9mIERhdGUgZG8gbm90IHRp
bWVDbGlwKCkgdGhlaXIgcmVzdWx0CkluZGV4OiBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20v
RWxlbWVudC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93LWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9mYXN0L3NoYWRvdy1kb20vRWxlbWVudC1pbnRlcmZhY2UtYXR0YWNoU2hh
ZG93LWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMjAxNTkxKQorKysgTGF5b3V0VGVzdHMvZmFzdC9z
aGFkb3ctZG9tL0VsZW1lbnQtaW50ZXJmYWNlLWF0dGFjaFNoYWRvdy1leHBlY3RlZC50eHQJKHdv
cmtpbmcgY29weSkKQEAgLTQsNSArNCw4IEBAIFBBU1MgTm9kZXMgb3RoZXIgdGhhbiBFbGVtZW50
IHNob3VsZCBub3QKIFBBU1MgRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBhIFR5cGVF
cnJvciBpZiBtb2RlIGlzIG5vdCAib3BlbiIgb3IgImNsb3NlZCIgCiBQQVNTIEVsZW1lbnQuYXR0
YWNoU2hhZG93IG11c3QgY3JlYXRlIGFuIGluc3RhbmNlIG9mIFNoYWRvd1Jvb3QgCiBQQVNTIEVs
ZW1lbnQuYXR0YWNoU2hhZG93IG11c3QgdGhyb3cgYSBJbnZhbGlkU3RhdGVFcnJvciBpZiB0aGUg
Y29udGV4dCBvYmplY3QgYWxyZWFkeSBob3N0cyBhIHNoYWRvdyB0cmVlIAotUEFTUyBFbGVtZW50
LmF0dGFjaFNoYWRvdyBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3IgZm9yIGJ1dHRvbiwg
ZGV0YWlscywgaW5wdXQsIG1hcnF1ZWUsIG1ldGVyLCBwcm9ncmVzcywgc2VsZWN0LCB0ZXh0YXJl
YSwgYW5kIGtleWdlbiBlbGVtZW50cyAKK1BBU1MgRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0
aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIG9uIEhUTUwgZWxlbWVudHMgd2hvc2UgbG9jYWwgbmFt
ZSBpcyBub3Qgb25lIG9mIGFydGljbGUsIGFzaWRlLCBibG9ja3F1b3RlLCBib2R5LCBkaXYsIGZv
b3RlciwgaDEsIGgyLCBoMywgaDQsIGg1LCBoNiwgaGVhZGVyLCBuYXYsIHAsIHNlY3Rpb24sIHNw
YW4gCitQQVNTIEVsZW1lbnQuYXR0YWNoU2hhZG93IG11c3Qgbm90IHRocm93IGEgTm90U3VwcG9y
dGVkRXJyb3Igb24gYXJ0aWNsZSwgYXNpZGUsIGJsb2NrcXVvdGUsIGJvZHksIGRpdiwgZm9vdGVy
LCBoMSwgaDIsIGgzLCBoNCwgaDUsIGg2LCBoZWFkZXIsIG5hdiwgcCwgc2VjdGlvbiwgc3BhbiAK
K1BBU1MgRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9y
IG9uIGEgSFRNTEtub3duRWxlbWVudCB3aGljaCBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY3VzdG9t
IGVsZW1lbnQgCitQQVNTIEVsZW1lbnQuYXR0YWNoU2hhZG93IG11c3QgdGhyb3cgYSBOb3RTdXBw
b3J0ZWRFcnJvciBvbiBhIEhUTUxLbm93bkVsZW1lbnQgd2hpY2ggaGFzIGEgdmFsaWQgY3VzdG9t
IGVsZW1lbnQgCiAKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9FbGVtZW50LWlu
dGVyZmFjZS1hdHRhY2hTaGFkb3cuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0
L3NoYWRvdy1kb20vRWxlbWVudC1pbnRlcmZhY2UtYXR0YWNoU2hhZG93Lmh0bWwJKHJldmlzaW9u
IDIwMTU5MSkKKysrIExheW91dFRlc3RzL2Zhc3Qvc2hhZG93LWRvbS9FbGVtZW50LWludGVyZmFj
ZS1hdHRhY2hTaGFkb3cuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtNzgsOCArNzgsMjIgQEAgdGVz
dChmdW5jdGlvbiAoKSB7CiAgICAgfSwgJ0NhbGxpbmcgYXR0YWNoU2hhZG93KHttb2RlOiAib3Bl
biJ9KSBhZnRlciBhdHRhY2hTaGFkb3coe21vZGU6ICJjbG9zZWQifSkgb24gdGhlIHNhbWUgZWxl
bWVudCBtdXN0IHRocm93Jyk7CiB9LCAnRWxlbWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBh
IEludmFsaWRTdGF0ZUVycm9yIGlmIHRoZSBjb250ZXh0IG9iamVjdCBhbHJlYWR5IGhvc3RzIGEg
c2hhZG93IHRyZWUnKTsKIAordmFyIGh0bWxFbGVtZW50TmFtZXMgPSBbJ2EnLCAnYWJicicsICdh
Y3JvbnltJywgJ2FkZHJlc3MnLCAnYXBwbGV0JywgJ2FyZWEnLCAnYXJ0aWNsZScsICdhc2lkZScs
ICdhdWRpbycsICdiJywgJ2Jhc2UnLCAnYmFzZWZvbnQnLCAnYmRpJywKKyAgICAnYmRvJywgJ2Jn
c291bmQnLCAnYmlnJywgJ2Jsb2NrcXVvdGUnLCAnYm9keScsICdicicsICdidXR0b24nLCAnY2Fu
dmFzJywgJ2NhcHRpb24nLCAnY2VudGVyJywgJ2NpdGUnLCAnY29kZScsICdjb2wnLCAnY29sZ3Jv
dXAnLAorICAgICdjb21tYW5kJywgJ2RhdGEnLCAnZGF0YWxpc3QnLCAnZGQnLCAnZGVsJywgJ2Rl
dGFpbHMnLCAnZGZuJywgJ2RpcicsICdkaXYnLCAnZGwnLCAnZHQnLCAnZW0nLCAnZW1iZWQnLCAn
ZmllbGRzZXQnLCAnZmlnY2FwdGlvbicsCisgICAgJ2ZpZ3VyZScsICdmb250JywgJ2Zvb3Rlcics
ICdmb3JtJywgJ2ZyYW1lJywgJ2ZyYW1lc2V0JywgJ2gxJywgJ2gyJywgJ2gzJywgJ2g0JywgJ2g1
JywgJ2g2JywgJ2hlYWQnLCAnaGVhZGVyJywgJ2hncm91cCcsICdocicsCisgICAgJ2h0bWwnLCAn
aScsICdpZnJhbWUnLCAnaW1hZ2UnLCAnaW1nJywgJ2lucHV0JywgJ2lucycsICdpc2luZGV4Jywg
J2tiZCcsICdrZXlnZW4nLCAnbGFiZWwnLCAnbGF5ZXInLCAnbGVnZW5kJywgJ2xpJywgJ2xpbmsn
LCAnbGlzdGluZycsCisgICAgJ21haW4nLCAnbWFwJywgJ21hcmsnLCAnbWFycXVlZScsICdtZW51
JywgJ21ldGEnLCAnbWV0ZXInLCAnbmF2JywgJ25vYnInLCAnbm9lbWJlZCcsICdub2ZyYW1lcycs
ICdub2xheWVyJywgJ29iamVjdCcsICdvbCcsICdvcHRncm91cCcsCisgICAgJ29wdGlvbicsICdv
dXRwdXQnLCAncCcsICdwYXJhbScsICdwaWN0dXJlJywgJ3BsYWludGV4dCcsICdwcmUnLCAncHJv
Z3Jlc3MnLCAncScsICdyYicsICdycCcsICdydCcsICdydGMnLCAncnVieScsICdzJywgJ3NhbXAn
LCAnc2NyaXB0JywKKyAgICAnc2VjdGlvbicsICdzZWxlY3QnLCAnc2xvdCcsICdzbWFsbCcsICdz
b3VyY2UnLCAnc3BhbicsICdzdHJpa2UnLCAnc3Ryb25nJywgJ3N0eWxlJywgJ3N1YicsICdzdW1t
YXJ5JywgJ3N1cCcsICd0YWJsZScsICd0Ym9keScsICd0ZCcsCisgICAgJ3RlbXBsYXRlJywgJ3Rl
eHRhcmVhJywgJ3Rmb290JywgJ3RoJywgJ3RoZWFkJywgJ3RpbWUnLCAndGl0bGUnLCAndHInLCAn
dHJhY2snLCAndHQnLCAndScsICd1bCcsICd2YXInLCAndmlkZW8nLCAnd2JyJywgJ3htcCcsICdu
b3NjcmlwdCddOwordmFyIGFsbG93aW5nQXR0YWNoU2hhZG93ID0gWyJhcnRpY2xlIiwgImFzaWRl
IiwgImJsb2NrcXVvdGUiLCAiYm9keSIsICJkaXYiLCAiZm9vdGVyIiwgImgxIiwgImgyIiwgImgz
IiwgImg0IiwgImg1IiwgImg2IiwgImhlYWRlciIsICJuYXYiLCAicCIsICJzZWN0aW9uIiwgInNw
YW4iXTsKKwogdGVzdChmdW5jdGlvbiAoKSB7Ci0gICAgZm9yICh2YXIgZWxlbWVudE5hbWUgb2Yg
WydidXR0b24nLCAnZGV0YWlscycsICdpbnB1dCcsICdtYXJxdWVlJywgJ21ldGVyJywgJ3Byb2dy
ZXNzJywgJ3NlbGVjdCcsICd0ZXh0YXJlYScsICdrZXlnZW4nXSkgeworICAgIGZvciAodmFyIGVs
ZW1lbnROYW1lIG9mIGh0bWxFbGVtZW50TmFtZXMpIHsKKyAgICAgICAgaWYgKGFsbG93aW5nQXR0
YWNoU2hhZG93LmluZGV4T2YoZWxlbWVudE5hbWUpID49IDApCisgICAgICAgICAgICBjb250aW51
ZTsKKwogICAgICAgICBhc3NlcnRfdGhyb3dzKHsnbmFtZSc6ICdOb3RTdXBwb3J0ZWRFcnJvcid9
LCBmdW5jdGlvbiAoKSB7CiAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1l
bnROYW1lKS5hdHRhY2hTaGFkb3coe21vZGU6ICJvcGVuIn0pOwogICAgICAgICB9LCAnQ2FsbGlu
ZyBhdHRhY2hTaGFkb3coe21vZGU6ICJvcGVuIn0pIG9uICcgKyBlbGVtZW50TmFtZSArICcgZWxl
bWVudCBtdXN0IHRocm93Jyk7CkBAIC04OCw3ICsxMDIsMzcgQEAgdGVzdChmdW5jdGlvbiAoKSB7
CiAgICAgICAgICAgICBkb2N1bWVudC5jcmVhdGVFbGVtZW50KGVsZW1lbnROYW1lKS5hdHRhY2hT
aGFkb3coe21vZGU6ICJjbG9zZWQifSk7CiAgICAgICAgIH0sICdDYWxsaW5nIGF0dGFjaFNoYWRv
dyh7bW9kZTogImNsb3NlZCJ9KSBvbiAnICsgZWxlbWVudE5hbWUgKyAnIGVsZW1lbnQgbXVzdCB0
aHJvdycpOwogICAgIH0KLX0sICdFbGVtZW50LmF0dGFjaFNoYWRvdyBtdXN0IHRocm93IGEgTm90
U3VwcG9ydGVkRXJyb3IgZm9yIGJ1dHRvbiwgZGV0YWlscywgaW5wdXQsIG1hcnF1ZWUsIG1ldGVy
LCBwcm9ncmVzcywgc2VsZWN0LCB0ZXh0YXJlYSwgYW5kIGtleWdlbiBlbGVtZW50cycpOworfSwg
J0VsZW1lbnQuYXR0YWNoU2hhZG93IG11c3QgdGhyb3cgYSBOb3RTdXBwb3J0ZWRFcnJvciBvbiBI
VE1MIGVsZW1lbnRzIHdob3NlIGxvY2FsIG5hbWUgaXMgbm90IG9uZSBvZiAnICsgYWxsb3dpbmdB
dHRhY2hTaGFkb3cuam9pbignLCAnKSk7CisKK3Rlc3QoZnVuY3Rpb24gKCkgeworICAgIGZvciAo
dmFyIGVsZW1lbnROYW1lIG9mIGFsbG93aW5nQXR0YWNoU2hhZG93KSB7CisgICAgICAgIGFzc2Vy
dF90cnVlKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZWxlbWVudE5hbWUpLmF0dGFjaFNoYWRvdyh7
bW9kZTogIm9wZW4ifSkgaW5zdGFuY2VvZiBTaGFkb3dSb290LAorICAgICAgICAgICAgJ0NhbGxp
bmcgYXR0YWNoU2hhZG93KHttb2RlOiAib3BlbiJ9KSBvbiAnICsgZWxlbWVudE5hbWUgKyAnIGVs
ZW1lbnQgbXVzdCBub3QgdGhyb3cnKTsKKworICAgICAgICBhc3NlcnRfdHJ1ZShkb2N1bWVudC5j
cmVhdGVFbGVtZW50KGVsZW1lbnROYW1lKS5hdHRhY2hTaGFkb3coe21vZGU6ICJjbG9zZWQifSkg
aW5zdGFuY2VvZiBTaGFkb3dSb290LAorICAgICAgICAgICAgJ0NhbGxpbmcgYXR0YWNoU2hhZG93
KHttb2RlOiAiY2xvc2VkIn0pIG9uICcgKyBlbGVtZW50TmFtZSArICcgZWxlbWVudCBtdXN0IG5v
dCB0aHJvdycpOworICAgIH0KK30sICdFbGVtZW50LmF0dGFjaFNoYWRvdyBtdXN0IG5vdCB0aHJv
dyBhIE5vdFN1cHBvcnRlZEVycm9yIG9uICcgKyBhbGxvd2luZ0F0dGFjaFNoYWRvdy5qb2luKCcs
ICcpKTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgYXNzZXJ0X3Rocm93cyh7J25hbWUnOiAn
Tm90U3VwcG9ydGVkRXJyb3InfSwgZnVuY3Rpb24gKCkgeworICAgICAgICBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCd3M2NmdXR1cmVlbGVtZW50JykuYXR0YWNoU2hhZG93KHttb2RlOiAib3BlbiJ9
KTsKKyAgICB9LCAnQ2FsbGluZyBhdHRhY2hTaGFkb3coe21vZGU6ICJvcGVuIn0pIG9uIGEgSFRN
TCBlbGVtZW50IHdob3NlIGxvY2FsIG5hbWUgaXMgInczY2Z1dHVyZWVsZW1lbnQiIG11c3QgdGhy
b3cnKTsKKworICAgIGFzc2VydF90aHJvd3MoeyduYW1lJzogJ05vdFN1cHBvcnRlZEVycm9yJ30s
IGZ1bmN0aW9uICgpIHsKKyAgICAgICAgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgndzNjZnV0dXJl
ZWxlbWVudCcpLmF0dGFjaFNoYWRvdyh7bW9kZTogImNsb3NlZCJ9KTsKKyAgICB9LCAnQ2FsbGlu
ZyBhdHRhY2hTaGFkb3coe21vZGU6ICJjbG9zZWQifSkgb24gYSBIVE1MIGVsZW1lbnQgd2hvc2Ug
bG9jYWwgbmFtZSBpcyAidzNjZnV0dXJlZWxlbWVudCIgbXVzdCB0aHJvdycpOworCit9LCAnRWxl
bWVudC5hdHRhY2hTaGFkb3cgbXVzdCB0aHJvdyBhIE5vdFN1cHBvcnRlZEVycm9yIG9uIGEgSFRN
TEtub3duRWxlbWVudCB3aGljaCBkb2VzIG5vdCBoYXZlIGEgdmFsaWQgY3VzdG9tIGVsZW1lbnQn
KTsKKwordGVzdChmdW5jdGlvbiAoKSB7CisgICAgYXNzZXJ0X3RydWUoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgnY3VzdG9tLWVsZW1lbnQnKS5hdHRhY2hTaGFkb3coe21vZGU6ICJvcGVuIn0pIGlu
c3RhbmNlb2YgU2hhZG93Um9vdCwKKyAgICAgICAgJ0NhbGxpbmcgYXR0YWNoU2hhZG93KHttb2Rl
OiAib3BlbiJ9KSBvbiBhIEhUTUwgZWxlbWVudCB3aG9zZSBsb2NhbCBuYW1lIGlzICJjdXN0b20t
ZWxlbWVudCIgZWxlbWVudCBtdXN0IG5vdCB0aHJvdycpOworCisgICAgYXNzZXJ0X3RydWUoZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgnY3VzdG9tLWVsZW1lbnQnKS5hdHRhY2hTaGFkb3coe21vZGU6
ICJjbG9zZWQifSkgaW5zdGFuY2VvZiBTaGFkb3dSb290LAorICAgICAgICAnQ2FsbGluZyBhdHRh
Y2hTaGFkb3coe21vZGU6ICJjbG9zZWQifSkgb24gYSBIVE1MIGVsZW1lbnQgd2hvc2UgbG9jYWwg
bmFtZSBpcyAiY3VzdG9tLWVsZW1lbnQiIG11c3Qgbm90IHRocm93Jyk7CisKK30sICdFbGVtZW50
LmF0dGFjaFNoYWRvdyBtdXN0IHRocm93IGEgTm90U3VwcG9ydGVkRXJyb3Igb24gYSBIVE1MS25v
d25FbGVtZW50IHdoaWNoIGhhcyBhIHZhbGlkIGN1c3RvbSBlbGVtZW50Jyk7CiAKIDwvc2NyaXB0
PgogPC9ib2R5Pgo=
</data>
<flag name="review"
          id="304449"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>