<?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>217576</bug_id>
          
          <creation_ts>2020-10-11 03:31:24 -0700</creation_ts>
          <short_desc>[JSC] Accept arbitrary module namespace identifier names</short_desc>
          <delta_ts>2020-12-16 18:47:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yusuke Suzuki">ysuzuki</reporter>
          <assigned_to name="Yusuke Suzuki">ysuzuki</assigned_to>
          <cc>ashvayka</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>darin</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>ross.kirsling</cc>
    
    <cc>saam</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1696615</commentid>
    <comment_count>0</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-10-11 03:31:24 -0700</bug_when>
    <thetext>https://github.com/tc39/ecma262/pull/2154</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1699064</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-10-18 03:32:15 -0700</bug_when>
    <thetext>&lt;rdar://problem/70416104&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714688</commentid>
    <comment_count>2</comment_count>
      <attachid>416227</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-15 00:22:40 -0800</bug_when>
    <thetext>Created attachment 416227
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714698</commentid>
    <comment_count>3</comment_count>
      <attachid>416231</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-15 02:26:08 -0800</bug_when>
    <thetext>Created attachment 416231
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714842</commentid>
    <comment_count>4</comment_count>
      <attachid>416231</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-15 11:37:12 -0800</bug_when>
    <thetext>Comment on attachment 416231
Patch

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

&gt; Source/JavaScriptCore/parser/Parser.cpp:3401
&gt; +static inline bool isStringWellFormedUnicode(const String&amp; string)
&gt; +{
&gt; +    if (string.is8Bit())
&gt; +        return true;
&gt; +    const UChar* characters = string.characters16();
&gt; +    for (unsigned index = 0, length = string.length(); index &lt; length; ++index) {
&gt; +        UChar character = characters[index];
&gt; +        if (!U16_IS_SURROGATE(character))
&gt; +            continue;
&gt; +        if (U16_IS_SURROGATE_TRAIL(character))
&gt; +            return false;
&gt; +        if (index + 1 == length)
&gt; +            return false;
&gt; +        ++index;
&gt; +        UChar nextCharacter = characters[index];
&gt; +        if (!U16_IS_TRAIL(nextCharacter))
&gt; +            return false;
&gt; +    }
&gt; +    return true;
&gt; +}

This looks like the same function as hasUnpairedSurrogate from JSDOMConvertStrings.cpp. It would be nice to share one function rather than having two separate implementations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1714846</commentid>
    <comment_count>5</comment_count>
      <attachid>416231</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-15 11:46:35 -0800</bug_when>
    <thetext>Comment on attachment 416231
Patch

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

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:3401
&gt;&gt; +}
&gt; 
&gt; This looks like the same function as hasUnpairedSurrogate from JSDOMConvertStrings.cpp. It would be nice to share one function rather than having two separate implementations.

Sounds good!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715002</commentid>
    <comment_count>6</comment_count>
      <attachid>416307</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-15 18:41:51 -0800</bug_when>
    <thetext>Created attachment 416307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715003</commentid>
    <comment_count>7</comment_count>
      <attachid>416308</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-15 18:43:47 -0800</bug_when>
    <thetext>Created attachment 416308
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715138</commentid>
    <comment_count>8</comment_count>
      <attachid>416308</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-12-16 09:36:03 -0800</bug_when>
    <thetext>Comment on attachment 416308
Patch

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

&gt; Source/JavaScriptCore/parser/Parser.cpp:3538
&gt; +template &lt;class TreeBuilder&gt; typename TreeBuilder::ExportSpecifier Parser&lt;LexerType&gt;::parseExportSpecifier(TreeBuilder&amp; context, Vector&lt;std::pair&lt;const Identifier*, const Identifier*&gt;&gt;&amp; maybeExportedLocalNames, bool&amp; hasKeywordForLocalBindings, bool&amp; hasReferencedModuleExportNames)

Could we make this easier to read by using a structure for return values instead of having so many out arguments?

&gt; Source/JavaScriptCore/parser/Parser.cpp:3566
&gt; -        failIfFalse(matchIdentifierOrKeyword(), &quot;Expected an exported name for the export declaration&quot;);
&gt; +        failIfFalse(matchIdentifierOrKeyword() || match(STRING), &quot;Expected an exported name or a module export name string for the export declaration&quot;);
&gt;          exportedName = m_token.m_data.ident;
&gt; +        if (match(STRING))
&gt; +            failIfTrue(hasUnpairedSurrogate(exportedName-&gt;string()), &quot;Expected a well-formed-unicode string for the module export name&quot;);

Is match(STRING) expensive? I ask because we do the check twice. Pattern also recurs below.

&gt; Source/WTF/wtf/text/StringView.h:1090
&gt; +inline bool hasUnpairedSurrogate(StringView string)

Might be a little *too* inlined, but we can tweak that later.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715292</commentid>
    <comment_count>9</comment_count>
      <attachid>416308</attachid>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-16 18:26:25 -0800</bug_when>
    <thetext>Comment on attachment 416308
Patch

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

Thanks!!

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:3538
&gt;&gt; +template &lt;class TreeBuilder&gt; typename TreeBuilder::ExportSpecifier Parser&lt;LexerType&gt;::parseExportSpecifier(TreeBuilder&amp; context, Vector&lt;std::pair&lt;const Identifier*, const Identifier*&gt;&gt;&amp; maybeExportedLocalNames, bool&amp; hasKeywordForLocalBindings, bool&amp; hasReferencedModuleExportNames)
&gt; 
&gt; Could we make this easier to read by using a structure for return values instead of having so many out arguments?

One of the thing we would like to have is that hasKeywordForLocalBindings and hasReferencedModuleExportNames is reused for multiple export specifier parsing.
And we set true to them when we find some export specifiers which has these features.
And we do some validation after parsing all the export specifiers.

I think returning structure from this makes the code more complicated like, in the receiver side,

if (hasKeywordForLocalBindings)
    hasKeywordForLocalBindingsInSomeExportSpecifier = true;
if (hasReferencedModuleExportNames)
    hasReferencedModuleExportNamesInSomeExportSpecifier = true;

things are necessary in the caller side. So compared to that, I think still this is cleaner.

&gt;&gt; Source/JavaScriptCore/parser/Parser.cpp:3566
&gt;&gt; +            failIfTrue(hasUnpairedSurrogate(exportedName-&gt;string()), &quot;Expected a well-formed-unicode string for the module export name&quot;);
&gt; 
&gt; Is match(STRING) expensive? I ask because we do the check twice. Pattern also recurs below.

This is cheap This is just comparing one enum value.

&gt;&gt; Source/WTF/wtf/text/StringView.h:1090
&gt;&gt; +inline bool hasUnpairedSurrogate(StringView string)
&gt; 
&gt; Might be a little *too* inlined, but we can tweak that later.

Maybe, if it is too big, the compiler will just put as non-inlined function :)
I think this is still good since `if (string.is8Bit())` would be major cases.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1715294</commentid>
    <comment_count>10</comment_count>
    <who name="Yusuke Suzuki">ysuzuki</who>
    <bug_when>2020-12-16 18:47:21 -0800</bug_when>
    <thetext>Committed r270923: &lt;https://trac.webkit.org/changeset/270923&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416227</attachid>
            <date>2020-12-15 00:22:40 -0800</date>
            <delta_ts>2020-12-15 02:26:06 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217576-20201215002239.patch</filename>
            <type>text/plain</type>
            <size>18899</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
Yjg3NTY0OTJiYjM0Zjk0ZjdjMjFmYWQ3ZTA4N2IwNWI1NjZiN2QyLi4zMGJlNTJhZjJlN2ZmZjI5
MGVmMTQzMzhhYzAzZGY1NDYwYjM5MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMC0xMi0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFjY2VwdCBhcmJpdHJhcnkgbW9kdWxlIG5hbWVzcGFjZSBpZGVu
dGlmaWVyIG5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTc1NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwNDE2MTA0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVt
ZW50cyBhcmJpdHJhcnkgbW9kdWxlIG5hbWVzcGFjZSBpZGVudGlmaWVyIG5hbWVzWzFdLgorICAg
ICAgICBBZnRlciB0aGlzLCB3ZSBjYW4gZXhwb3J0IGFuZCBpbXBvcnQgYXJiaXRyYXJ5IG1vZHVs
ZSBleHBvcnQgbmFtZXMgd2hpY2ggYXJlIG5vdCB2YWxpZCBhcyBhIHZhcmlhYmxlIGlkZW50aWZp
ZXIuCisgICAgICAgIEZvciBleGFtcGxlLAorCisgICAgICAgICAgICBpbXBvcnQgeyAiZGVsZXRl
IiBhcyBkZWxldGVkVmFsdWUgfSBmcm9tICIuL29rLmpzIjsKKworICAgICAgICAgICAgLi4uCisK
KyAgICAgICAgICAgIGV4cG9ydCB7CisgICAgICAgICAgICAgICAgZGVsZXRlZFZhbHVlIGFzICJk
ZWxldGUiCisgICAgICAgICAgICB9OworCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29t
L3RjMzkvZWNtYTI2Mi9wdWxsLzIxNTQKKworICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjppc1N0cmluZ1dlbGxGb3JtZWRVbmljb2RlKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0Q2xhdXNlSXRlbSk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUltcG9ydERlY2xhcmF0aW9uKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0U3BlY2lmaWVyKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYXRpb24pOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuaDoKKwogMjAyMC0xMi0xNCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIHNvbWUgb2YgdGhlIHdvcmsgZnJvbSBKU0xvY2sg
dG8gVk1FbnRyeVNjb3BlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5k
ZXggZDExOWJiMzIzYjYwM2UyMzg5Yzc5ZWI0NTNjN2RkZTUwY2NiN2I1Ny4uMjVhNWQwNWJkN2I1
NWYzNDlkZDk1M2IzMGFiNzljNThiNTk2NTA0NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcApAQCAtMzM3OSw2ICszMzc5LDI3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6Ok1vZHVsZU5hbWUgUGFyc2VyPExleGVyVHlw
ZT46CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTW9kdWxlTmFtZShzcGVjaWZpZXJMb2NhdGlv
biwgKm1vZHVsZU5hbWUpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJpbmdXZWxsRm9y
bWVkVW5pY29kZShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBpZiAoc3RyaW5nLmlzOEJp
dCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9
IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMCwgbGVu
Z3RoID0gc3RyaW5nLmxlbmd0aCgpOyBpbmRleCA8IGxlbmd0aDsgKytpbmRleCkgeworICAgICAg
ICBVQ2hhciBjaGFyYWN0ZXIgPSBjaGFyYWN0ZXJzW2luZGV4XTsKKyAgICAgICAgaWYgKCFVMTZf
SVNfU1VSUk9HQVRFKGNoYXJhY3RlcikpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKFUxNl9JU19TVVJST0dBVEVfVFJBSUwoY2hhcmFjdGVyKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKGluZGV4ICsgMSA9PSBsZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICsraW5kZXg7CisgICAgICAgIFVDaGFyIG5leHRDaGFyYWN0
ZXIgPSBjaGFyYWN0ZXJzW2luZGV4XTsKKyAgICAgICAgaWYgKCFVMTZfSVNfVFJBSUwobmV4dENo
YXJhY3RlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6SW1wb3J0U3BlY2lmaWVyIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUltcG9ydENsYXVzZUl0ZW0oVHJlZUJ1aWxkZXImIGNvbnRleHQs
IEltcG9ydFNwZWNpZmllclR5cGUgc3BlY2lmaWVyVHlwZSkKIHsKQEAgLTM0MTQsMTYgKzM0MzUs
MjMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
SW1wb3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhlclQKICAgICAgICAgLy8gSW1wb3J0U3BlY2lmaWVy
IDoKICAgICAgICAgLy8gSW1wb3J0ZWRCaW5kaW5nCiAgICAgICAgIC8vIElkZW50aWZpZXJOYW1l
IGFzIEltcG9ydGVkQmluZGluZworICAgICAgICAvLyBNb2R1bGVFeHBvcnROYW1lIGFzIEltcG9y
dGVkQmluZGluZwogICAgICAgICAvLyBlLmcuCiAgICAgICAgIC8vICAgICBBCiAgICAgICAgIC8v
ICAgICBBIGFzIEIKLSAgICAgICAgQVNTRVJUKG1hdGNoSWRlbnRpZmllck9yS2V5d29yZCgpKTsK
LSAgICAgICAgbG9jYWxOYW1lVG9rZW4gPSBtX3Rva2VuOworICAgICAgICBBU1NFUlQobWF0Y2hJ
ZGVudGlmaWVyT3JLZXl3b3JkKCkgfHwgbWF0Y2goU1RSSU5HKSk7CisgICAgICAgIGJvb2wgaXNN
b2R1bGVFeHBvcnROYW1lID0gbWF0Y2goU1RSSU5HKTsKICAgICAgICAgbG9jYWxOYW1lID0gbV90
b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIGltcG9ydGVkTmFtZSA9IGxvY2FsTmFtZTsKKyAg
ICAgICAgbG9jYWxOYW1lVG9rZW4gPSBtX3Rva2VuOworICAgICAgICBpZiAoaXNNb2R1bGVFeHBv
cnROYW1lKQorICAgICAgICAgICAgZmFpbElmRmFsc2UoaXNTdHJpbmdXZWxsRm9ybWVkVW5pY29k
ZShsb2NhbE5hbWUtPnN0cmluZygpKSwgIkV4cGVjdGVkIGEgd2VsbC1mb3JtZWQtdW5pY29kZSBz
dHJpbmcgZm9yIHRoZSBtb2R1bGUgZXhwb3J0IG5hbWUiKTsKICAgICAgICAgbmV4dCgpOwogCi0g
ICAgICAgIGlmIChtYXRjaENvbnRleHR1YWxLZXl3b3JkKG1fdm0ucHJvcGVydHlOYW1lcy0+YXMp
KSB7CisgICAgICAgIGJvb2wgdXNlQXMgPSBtYXRjaENvbnRleHR1YWxLZXl3b3JkKG1fdm0ucHJv
cGVydHlOYW1lcy0+YXMpOworICAgICAgICBpZiAoaXNNb2R1bGVFeHBvcnROYW1lKQorICAgICAg
ICAgICAgZmFpbElmRmFsc2UodXNlQXMsICJFeHBlY3RlZCAnYXMnIGFmdGVyIHRoZSBtb2R1bGUg
ZXhwb3J0IG5hbWUgc3RyaW5nIik7CisgICAgICAgIGlmICh1c2VBcykgewogICAgICAgICAgICAg
bmV4dCgpOwogICAgICAgICAgICAgZmFpbElmRmFsc2UobWF0Y2hTcGVjSWRlbnRpZmllcigpLCAi
RXhwZWN0ZWQgYSB2YXJpYWJsZSBuYW1lIGZvciB0aGUgaW1wb3J0IGRlY2xhcmF0aW9uIik7CiAg
ICAgICAgICAgICBsb2NhbE5hbWVUb2tlbiA9IG1fdG9rZW47CkBAIC0zNTAyLDcgKzM1MzAsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSW1wb3J0RGVjbGFyYQogICAgICAgICAgICAgbmV4dCgpOwogCiAgICAgICAg
ICAgICB3aGlsZSAoIW1hdGNoKENMT1NFQlJBQ0UpKSB7Ci0gICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UobWF0Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCksICJFeHBlY3RlZCBhbiBpbXBvcnRlZCBu
YW1lIGZvciB0aGUgaW1wb3J0IGRlY2xhcmF0aW9uIik7CisgICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UoKG1hdGNoSWRlbnRpZmllck9yS2V5d29yZCgpIHx8IG1hdGNoKFNUUklORykpLCAiRXhw
ZWN0ZWQgYW4gaW1wb3J0ZWQgbmFtZSBvciBhIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcgZm9y
IHRoZSBpbXBvcnQgZGVjbGFyYXRpb24iKTsKICAgICAgICAgICAgICAgICBhdXRvIHNwZWNpZmll
ciA9IHBhcnNlSW1wb3J0Q2xhdXNlSXRlbShjb250ZXh0LCBJbXBvcnRTcGVjaWZpZXJUeXBlOjpO
YW1lZEltcG9ydCk7CiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2Uoc3BlY2lmaWVyLCAiQ2Fu
bm90IHBhcnNlIHRoZSBuYW1lZCBpbXBvcnQiKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LmFw
cGVuZEltcG9ydFNwZWNpZmllcihzcGVjaWZpZXJMaXN0LCBzcGVjaWZpZXIpOwpAQCAtMzUyOCwy
NCArMzU1NiwzNCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0RGVjbGFyYQogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6RXhwb3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9y
dFNwZWNpZmllcihUcmVlQnVpbGRlciYgY29udGV4dCwgVmVjdG9yPHN0ZDo6cGFpcjxjb25zdCBJ
ZGVudGlmaWVyKiwgY29uc3QgSWRlbnRpZmllcio+PiYgbWF5YmVFeHBvcnRlZExvY2FsTmFtZXMs
IGJvb2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzKQordGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RXhwb3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUV4cG9ydFNwZWNpZmllcihUcmVlQnVpbGRlciYgY29udGV4dCwgVmVjdG9y
PHN0ZDo6cGFpcjxjb25zdCBJZGVudGlmaWVyKiwgY29uc3QgSWRlbnRpZmllcio+PiYgbWF5YmVF
eHBvcnRlZExvY2FsTmFtZXMsIGJvb2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzLCBib29s
JiBoYXNSZWZlcmVuY2VkTW9kdWxlRXhwb3J0TmFtZXMpCiB7CiAgICAgLy8gRXhwb3J0U3BlY2lm
aWVyIDoKICAgICAvLyBJZGVudGlmaWVyTmFtZQogICAgIC8vIElkZW50aWZpZXJOYW1lIGFzIElk
ZW50aWZpZXJOYW1lCisgICAgLy8gSWRlbnRpZmllck5hbWUgYXMgTW9kdWxlRXhwb3J0TmFtZQor
ICAgIC8vIE1vZHVsZUV4cG9ydE5hbWUKKyAgICAvLyBNb2R1bGVFeHBvcnROYW1lIGFzIE1vZHVs
ZUV4cG9ydE5hbWUKICAgICAvLyBodHRwOi8vd3d3LmVjbWEtaW50ZXJuYXRpb25hbC5vcmcvZWNt
YS0yNjIvNi4wLyNzZWMtZXhwb3J0cwotICAgIEFTU0VSVChtYXRjaElkZW50aWZpZXJPcktleXdv
cmQoKSk7CisgICAgQVNTRVJUKG1hdGNoSWRlbnRpZmllck9yS2V5d29yZCgpIHx8IG1hdGNoKFNU
UklORykpOwogICAgIEpTVG9rZW5Mb2NhdGlvbiBzcGVjaWZpZXJMb2NhdGlvbih0b2tlbkxvY2F0
aW9uKCkpOwotICAgIGlmIChtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpCi0gICAg
ICAgIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzID0gdHJ1ZTsKICAgICBjb25zdCBJZGVudGlm
aWVyKiBsb2NhbE5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKICAgICBjb25zdCBJZGVudGlm
aWVyKiBleHBvcnRlZE5hbWUgPSBsb2NhbE5hbWU7CisgICAgaWYgKG1hdGNoKFNUUklORykpIHsK
KyAgICAgICAgaGFzUmVmZXJlbmNlZE1vZHVsZUV4cG9ydE5hbWVzID0gdHJ1ZTsKKyAgICAgICAg
ZmFpbElmRmFsc2UoaXNTdHJpbmdXZWxsRm9ybWVkVW5pY29kZShleHBvcnRlZE5hbWUtPnN0cmlu
ZygpKSwgIkV4cGVjdGVkIGEgd2VsbC1mb3JtZWQtdW5pY29kZSBzdHJpbmcgZm9yIHRoZSBtb2R1
bGUgZXhwb3J0IG5hbWUiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAobV90b2tlbi5tX3R5
cGUgJiBLZXl3b3JkVG9rZW5GbGFnKQorICAgICAgICAgICAgaGFzS2V5d29yZEZvckxvY2FsQmlu
ZGluZ3MgPSB0cnVlOworICAgIH0KICAgICBuZXh0KCk7CiAKICAgICBpZiAobWF0Y2hDb250ZXh0
dWFsS2V5d29yZChtX3ZtLnByb3BlcnR5TmFtZXMtPmFzKSkgewogICAgICAgICBuZXh0KCk7Ci0g
ICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoSWRlbnRpZmllck9yS2V5d29yZCgpLCAiRXhwZWN0ZWQg
YW4gZXhwb3J0ZWQgbmFtZSBmb3IgdGhlIGV4cG9ydCBkZWNsYXJhdGlvbiIpOworICAgICAgICBm
YWlsSWZGYWxzZShtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSB8fCBtYXRjaChTVFJJTkcpLCAi
RXhwZWN0ZWQgYW4gZXhwb3J0ZWQgbmFtZSBvciBhIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcg
Zm9yIHRoZSBleHBvcnQgZGVjbGFyYXRpb24iKTsKICAgICAgICAgZXhwb3J0ZWROYW1lID0gbV90
b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgIGlmIChtYXRjaChTVFJJTkcpKQorICAgICAgICAg
ICAgZmFpbElmRmFsc2UoaXNTdHJpbmdXZWxsRm9ybWVkVW5pY29kZShleHBvcnRlZE5hbWUtPnN0
cmluZygpKSwgIkV4cGVjdGVkIGEgd2VsbC1mb3JtZWQtdW5pY29kZSBzdHJpbmcgZm9yIHRoZSBt
b2R1bGUgZXhwb3J0IG5hbWUiKTsKICAgICAgICAgbmV4dCgpOwogICAgIH0KIApAQCAtMzU2Niw2
ICszNjA0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICBjYXNlIFRJTUVTOiB7CiAg
ICAgICAgIC8vIGV4cG9ydCAqIEZyb21DbGF1c2UgOwogICAgICAgICAvLyBleHBvcnQgKiBhcyBJ
ZGVudGlmaWVyTmFtZSBGcm9tQ2xhdXNlIDsKKyAgICAgICAgLy8gZXhwb3J0ICogYXMgTW9kdWxl
RXhwb3J0TmFtZSBGcm9tQ2xhdXNlIDsKICAgICAgICAgbmV4dCgpOwogCiAgICAgICAgIGNvbnN0
IElkZW50aWZpZXIqIGV4cG9ydGVkTmFtZSA9IG51bGxwdHI7CkBAIC0zNTczLDggKzM2MTIsMTAg
QEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgaWYgKG1hdGNoQ29udGV4dHVhbEtl
eXdvcmQobV92bS5wcm9wZXJ0eU5hbWVzLT5hcykpIHsKICAgICAgICAgICAgIG5leHQoKTsKICAg
ICAgICAgICAgIHNwZWNpZmllckxvY2F0aW9uID0gSlNUb2tlbkxvY2F0aW9uKHRva2VuTG9jYXRp
b24oKSk7Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZShtYXRjaElkZW50aWZpZXJPcktleXdvcmQo
KSwgIkV4cGVjdGVkIGFuIGV4cG9ydGVkIG5hbWUgZm9yIHRoZSBleHBvcnQgZGVjbGFyYXRpb24i
KTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKChtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSB8
fCBtYXRjaChTVFJJTkcpKSwgIkV4cGVjdGVkIGFuIGV4cG9ydGVkIG5hbWUgb3IgYSBtb2R1bGUg
ZXhwb3J0IG5hbWUgc3RyaW5nIGZvciB0aGUgZXhwb3J0IGRlY2xhcmF0aW9uIik7CiAgICAgICAg
ICAgICBleHBvcnRlZE5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgICAgIGlm
IChtYXRjaChTVFJJTkcpKQorICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKGlzU3RyaW5nV2Vs
bEZvcm1lZFVuaWNvZGUoZXhwb3J0ZWROYW1lLT5zdHJpbmcoKSksICJFeHBlY3RlZCBhIHdlbGwt
Zm9ybWVkLXVuaWNvZGUgc3RyaW5nIGZvciB0aGUgbW9kdWxlIGV4cG9ydCBuYW1lIik7CiAgICAg
ICAgICAgICBuZXh0KCk7CiAgICAgICAgIH0KIApAQCAtMzcwMyw5ICszNzQ0LDEwIEBAIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6
cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgICAgIFZlY3RvcjxzdGQ6OnBhaXI8Y29uc3QgSWRlbnRp
ZmllciosIGNvbnN0IElkZW50aWZpZXIqPj4gbWF5YmVFeHBvcnRlZExvY2FsTmFtZXM7CiAKICAg
ICAgICAgYm9vbCBoYXNLZXl3b3JkRm9yTG9jYWxCaW5kaW5ncyA9IGZhbHNlOworICAgICAgICBi
b29sIGhhc1JlZmVyZW5jZWRNb2R1bGVFeHBvcnROYW1lcyA9IGZhbHNlOwogICAgICAgICB3aGls
ZSAoIW1hdGNoKENMT1NFQlJBQ0UpKSB7Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZShtYXRjaElk
ZW50aWZpZXJPcktleXdvcmQoKSwgIkV4cGVjdGVkIGEgdmFyaWFibGUgbmFtZSBmb3IgdGhlIGV4
cG9ydCBkZWNsYXJhdGlvbiIpOwotICAgICAgICAgICAgYXV0byBzcGVjaWZpZXIgPSBwYXJzZUV4
cG9ydFNwZWNpZmllcihjb250ZXh0LCBtYXliZUV4cG9ydGVkTG9jYWxOYW1lcywgaGFzS2V5d29y
ZEZvckxvY2FsQmluZGluZ3MpOworICAgICAgICAgICAgZmFpbElmRmFsc2UoKG1hdGNoSWRlbnRp
Zmllck9yS2V5d29yZCgpIHx8IG1hdGNoKFNUUklORykpLCAiRXhwZWN0ZWQgYSB2YXJpYWJsZSBu
YW1lIG9yIGEgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZyBmb3IgdGhlIGV4cG9ydCBkZWNsYXJh
dGlvbiIpOworICAgICAgICAgICAgYXV0byBzcGVjaWZpZXIgPSBwYXJzZUV4cG9ydFNwZWNpZmll
cihjb250ZXh0LCBtYXliZUV4cG9ydGVkTG9jYWxOYW1lcywgaGFzS2V5d29yZEZvckxvY2FsQmlu
ZGluZ3MsIGhhc1JlZmVyZW5jZWRNb2R1bGVFeHBvcnROYW1lcyk7CiAgICAgICAgICAgICBmYWls
SWZGYWxzZShzcGVjaWZpZXIsICJDYW5ub3QgcGFyc2UgdGhlIG5hbWVkIGV4cG9ydCIpOwogICAg
ICAgICAgICAgY29udGV4dC5hcHBlbmRFeHBvcnRTcGVjaWZpZXIoc3BlY2lmaWVyTGlzdCwgc3Bl
Y2lmaWVyKTsKICAgICAgICAgICAgIGlmICghY29uc3VtZShDT01NQSkpCkBAIC0zNzE4LDcgKzM3
NjAsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2Vy
PExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICAgICAgbmV4dCgpOwogICAg
ICAgICAgICAgbW9kdWxlTmFtZSA9IHBhcnNlTW9kdWxlTmFtZShjb250ZXh0KTsKICAgICAgICAg
ICAgIGZhaWxJZkZhbHNlKG1vZHVsZU5hbWUsICJDYW5ub3QgcGFyc2UgdGhlICdmcm9tJyBjbGF1
c2UiKTsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHNlbWFudGljRmFp
bElmVHJ1ZShoYXNSZWZlcmVuY2VkTW9kdWxlRXhwb3J0TmFtZXMsICJDYW5ub3QgdXNlIG1vZHVs
ZSBleHBvcnQgbmFtZXMgaWYgdGhleSByZWZlcmVuY2UgdmFyaWFibGUgbmFtZXMgaW4gdGhlIGN1
cnJlbnQgbW9kdWxlIik7CiAgICAgICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSwgIkV4
cGVjdGVkIGEgJzsnIGZvbGxvd2luZyBhIHRhcmdldGVkIGV4cG9ydCBkZWNsYXJhdGlvbiIpOwog
CiAgICAgICAgIGlmICghbW9kdWxlTmFtZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmgKaW5kZXggODVmMTg3MzVjZWZhZWNkOWE2NTdmMzA2MTdhZGFlMGIxMWJmYjlkYi4uMWZi
YTRiYTg2ZGIxZjMyZmE4YjgxYjhhNjY0YWJmOGFkNjYzMmY3ZiAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNzg0LDcgKzE3ODQsNyBAQCBjbGFzcyBQYXJzZXIgewog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6Oklt
cG9ydFNwZWNpZmllciBwYXJzZUltcG9ydENsYXVzZUl0ZW0oVHJlZUJ1aWxkZXImLCBJbXBvcnRT
cGVjaWZpZXJUeXBlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1l
IFRyZWVCdWlsZGVyOjpNb2R1bGVOYW1lIHBhcnNlTW9kdWxlTmFtZShUcmVlQnVpbGRlciYpOwog
ICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUltcG9y
dERlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWls
ZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RXhwb3J0U3BlY2lmaWVyIHBhcnNlRXhwb3J0U3Bl
Y2lmaWVyKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBWZWN0b3I8c3RkOjpwYWlyPGNvbnN0IElkZW50
aWZpZXIqLCBjb25zdCBJZGVudGlmaWVyKj4+JiBtYXliZUV4cG9ydGVkTG9jYWxOYW1lcywgYm9v
bCYgaGFzS2V5d29yZEZvckxvY2FsQmluZGluZ3MpOworICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkV4cG9ydFNwZWNpZmllciBwYXJzZUV4cG9y
dFNwZWNpZmllcihUcmVlQnVpbGRlciYgY29udGV4dCwgVmVjdG9yPHN0ZDo6cGFpcjxjb25zdCBJ
ZGVudGlmaWVyKiwgY29uc3QgSWRlbnRpZmllcio+PiYgbWF5YmVFeHBvcnRlZExvY2FsTmFtZXMs
IGJvb2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzLCBib29sJiBoYXNSZWZlcmVuY2VkTW9k
dWxlRXhwb3J0TmFtZXMpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0
YXRlbWVudCBwYXJzZUV4cG9ydERlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJik7CiAKICAgICB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24gY3Jl
YXRlUmVzb2x2ZUFuZFVzZVZhcmlhYmxlKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmllcios
IGJvb2wgaXNFdmFsLCBjb25zdCBKU1RleHRQb3NpdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2NhdGlv
biYpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwpp
bmRleCA5MzIyNDM2MWNmYjRjNTlhYTFlMjU5MTI4NGRmM2Y4ZjllNWQyMWIwLi42MmUxOGFkYzg5
YTg1YWI5NDVjNTg5YWQ5ZWI5NWQxNmUyYWY1MzExIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5n
ZUxvZworKysgYi9KU1Rlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTE1
ICBZdXN1a2UgU3V6dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gQWNj
ZXB0IGFyYml0cmFyeSBtb2R1bGUgbmFtZXNwYWNlIGlkZW50aWZpZXIgbmFtZXMKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU3NgorICAgICAgICA8
cmRhcjovL3Byb2JsZW0vNzA0MTYxMDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBtb2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMuanM6IEFk
ZGVkLgorICAgICAgICAqIG1vZHVsZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy9leHBvcnQuanM6
IEFkZGVkLgorICAgICAgICAqIG1vZHVsZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy9leHBvcnQy
LmpzOiBBZGRlZC4KKyAgICAgICAgKiBzdHJlc3MvbW9kdWxlcy1zeW50YXgtZXJyb3IuanM6Cisg
ICAgICAgICogdGVzdDI2Mi9jb25maWcueWFtbDoKKwogMjAyMC0xMi0xMSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgogCiAgICAgICAgIFtKU0NdIFVwZGF0ZSB0ZXN0MjYyCmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL21vZHVsZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy5qcyBiL0pT
VGVzdHMvbW9kdWxlcy9hcmJpdHJhcnktbW9kdWxlLW5hbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNGEw
MDczMzRiNWNkMzIxMGI0ZWE4ODk1ZTY4YzUyOWI1NGZmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL21vZHVsZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy5qcwpAQCAtMCwwICsxLDEyIEBA
CitpbXBvcnQgeworICAgICJkZWxldGUiIGFzIGRlbGV0aW5nLAorICAgICJpZiIgYXMgb2sxLAor
ICAgICJvazIiIGFzIG9rMgorfSBmcm9tICIuL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMvZXhwb3J0
LmpzIjsKK2ltcG9ydCB7ICJ2YXIiIGFzIHZhcmlhYmxlIH0gZnJvbSAiLi9hcmJpdHJhcnktbW9k
dWxlLW5hbWVzL2V4cG9ydC5qcyI7CitpbXBvcnQgeyBzaG91bGRCZSwgc2hvdWxkVGhyb3cgfSBm
cm9tICIuL3Jlc291cmNlcy9hc3NlcnQuanMiOworCitzaG91bGRCZShkZWxldGluZywgNDIpOwor
c2hvdWxkQmUodmFyaWFibGUudGVzdCwgNDApOworc2hvdWxkQmUob2sxLCA0MDApOworc2hvdWxk
QmUob2syLCA0MDEpOwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9tb2R1bGVzL2FyYml0cmFyeS1tb2R1
bGUtbmFtZXMvZXhwb3J0LmpzIGIvSlNUZXN0cy9tb2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFt
ZXMvZXhwb3J0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmExNTUxNmU0MmM0YTFjODU0N2JhMDZkZmY4YzRmMDRm
OTQ3NzEyMjEKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21vZHVsZXMvYXJiaXRyYXJ5LW1v
ZHVsZS1uYW1lcy9leHBvcnQuanMKQEAgLTAsMCArMSw4IEBACit2YXIgZGVsZXRpbmcgPSA0MjsK
KworZXhwb3J0IHsKKyAgICBkZWxldGluZyBhcyAiZGVsZXRlIgorfTsKK2V4cG9ydCAqIGFzICJ2
YXIiIGZyb20gIi4vZXhwb3J0Mi5qcyI7CitleHBvcnQgeyAiaWYiIH0gZnJvbSAiLi9leHBvcnQy
LmpzIjsKK2V4cG9ydCB7ICJlbHNlIiBhcyAib2syIiB9IGZyb20gIi4vZXhwb3J0Mi5qcyI7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL21vZHVsZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy9leHBvcnQy
LmpzIGIvSlNUZXN0cy9tb2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMvZXhwb3J0Mi5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi42MGE5NDNiOGI1Nzg0NTU0ODQwMGIzYjc2YzUxMjI0NTRjNTc1ODU1Ci0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9tb2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMvZXhw
b3J0Mi5qcwpAQCAtMCwwICsxLDcgQEAKK2V4cG9ydCB2YXIgdGVzdCA9IDQwOwordmFyIG9rMiA9
IDQwMDsKK3ZhciBvazMgPSA0MDE7CitleHBvcnQgeworICAgIG9rMiBhcyAiaWYiLAorICAgIG9r
MyBhcyAiZWxzZSIKK307CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9tb2R1bGVzLXN5bnRh
eC1lcnJvci5qcyBiL0pTVGVzdHMvc3RyZXNzL21vZHVsZXMtc3ludGF4LWVycm9yLmpzCmluZGV4
IGRjZGYyZWUxNGFhZjM4NmE0M2U5MDUyMjI1ZDdhMzdhNzkxZjMxMDQuLjhhYzRmYzkzOTI4NmU1
ODljNGY2YzZiYzJiN2YwZDQzMWM5YmZlZTUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL21v
ZHVsZXMtc3ludGF4LWVycm9yLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL21vZHVsZXMtc3ludGF4
LWVycm9yLmpzCkBAIC0yMSw3ICsyMSw3IEBAIGZ1bmN0aW9uIGNoZWNrTW9kdWxlU3ludGF4RXJy
b3Ioc291cmNlLCBlcnJvck1lc3NhZ2UpIHsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJp
bmcucmF3YAogaW1wb3J0IHssfSBmcm9tICJDb2NvYSIKLWAsIGBTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFuIGltcG9ydGVkIG5hbWUgZm9yIHRoZSBpbXBvcnQg
ZGVjbGFyYXRpb24uOjJgKTsKK2AsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLCcu
IEV4cGVjdGVkIGFuIGltcG9ydGVkIG5hbWUgb3IgYSBtb2R1bGUgZXhwb3J0IG5hbWUgc3RyaW5n
IGZvciB0aGUgaW1wb3J0IGRlY2xhcmF0aW9uLjoyYCk7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJy
b3IoU3RyaW5nLnJhd2AKIGltcG9ydCAqIGZyb20gIkNvY29hIgpAQCAtMTU4LDcgKzE1OCw3IEBA
IGZ1bmN0aW9uIG5vVG9wTGV2ZWwoKSB7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5n
LnJhd2AKIGltcG9ydCBhLCB7IFthc3NpZ25dIGFzIGMgfSBmcm9tICJDb2NvYSIKLWAsIGBTeW50
YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnWycuIEV4cGVjdGVkIGFuIGltcG9ydGVkIG5hbWUg
Zm9yIHRoZSBpbXBvcnQgZGVjbGFyYXRpb24uOjJgKTsKK2AsIGBTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCB0b2tlbiAnWycuIEV4cGVjdGVkIGFuIGltcG9ydGVkIG5hbWUgb3IgYSBtb2R1bGUgZXhw
b3J0IG5hbWUgc3RyaW5nIGZvciB0aGUgaW1wb3J0IGRlY2xhcmF0aW9uLjoyYCk7CiAKIGNoZWNr
TW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKIGltcG9ydCBkLCB7IGcgYXMge29ian0gfSBm
cm9tICJDYXBwdWNjaW5vIgpAQCAtMTY2LDcgKzE2Niw3IEBAIGZ1bmN0aW9uIG5vVG9wTGV2ZWwo
KSB7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKIGltcG9ydCBkLCB7IHtv
Ymp9IH0gZnJvbSAiQ2FwcHVjY2lubyIKLWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tl
biAneycuIEV4cGVjdGVkIGFuIGltcG9ydGVkIG5hbWUgZm9yIHRoZSBpbXBvcnQgZGVjbGFyYXRp
b24uOjJgKTsKK2AsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAneycuIEV4cGVjdGVk
IGFuIGltcG9ydGVkIG5hbWUgb3IgYSBtb2R1bGUgZXhwb3J0IG5hbWUgc3RyaW5nIGZvciB0aGUg
aW1wb3J0IGRlY2xhcmF0aW9uLjoyYCk7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5n
LnJhd2AKIGltcG9ydCB7IGJpbmRpbmcKQEAgLTE4NCwxMSArMTg0LDExIEBAIGZ1bmN0aW9uIG5v
VG9wTGV2ZWwoKSB7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKIGV4cG9y
dCB7ICwgfSBmcm9tICJDb2NvYSIKLWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAn
LCcuIEV4cGVjdGVkIGEgdmFyaWFibGUgbmFtZSBmb3IgdGhlIGV4cG9ydCBkZWNsYXJhdGlvbi46
MmApOworYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSB2
YXJpYWJsZSBuYW1lIG9yIGEgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZyBmb3IgdGhlIGV4cG9y
dCBkZWNsYXJhdGlvbi46MmApOwogCiBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdg
CiBleHBvcnQgeyBhLCAsIH0gZnJvbSAiQ29jb2EiCi1gLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0
ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIHZhcmlhYmxlIG5hbWUgZm9yIHRoZSBleHBvcnQgZGVj
bGFyYXRpb24uOjJgKTsKK2AsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4
cGVjdGVkIGEgdmFyaWFibGUgbmFtZSBvciBhIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcgZm9y
IHRoZSBleHBvcnQgZGVjbGFyYXRpb24uOjJgKTsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihT
dHJpbmcucmF3YAogZXhwb3J0IGEgZnJvbSAiQ29jb2EiCkBAIC0yMDAsNyArMjAwLDcgQEAgZnVu
Y3Rpb24gbm9Ub3BMZXZlbCgpIHsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3
YAogZXhwb3J0IHsgKiBhcyBiIH0gZnJvbSAiQ29jb2EiCi1gLCBgU3ludGF4RXJyb3I6IFVuZXhw
ZWN0ZWQgdG9rZW4gJyonLiBFeHBlY3RlZCBhIHZhcmlhYmxlIG5hbWUgZm9yIHRoZSBleHBvcnQg
ZGVjbGFyYXRpb24uOjJgKTsKK2AsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnKicu
IEV4cGVjdGVkIGEgdmFyaWFibGUgbmFtZSBvciBhIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcg
Zm9yIHRoZSBleHBvcnQgZGVjbGFyYXRpb24uOjJgKTsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJv
cihTdHJpbmcucmF3YAogZXhwb3J0ICogYXMgYgpAQCAtMjA4LDcgKzIwOCw3IEBAIGZ1bmN0aW9u
IG5vVG9wTGV2ZWwoKSB7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKIGV4
cG9ydCAqIGFzIDQyIGZyb20gIkNvY29hIgotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIG51
bWJlciAnNDInLiBFeHBlY3RlZCBhbiBleHBvcnRlZCBuYW1lIGZvciB0aGUgZXhwb3J0IGRlY2xh
cmF0aW9uLjoyYCk7CitgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgbnVtYmVyICc0MicuIEV4
cGVjdGVkIGFuIGV4cG9ydGVkIG5hbWUgb3IgYSBtb2R1bGUgZXhwb3J0IG5hbWUgc3RyaW5nIGZv
ciB0aGUgZXhwb3J0IGRlY2xhcmF0aW9uLjoyYCk7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3Io
U3RyaW5nLnJhd2AKIGV4cG9ydCBjb25zdCBiID0gNDI7CkBAIC0zMTYsNiArMzE2LDQyIEBAIGZ1
bmN0aW9uIG5vVG9wTGV2ZWwoKSB7CiB9CiBgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5
d29yZCAnZXhwb3J0JzozYCk7CiAKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AK
K2ltcG9ydCB7ICJcdWQ4MDAiIGFzIHRlc3QgfSBmcm9tICIuL29rLmpzIgorYCwgU3RyaW5nLnJh
d2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCBzdHJpbmcgbGl0ZXJhbCAiXHVkODAwIi4gRXhwZWN0
ZWQgYSB3ZWxsLWZvcm1lZC11bmljb2RlIHN0cmluZyBmb3IgdGhlIG1vZHVsZSBleHBvcnQgbmFt
ZS46MmApOworCitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgeyAi
dGVzdCIgfSBmcm9tICIuL29rLmpzIgorYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCB0b2tlbiAnfScuIEV4cGVjdGVkICdhcycgYWZ0ZXIgdGhlIG1vZHVsZSBleHBvcnQgbmFt
ZSBzdHJpbmcuOjJgKTsKKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZXhw
b3J0IHsgInRlc3QiIH0KK2AsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgbW9k
dWxlIGV4cG9ydCBuYW1lcyBpZiB0aGV5IHJlZmVyZW5jZSB2YXJpYWJsZSBuYW1lcyBpbiB0aGUg
Y3VycmVudCBtb2R1bGUuOjNgKTsKKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3
YAorZXhwb3J0IHsgInRlc3QiIGFzICJvayIgfQorYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjog
Q2Fubm90IHVzZSBtb2R1bGUgZXhwb3J0IG5hbWVzIGlmIHRoZXkgcmVmZXJlbmNlIHZhcmlhYmxl
IG5hbWVzIGluIHRoZSBjdXJyZW50IG1vZHVsZS46M2ApOworCitjaGVja01vZHVsZVN5bnRheEVy
cm9yKFN0cmluZy5yYXdgCitleHBvcnQgeyAiXHVkODAwIiB9IGZyb20gIi4vb2suanMiCitgLCBT
dHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHN0cmluZyBsaXRlcmFsICJcdWQ4MDAi
LiBFeHBlY3RlZCBhIHdlbGwtZm9ybWVkLXVuaWNvZGUgc3RyaW5nIGZvciB0aGUgbW9kdWxlIGV4
cG9ydCBuYW1lLjoyYCk7CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4
cG9ydCB7IG9rIGFzICJcdWQ4MDAiIH0gZnJvbSAiLi9vay5qcyIKK2AsIFN0cmluZy5yYXdgU3lu
dGF4RXJyb3I6IFVuZXhwZWN0ZWQgc3RyaW5nIGxpdGVyYWwgIlx1ZDgwMCIuIEV4cGVjdGVkIGEg
d2VsbC1mb3JtZWQtdW5pY29kZSBzdHJpbmcgZm9yIHRoZSBtb2R1bGUgZXhwb3J0IG5hbWUuOjJg
KTsKKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZXhwb3J0IHsgImhlbGxv
IiBhcyAiXHVkODAwIiB9IGZyb20gIi4vb2suanMiCitgLCBTdHJpbmcucmF3YFN5bnRheEVycm9y
OiBVbmV4cGVjdGVkIHN0cmluZyBsaXRlcmFsICJcdWQ4MDAiLiBFeHBlY3RlZCBhIHdlbGwtZm9y
bWVkLXVuaWNvZGUgc3RyaW5nIGZvciB0aGUgbW9kdWxlIGV4cG9ydCBuYW1lLjoyYCk7CisKK2No
ZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4cG9ydCB7ICJcdWQ4MDAiIGFzICJo
ZWxsbyIgfSBmcm9tICIuL29rLmpzIgorYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCBzdHJpbmcgbGl0ZXJhbCAiXHVkODAwIi4gRXhwZWN0ZWQgYSB3ZWxsLWZvcm1lZC11bmlj
b2RlIHN0cmluZyBmb3IgdGhlIG1vZHVsZSBleHBvcnQgbmFtZS46MmApOworCitjaGVja01vZHVs
ZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitleHBvcnQgKiBhcyAiXHVkODAwIiBmcm9tICIuL29r
LmpzIgorYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCBzdHJpbmcgbGl0ZXJh
bCAiXHVkODAwIi4gRXhwZWN0ZWQgYSB3ZWxsLWZvcm1lZC11bmljb2RlIHN0cmluZyBmb3IgdGhl
IG1vZHVsZSBleHBvcnQgbmFtZS46MmApOworCiAvLyAtLS0tLS0tLS0tLS0tLS0gb3RoZXIgLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2
Mi9jb25maWcueWFtbAppbmRleCBiZGQ4YmJmZDUyZGE2NDcyMGJmZDc3ZmU3ZjhjOGMxMTZhNjBh
YjM2Li45YTRjNWU3MzEzMjA4ZjYwNDRjZWQxYjcxYzMyMzYzMWEyNGI1NDQ2IDEwMDY0NAotLS0g
YS9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZp
Zy55YW1sCkBAIC0xOSw3ICsxOSw2IEBAIHNraXA6CiAgICAgLSByZWdleHAtbG9va2JlaGluZAog
ICAgIC0gbGVnYWN5LXJlZ2V4cAogCi0gICAgLSBhcmJpdHJhcnktbW9kdWxlLW5hbWVzcGFjZS1u
YW1lcwogICAgIC0gY2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMtbWV0
aG9kcy1wcml2YXRlCiAgICAgLSBjbGVhbnVwU29tZQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416231</attachid>
            <date>2020-12-15 02:26:08 -0800</date>
            <delta_ts>2020-12-15 18:41:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217576-20201215022607.patch</filename>
            <type>text/plain</type>
            <size>18942</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODI2CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
Yjg3NTY0OTJiYjM0Zjk0ZjdjMjFmYWQ3ZTA4N2IwNWI1NjZiN2QyLi4zMGJlNTJhZjJlN2ZmZjI5
MGVmMTQzMzhhYzAzZGY1NDYwYjM5MzUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMyBAQAorMjAyMC0xMi0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFjY2VwdCBhcmJpdHJhcnkgbW9kdWxlIG5hbWVzcGFjZSBpZGVu
dGlmaWVyIG5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTc1NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwNDE2MTA0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVt
ZW50cyBhcmJpdHJhcnkgbW9kdWxlIG5hbWVzcGFjZSBpZGVudGlmaWVyIG5hbWVzWzFdLgorICAg
ICAgICBBZnRlciB0aGlzLCB3ZSBjYW4gZXhwb3J0IGFuZCBpbXBvcnQgYXJiaXRyYXJ5IG1vZHVs
ZSBleHBvcnQgbmFtZXMgd2hpY2ggYXJlIG5vdCB2YWxpZCBhcyBhIHZhcmlhYmxlIGlkZW50aWZp
ZXIuCisgICAgICAgIEZvciBleGFtcGxlLAorCisgICAgICAgICAgICBpbXBvcnQgeyAiZGVsZXRl
IiBhcyBkZWxldGVkVmFsdWUgfSBmcm9tICIuL29rLmpzIjsKKworICAgICAgICAgICAgLi4uCisK
KyAgICAgICAgICAgIGV4cG9ydCB7CisgICAgICAgICAgICAgICAgZGVsZXRlZFZhbHVlIGFzICJk
ZWxldGUiCisgICAgICAgICAgICB9OworCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29t
L3RjMzkvZWNtYTI2Mi9wdWxsLzIxNTQKKworICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjppc1N0cmluZ1dlbGxGb3JtZWRVbmljb2RlKToKKyAgICAgICAgKEpTQzo6
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0Q2xhdXNlSXRlbSk6CisgICAgICAgIChKU0M6
OlBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUltcG9ydERlY2xhcmF0aW9uKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0U3BlY2lmaWVyKToKKyAgICAgICAgKEpT
Qzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYXRpb24pOgorICAgICAgICAq
IHBhcnNlci9QYXJzZXIuaDoKKwogMjAyMC0xMi0xNCAgVGFkZXUgWmFnYWxsbyAgPHR6YWdhbGxv
QGFwcGxlLmNvbT4KIAogICAgICAgICBNb3ZlIHNvbWUgb2YgdGhlIHdvcmsgZnJvbSBKU0xvY2sg
dG8gVk1FbnRyeVNjb3BlCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2Vy
L1BhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKaW5k
ZXggZDExOWJiMzIzYjYwM2UyMzg5Yzc5ZWI0NTNjN2RkZTUwY2NiN2I1Ny4uZmY0ZWRhMTYyMzg0
NWE3YzQ1NWU2N2Y5OTdkMzgxNmUxOTVmZTc1NSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvUGFyc2VyLmNwcApAQCAtMzM3OSw2ICszMzc5LDI3IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVl
QnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6Ok1vZHVsZU5hbWUgUGFyc2VyPExleGVyVHlw
ZT46CiAgICAgcmV0dXJuIGNvbnRleHQuY3JlYXRlTW9kdWxlTmFtZShzcGVjaWZpZXJMb2NhdGlv
biwgKm1vZHVsZU5hbWUpOwogfQogCitzdGF0aWMgaW5saW5lIGJvb2wgaXNTdHJpbmdXZWxsRm9y
bWVkVW5pY29kZShjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBpZiAoc3RyaW5nLmlzOEJp
dCgpKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9
IHN0cmluZy5jaGFyYWN0ZXJzMTYoKTsKKyAgICBmb3IgKHVuc2lnbmVkIGluZGV4ID0gMCwgbGVu
Z3RoID0gc3RyaW5nLmxlbmd0aCgpOyBpbmRleCA8IGxlbmd0aDsgKytpbmRleCkgeworICAgICAg
ICBVQ2hhciBjaGFyYWN0ZXIgPSBjaGFyYWN0ZXJzW2luZGV4XTsKKyAgICAgICAgaWYgKCFVMTZf
SVNfU1VSUk9HQVRFKGNoYXJhY3RlcikpCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAg
aWYgKFUxNl9JU19TVVJST0dBVEVfVFJBSUwoY2hhcmFjdGVyKSkKKyAgICAgICAgICAgIHJldHVy
biBmYWxzZTsKKyAgICAgICAgaWYgKGluZGV4ICsgMSA9PSBsZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CisgICAgICAgICsraW5kZXg7CisgICAgICAgIFVDaGFyIG5leHRDaGFyYWN0
ZXIgPSBjaGFyYWN0ZXJzW2luZGV4XTsKKyAgICAgICAgaWYgKCFVMTZfSVNfVFJBSUwobmV4dENo
YXJhY3RlcikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQorICAgIHJldHVybiB0
cnVlOworfQorCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgogdGVtcGxhdGUgPGNsYXNz
IFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6SW1wb3J0U3BlY2lmaWVyIFBhcnNl
cjxMZXhlclR5cGU+OjpwYXJzZUltcG9ydENsYXVzZUl0ZW0oVHJlZUJ1aWxkZXImIGNvbnRleHQs
IEltcG9ydFNwZWNpZmllclR5cGUgc3BlY2lmaWVyVHlwZSkKIHsKQEAgLTM0MTQsMTYgKzM0MzUs
MjMgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
SW1wb3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhlclQKICAgICAgICAgLy8gSW1wb3J0U3BlY2lmaWVy
IDoKICAgICAgICAgLy8gSW1wb3J0ZWRCaW5kaW5nCiAgICAgICAgIC8vIElkZW50aWZpZXJOYW1l
IGFzIEltcG9ydGVkQmluZGluZworICAgICAgICAvLyBNb2R1bGVFeHBvcnROYW1lIGFzIEltcG9y
dGVkQmluZGluZwogICAgICAgICAvLyBlLmcuCiAgICAgICAgIC8vICAgICBBCiAgICAgICAgIC8v
ICAgICBBIGFzIEIKLSAgICAgICAgQVNTRVJUKG1hdGNoSWRlbnRpZmllck9yS2V5d29yZCgpKTsK
LSAgICAgICAgbG9jYWxOYW1lVG9rZW4gPSBtX3Rva2VuOworICAgICAgICBBU1NFUlQobWF0Y2hJ
ZGVudGlmaWVyT3JLZXl3b3JkKCkgfHwgbWF0Y2goU1RSSU5HKSk7CisgICAgICAgIGJvb2wgaXNN
b2R1bGVFeHBvcnROYW1lID0gbWF0Y2goU1RSSU5HKTsKICAgICAgICAgbG9jYWxOYW1lID0gbV90
b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgICAgIGltcG9ydGVkTmFtZSA9IGxvY2FsTmFtZTsKKyAg
ICAgICAgbG9jYWxOYW1lVG9rZW4gPSBtX3Rva2VuOworICAgICAgICBpZiAoaXNNb2R1bGVFeHBv
cnROYW1lKQorICAgICAgICAgICAgZmFpbElmRmFsc2UoaXNTdHJpbmdXZWxsRm9ybWVkVW5pY29k
ZShsb2NhbE5hbWUtPnN0cmluZygpKSwgIkV4cGVjdGVkIGEgd2VsbC1mb3JtZWQtdW5pY29kZSBz
dHJpbmcgZm9yIHRoZSBtb2R1bGUgZXhwb3J0IG5hbWUiKTsKICAgICAgICAgbmV4dCgpOwogCi0g
ICAgICAgIGlmIChtYXRjaENvbnRleHR1YWxLZXl3b3JkKG1fdm0ucHJvcGVydHlOYW1lcy0+YXMp
KSB7CisgICAgICAgIGJvb2wgdXNlQXMgPSBtYXRjaENvbnRleHR1YWxLZXl3b3JkKG1fdm0ucHJv
cGVydHlOYW1lcy0+YXMpOworICAgICAgICBpZiAoaXNNb2R1bGVFeHBvcnROYW1lKQorICAgICAg
ICAgICAgZmFpbElmRmFsc2UodXNlQXMsICJFeHBlY3RlZCAnYXMnIGFmdGVyIHRoZSBtb2R1bGUg
ZXhwb3J0IG5hbWUgc3RyaW5nIik7CisgICAgICAgIGlmICh1c2VBcykgewogICAgICAgICAgICAg
bmV4dCgpOwogICAgICAgICAgICAgZmFpbElmRmFsc2UobWF0Y2hTcGVjSWRlbnRpZmllcigpLCAi
RXhwZWN0ZWQgYSB2YXJpYWJsZSBuYW1lIGZvciB0aGUgaW1wb3J0IGRlY2xhcmF0aW9uIik7CiAg
ICAgICAgICAgICBsb2NhbE5hbWVUb2tlbiA9IG1fdG9rZW47CkBAIC0zNTAyLDcgKzM1MzAsNyBA
QCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVy
VHlwZT46OnBhcnNlSW1wb3J0RGVjbGFyYQogICAgICAgICAgICAgbmV4dCgpOwogCiAgICAgICAg
ICAgICB3aGlsZSAoIW1hdGNoKENMT1NFQlJBQ0UpKSB7Ci0gICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UobWF0Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCksICJFeHBlY3RlZCBhbiBpbXBvcnRlZCBu
YW1lIGZvciB0aGUgaW1wb3J0IGRlY2xhcmF0aW9uIik7CisgICAgICAgICAgICAgICAgZmFpbElm
RmFsc2UoKG1hdGNoSWRlbnRpZmllck9yS2V5d29yZCgpIHx8IG1hdGNoKFNUUklORykpLCAiRXhw
ZWN0ZWQgYW4gaW1wb3J0ZWQgbmFtZSBvciBhIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcgZm9y
IHRoZSBpbXBvcnQgZGVjbGFyYXRpb24iKTsKICAgICAgICAgICAgICAgICBhdXRvIHNwZWNpZmll
ciA9IHBhcnNlSW1wb3J0Q2xhdXNlSXRlbShjb250ZXh0LCBJbXBvcnRTcGVjaWZpZXJUeXBlOjpO
YW1lZEltcG9ydCk7CiAgICAgICAgICAgICAgICAgZmFpbElmRmFsc2Uoc3BlY2lmaWVyLCAiQ2Fu
bm90IHBhcnNlIHRoZSBuYW1lZCBpbXBvcnQiKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LmFw
cGVuZEltcG9ydFNwZWNpZmllcihzcGVjaWZpZXJMaXN0LCBzcGVjaWZpZXIpOwpAQCAtMzUyOCwy
NCArMzU1NiwzNSBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQg
UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0RGVjbGFyYQogfQogCiB0ZW1wbGF0ZSA8dHlw
ZW5hbWUgTGV4ZXJUeXBlPgotdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBU
cmVlQnVpbGRlcjo6RXhwb3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9y
dFNwZWNpZmllcihUcmVlQnVpbGRlciYgY29udGV4dCwgVmVjdG9yPHN0ZDo6cGFpcjxjb25zdCBJ
ZGVudGlmaWVyKiwgY29uc3QgSWRlbnRpZmllcio+PiYgbWF5YmVFeHBvcnRlZExvY2FsTmFtZXMs
IGJvb2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzKQordGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RXhwb3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhl
clR5cGU+OjpwYXJzZUV4cG9ydFNwZWNpZmllcihUcmVlQnVpbGRlciYgY29udGV4dCwgVmVjdG9y
PHN0ZDo6cGFpcjxjb25zdCBJZGVudGlmaWVyKiwgY29uc3QgSWRlbnRpZmllcio+PiYgbWF5YmVF
eHBvcnRlZExvY2FsTmFtZXMsIGJvb2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzLCBib29s
JiBoYXNSZWZlcmVuY2VkTW9kdWxlRXhwb3J0TmFtZXMpCiB7CiAgICAgLy8gRXhwb3J0U3BlY2lm
aWVyIDoKICAgICAvLyBJZGVudGlmaWVyTmFtZQogICAgIC8vIElkZW50aWZpZXJOYW1lIGFzIElk
ZW50aWZpZXJOYW1lCisgICAgLy8gSWRlbnRpZmllck5hbWUgYXMgTW9kdWxlRXhwb3J0TmFtZQor
ICAgIC8vIE1vZHVsZUV4cG9ydE5hbWUKKyAgICAvLyBNb2R1bGVFeHBvcnROYW1lIGFzIElkZW50
aWZpZXJOYW1lCisgICAgLy8gTW9kdWxlRXhwb3J0TmFtZSBhcyBNb2R1bGVFeHBvcnROYW1lCiAg
ICAgLy8gaHR0cDovL3d3dy5lY21hLWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2Vj
LWV4cG9ydHMKLSAgICBBU1NFUlQobWF0Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCkpOworICAgIEFT
U0VSVChtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSB8fCBtYXRjaChTVFJJTkcpKTsKICAgICBK
U1Rva2VuTG9jYXRpb24gc3BlY2lmaWVyTG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKLSAgICBp
ZiAobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnKQotICAgICAgICBoYXNLZXl3b3Jk
Rm9yTG9jYWxCaW5kaW5ncyA9IHRydWU7CiAgICAgY29uc3QgSWRlbnRpZmllciogbG9jYWxOYW1l
ID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CiAgICAgY29uc3QgSWRlbnRpZmllciogZXhwb3J0ZWRO
YW1lID0gbG9jYWxOYW1lOworICAgIGlmIChtYXRjaChTVFJJTkcpKSB7CisgICAgICAgIGhhc1Jl
ZmVyZW5jZWRNb2R1bGVFeHBvcnROYW1lcyA9IHRydWU7CisgICAgICAgIGZhaWxJZkZhbHNlKGlz
U3RyaW5nV2VsbEZvcm1lZFVuaWNvZGUoZXhwb3J0ZWROYW1lLT5zdHJpbmcoKSksICJFeHBlY3Rl
ZCBhIHdlbGwtZm9ybWVkLXVuaWNvZGUgc3RyaW5nIGZvciB0aGUgbW9kdWxlIGV4cG9ydCBuYW1l
Iik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKG1fdG9rZW4ubV90eXBlICYgS2V5d29yZFRv
a2VuRmxhZykKKyAgICAgICAgICAgIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzID0gdHJ1ZTsK
KyAgICB9CiAgICAgbmV4dCgpOwogCiAgICAgaWYgKG1hdGNoQ29udGV4dHVhbEtleXdvcmQobV92
bS5wcm9wZXJ0eU5hbWVzLT5hcykpIHsKICAgICAgICAgbmV4dCgpOwotICAgICAgICBmYWlsSWZG
YWxzZShtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSwgIkV4cGVjdGVkIGFuIGV4cG9ydGVkIG5h
bWUgZm9yIHRoZSBleHBvcnQgZGVjbGFyYXRpb24iKTsKKyAgICAgICAgZmFpbElmRmFsc2UobWF0
Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCkgfHwgbWF0Y2goU1RSSU5HKSwgIkV4cGVjdGVkIGFuIGV4
cG9ydGVkIG5hbWUgb3IgYSBtb2R1bGUgZXhwb3J0IG5hbWUgc3RyaW5nIGZvciB0aGUgZXhwb3J0
IGRlY2xhcmF0aW9uIik7CiAgICAgICAgIGV4cG9ydGVkTmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlk
ZW50OworICAgICAgICBpZiAobWF0Y2goU1RSSU5HKSkKKyAgICAgICAgICAgIGZhaWxJZkZhbHNl
KGlzU3RyaW5nV2VsbEZvcm1lZFVuaWNvZGUoZXhwb3J0ZWROYW1lLT5zdHJpbmcoKSksICJFeHBl
Y3RlZCBhIHdlbGwtZm9ybWVkLXVuaWNvZGUgc3RyaW5nIGZvciB0aGUgbW9kdWxlIGV4cG9ydCBu
YW1lIik7CiAgICAgICAgIG5leHQoKTsKICAgICB9CiAKQEAgLTM1NjYsNiArMzYwNSw3IEBAIHRl
bXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBl
Pjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgY2FzZSBUSU1FUzogewogICAgICAgICAvLyBleHBv
cnQgKiBGcm9tQ2xhdXNlIDsKICAgICAgICAgLy8gZXhwb3J0ICogYXMgSWRlbnRpZmllck5hbWUg
RnJvbUNsYXVzZSA7CisgICAgICAgIC8vIGV4cG9ydCAqIGFzIE1vZHVsZUV4cG9ydE5hbWUgRnJv
bUNsYXVzZSA7CiAgICAgICAgIG5leHQoKTsKIAogICAgICAgICBjb25zdCBJZGVudGlmaWVyKiBl
eHBvcnRlZE5hbWUgPSBudWxscHRyOwpAQCAtMzU3Myw4ICszNjEzLDEwIEBAIHRlbXBsYXRlIDxj
bGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VF
eHBvcnREZWNsYXJhCiAgICAgICAgIGlmIChtYXRjaENvbnRleHR1YWxLZXl3b3JkKG1fdm0ucHJv
cGVydHlOYW1lcy0+YXMpKSB7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAgICBzcGVj
aWZpZXJMb2NhdGlvbiA9IEpTVG9rZW5Mb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwotICAgICAg
ICAgICAgZmFpbElmRmFsc2UobWF0Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCksICJFeHBlY3RlZCBh
biBleHBvcnRlZCBuYW1lIGZvciB0aGUgZXhwb3J0IGRlY2xhcmF0aW9uIik7CisgICAgICAgICAg
ICBmYWlsSWZGYWxzZSgobWF0Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCkgfHwgbWF0Y2goU1RSSU5H
KSksICJFeHBlY3RlZCBhbiBleHBvcnRlZCBuYW1lIG9yIGEgbW9kdWxlIGV4cG9ydCBuYW1lIHN0
cmluZyBmb3IgdGhlIGV4cG9ydCBkZWNsYXJhdGlvbiIpOwogICAgICAgICAgICAgZXhwb3J0ZWRO
YW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgICAgICBpZiAobWF0Y2goU1RSSU5H
KSkKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShpc1N0cmluZ1dlbGxGb3JtZWRVbmljb2Rl
KGV4cG9ydGVkTmFtZS0+c3RyaW5nKCkpLCAiRXhwZWN0ZWQgYSB3ZWxsLWZvcm1lZC11bmljb2Rl
IHN0cmluZyBmb3IgdGhlIG1vZHVsZSBleHBvcnQgbmFtZSIpOwogICAgICAgICAgICAgbmV4dCgp
OwogICAgICAgICB9CiAKQEAgLTM3MDMsOSArMzc0NSwxMCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJl
ZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVj
bGFyYQogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPGNvbnN0IElkZW50aWZpZXIqLCBjb25zdCBJ
ZGVudGlmaWVyKj4+IG1heWJlRXhwb3J0ZWRMb2NhbE5hbWVzOwogCiAgICAgICAgIGJvb2wgaGFz
S2V5d29yZEZvckxvY2FsQmluZGluZ3MgPSBmYWxzZTsKKyAgICAgICAgYm9vbCBoYXNSZWZlcmVu
Y2VkTW9kdWxlRXhwb3J0TmFtZXMgPSBmYWxzZTsKICAgICAgICAgd2hpbGUgKCFtYXRjaChDTE9T
RUJSQUNFKSkgewotICAgICAgICAgICAgZmFpbElmRmFsc2UobWF0Y2hJZGVudGlmaWVyT3JLZXl3
b3JkKCksICJFeHBlY3RlZCBhIHZhcmlhYmxlIG5hbWUgZm9yIHRoZSBleHBvcnQgZGVjbGFyYXRp
b24iKTsKLSAgICAgICAgICAgIGF1dG8gc3BlY2lmaWVyID0gcGFyc2VFeHBvcnRTcGVjaWZpZXIo
Y29udGV4dCwgbWF5YmVFeHBvcnRlZExvY2FsTmFtZXMsIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRp
bmdzKTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKChtYXRjaElkZW50aWZpZXJPcktleXdvcmQo
KSB8fCBtYXRjaChTVFJJTkcpKSwgIkV4cGVjdGVkIGEgdmFyaWFibGUgbmFtZSBvciBhIG1vZHVs
ZSBleHBvcnQgbmFtZSBzdHJpbmcgZm9yIHRoZSBleHBvcnQgZGVjbGFyYXRpb24iKTsKKyAgICAg
ICAgICAgIGF1dG8gc3BlY2lmaWVyID0gcGFyc2VFeHBvcnRTcGVjaWZpZXIoY29udGV4dCwgbWF5
YmVFeHBvcnRlZExvY2FsTmFtZXMsIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzLCBoYXNSZWZl
cmVuY2VkTW9kdWxlRXhwb3J0TmFtZXMpOwogICAgICAgICAgICAgZmFpbElmRmFsc2Uoc3BlY2lm
aWVyLCAiQ2Fubm90IHBhcnNlIHRoZSBuYW1lZCBleHBvcnQiKTsKICAgICAgICAgICAgIGNvbnRl
eHQuYXBwZW5kRXhwb3J0U3BlY2lmaWVyKHNwZWNpZmllckxpc3QsIHNwZWNpZmllcik7CiAgICAg
ICAgICAgICBpZiAoIWNvbnN1bWUoQ09NTUEpKQpAQCAtMzcxOCw3ICszNzYxLDggQEAgdGVtcGxh
dGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+Ojpw
YXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIG1vZHVs
ZU5hbWUgPSBwYXJzZU1vZHVsZU5hbWUoY29udGV4dCk7CiAgICAgICAgICAgICBmYWlsSWZGYWxz
ZShtb2R1bGVOYW1lLCAiQ2Fubm90IHBhcnNlIHRoZSAnZnJvbScgY2xhdXNlIik7Ci0gICAgICAg
IH0KKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBzZW1hbnRpY0ZhaWxJZlRydWUoaGFzUmVm
ZXJlbmNlZE1vZHVsZUV4cG9ydE5hbWVzLCAiQ2Fubm90IHVzZSBtb2R1bGUgZXhwb3J0IG5hbWVz
IGlmIHRoZXkgcmVmZXJlbmNlIHZhcmlhYmxlIG5hbWVzIGluIHRoZSBjdXJyZW50IG1vZHVsZSIp
OwogICAgICAgICBmYWlsSWZGYWxzZShhdXRvU2VtaUNvbG9uKCksICJFeHBlY3RlZCBhICc7JyBm
b2xsb3dpbmcgYSB0YXJnZXRlZCBleHBvcnQgZGVjbGFyYXRpb24iKTsKIAogICAgICAgICBpZiAo
IW1vZHVsZU5hbWUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCmluZGV4IDg1
ZjE4NzM1Y2VmYWVjZDlhNjU3ZjMwNjE3YWRhZTBiMTFiZmI5ZGIuLjFmYmE0YmE4NmRiMWYzMmZh
OGI4MWI4YTY2NGFiZjhhZDY2MzJmN2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaApAQCAtMTc4NCw3ICsxNzg0LDcgQEAgY2xhc3MgUGFyc2VyIHsKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpJbXBvcnRTcGVjaWZpZXIg
cGFyc2VJbXBvcnRDbGF1c2VJdGVtKFRyZWVCdWlsZGVyJiwgSW1wb3J0U3BlY2lmaWVyVHlwZSk7
CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6
TW9kdWxlTmFtZSBwYXJzZU1vZHVsZU5hbWUoVHJlZUJ1aWxkZXImKTsKICAgICB0ZW1wbGF0ZSA8
Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VJbXBvcnREZWNsYXJhdGlvbihU
cmVlQnVpbGRlciYpOwotICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6OkV4cG9ydFNwZWNpZmllciBwYXJzZUV4cG9ydFNwZWNpZmllcihUcmVlQnVp
bGRlciYgY29udGV4dCwgVmVjdG9yPHN0ZDo6cGFpcjxjb25zdCBJZGVudGlmaWVyKiwgY29uc3Qg
SWRlbnRpZmllcio+PiYgbWF5YmVFeHBvcnRlZExvY2FsTmFtZXMsIGJvb2wmIGhhc0tleXdvcmRG
b3JMb2NhbEJpbmRpbmdzKTsKKyAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpFeHBvcnRTcGVjaWZpZXIgcGFyc2VFeHBvcnRTcGVjaWZpZXIoVHJl
ZUJ1aWxkZXImIGNvbnRleHQsIFZlY3RvcjxzdGQ6OnBhaXI8Y29uc3QgSWRlbnRpZmllciosIGNv
bnN0IElkZW50aWZpZXIqPj4mIG1heWJlRXhwb3J0ZWRMb2NhbE5hbWVzLCBib29sJiBoYXNLZXl3
b3JkRm9yTG9jYWxCaW5kaW5ncywgYm9vbCYgaGFzUmVmZXJlbmNlZE1vZHVsZUV4cG9ydE5hbWVz
KTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgcGFyc2VF
eHBvcnREZWNsYXJhdGlvbihUcmVlQnVpbGRlciYpOwogCiAgICAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBBTFdBWVNfSU5MSU5FIFRyZWVFeHByZXNzaW9uIGNyZWF0ZVJlc29sdmVBbmRV
c2VWYXJpYWJsZShUcmVlQnVpbGRlciYsIGNvbnN0IElkZW50aWZpZXIqLCBib29sIGlzRXZhbCwg
Y29uc3QgSlNUZXh0UG9zaXRpb24mLCBjb25zdCBKU1Rva2VuTG9jYXRpb24mKTsKZGlmZiAtLWdp
dCBhL0pTVGVzdHMvQ2hhbmdlTG9nIGIvSlNUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTMyMjQzNjFj
ZmI0YzU5YWExZTI1OTEyODRkZjNmOGY5ZTVkMjFiMC4uNjJlMThhZGM4OWE4NWFiOTQ1YzU4OWFk
OWViOTVkMTZlMmFmNTMxMSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9DaGFuZ2VMb2cKKysrIGIvSlNU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAyMC0xMi0xNSAgWXVzdWtlIFN1enVr
aSAgPHlzdXp1a2lAYXBwbGUuY29tPgorCisgICAgICAgIFtKU0NdIEFjY2VwdCBhcmJpdHJhcnkg
bW9kdWxlIG5hbWVzcGFjZSBpZGVudGlmaWVyIG5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTc1NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVt
LzcwNDE2MTA0PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgICogbW9kdWxlcy9hcmJpdHJhcnktbW9kdWxlLW5hbWVzLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBtb2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMvZXhwb3J0LmpzOiBBZGRlZC4KKyAgICAg
ICAgKiBtb2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMvZXhwb3J0Mi5qczogQWRkZWQuCisg
ICAgICAgICogc3RyZXNzL21vZHVsZXMtc3ludGF4LWVycm9yLmpzOgorICAgICAgICAqIHRlc3Qy
NjIvY29uZmlnLnlhbWw6CisKIDIwMjAtMTItMTEgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtpQGFw
cGxlLmNvbT4KIAogICAgICAgICBbSlNDXSBVcGRhdGUgdGVzdDI2MgpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9tb2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMuanMgYi9KU1Rlc3RzL21vZHVsZXMv
YXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi45YTRhMDA3MzM0YjVjZDMyMTBi
NGVhODg5NWU2OGM1MjliNTRmZjMwCi0tLSAvZGV2L251bGwKKysrIGIvSlNUZXN0cy9tb2R1bGVz
L2FyYml0cmFyeS1tb2R1bGUtbmFtZXMuanMKQEAgLTAsMCArMSwxMiBAQAoraW1wb3J0IHsKKyAg
ICAiZGVsZXRlIiBhcyBkZWxldGluZywKKyAgICAiaWYiIGFzIG9rMSwKKyAgICAib2syIiBhcyBv
azIKK30gZnJvbSAiLi9hcmJpdHJhcnktbW9kdWxlLW5hbWVzL2V4cG9ydC5qcyI7CitpbXBvcnQg
eyAidmFyIiBhcyB2YXJpYWJsZSB9IGZyb20gIi4vYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy9leHBv
cnQuanMiOworaW1wb3J0IHsgc2hvdWxkQmUsIHNob3VsZFRocm93IH0gZnJvbSAiLi9yZXNvdXJj
ZXMvYXNzZXJ0LmpzIjsKKworc2hvdWxkQmUoZGVsZXRpbmcsIDQyKTsKK3Nob3VsZEJlKHZhcmlh
YmxlLnRlc3QsIDQwKTsKK3Nob3VsZEJlKG9rMSwgNDAwKTsKK3Nob3VsZEJlKG9rMiwgNDAxKTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvbW9kdWxlcy9hcmJpdHJhcnktbW9kdWxlLW5hbWVzL2V4cG9y
dC5qcyBiL0pTVGVzdHMvbW9kdWxlcy9hcmJpdHJhcnktbW9kdWxlLW5hbWVzL2V4cG9ydC5qcwpu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi5hMTU1MTZlNDJjNGExYzg1NDdiYTA2ZGZmOGM0ZjA0Zjk0NzcxMjIxCi0tLSAv
ZGV2L251bGwKKysrIGIvSlNUZXN0cy9tb2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMvZXhw
b3J0LmpzCkBAIC0wLDAgKzEsOCBAQAordmFyIGRlbGV0aW5nID0gNDI7CisKK2V4cG9ydCB7Cisg
ICAgZGVsZXRpbmcgYXMgImRlbGV0ZSIKK307CitleHBvcnQgKiBhcyAidmFyIiBmcm9tICIuL2V4
cG9ydDIuanMiOworZXhwb3J0IHsgImlmIiB9IGZyb20gIi4vZXhwb3J0Mi5qcyI7CitleHBvcnQg
eyAiZWxzZSIgYXMgIm9rMiIgfSBmcm9tICIuL2V4cG9ydDIuanMiOwpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9tb2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMvZXhwb3J0Mi5qcyBiL0pTVGVzdHMv
bW9kdWxlcy9hcmJpdHJhcnktbW9kdWxlLW5hbWVzL2V4cG9ydDIuanMKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjBh
OTQzYjhiNTc4NDU1NDg0MDBiM2I3NmM1MTIyNDU0YzU3NTg1NQotLS0gL2Rldi9udWxsCisrKyBi
L0pTVGVzdHMvbW9kdWxlcy9hcmJpdHJhcnktbW9kdWxlLW5hbWVzL2V4cG9ydDIuanMKQEAgLTAs
MCArMSw3IEBACitleHBvcnQgdmFyIHRlc3QgPSA0MDsKK3ZhciBvazIgPSA0MDA7Cit2YXIgb2sz
ID0gNDAxOworZXhwb3J0IHsKKyAgICBvazIgYXMgImlmIiwKKyAgICBvazMgYXMgImVsc2UiCit9
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9zdHJlc3MvbW9kdWxlcy1zeW50YXgtZXJyb3IuanMgYi9K
U1Rlc3RzL3N0cmVzcy9tb2R1bGVzLXN5bnRheC1lcnJvci5qcwppbmRleCBkY2RmMmVlMTRhYWYz
ODZhNDNlOTA1MjIyNWQ3YTM3YTc5MWYzMTA0Li44YWM0ZmM5MzkyODZlNTg5YzRmNmM2YmMyYjdm
MGQ0MzFjOWJmZWU1IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3N0cmVzcy9tb2R1bGVzLXN5bnRheC1l
cnJvci5qcworKysgYi9KU1Rlc3RzL3N0cmVzcy9tb2R1bGVzLXN5bnRheC1lcnJvci5qcwpAQCAt
MjEsNyArMjEsNyBAQCBmdW5jdGlvbiBjaGVja01vZHVsZVN5bnRheEVycm9yKHNvdXJjZSwgZXJy
b3JNZXNzYWdlKSB7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKIGltcG9y
dCB7LH0gZnJvbSAiQ29jb2EiCi1gLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywn
LiBFeHBlY3RlZCBhbiBpbXBvcnRlZCBuYW1lIGZvciB0aGUgaW1wb3J0IGRlY2xhcmF0aW9uLjoy
YCk7CitgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhbiBp
bXBvcnRlZCBuYW1lIG9yIGEgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZyBmb3IgdGhlIGltcG9y
dCBkZWNsYXJhdGlvbi46MmApOwogCiBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdg
CiBpbXBvcnQgKiBmcm9tICJDb2NvYSIKQEAgLTE1OCw3ICsxNTgsNyBAQCBmdW5jdGlvbiBub1Rv
cExldmVsKCkgewogCiBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCiBpbXBvcnQg
YSwgeyBbYXNzaWduXSBhcyBjIH0gZnJvbSAiQ29jb2EiCi1gLCBgU3ludGF4RXJyb3I6IFVuZXhw
ZWN0ZWQgdG9rZW4gJ1snLiBFeHBlY3RlZCBhbiBpbXBvcnRlZCBuYW1lIGZvciB0aGUgaW1wb3J0
IGRlY2xhcmF0aW9uLjoyYCk7CitgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ1sn
LiBFeHBlY3RlZCBhbiBpbXBvcnRlZCBuYW1lIG9yIGEgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmlu
ZyBmb3IgdGhlIGltcG9ydCBkZWNsYXJhdGlvbi46MmApOwogCiBjaGVja01vZHVsZVN5bnRheEVy
cm9yKFN0cmluZy5yYXdgCiBpbXBvcnQgZCwgeyBnIGFzIHtvYmp9IH0gZnJvbSAiQ2FwcHVjY2lu
byIKQEAgLTE2Niw3ICsxNjYsNyBAQCBmdW5jdGlvbiBub1RvcExldmVsKCkgewogCiBjaGVja01v
ZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCiBpbXBvcnQgZCwgeyB7b2JqfSB9IGZyb20gIkNh
cHB1Y2Npbm8iCi1gLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ3snLiBFeHBlY3Rl
ZCBhbiBpbXBvcnRlZCBuYW1lIGZvciB0aGUgaW1wb3J0IGRlY2xhcmF0aW9uLjoyYCk7CitgLCBg
U3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ3snLiBFeHBlY3RlZCBhbiBpbXBvcnRlZCBu
YW1lIG9yIGEgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZyBmb3IgdGhlIGltcG9ydCBkZWNsYXJh
dGlvbi46MmApOwogCiBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCiBpbXBvcnQg
eyBiaW5kaW5nCkBAIC0xODQsMTEgKzE4NCwxMSBAQCBmdW5jdGlvbiBub1RvcExldmVsKCkgewog
CiBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCiBleHBvcnQgeyAsIH0gZnJvbSAi
Q29jb2EiCi1gLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBh
IHZhcmlhYmxlIG5hbWUgZm9yIHRoZSBleHBvcnQgZGVjbGFyYXRpb24uOjJgKTsKK2AsIGBTeW50
YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgdmFyaWFibGUgbmFtZSBv
ciBhIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcgZm9yIHRoZSBleHBvcnQgZGVjbGFyYXRpb24u
OjJgKTsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAogZXhwb3J0IHsgYSwg
LCB9IGZyb20gIkNvY29hIgotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4g
RXhwZWN0ZWQgYSB2YXJpYWJsZSBuYW1lIGZvciB0aGUgZXhwb3J0IGRlY2xhcmF0aW9uLjoyYCk7
CitgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIHZhcmlh
YmxlIG5hbWUgb3IgYSBtb2R1bGUgZXhwb3J0IG5hbWUgc3RyaW5nIGZvciB0aGUgZXhwb3J0IGRl
Y2xhcmF0aW9uLjoyYCk7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKIGV4
cG9ydCBhIGZyb20gIkNvY29hIgpAQCAtMjAwLDcgKzIwMCw3IEBAIGZ1bmN0aW9uIG5vVG9wTGV2
ZWwoKSB7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKIGV4cG9ydCB7ICog
YXMgYiB9IGZyb20gIkNvY29hIgotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcq
Jy4gRXhwZWN0ZWQgYSB2YXJpYWJsZSBuYW1lIGZvciB0aGUgZXhwb3J0IGRlY2xhcmF0aW9uLjoy
YCk7CitgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJyonLiBFeHBlY3RlZCBhIHZh
cmlhYmxlIG5hbWUgb3IgYSBtb2R1bGUgZXhwb3J0IG5hbWUgc3RyaW5nIGZvciB0aGUgZXhwb3J0
IGRlY2xhcmF0aW9uLjoyYCk7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AK
IGV4cG9ydCAqIGFzIGIKQEAgLTIwOCw3ICsyMDgsNyBAQCBmdW5jdGlvbiBub1RvcExldmVsKCkg
ewogCiBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCiBleHBvcnQgKiBhcyA0MiBm
cm9tICJDb2NvYSIKLWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBudW1iZXIgJzQyJy4gRXhw
ZWN0ZWQgYW4gZXhwb3J0ZWQgbmFtZSBmb3IgdGhlIGV4cG9ydCBkZWNsYXJhdGlvbi46MmApOwor
YCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIG51bWJlciAnNDInLiBFeHBlY3RlZCBhbiBleHBv
cnRlZCBuYW1lIG9yIGEgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZyBmb3IgdGhlIGV4cG9ydCBk
ZWNsYXJhdGlvbi46MmApOwogCiBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCiBl
eHBvcnQgY29uc3QgYiA9IDQyOwpAQCAtMzE2LDYgKzMxNiw0MiBAQCBmdW5jdGlvbiBub1RvcExl
dmVsKCkgewogfQogYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIGtleXdvcmQgJ2V4cG9ydCc6
M2ApOwogCitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgeyAiXHVk
ODAwIiBhcyB0ZXN0IH0gZnJvbSAiLi9vay5qcyIKK2AsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6
IFVuZXhwZWN0ZWQgc3RyaW5nIGxpdGVyYWwgIlx1ZDgwMCIuIEV4cGVjdGVkIGEgd2VsbC1mb3Jt
ZWQtdW5pY29kZSBzdHJpbmcgZm9yIHRoZSBtb2R1bGUgZXhwb3J0IG5hbWUuOjJgKTsKKworY2hl
Y2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IHsgInRlc3QiIH0gZnJvbSAi
Li9vay5qcyIKK2AsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJ30n
LiBFeHBlY3RlZCAnYXMnIGFmdGVyIHRoZSBtb2R1bGUgZXhwb3J0IG5hbWUgc3RyaW5nLjoyYCk7
CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4cG9ydCB7ICJ0ZXN0IiB9
CitgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIG1vZHVsZSBleHBvcnQgbmFt
ZXMgaWYgdGhleSByZWZlcmVuY2UgdmFyaWFibGUgbmFtZXMgaW4gdGhlIGN1cnJlbnQgbW9kdWxl
LjozYCk7CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4cG9ydCB7ICJ0
ZXN0IiBhcyAib2siIH0KK2AsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgbW9k
dWxlIGV4cG9ydCBuYW1lcyBpZiB0aGV5IHJlZmVyZW5jZSB2YXJpYWJsZSBuYW1lcyBpbiB0aGUg
Y3VycmVudCBtb2R1bGUuOjNgKTsKKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3
YAorZXhwb3J0IHsgIlx1ZDgwMCIgfSBmcm9tICIuL29rLmpzIgorYCwgU3RyaW5nLnJhd2BTeW50
YXhFcnJvcjogVW5leHBlY3RlZCBzdHJpbmcgbGl0ZXJhbCAiXHVkODAwIi4gRXhwZWN0ZWQgYSB3
ZWxsLWZvcm1lZC11bmljb2RlIHN0cmluZyBmb3IgdGhlIG1vZHVsZSBleHBvcnQgbmFtZS46MmAp
OworCitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitleHBvcnQgeyBvayBhcyAi
XHVkODAwIiB9IGZyb20gIi4vb2suanMiCitgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4
cGVjdGVkIHN0cmluZyBsaXRlcmFsICJcdWQ4MDAiLiBFeHBlY3RlZCBhIHdlbGwtZm9ybWVkLXVu
aWNvZGUgc3RyaW5nIGZvciB0aGUgbW9kdWxlIGV4cG9ydCBuYW1lLjoyYCk7CisKK2NoZWNrTW9k
dWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4cG9ydCB7ICJoZWxsbyIgYXMgIlx1ZDgwMCIg
fSBmcm9tICIuL29rLmpzIgorYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCBz
dHJpbmcgbGl0ZXJhbCAiXHVkODAwIi4gRXhwZWN0ZWQgYSB3ZWxsLWZvcm1lZC11bmljb2RlIHN0
cmluZyBmb3IgdGhlIG1vZHVsZSBleHBvcnQgbmFtZS46MmApOworCitjaGVja01vZHVsZVN5bnRh
eEVycm9yKFN0cmluZy5yYXdgCitleHBvcnQgeyAiXHVkODAwIiBhcyAiaGVsbG8iIH0gZnJvbSAi
Li9vay5qcyIKK2AsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgc3RyaW5nIGxp
dGVyYWwgIlx1ZDgwMCIuIEV4cGVjdGVkIGEgd2VsbC1mb3JtZWQtdW5pY29kZSBzdHJpbmcgZm9y
IHRoZSBtb2R1bGUgZXhwb3J0IG5hbWUuOjJgKTsKKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihT
dHJpbmcucmF3YAorZXhwb3J0ICogYXMgIlx1ZDgwMCIgZnJvbSAiLi9vay5qcyIKK2AsIFN0cmlu
Zy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgc3RyaW5nIGxpdGVyYWwgIlx1ZDgwMCIuIEV4
cGVjdGVkIGEgd2VsbC1mb3JtZWQtdW5pY29kZSBzdHJpbmcgZm9yIHRoZSBtb2R1bGUgZXhwb3J0
IG5hbWUuOjJgKTsKKwogLy8gLS0tLS0tLS0tLS0tLS0tIG90aGVyIC0tLS0tLS0tLS0tLS0tLS0t
LS0tLQogCiBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwK
aW5kZXggYmRkOGJiZmQ1MmRhNjQ3MjBiZmQ3N2ZlN2Y4YzhjMTE2YTYwYWIzNi4uOWE0YzVlNzMx
MzIwOGY2MDQ0Y2VkMWI3MWMzMjM2MzFhMjRiNTQ0NiAxMDA2NDQKLS0tIGEvSlNUZXN0cy90ZXN0
MjYyL2NvbmZpZy55YW1sCisrKyBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbApAQCAtMTks
NyArMTksNiBAQCBza2lwOgogICAgIC0gcmVnZXhwLWxvb2tiZWhpbmQKICAgICAtIGxlZ2FjeS1y
ZWdleHAKIAotICAgIC0gYXJiaXRyYXJ5LW1vZHVsZS1uYW1lc3BhY2UtbmFtZXMKICAgICAtIGNs
YXNzLW1ldGhvZHMtcHJpdmF0ZQogICAgIC0gY2xhc3Mtc3RhdGljLW1ldGhvZHMtcHJpdmF0ZQog
ICAgIC0gY2xlYW51cFNvbWUK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416307</attachid>
            <date>2020-12-15 18:41:51 -0800</date>
            <delta_ts>2020-12-15 18:43:46 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217576-20201215184150.patch</filename>
            <type>text/plain</type>
            <size>21053</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDk5MTU5Y2FjNTQxNGUyNzNhYzUwMGI3OWUyOGM0ODEzYzJjODBjLi4wMTU5ZjkxMzBiM2MwYjBi
YTUzZTk5N2MyNTkwYzM5MGM5NzViYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAyMC0xMi0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFjY2VwdCBhcmJpdHJhcnkgbW9kdWxlIG5hbWVzcGFjZSBpZGVu
dGlmaWVyIG5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTc1NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwNDE2MTA0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVt
ZW50cyBhcmJpdHJhcnkgbW9kdWxlIG5hbWVzcGFjZSBpZGVudGlmaWVyIG5hbWVzWzFdLgorICAg
ICAgICBBZnRlciB0aGlzLCB3ZSBjYW4gZXhwb3J0IGFuZCBpbXBvcnQgYXJiaXRyYXJ5IG1vZHVs
ZSBleHBvcnQgbmFtZXMgd2hpY2ggYXJlIG5vdCB2YWxpZCBhcyBhIHZhcmlhYmxlIGlkZW50aWZp
ZXIuCisgICAgICAgIEZvciBleGFtcGxlLAorCisgICAgICAgICAgICBpbXBvcnQgeyAiZGVsZXRl
IiBhcyBkZWxldGVkVmFsdWUgfSBmcm9tICIuL29rLmpzIjsKKworICAgICAgICAgICAgLi4uCisK
KyAgICAgICAgICAgIGV4cG9ydCB7CisgICAgICAgICAgICAgICAgZGVsZXRlZFZhbHVlIGFzICJk
ZWxldGUiCisgICAgICAgICAgICB9OworCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29t
L3RjMzkvZWNtYTI2Mi9wdWxsLzIxNTQKKworICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbXBvcnRDbGF1c2VJdGVtKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0RGVjbGFyYXRpb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnRTcGVjaWZpZXIp
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhdGlv
bik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorCiAyMDIwLTEyLTE1ICBTYWFtIEJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIGRlc3RpbmF0aW9uRm9yIHNob3VsZCBj
aGVjayBmb3IgRlRMSklULCBub3QgREZHSklUIHR3aWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU2MDlhZGFhYjBkYmJlNjEw
Y2Q4ZDZlMWRmNjI1M2JhYjcxYzE5ZTMuLmRjNWQxMGViY2U3MDY3YzFiYzY5YmE4YjMxNjI5MGYy
YzIyZWUyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTItMTUgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBY2NlcHQgYXJiaXRyYXJ5IG1v
ZHVsZSBuYW1lc3BhY2UgaWRlbnRpZmllciBuYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAg
IChXVEY6Omhhc1VucGFpcmVkU3Vycm9nYXRlKToKKwogMjAyMC0xMi0xNSAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkb3B0IC1leHRlcm5hbENv
bnRlbnRQcm90ZWN0aW9uU3RhdHVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQwZmM3NGY4ZDYwNmI1ZDA0NTY2
MzVkMzdiMWE1YWQxYjkyNWRlOC4uY2Q4ZWU3ZjI0YmVhZDRlNjRlOGRiZDY5MTQ0OTY4NDM2YzE5
ZTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTEyLTE1ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gQWNjZXB0IGFyYml0cmFy
eSBtb2R1bGUgbmFtZXNwYWNlIGlkZW50aWZpZXIgbmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU3NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3Ry
aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNVbnBhaXJlZFN1cnJvZ2F0ZSk6IERlbGV0
ZWQuCisKIDIwMjAtMTItMTUgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFttYWNPU10gQWRqdXN0IGRhdGUgaW5wdXQgcGxhY2Vob2xkZXIgY29sb3IgYmFz
ZWQgb24gc3BlY2lmaWVkIHRleHQgY29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAppbmRleCBkMTE5YmIzMjNiNjAzZTIzODljNzllYjQ1M2M3ZGRlNTBjY2I3YjU3Li5m
Y2E0MjFlYjM0YjIyZjcxYTVlMzBiZjkzNzBjOTI3YTI5YzY0YmEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0zNDE0LDE2ICszNDE0LDIzIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkltcG9ydFNwZWNpZmll
ciBQYXJzZXI8TGV4ZXJUCiAgICAgICAgIC8vIEltcG9ydFNwZWNpZmllciA6CiAgICAgICAgIC8v
IEltcG9ydGVkQmluZGluZwogICAgICAgICAvLyBJZGVudGlmaWVyTmFtZSBhcyBJbXBvcnRlZEJp
bmRpbmcKKyAgICAgICAgLy8gTW9kdWxlRXhwb3J0TmFtZSBhcyBJbXBvcnRlZEJpbmRpbmcKICAg
ICAgICAgLy8gZS5nLgogICAgICAgICAvLyAgICAgQQogICAgICAgICAvLyAgICAgQSBhcyBCCi0g
ICAgICAgIEFTU0VSVChtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSk7Ci0gICAgICAgIGxvY2Fs
TmFtZVRva2VuID0gbV90b2tlbjsKKyAgICAgICAgQVNTRVJUKG1hdGNoSWRlbnRpZmllck9yS2V5
d29yZCgpIHx8IG1hdGNoKFNUUklORykpOworICAgICAgICBib29sIGlzTW9kdWxlRXhwb3J0TmFt
ZSA9IG1hdGNoKFNUUklORyk7CiAgICAgICAgIGxvY2FsTmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlk
ZW50OwogICAgICAgICBpbXBvcnRlZE5hbWUgPSBsb2NhbE5hbWU7CisgICAgICAgIGxvY2FsTmFt
ZVRva2VuID0gbV90b2tlbjsKKyAgICAgICAgaWYgKGlzTW9kdWxlRXhwb3J0TmFtZSkKKyAgICAg
ICAgICAgIGZhaWxJZkZhbHNlKGhhc1VucGFpcmVkU3Vycm9nYXRlKGxvY2FsTmFtZS0+c3RyaW5n
KCkpLCAiRXhwZWN0ZWQgYSB3ZWxsLWZvcm1lZC11bmljb2RlIHN0cmluZyBmb3IgdGhlIG1vZHVs
ZSBleHBvcnQgbmFtZSIpOwogICAgICAgICBuZXh0KCk7CiAKLSAgICAgICAgaWYgKG1hdGNoQ29u
dGV4dHVhbEtleXdvcmQobV92bS5wcm9wZXJ0eU5hbWVzLT5hcykpIHsKKyAgICAgICAgYm9vbCB1
c2VBcyA9IG1hdGNoQ29udGV4dHVhbEtleXdvcmQobV92bS5wcm9wZXJ0eU5hbWVzLT5hcyk7Cisg
ICAgICAgIGlmIChpc01vZHVsZUV4cG9ydE5hbWUpCisgICAgICAgICAgICBmYWlsSWZGYWxzZSh1
c2VBcywgIkV4cGVjdGVkICdhcycgYWZ0ZXIgdGhlIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmci
KTsKKyAgICAgICAgaWYgKHVzZUFzKSB7CiAgICAgICAgICAgICBuZXh0KCk7CiAgICAgICAgICAg
ICBmYWlsSWZGYWxzZShtYXRjaFNwZWNJZGVudGlmaWVyKCksICJFeHBlY3RlZCBhIHZhcmlhYmxl
IG5hbWUgZm9yIHRoZSBpbXBvcnQgZGVjbGFyYXRpb24iKTsKICAgICAgICAgICAgIGxvY2FsTmFt
ZVRva2VuID0gbV90b2tlbjsKQEAgLTM1MDIsNyArMzUwOSw3IEBAIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbXBvcnRE
ZWNsYXJhCiAgICAgICAgICAgICBuZXh0KCk7CiAKICAgICAgICAgICAgIHdoaWxlICghbWF0Y2go
Q0xPU0VCUkFDRSkpIHsKLSAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShtYXRjaElkZW50aWZp
ZXJPcktleXdvcmQoKSwgIkV4cGVjdGVkIGFuIGltcG9ydGVkIG5hbWUgZm9yIHRoZSBpbXBvcnQg
ZGVjbGFyYXRpb24iKTsKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZShtYXRjaElkZW50aWZp
ZXJPcktleXdvcmQoKSB8fCBtYXRjaChTVFJJTkcpLCAiRXhwZWN0ZWQgYW4gaW1wb3J0ZWQgbmFt
ZSBvciBhIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcgZm9yIHRoZSBpbXBvcnQgZGVjbGFyYXRp
b24iKTsKICAgICAgICAgICAgICAgICBhdXRvIHNwZWNpZmllciA9IHBhcnNlSW1wb3J0Q2xhdXNl
SXRlbShjb250ZXh0LCBJbXBvcnRTcGVjaWZpZXJUeXBlOjpOYW1lZEltcG9ydCk7CiAgICAgICAg
ICAgICAgICAgZmFpbElmRmFsc2Uoc3BlY2lmaWVyLCAiQ2Fubm90IHBhcnNlIHRoZSBuYW1lZCBp
bXBvcnQiKTsKICAgICAgICAgICAgICAgICBjb250ZXh0LmFwcGVuZEltcG9ydFNwZWNpZmllcihz
cGVjaWZpZXJMaXN0LCBzcGVjaWZpZXIpOwpAQCAtMzUyOCwyNCArMzUzNSwzNSBAQCB0ZW1wbGF0
ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46OnBh
cnNlSW1wb3J0RGVjbGFyYQogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgTGV4ZXJUeXBlPgotdGVt
cGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RXhwb3J0U3Bl
Y2lmaWVyIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydFNwZWNpZmllcihUcmVlQnVpbGRl
ciYgY29udGV4dCwgVmVjdG9yPHN0ZDo6cGFpcjxjb25zdCBJZGVudGlmaWVyKiwgY29uc3QgSWRl
bnRpZmllcio+PiYgbWF5YmVFeHBvcnRlZExvY2FsTmFtZXMsIGJvb2wmIGhhc0tleXdvcmRGb3JM
b2NhbEJpbmRpbmdzKQordGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVl
QnVpbGRlcjo6RXhwb3J0U3BlY2lmaWVyIFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydFNw
ZWNpZmllcihUcmVlQnVpbGRlciYgY29udGV4dCwgVmVjdG9yPHN0ZDo6cGFpcjxjb25zdCBJZGVu
dGlmaWVyKiwgY29uc3QgSWRlbnRpZmllcio+PiYgbWF5YmVFeHBvcnRlZExvY2FsTmFtZXMsIGJv
b2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzLCBib29sJiBoYXNSZWZlcmVuY2VkTW9kdWxl
RXhwb3J0TmFtZXMpCiB7CiAgICAgLy8gRXhwb3J0U3BlY2lmaWVyIDoKICAgICAvLyBJZGVudGlm
aWVyTmFtZQogICAgIC8vIElkZW50aWZpZXJOYW1lIGFzIElkZW50aWZpZXJOYW1lCisgICAgLy8g
SWRlbnRpZmllck5hbWUgYXMgTW9kdWxlRXhwb3J0TmFtZQorICAgIC8vIE1vZHVsZUV4cG9ydE5h
bWUKKyAgICAvLyBNb2R1bGVFeHBvcnROYW1lIGFzIElkZW50aWZpZXJOYW1lCisgICAgLy8gTW9k
dWxlRXhwb3J0TmFtZSBhcyBNb2R1bGVFeHBvcnROYW1lCiAgICAgLy8gaHR0cDovL3d3dy5lY21h
LWludGVybmF0aW9uYWwub3JnL2VjbWEtMjYyLzYuMC8jc2VjLWV4cG9ydHMKLSAgICBBU1NFUlQo
bWF0Y2hJZGVudGlmaWVyT3JLZXl3b3JkKCkpOworICAgIEFTU0VSVChtYXRjaElkZW50aWZpZXJP
cktleXdvcmQoKSB8fCBtYXRjaChTVFJJTkcpKTsKICAgICBKU1Rva2VuTG9jYXRpb24gc3BlY2lm
aWVyTG9jYXRpb24odG9rZW5Mb2NhdGlvbigpKTsKLSAgICBpZiAobV90b2tlbi5tX3R5cGUgJiBL
ZXl3b3JkVG9rZW5GbGFnKQotICAgICAgICBoYXNLZXl3b3JkRm9yTG9jYWxCaW5kaW5ncyA9IHRy
dWU7CiAgICAgY29uc3QgSWRlbnRpZmllciogbG9jYWxOYW1lID0gbV90b2tlbi5tX2RhdGEuaWRl
bnQ7CiAgICAgY29uc3QgSWRlbnRpZmllciogZXhwb3J0ZWROYW1lID0gbG9jYWxOYW1lOworICAg
IGlmIChtYXRjaChTVFJJTkcpKSB7CisgICAgICAgIGhhc1JlZmVyZW5jZWRNb2R1bGVFeHBvcnRO
YW1lcyA9IHRydWU7CisgICAgICAgIGZhaWxJZkZhbHNlKGhhc1VucGFpcmVkU3Vycm9nYXRlKGV4
cG9ydGVkTmFtZS0+c3RyaW5nKCkpLCAiRXhwZWN0ZWQgYSB3ZWxsLWZvcm1lZC11bmljb2RlIHN0
cmluZyBmb3IgdGhlIG1vZHVsZSBleHBvcnQgbmFtZSIpOworICAgIH0gZWxzZSB7CisgICAgICAg
IGlmIChtX3Rva2VuLm1fdHlwZSAmIEtleXdvcmRUb2tlbkZsYWcpCisgICAgICAgICAgICBoYXNL
ZXl3b3JkRm9yTG9jYWxCaW5kaW5ncyA9IHRydWU7CisgICAgfQogICAgIG5leHQoKTsKIAogICAg
IGlmIChtYXRjaENvbnRleHR1YWxLZXl3b3JkKG1fdm0ucHJvcGVydHlOYW1lcy0+YXMpKSB7CiAg
ICAgICAgIG5leHQoKTsKLSAgICAgICAgZmFpbElmRmFsc2UobWF0Y2hJZGVudGlmaWVyT3JLZXl3
b3JkKCksICJFeHBlY3RlZCBhbiBleHBvcnRlZCBuYW1lIGZvciB0aGUgZXhwb3J0IGRlY2xhcmF0
aW9uIik7CisgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoSWRlbnRpZmllck9yS2V5d29yZCgpIHx8
IG1hdGNoKFNUUklORyksICJFeHBlY3RlZCBhbiBleHBvcnRlZCBuYW1lIG9yIGEgbW9kdWxlIGV4
cG9ydCBuYW1lIHN0cmluZyBmb3IgdGhlIGV4cG9ydCBkZWNsYXJhdGlvbiIpOwogICAgICAgICBl
eHBvcnRlZE5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVudDsKKyAgICAgICAgaWYgKG1hdGNoKFNU
UklORykpCisgICAgICAgICAgICBmYWlsSWZGYWxzZShoYXNVbnBhaXJlZFN1cnJvZ2F0ZShleHBv
cnRlZE5hbWUtPnN0cmluZygpKSwgIkV4cGVjdGVkIGEgd2VsbC1mb3JtZWQtdW5pY29kZSBzdHJp
bmcgZm9yIHRoZSBtb2R1bGUgZXhwb3J0IG5hbWUiKTsKICAgICAgICAgbmV4dCgpOwogICAgIH0K
IApAQCAtMzU2Niw2ICszNTg0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVl
U3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICBjYXNl
IFRJTUVTOiB7CiAgICAgICAgIC8vIGV4cG9ydCAqIEZyb21DbGF1c2UgOwogICAgICAgICAvLyBl
eHBvcnQgKiBhcyBJZGVudGlmaWVyTmFtZSBGcm9tQ2xhdXNlIDsKKyAgICAgICAgLy8gZXhwb3J0
ICogYXMgTW9kdWxlRXhwb3J0TmFtZSBGcm9tQ2xhdXNlIDsKICAgICAgICAgbmV4dCgpOwogCiAg
ICAgICAgIGNvbnN0IElkZW50aWZpZXIqIGV4cG9ydGVkTmFtZSA9IG51bGxwdHI7CkBAIC0zNTcz
LDggKzM1OTIsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50
IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgaWYgKG1hdGNo
Q29udGV4dHVhbEtleXdvcmQobV92bS5wcm9wZXJ0eU5hbWVzLT5hcykpIHsKICAgICAgICAgICAg
IG5leHQoKTsKICAgICAgICAgICAgIHNwZWNpZmllckxvY2F0aW9uID0gSlNUb2tlbkxvY2F0aW9u
KHRva2VuTG9jYXRpb24oKSk7Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZShtYXRjaElkZW50aWZp
ZXJPcktleXdvcmQoKSwgIkV4cGVjdGVkIGFuIGV4cG9ydGVkIG5hbWUgZm9yIHRoZSBleHBvcnQg
ZGVjbGFyYXRpb24iKTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoSWRlbnRpZmllck9y
S2V5d29yZCgpIHx8IG1hdGNoKFNUUklORyksICJFeHBlY3RlZCBhbiBleHBvcnRlZCBuYW1lIG9y
IGEgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZyBmb3IgdGhlIGV4cG9ydCBkZWNsYXJhdGlvbiIp
OwogICAgICAgICAgICAgZXhwb3J0ZWROYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAg
ICAgICAgICBpZiAobWF0Y2goU1RSSU5HKSkKKyAgICAgICAgICAgICAgICBmYWlsSWZGYWxzZSho
YXNVbnBhaXJlZFN1cnJvZ2F0ZShleHBvcnRlZE5hbWUtPnN0cmluZygpKSwgIkV4cGVjdGVkIGEg
d2VsbC1mb3JtZWQtdW5pY29kZSBzdHJpbmcgZm9yIHRoZSBtb2R1bGUgZXhwb3J0IG5hbWUiKTsK
ICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgfQogCkBAIC0zNzAzLDkgKzM3MjQsMTAgQEAg
dGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5
cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgVmVjdG9yPHN0ZDo6cGFpcjxjb25zdCBJ
ZGVudGlmaWVyKiwgY29uc3QgSWRlbnRpZmllcio+PiBtYXliZUV4cG9ydGVkTG9jYWxOYW1lczsK
IAogICAgICAgICBib29sIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzID0gZmFsc2U7CisgICAg
ICAgIGJvb2wgaGFzUmVmZXJlbmNlZE1vZHVsZUV4cG9ydE5hbWVzID0gZmFsc2U7CiAgICAgICAg
IHdoaWxlICghbWF0Y2goQ0xPU0VCUkFDRSkpIHsKLSAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1h
dGNoSWRlbnRpZmllck9yS2V5d29yZCgpLCAiRXhwZWN0ZWQgYSB2YXJpYWJsZSBuYW1lIGZvciB0
aGUgZXhwb3J0IGRlY2xhcmF0aW9uIik7Ci0gICAgICAgICAgICBhdXRvIHNwZWNpZmllciA9IHBh
cnNlRXhwb3J0U3BlY2lmaWVyKGNvbnRleHQsIG1heWJlRXhwb3J0ZWRMb2NhbE5hbWVzLCBoYXNL
ZXl3b3JkRm9yTG9jYWxCaW5kaW5ncyk7CisgICAgICAgICAgICBmYWlsSWZGYWxzZShtYXRjaElk
ZW50aWZpZXJPcktleXdvcmQoKSB8fCBtYXRjaChTVFJJTkcpLCAiRXhwZWN0ZWQgYSB2YXJpYWJs
ZSBuYW1lIG9yIGEgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZyBmb3IgdGhlIGV4cG9ydCBkZWNs
YXJhdGlvbiIpOworICAgICAgICAgICAgYXV0byBzcGVjaWZpZXIgPSBwYXJzZUV4cG9ydFNwZWNp
Zmllcihjb250ZXh0LCBtYXliZUV4cG9ydGVkTG9jYWxOYW1lcywgaGFzS2V5d29yZEZvckxvY2Fs
QmluZGluZ3MsIGhhc1JlZmVyZW5jZWRNb2R1bGVFeHBvcnROYW1lcyk7CiAgICAgICAgICAgICBm
YWlsSWZGYWxzZShzcGVjaWZpZXIsICJDYW5ub3QgcGFyc2UgdGhlIG5hbWVkIGV4cG9ydCIpOwog
ICAgICAgICAgICAgY29udGV4dC5hcHBlbmRFeHBvcnRTcGVjaWZpZXIoc3BlY2lmaWVyTGlzdCwg
c3BlY2lmaWVyKTsKICAgICAgICAgICAgIGlmICghY29uc3VtZShDT01NQSkpCkBAIC0zNzE4LDcg
KzM3NDAsOCBAQCB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFy
c2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICAgICAgbmV4dCgpOwog
ICAgICAgICAgICAgbW9kdWxlTmFtZSA9IHBhcnNlTW9kdWxlTmFtZShjb250ZXh0KTsKICAgICAg
ICAgICAgIGZhaWxJZkZhbHNlKG1vZHVsZU5hbWUsICJDYW5ub3QgcGFyc2UgdGhlICdmcm9tJyBj
bGF1c2UiKTsKLSAgICAgICAgfQorICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgIHNlbWFudGlj
RmFpbElmVHJ1ZShoYXNSZWZlcmVuY2VkTW9kdWxlRXhwb3J0TmFtZXMsICJDYW5ub3QgdXNlIG1v
ZHVsZSBleHBvcnQgbmFtZXMgaWYgdGhleSByZWZlcmVuY2UgdmFyaWFibGUgbmFtZXMgaW4gdGhl
IGN1cnJlbnQgbW9kdWxlIik7CiAgICAgICAgIGZhaWxJZkZhbHNlKGF1dG9TZW1pQ29sb24oKSwg
IkV4cGVjdGVkIGEgJzsnIGZvbGxvd2luZyBhIHRhcmdldGVkIGV4cG9ydCBkZWNsYXJhdGlvbiIp
OwogCiAgICAgICAgIGlmICghbW9kdWxlTmFtZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIv
UGFyc2VyLmgKaW5kZXggODVmMTg3MzVjZWZhZWNkOWE2NTdmMzA2MTdhZGFlMGIxMWJmYjlkYi4u
MWZiYTRiYTg2ZGIxZjMyZmE4YjgxYjhhNjY0YWJmOGFkNjYzMmY3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJzZXIuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oCkBAIC0xNzg0LDcgKzE3ODQsNyBAQCBjbGFzcyBQYXJzZXIg
ewogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6
OkltcG9ydFNwZWNpZmllciBwYXJzZUltcG9ydENsYXVzZUl0ZW0oVHJlZUJ1aWxkZXImLCBJbXBv
cnRTcGVjaWZpZXJUeXBlKTsKICAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVu
YW1lIFRyZWVCdWlsZGVyOjpNb2R1bGVOYW1lIHBhcnNlTW9kdWxlTmFtZShUcmVlQnVpbGRlciYp
OwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBwYXJzZUlt
cG9ydERlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJik7Ci0gICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RXhwb3J0U3BlY2lmaWVyIHBhcnNlRXhwb3J0
U3BlY2lmaWVyKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBWZWN0b3I8c3RkOjpwYWlyPGNvbnN0IElk
ZW50aWZpZXIqLCBjb25zdCBJZGVudGlmaWVyKj4+JiBtYXliZUV4cG9ydGVkTG9jYWxOYW1lcywg
Ym9vbCYgaGFzS2V5d29yZEZvckxvY2FsQmluZGluZ3MpOworICAgIHRlbXBsYXRlIDxjbGFzcyBU
cmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkV4cG9ydFNwZWNpZmllciBwYXJzZUV4
cG9ydFNwZWNpZmllcihUcmVlQnVpbGRlciYgY29udGV4dCwgVmVjdG9yPHN0ZDo6cGFpcjxjb25z
dCBJZGVudGlmaWVyKiwgY29uc3QgSWRlbnRpZmllcio+PiYgbWF5YmVFeHBvcnRlZExvY2FsTmFt
ZXMsIGJvb2wmIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzLCBib29sJiBoYXNSZWZlcmVuY2Vk
TW9kdWxlRXhwb3J0TmFtZXMpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJl
ZVN0YXRlbWVudCBwYXJzZUV4cG9ydERlY2xhcmF0aW9uKFRyZWVCdWlsZGVyJik7CiAKICAgICB0
ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IEFMV0FZU19JTkxJTkUgVHJlZUV4cHJlc3Npb24g
Y3JlYXRlUmVzb2x2ZUFuZFVzZVZhcmlhYmxlKFRyZWVCdWlsZGVyJiwgY29uc3QgSWRlbnRpZmll
ciosIGJvb2wgaXNFdmFsLCBjb25zdCBKU1RleHRQb3NpdGlvbiYsIGNvbnN0IEpTVG9rZW5Mb2Nh
dGlvbiYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dURi93dGYvdGV4dC9TdHJpbmdWaWV3LmggYi9T
b3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAppbmRleCA4NDAyNGVlNzRjZTk1MTVhMzEy
NzFmZjJkYjk4MjAxZjQyMWJkNjA4Li45MmYxMzQ2MTAwNjhiYTdmNDUxYmRjYThhZTZkY2VjZmFh
Y2JmNzY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaAorKysg
Yi9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaApAQCAtMTA4Nyw5ICsxMDg3LDIyIEBA
IGlubGluZSBib29sIGVxdWFsSWdub3JpbmdOdWxsaXR5KFN0cmluZ1ZpZXcgYSwgU3RyaW5nVmll
dyBiKQogCiBXVEZfRVhQT1JUX1BSSVZBVEUgaW50IGNvZGVQb2ludENvbXBhcmUoU3RyaW5nVmll
dywgU3RyaW5nVmlldyk7CiAKK2lubGluZSBib29sIGhhc1VucGFpcmVkU3Vycm9nYXRlKFN0cmlu
Z1ZpZXcgc3RyaW5nKQoreworICAgIC8vIEZhc3QgcGF0aCBmb3IgOC1iaXQgc3RyaW5nczsgdGhl
eSBjYW4ndCBoYXZlIGFueSBzdXJyb2dhdGVzLgorICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCisg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBmb3IgKGF1dG8gY29kZVBvaW50IDogc3RyaW5nLmNv
ZGVQb2ludHMoKSkgeworICAgICAgICBpZiAoVV9JU19TVVJST0dBVEUoY29kZVBvaW50KSkKKyAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKyAgICByZXR1cm4gZmFsc2U7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdURgogCiB1c2luZyBXVEY6OmFwcGVuZDsKIHVzaW5nIFdURjo6ZXF1YWw7
CiB1c2luZyBXVEY6OlN0cmluZ1ZpZXc7CiB1c2luZyBXVEY6OlN0cmluZ1ZpZXdXaXRoVW5kZXJs
eWluZ1N0cmluZzsKK3VzaW5nIFdURjo6aGFzVW5wYWlyZWRTdXJyb2dhdGU7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUNvbnZlcnRTdHJpbmdzLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuY3BwCmluZGV4IGVh
YjAxZjczNjBjMDE2ZTlhMWQ0NDAzNGU4MGU0MzdhMzUyMmRlODguLmU5YTRlNmUwZDU0ZTFkMzY3
YWY4OGNkMTU1N2RiNDc1OWM1ODYzYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuY3BwCkBAIC02MiwxOCArNjIsNiBAQCBTdHJpbmcg
dmFsdWVUb0J5dGVTdHJpbmcoSlNHbG9iYWxPYmplY3QmIGxleGljYWxHbG9iYWxPYmplY3QsIEpT
VmFsdWUgdmFsdWUpCiAgICAgcmV0dXJuIHN0cmluZ1RvQnl0ZVN0cmluZyhsZXhpY2FsR2xvYmFs
T2JqZWN0LCBzY29wZSwgV1RGTW92ZShzdHJpbmcpKTsKIH0KIAotc3RhdGljIGlubGluZSBib29s
IGhhc1VucGFpcmVkU3Vycm9nYXRlKFN0cmluZ1ZpZXcgc3RyaW5nKQotewotICAgIC8vIEZhc3Qg
cGF0aCBmb3IgOC1iaXQgc3RyaW5nczsgdGhleSBjYW4ndCBoYXZlIGFueSBzdXJyb2dhdGVzLgot
ICAgIGlmIChzdHJpbmcuaXM4Qml0KCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBmb3Ig
KGF1dG8gY29kZVBvaW50IDogc3RyaW5nLmNvZGVQb2ludHMoKSkgewotICAgICAgICBpZiAoVV9J
U19TVVJST0dBVEUoY29kZVBvaW50KSkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgIH0K
LSAgICByZXR1cm4gZmFsc2U7Ci19Ci0KIHN0YXRpYyBpbmxpbmUgU3RyaW5nIHN0cmluZ1RvVVNW
U3RyaW5nKFN0cmluZyYmIHN0cmluZykKIHsKICAgICAvLyBGYXN0IHBhdGggZm9yIHRoZSBjYXNl
IHdoZXJlIHRoZXJlIGFyZSBubyB1bnBhaXJlZCBzdXJyb2dhdGVzLgpkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCA5NDA5OTE4MGQ5MzY4ZTE3
ZTRhZmY5ODZlYjk2NGQ5YTYxNGYzNzM5Li5lNmRiMGQ4YTAwMzlkMDg4YWFiYTMxYTM2NmMxNzUw
MzMyZDFiNTdjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3RzL0No
YW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDIwLTEyLTE1ICBZdXN1a2UgU3V6dWtpICA8eXN1
enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gQWNjZXB0IGFyYml0cmFyeSBtb2R1bGUg
bmFtZXNwYWNlIGlkZW50aWZpZXIgbmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxNzU3NgorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNzA0MTYx
MDQ+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBt
b2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMuanM6IEFkZGVkLgorICAgICAgICAqIG1vZHVs
ZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy9leHBvcnQuanM6IEFkZGVkLgorICAgICAgICAqIG1v
ZHVsZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy9leHBvcnQyLmpzOiBBZGRlZC4KKyAgICAgICAg
KiBzdHJlc3MvbW9kdWxlcy1zeW50YXgtZXJyb3IuanM6CisgICAgICAgICogdGVzdDI2Mi9jb25m
aWcueWFtbDoKKwogMjAyMC0xMi0xNSAgQWxleGV5IFNodmF5a2EgIDxzaHZhaWthbGVzaEBnbWFp
bC5jb20+CiAKICAgICAgICAgTm9uLWVudW1lcmFibGUgcHJvcGVydHkgZmFpbHMgdG8gc2hhZG93
IGluaGVyaXRlZCBlbnVtZXJhYmxlIHByb3BlcnR5IGZyb20gZm9yLWluCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL21vZHVsZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy5qcyBiL0pTVGVzdHMvbW9kdWxl
cy9hcmJpdHJhcnktbW9kdWxlLW5hbWVzLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjlhNGEwMDczMzRiNWNkMzIx
MGI0ZWE4ODk1ZTY4YzUyOWI1NGZmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21vZHVs
ZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy5qcwpAQCAtMCwwICsxLDEyIEBACitpbXBvcnQgewor
ICAgICJkZWxldGUiIGFzIGRlbGV0aW5nLAorICAgICJpZiIgYXMgb2sxLAorICAgICJvazIiIGFz
IG9rMgorfSBmcm9tICIuL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMvZXhwb3J0LmpzIjsKK2ltcG9y
dCB7ICJ2YXIiIGFzIHZhcmlhYmxlIH0gZnJvbSAiLi9hcmJpdHJhcnktbW9kdWxlLW5hbWVzL2V4
cG9ydC5qcyI7CitpbXBvcnQgeyBzaG91bGRCZSwgc2hvdWxkVGhyb3cgfSBmcm9tICIuL3Jlc291
cmNlcy9hc3NlcnQuanMiOworCitzaG91bGRCZShkZWxldGluZywgNDIpOworc2hvdWxkQmUodmFy
aWFibGUudGVzdCwgNDApOworc2hvdWxkQmUob2sxLCA0MDApOworc2hvdWxkQmUob2syLCA0MDEp
OwpkaWZmIC0tZ2l0IGEvSlNUZXN0cy9tb2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMvZXhw
b3J0LmpzIGIvSlNUZXN0cy9tb2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMvZXhwb3J0Lmpz
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLmExNTUxNmU0MmM0YTFjODU0N2JhMDZkZmY4YzRmMDRmOTQ3NzEyMjEKLS0t
IC9kZXYvbnVsbAorKysgYi9KU1Rlc3RzL21vZHVsZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy9l
eHBvcnQuanMKQEAgLTAsMCArMSw4IEBACit2YXIgZGVsZXRpbmcgPSA0MjsKKworZXhwb3J0IHsK
KyAgICBkZWxldGluZyBhcyAiZGVsZXRlIgorfTsKK2V4cG9ydCAqIGFzICJ2YXIiIGZyb20gIi4v
ZXhwb3J0Mi5qcyI7CitleHBvcnQgeyAiaWYiIH0gZnJvbSAiLi9leHBvcnQyLmpzIjsKK2V4cG9y
dCB7ICJlbHNlIiBhcyAib2syIiB9IGZyb20gIi4vZXhwb3J0Mi5qcyI7CmRpZmYgLS1naXQgYS9K
U1Rlc3RzL21vZHVsZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy9leHBvcnQyLmpzIGIvSlNUZXN0
cy9tb2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMvZXhwb3J0Mi5qcwpuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42
MGE5NDNiOGI1Nzg0NTU0ODQwMGIzYjc2YzUxMjI0NTRjNTc1ODU1Ci0tLSAvZGV2L251bGwKKysr
IGIvSlNUZXN0cy9tb2R1bGVzL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMvZXhwb3J0Mi5qcwpAQCAt
MCwwICsxLDcgQEAKK2V4cG9ydCB2YXIgdGVzdCA9IDQwOwordmFyIG9rMiA9IDQwMDsKK3ZhciBv
azMgPSA0MDE7CitleHBvcnQgeworICAgIG9rMiBhcyAiaWYiLAorICAgIG9rMyBhcyAiZWxzZSIK
K307CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3N0cmVzcy9tb2R1bGVzLXN5bnRheC1lcnJvci5qcyBi
L0pTVGVzdHMvc3RyZXNzL21vZHVsZXMtc3ludGF4LWVycm9yLmpzCmluZGV4IGRjZGYyZWUxNGFh
ZjM4NmE0M2U5MDUyMjI1ZDdhMzdhNzkxZjMxMDQuLjhhYzRmYzkzOTI4NmU1ODljNGY2YzZiYzJi
N2YwZDQzMWM5YmZlZTUgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvc3RyZXNzL21vZHVsZXMtc3ludGF4
LWVycm9yLmpzCisrKyBiL0pTVGVzdHMvc3RyZXNzL21vZHVsZXMtc3ludGF4LWVycm9yLmpzCkBA
IC0yMSw3ICsyMSw3IEBAIGZ1bmN0aW9uIGNoZWNrTW9kdWxlU3ludGF4RXJyb3Ioc291cmNlLCBl
cnJvck1lc3NhZ2UpIHsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAogaW1w
b3J0IHssfSBmcm9tICJDb2NvYSIKLWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAn
LCcuIEV4cGVjdGVkIGFuIGltcG9ydGVkIG5hbWUgZm9yIHRoZSBpbXBvcnQgZGVjbGFyYXRpb24u
OjJgKTsKK2AsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGFu
IGltcG9ydGVkIG5hbWUgb3IgYSBtb2R1bGUgZXhwb3J0IG5hbWUgc3RyaW5nIGZvciB0aGUgaW1w
b3J0IGRlY2xhcmF0aW9uLjoyYCk7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJh
d2AKIGltcG9ydCAqIGZyb20gIkNvY29hIgpAQCAtMTU4LDcgKzE1OCw3IEBAIGZ1bmN0aW9uIG5v
VG9wTGV2ZWwoKSB7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKIGltcG9y
dCBhLCB7IFthc3NpZ25dIGFzIGMgfSBmcm9tICJDb2NvYSIKLWAsIGBTeW50YXhFcnJvcjogVW5l
eHBlY3RlZCB0b2tlbiAnWycuIEV4cGVjdGVkIGFuIGltcG9ydGVkIG5hbWUgZm9yIHRoZSBpbXBv
cnQgZGVjbGFyYXRpb24uOjJgKTsKK2AsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAn
WycuIEV4cGVjdGVkIGFuIGltcG9ydGVkIG5hbWUgb3IgYSBtb2R1bGUgZXhwb3J0IG5hbWUgc3Ry
aW5nIGZvciB0aGUgaW1wb3J0IGRlY2xhcmF0aW9uLjoyYCk7CiAKIGNoZWNrTW9kdWxlU3ludGF4
RXJyb3IoU3RyaW5nLnJhd2AKIGltcG9ydCBkLCB7IGcgYXMge29ian0gfSBmcm9tICJDYXBwdWNj
aW5vIgpAQCAtMTY2LDcgKzE2Niw3IEBAIGZ1bmN0aW9uIG5vVG9wTGV2ZWwoKSB7CiAKIGNoZWNr
TW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKIGltcG9ydCBkLCB7IHtvYmp9IH0gZnJvbSAi
Q2FwcHVjY2lubyIKLWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAneycuIEV4cGVj
dGVkIGFuIGltcG9ydGVkIG5hbWUgZm9yIHRoZSBpbXBvcnQgZGVjbGFyYXRpb24uOjJgKTsKK2As
IGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAneycuIEV4cGVjdGVkIGFuIGltcG9ydGVk
IG5hbWUgb3IgYSBtb2R1bGUgZXhwb3J0IG5hbWUgc3RyaW5nIGZvciB0aGUgaW1wb3J0IGRlY2xh
cmF0aW9uLjoyYCk7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKIGltcG9y
dCB7IGJpbmRpbmcKQEAgLTE4NCwxMSArMTg0LDExIEBAIGZ1bmN0aW9uIG5vVG9wTGV2ZWwoKSB7
CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKIGV4cG9ydCB7ICwgfSBmcm9t
ICJDb2NvYSIKLWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVk
IGEgdmFyaWFibGUgbmFtZSBmb3IgdGhlIGV4cG9ydCBkZWNsYXJhdGlvbi46MmApOworYCwgYFN5
bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSB2YXJpYWJsZSBuYW1l
IG9yIGEgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZyBmb3IgdGhlIGV4cG9ydCBkZWNsYXJhdGlv
bi46MmApOwogCiBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCiBleHBvcnQgeyBh
LCAsIH0gZnJvbSAiQ29jb2EiCi1gLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywn
LiBFeHBlY3RlZCBhIHZhcmlhYmxlIG5hbWUgZm9yIHRoZSBleHBvcnQgZGVjbGFyYXRpb24uOjJg
KTsKK2AsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4cGVjdGVkIGEgdmFy
aWFibGUgbmFtZSBvciBhIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcgZm9yIHRoZSBleHBvcnQg
ZGVjbGFyYXRpb24uOjJgKTsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAog
ZXhwb3J0IGEgZnJvbSAiQ29jb2EiCkBAIC0yMDAsNyArMjAwLDcgQEAgZnVuY3Rpb24gbm9Ub3BM
ZXZlbCgpIHsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAogZXhwb3J0IHsg
KiBhcyBiIH0gZnJvbSAiQ29jb2EiCi1gLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4g
JyonLiBFeHBlY3RlZCBhIHZhcmlhYmxlIG5hbWUgZm9yIHRoZSBleHBvcnQgZGVjbGFyYXRpb24u
OjJgKTsKK2AsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnKicuIEV4cGVjdGVkIGEg
dmFyaWFibGUgbmFtZSBvciBhIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcgZm9yIHRoZSBleHBv
cnQgZGVjbGFyYXRpb24uOjJgKTsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3
YAogZXhwb3J0ICogYXMgYgpAQCAtMjA4LDcgKzIwOCw3IEBAIGZ1bmN0aW9uIG5vVG9wTGV2ZWwo
KSB7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKIGV4cG9ydCAqIGFzIDQy
IGZyb20gIkNvY29hIgotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIG51bWJlciAnNDInLiBF
eHBlY3RlZCBhbiBleHBvcnRlZCBuYW1lIGZvciB0aGUgZXhwb3J0IGRlY2xhcmF0aW9uLjoyYCk7
CitgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgbnVtYmVyICc0MicuIEV4cGVjdGVkIGFuIGV4
cG9ydGVkIG5hbWUgb3IgYSBtb2R1bGUgZXhwb3J0IG5hbWUgc3RyaW5nIGZvciB0aGUgZXhwb3J0
IGRlY2xhcmF0aW9uLjoyYCk7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AK
IGV4cG9ydCBjb25zdCBiID0gNDI7CkBAIC0zMTYsNiArMzE2LDQyIEBAIGZ1bmN0aW9uIG5vVG9w
TGV2ZWwoKSB7CiB9CiBgLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQga2V5d29yZCAnZXhwb3J0
JzozYCk7CiAKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCB7ICJc
dWQ4MDAiIGFzIHRlc3QgfSBmcm9tICIuL29rLmpzIgorYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJv
cjogVW5leHBlY3RlZCBzdHJpbmcgbGl0ZXJhbCAiXHVkODAwIi4gRXhwZWN0ZWQgYSB3ZWxsLWZv
cm1lZC11bmljb2RlIHN0cmluZyBmb3IgdGhlIG1vZHVsZSBleHBvcnQgbmFtZS46MmApOworCitj
aGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitpbXBvcnQgeyAidGVzdCIgfSBmcm9t
ICIuL29rLmpzIgorYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAn
fScuIEV4cGVjdGVkICdhcycgYWZ0ZXIgdGhlIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcuOjJg
KTsKKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZXhwb3J0IHsgInRlc3Qi
IH0KK2AsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IENhbm5vdCB1c2UgbW9kdWxlIGV4cG9ydCBu
YW1lcyBpZiB0aGV5IHJlZmVyZW5jZSB2YXJpYWJsZSBuYW1lcyBpbiB0aGUgY3VycmVudCBtb2R1
bGUuOjNgKTsKKworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZXhwb3J0IHsg
InRlc3QiIGFzICJvayIgfQorYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBt
b2R1bGUgZXhwb3J0IG5hbWVzIGlmIHRoZXkgcmVmZXJlbmNlIHZhcmlhYmxlIG5hbWVzIGluIHRo
ZSBjdXJyZW50IG1vZHVsZS46M2ApOworCitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5y
YXdgCitleHBvcnQgeyAiXHVkODAwIiB9IGZyb20gIi4vb2suanMiCitgLCBTdHJpbmcucmF3YFN5
bnRheEVycm9yOiBVbmV4cGVjdGVkIHN0cmluZyBsaXRlcmFsICJcdWQ4MDAiLiBFeHBlY3RlZCBh
IHdlbGwtZm9ybWVkLXVuaWNvZGUgc3RyaW5nIGZvciB0aGUgbW9kdWxlIGV4cG9ydCBuYW1lLjoy
YCk7CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4cG9ydCB7IG9rIGFz
ICJcdWQ4MDAiIH0gZnJvbSAiLi9vay5qcyIKK2AsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVu
ZXhwZWN0ZWQgc3RyaW5nIGxpdGVyYWwgIlx1ZDgwMCIuIEV4cGVjdGVkIGEgd2VsbC1mb3JtZWQt
dW5pY29kZSBzdHJpbmcgZm9yIHRoZSBtb2R1bGUgZXhwb3J0IG5hbWUuOjJgKTsKKworY2hlY2tN
b2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZXhwb3J0IHsgImhlbGxvIiBhcyAiXHVkODAw
IiB9IGZyb20gIi4vb2suanMiCitgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVk
IHN0cmluZyBsaXRlcmFsICJcdWQ4MDAiLiBFeHBlY3RlZCBhIHdlbGwtZm9ybWVkLXVuaWNvZGUg
c3RyaW5nIGZvciB0aGUgbW9kdWxlIGV4cG9ydCBuYW1lLjoyYCk7CisKK2NoZWNrTW9kdWxlU3lu
dGF4RXJyb3IoU3RyaW5nLnJhd2AKK2V4cG9ydCB7ICJcdWQ4MDAiIGFzICJoZWxsbyIgfSBmcm9t
ICIuL29rLmpzIgorYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCBzdHJpbmcg
bGl0ZXJhbCAiXHVkODAwIi4gRXhwZWN0ZWQgYSB3ZWxsLWZvcm1lZC11bmljb2RlIHN0cmluZyBm
b3IgdGhlIG1vZHVsZSBleHBvcnQgbmFtZS46MmApOworCitjaGVja01vZHVsZVN5bnRheEVycm9y
KFN0cmluZy5yYXdgCitleHBvcnQgKiBhcyAiXHVkODAwIiBmcm9tICIuL29rLmpzIgorYCwgU3Ry
aW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBlY3RlZCBzdHJpbmcgbGl0ZXJhbCAiXHVkODAwIi4g
RXhwZWN0ZWQgYSB3ZWxsLWZvcm1lZC11bmljb2RlIHN0cmluZyBmb3IgdGhlIG1vZHVsZSBleHBv
cnQgbmFtZS46MmApOworCiAvLyAtLS0tLS0tLS0tLS0tLS0gb3RoZXIgLS0tLS0tLS0tLS0tLS0t
LS0tLS0tCiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKZGlmZiAtLWdpdCBh
L0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFtbCBiL0pTVGVzdHMvdGVzdDI2Mi9jb25maWcueWFt
bAppbmRleCBiZGQ4YmJmZDUyZGE2NDcyMGJmZDc3ZmU3ZjhjOGMxMTZhNjBhYjM2Li45YTRjNWU3
MzEzMjA4ZjYwNDRjZWQxYjcxYzMyMzYzMWEyNGI1NDQ2IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3Rl
c3QyNjIvY29uZmlnLnlhbWwKKysrIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCkBAIC0x
OSw3ICsxOSw2IEBAIHNraXA6CiAgICAgLSByZWdleHAtbG9va2JlaGluZAogICAgIC0gbGVnYWN5
LXJlZ2V4cAogCi0gICAgLSBhcmJpdHJhcnktbW9kdWxlLW5hbWVzcGFjZS1uYW1lcwogICAgIC0g
Y2xhc3MtbWV0aG9kcy1wcml2YXRlCiAgICAgLSBjbGFzcy1zdGF0aWMtbWV0aG9kcy1wcml2YXRl
CiAgICAgLSBjbGVhbnVwU29tZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>416308</attachid>
            <date>2020-12-15 18:43:47 -0800</date>
            <delta_ts>2020-12-16 09:36:03 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-217576-20201215184346.patch</filename>
            <type>text/plain</type>
            <size>21049</size>
            <attacher name="Yusuke Suzuki">ysuzuki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjcwODc3CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAz
MDk5MTU5Y2FjNTQxNGUyNzNhYzUwMGI3OWUyOGM0ODEzYzJjODBjLi4wMTU5ZjkxMzBiM2MwYjBi
YTUzZTk5N2MyNTkwYzM5MGM5NzViYmVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwzMiBAQAorMjAyMC0xMi0xNSAgWXVzdWtlIFN1enVraSAgPHlzdXp1a2lAYXBwbGUuY29t
PgorCisgICAgICAgIFtKU0NdIEFjY2VwdCBhcmJpdHJhcnkgbW9kdWxlIG5hbWVzcGFjZSBpZGVu
dGlmaWVyIG5hbWVzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTc1NzYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzcwNDE2MTA0PgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW1wbGVt
ZW50cyBhcmJpdHJhcnkgbW9kdWxlIG5hbWVzcGFjZSBpZGVudGlmaWVyIG5hbWVzWzFdLgorICAg
ICAgICBBZnRlciB0aGlzLCB3ZSBjYW4gZXhwb3J0IGFuZCBpbXBvcnQgYXJiaXRyYXJ5IG1vZHVs
ZSBleHBvcnQgbmFtZXMgd2hpY2ggYXJlIG5vdCB2YWxpZCBhcyBhIHZhcmlhYmxlIGlkZW50aWZp
ZXIuCisgICAgICAgIEZvciBleGFtcGxlLAorCisgICAgICAgICAgICBpbXBvcnQgeyAiZGVsZXRl
IiBhcyBkZWxldGVkVmFsdWUgfSBmcm9tICIuL29rLmpzIjsKKworICAgICAgICAgICAgLi4uCisK
KyAgICAgICAgICAgIGV4cG9ydCB7CisgICAgICAgICAgICAgICAgZGVsZXRlZFZhbHVlIGFzICJk
ZWxldGUiCisgICAgICAgICAgICB9OworCisgICAgICAgIFsxXTogaHR0cHM6Ly9naXRodWIuY29t
L3RjMzkvZWNtYTI2Mi9wdWxsLzIxNTQKKworICAgICAgICAqIHBhcnNlci9QYXJzZXIuY3BwOgor
ICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VJbXBvcnRDbGF1c2VJdGVtKToK
KyAgICAgICAgKEpTQzo6UGFyc2VyPExleGVyVHlwZT46OnBhcnNlSW1wb3J0RGVjbGFyYXRpb24p
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnRTcGVjaWZpZXIp
OgorICAgICAgICAoSlNDOjpQYXJzZXI8TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhdGlv
bik6CisgICAgICAgICogcGFyc2VyL1BhcnNlci5oOgorCiAyMDIwLTEyLTE1ICBTYWFtIEJhcmF0
aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIGRlc3RpbmF0aW9uRm9yIHNob3VsZCBj
aGVjayBmb3IgRlRMSklULCBub3QgREZHSklUIHR3aWNlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RG
L0NoYW5nZUxvZyBiL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCmluZGV4IDU2MDlhZGFhYjBkYmJlNjEw
Y2Q4ZDZlMWRmNjI1M2JhYjcxYzE5ZTMuLmRjNWQxMGViY2U3MDY3YzFiYzY5YmE4YjMxNjI5MGYy
YzIyZWUyZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
VEYvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMTItMTUgIFl1c3VrZSBTdXp1a2kg
IDx5c3V6dWtpQGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBY2NlcHQgYXJiaXRyYXJ5IG1v
ZHVsZSBuYW1lc3BhY2UgaWRlbnRpZmllciBuYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE3NTc2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3dGYvdGV4dC9TdHJpbmdWaWV3Lmg6CisgICAgICAg
IChXVEY6Omhhc1VucGFpcmVkU3Vycm9nYXRlKToKKwogMjAyMC0xMi0xNSAgSmVyIE5vYmxlICA8
amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbQ29jb2FdIEFkb3B0IC1leHRlcm5hbENv
bnRlbnRQcm90ZWN0aW9uU3RhdHVzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZDQwZmM3NGY4ZDYwNmI1ZDA0NTY2
MzVkMzdiMWE1YWQxYjkyNWRlOC4uY2Q4ZWU3ZjI0YmVhZDRlNjRlOGRiZDY5MTQ0OTY4NDM2YzE5
ZTE1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzIEBACisyMDIwLTEyLTE1ICBZdXN1a2UgU3V6
dWtpICA8eXN1enVraUBhcHBsZS5jb20+CisKKyAgICAgICAgW0pTQ10gQWNjZXB0IGFyYml0cmFy
eSBtb2R1bGUgbmFtZXNwYWNlIGlkZW50aWZpZXIgbmFtZXMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNzU3NgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3Ry
aW5ncy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpoYXNVbnBhaXJlZFN1cnJvZ2F0ZSk6IERlbGV0
ZWQuCisKIDIwMjAtMTItMTUgIEFkaXR5YSBLZWVydGhpICA8YWtlZXJ0aGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFttYWNPU10gQWRqdXN0IGRhdGUgaW5wdXQgcGxhY2Vob2xkZXIgY29sb3IgYmFz
ZWQgb24gc3BlY2lmaWVkIHRleHQgY29sb3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9wYXJzZXIvUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJzZXIvUGFy
c2VyLmNwcAppbmRleCBkMTE5YmIzMjNiNjAzZTIzODljNzllYjQ1M2M3ZGRlNTBjY2I3YjU3Li4z
ZTQzMjIzMzQ3OTg0YTA5ZmRmOWRmMzMwMWUwZjNlNGE1ZTA0NGEwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5jcHAKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9QYXJzZXIuY3BwCkBAIC0zNDE0LDE2ICszNDE0LDIzIEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUgVHJlZUJ1aWxkZXI6OkltcG9ydFNwZWNpZmll
ciBQYXJzZXI8TGV4ZXJUCiAgICAgICAgIC8vIEltcG9ydFNwZWNpZmllciA6CiAgICAgICAgIC8v
IEltcG9ydGVkQmluZGluZwogICAgICAgICAvLyBJZGVudGlmaWVyTmFtZSBhcyBJbXBvcnRlZEJp
bmRpbmcKKyAgICAgICAgLy8gTW9kdWxlRXhwb3J0TmFtZSBhcyBJbXBvcnRlZEJpbmRpbmcKICAg
ICAgICAgLy8gZS5nLgogICAgICAgICAvLyAgICAgQQogICAgICAgICAvLyAgICAgQSBhcyBCCi0g
ICAgICAgIEFTU0VSVChtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSk7Ci0gICAgICAgIGxvY2Fs
TmFtZVRva2VuID0gbV90b2tlbjsKKyAgICAgICAgQVNTRVJUKG1hdGNoSWRlbnRpZmllck9yS2V5
d29yZCgpIHx8IG1hdGNoKFNUUklORykpOworICAgICAgICBib29sIGlzTW9kdWxlRXhwb3J0TmFt
ZSA9IG1hdGNoKFNUUklORyk7CiAgICAgICAgIGxvY2FsTmFtZSA9IG1fdG9rZW4ubV9kYXRhLmlk
ZW50OwogICAgICAgICBpbXBvcnRlZE5hbWUgPSBsb2NhbE5hbWU7CisgICAgICAgIGxvY2FsTmFt
ZVRva2VuID0gbV90b2tlbjsKKyAgICAgICAgaWYgKGlzTW9kdWxlRXhwb3J0TmFtZSkKKyAgICAg
ICAgICAgIGZhaWxJZlRydWUoaGFzVW5wYWlyZWRTdXJyb2dhdGUobG9jYWxOYW1lLT5zdHJpbmco
KSksICJFeHBlY3RlZCBhIHdlbGwtZm9ybWVkLXVuaWNvZGUgc3RyaW5nIGZvciB0aGUgbW9kdWxl
IGV4cG9ydCBuYW1lIik7CiAgICAgICAgIG5leHQoKTsKIAotICAgICAgICBpZiAobWF0Y2hDb250
ZXh0dWFsS2V5d29yZChtX3ZtLnByb3BlcnR5TmFtZXMtPmFzKSkgeworICAgICAgICBib29sIHVz
ZUFzID0gbWF0Y2hDb250ZXh0dWFsS2V5d29yZChtX3ZtLnByb3BlcnR5TmFtZXMtPmFzKTsKKyAg
ICAgICAgaWYgKGlzTW9kdWxlRXhwb3J0TmFtZSkKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKHVz
ZUFzLCAiRXhwZWN0ZWQgJ2FzJyBhZnRlciB0aGUgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZyIp
OworICAgICAgICBpZiAodXNlQXMpIHsKICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAg
IGZhaWxJZkZhbHNlKG1hdGNoU3BlY0lkZW50aWZpZXIoKSwgIkV4cGVjdGVkIGEgdmFyaWFibGUg
bmFtZSBmb3IgdGhlIGltcG9ydCBkZWNsYXJhdGlvbiIpOwogICAgICAgICAgICAgbG9jYWxOYW1l
VG9rZW4gPSBtX3Rva2VuOwpAQCAtMzUwMiw3ICszNTA5LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRy
ZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUltcG9ydERl
Y2xhcmEKICAgICAgICAgICAgIG5leHQoKTsKIAogICAgICAgICAgICAgd2hpbGUgKCFtYXRjaChD
TE9TRUJSQUNFKSkgewotICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoSWRlbnRpZmll
ck9yS2V5d29yZCgpLCAiRXhwZWN0ZWQgYW4gaW1wb3J0ZWQgbmFtZSBmb3IgdGhlIGltcG9ydCBk
ZWNsYXJhdGlvbiIpOworICAgICAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoSWRlbnRpZmll
ck9yS2V5d29yZCgpIHx8IG1hdGNoKFNUUklORyksICJFeHBlY3RlZCBhbiBpbXBvcnRlZCBuYW1l
IG9yIGEgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZyBmb3IgdGhlIGltcG9ydCBkZWNsYXJhdGlv
biIpOwogICAgICAgICAgICAgICAgIGF1dG8gc3BlY2lmaWVyID0gcGFyc2VJbXBvcnRDbGF1c2VJ
dGVtKGNvbnRleHQsIEltcG9ydFNwZWNpZmllclR5cGU6Ok5hbWVkSW1wb3J0KTsKICAgICAgICAg
ICAgICAgICBmYWlsSWZGYWxzZShzcGVjaWZpZXIsICJDYW5ub3QgcGFyc2UgdGhlIG5hbWVkIGlt
cG9ydCIpOwogICAgICAgICAgICAgICAgIGNvbnRleHQuYXBwZW5kSW1wb3J0U3BlY2lmaWVyKHNw
ZWNpZmllckxpc3QsIHNwZWNpZmllcik7CkBAIC0zNTI4LDI0ICszNTM1LDM1IEBAIHRlbXBsYXRl
IDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8TGV4ZXJUeXBlPjo6cGFy
c2VJbXBvcnREZWNsYXJhCiB9CiAKIHRlbXBsYXRlIDx0eXBlbmFtZSBMZXhlclR5cGU+Ci10ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpFeHBvcnRTcGVj
aWZpZXIgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0U3BlY2lmaWVyKFRyZWVCdWlsZGVy
JiBjb250ZXh0LCBWZWN0b3I8c3RkOjpwYWlyPGNvbnN0IElkZW50aWZpZXIqLCBjb25zdCBJZGVu
dGlmaWVyKj4+JiBtYXliZUV4cG9ydGVkTG9jYWxOYW1lcywgYm9vbCYgaGFzS2V5d29yZEZvckxv
Y2FsQmluZGluZ3MpCit0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IHR5cGVuYW1lIFRyZWVC
dWlsZGVyOjpFeHBvcnRTcGVjaWZpZXIgUGFyc2VyPExleGVyVHlwZT46OnBhcnNlRXhwb3J0U3Bl
Y2lmaWVyKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBWZWN0b3I8c3RkOjpwYWlyPGNvbnN0IElkZW50
aWZpZXIqLCBjb25zdCBJZGVudGlmaWVyKj4+JiBtYXliZUV4cG9ydGVkTG9jYWxOYW1lcywgYm9v
bCYgaGFzS2V5d29yZEZvckxvY2FsQmluZGluZ3MsIGJvb2wmIGhhc1JlZmVyZW5jZWRNb2R1bGVF
eHBvcnROYW1lcykKIHsKICAgICAvLyBFeHBvcnRTcGVjaWZpZXIgOgogICAgIC8vIElkZW50aWZp
ZXJOYW1lCiAgICAgLy8gSWRlbnRpZmllck5hbWUgYXMgSWRlbnRpZmllck5hbWUKKyAgICAvLyBJ
ZGVudGlmaWVyTmFtZSBhcyBNb2R1bGVFeHBvcnROYW1lCisgICAgLy8gTW9kdWxlRXhwb3J0TmFt
ZQorICAgIC8vIE1vZHVsZUV4cG9ydE5hbWUgYXMgSWRlbnRpZmllck5hbWUKKyAgICAvLyBNb2R1
bGVFeHBvcnROYW1lIGFzIE1vZHVsZUV4cG9ydE5hbWUKICAgICAvLyBodHRwOi8vd3d3LmVjbWEt
aW50ZXJuYXRpb25hbC5vcmcvZWNtYS0yNjIvNi4wLyNzZWMtZXhwb3J0cwotICAgIEFTU0VSVCht
YXRjaElkZW50aWZpZXJPcktleXdvcmQoKSk7CisgICAgQVNTRVJUKG1hdGNoSWRlbnRpZmllck9y
S2V5d29yZCgpIHx8IG1hdGNoKFNUUklORykpOwogICAgIEpTVG9rZW5Mb2NhdGlvbiBzcGVjaWZp
ZXJMb2NhdGlvbih0b2tlbkxvY2F0aW9uKCkpOwotICAgIGlmIChtX3Rva2VuLm1fdHlwZSAmIEtl
eXdvcmRUb2tlbkZsYWcpCi0gICAgICAgIGhhc0tleXdvcmRGb3JMb2NhbEJpbmRpbmdzID0gdHJ1
ZTsKICAgICBjb25zdCBJZGVudGlmaWVyKiBsb2NhbE5hbWUgPSBtX3Rva2VuLm1fZGF0YS5pZGVu
dDsKICAgICBjb25zdCBJZGVudGlmaWVyKiBleHBvcnRlZE5hbWUgPSBsb2NhbE5hbWU7CisgICAg
aWYgKG1hdGNoKFNUUklORykpIHsKKyAgICAgICAgaGFzUmVmZXJlbmNlZE1vZHVsZUV4cG9ydE5h
bWVzID0gdHJ1ZTsKKyAgICAgICAgZmFpbElmVHJ1ZShoYXNVbnBhaXJlZFN1cnJvZ2F0ZShleHBv
cnRlZE5hbWUtPnN0cmluZygpKSwgIkV4cGVjdGVkIGEgd2VsbC1mb3JtZWQtdW5pY29kZSBzdHJp
bmcgZm9yIHRoZSBtb2R1bGUgZXhwb3J0IG5hbWUiKTsKKyAgICB9IGVsc2UgeworICAgICAgICBp
ZiAobV90b2tlbi5tX3R5cGUgJiBLZXl3b3JkVG9rZW5GbGFnKQorICAgICAgICAgICAgaGFzS2V5
d29yZEZvckxvY2FsQmluZGluZ3MgPSB0cnVlOworICAgIH0KICAgICBuZXh0KCk7CiAKICAgICBp
ZiAobWF0Y2hDb250ZXh0dWFsS2V5d29yZChtX3ZtLnByb3BlcnR5TmFtZXMtPmFzKSkgewogICAg
ICAgICBuZXh0KCk7Ci0gICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoSWRlbnRpZmllck9yS2V5d29y
ZCgpLCAiRXhwZWN0ZWQgYW4gZXhwb3J0ZWQgbmFtZSBmb3IgdGhlIGV4cG9ydCBkZWNsYXJhdGlv
biIpOworICAgICAgICBmYWlsSWZGYWxzZShtYXRjaElkZW50aWZpZXJPcktleXdvcmQoKSB8fCBt
YXRjaChTVFJJTkcpLCAiRXhwZWN0ZWQgYW4gZXhwb3J0ZWQgbmFtZSBvciBhIG1vZHVsZSBleHBv
cnQgbmFtZSBzdHJpbmcgZm9yIHRoZSBleHBvcnQgZGVjbGFyYXRpb24iKTsKICAgICAgICAgZXhw
b3J0ZWROYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAgIGlmIChtYXRjaChTVFJJ
TkcpKQorICAgICAgICAgICAgZmFpbElmVHJ1ZShoYXNVbnBhaXJlZFN1cnJvZ2F0ZShleHBvcnRl
ZE5hbWUtPnN0cmluZygpKSwgIkV4cGVjdGVkIGEgd2VsbC1mb3JtZWQtdW5pY29kZSBzdHJpbmcg
Zm9yIHRoZSBtb2R1bGUgZXhwb3J0IG5hbWUiKTsKICAgICAgICAgbmV4dCgpOwogICAgIH0KIApA
QCAtMzU2Niw2ICszNTg0LDcgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IFBhcnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICBjYXNlIFRJ
TUVTOiB7CiAgICAgICAgIC8vIGV4cG9ydCAqIEZyb21DbGF1c2UgOwogICAgICAgICAvLyBleHBv
cnQgKiBhcyBJZGVudGlmaWVyTmFtZSBGcm9tQ2xhdXNlIDsKKyAgICAgICAgLy8gZXhwb3J0ICog
YXMgTW9kdWxlRXhwb3J0TmFtZSBGcm9tQ2xhdXNlIDsKICAgICAgICAgbmV4dCgpOwogCiAgICAg
ICAgIGNvbnN0IElkZW50aWZpZXIqIGV4cG9ydGVkTmFtZSA9IG51bGxwdHI7CkBAIC0zNTczLDgg
KzM1OTIsMTAgQEAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IFBh
cnNlcjxMZXhlclR5cGU+OjpwYXJzZUV4cG9ydERlY2xhcmEKICAgICAgICAgaWYgKG1hdGNoQ29u
dGV4dHVhbEtleXdvcmQobV92bS5wcm9wZXJ0eU5hbWVzLT5hcykpIHsKICAgICAgICAgICAgIG5l
eHQoKTsKICAgICAgICAgICAgIHNwZWNpZmllckxvY2F0aW9uID0gSlNUb2tlbkxvY2F0aW9uKHRv
a2VuTG9jYXRpb24oKSk7Ci0gICAgICAgICAgICBmYWlsSWZGYWxzZShtYXRjaElkZW50aWZpZXJP
cktleXdvcmQoKSwgIkV4cGVjdGVkIGFuIGV4cG9ydGVkIG5hbWUgZm9yIHRoZSBleHBvcnQgZGVj
bGFyYXRpb24iKTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoSWRlbnRpZmllck9yS2V5
d29yZCgpIHx8IG1hdGNoKFNUUklORyksICJFeHBlY3RlZCBhbiBleHBvcnRlZCBuYW1lIG9yIGEg
bW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZyBmb3IgdGhlIGV4cG9ydCBkZWNsYXJhdGlvbiIpOwog
ICAgICAgICAgICAgZXhwb3J0ZWROYW1lID0gbV90b2tlbi5tX2RhdGEuaWRlbnQ7CisgICAgICAg
ICAgICBpZiAobWF0Y2goU1RSSU5HKSkKKyAgICAgICAgICAgICAgICBmYWlsSWZUcnVlKGhhc1Vu
cGFpcmVkU3Vycm9nYXRlKGV4cG9ydGVkTmFtZS0+c3RyaW5nKCkpLCAiRXhwZWN0ZWQgYSB3ZWxs
LWZvcm1lZC11bmljb2RlIHN0cmluZyBmb3IgdGhlIG1vZHVsZSBleHBvcnQgbmFtZSIpOwogICAg
ICAgICAgICAgbmV4dCgpOwogICAgICAgICB9CiAKQEAgLTM3MDMsOSArMzcyNCwxMCBAQCB0ZW1w
bGF0ZSA8Y2xhc3MgVHJlZUJ1aWxkZXI+IFRyZWVTdGF0ZW1lbnQgUGFyc2VyPExleGVyVHlwZT46
OnBhcnNlRXhwb3J0RGVjbGFyYQogICAgICAgICBWZWN0b3I8c3RkOjpwYWlyPGNvbnN0IElkZW50
aWZpZXIqLCBjb25zdCBJZGVudGlmaWVyKj4+IG1heWJlRXhwb3J0ZWRMb2NhbE5hbWVzOwogCiAg
ICAgICAgIGJvb2wgaGFzS2V5d29yZEZvckxvY2FsQmluZGluZ3MgPSBmYWxzZTsKKyAgICAgICAg
Ym9vbCBoYXNSZWZlcmVuY2VkTW9kdWxlRXhwb3J0TmFtZXMgPSBmYWxzZTsKICAgICAgICAgd2hp
bGUgKCFtYXRjaChDTE9TRUJSQUNFKSkgewotICAgICAgICAgICAgZmFpbElmRmFsc2UobWF0Y2hJ
ZGVudGlmaWVyT3JLZXl3b3JkKCksICJFeHBlY3RlZCBhIHZhcmlhYmxlIG5hbWUgZm9yIHRoZSBl
eHBvcnQgZGVjbGFyYXRpb24iKTsKLSAgICAgICAgICAgIGF1dG8gc3BlY2lmaWVyID0gcGFyc2VF
eHBvcnRTcGVjaWZpZXIoY29udGV4dCwgbWF5YmVFeHBvcnRlZExvY2FsTmFtZXMsIGhhc0tleXdv
cmRGb3JMb2NhbEJpbmRpbmdzKTsKKyAgICAgICAgICAgIGZhaWxJZkZhbHNlKG1hdGNoSWRlbnRp
Zmllck9yS2V5d29yZCgpIHx8IG1hdGNoKFNUUklORyksICJFeHBlY3RlZCBhIHZhcmlhYmxlIG5h
bWUgb3IgYSBtb2R1bGUgZXhwb3J0IG5hbWUgc3RyaW5nIGZvciB0aGUgZXhwb3J0IGRlY2xhcmF0
aW9uIik7CisgICAgICAgICAgICBhdXRvIHNwZWNpZmllciA9IHBhcnNlRXhwb3J0U3BlY2lmaWVy
KGNvbnRleHQsIG1heWJlRXhwb3J0ZWRMb2NhbE5hbWVzLCBoYXNLZXl3b3JkRm9yTG9jYWxCaW5k
aW5ncywgaGFzUmVmZXJlbmNlZE1vZHVsZUV4cG9ydE5hbWVzKTsKICAgICAgICAgICAgIGZhaWxJ
ZkZhbHNlKHNwZWNpZmllciwgIkNhbm5vdCBwYXJzZSB0aGUgbmFtZWQgZXhwb3J0Iik7CiAgICAg
ICAgICAgICBjb250ZXh0LmFwcGVuZEV4cG9ydFNwZWNpZmllcihzcGVjaWZpZXJMaXN0LCBzcGVj
aWZpZXIpOwogICAgICAgICAgICAgaWYgKCFjb25zdW1lKENPTU1BKSkKQEAgLTM3MTgsNyArMzc0
MCw4IEBAIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gVHJlZVN0YXRlbWVudCBQYXJzZXI8
TGV4ZXJUeXBlPjo6cGFyc2VFeHBvcnREZWNsYXJhCiAgICAgICAgICAgICBuZXh0KCk7CiAgICAg
ICAgICAgICBtb2R1bGVOYW1lID0gcGFyc2VNb2R1bGVOYW1lKGNvbnRleHQpOwogICAgICAgICAg
ICAgZmFpbElmRmFsc2UobW9kdWxlTmFtZSwgIkNhbm5vdCBwYXJzZSB0aGUgJ2Zyb20nIGNsYXVz
ZSIpOwotICAgICAgICB9CisgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgc2VtYW50aWNGYWls
SWZUcnVlKGhhc1JlZmVyZW5jZWRNb2R1bGVFeHBvcnROYW1lcywgIkNhbm5vdCB1c2UgbW9kdWxl
IGV4cG9ydCBuYW1lcyBpZiB0aGV5IHJlZmVyZW5jZSB2YXJpYWJsZSBuYW1lcyBpbiB0aGUgY3Vy
cmVudCBtb2R1bGUiKTsKICAgICAgICAgZmFpbElmRmFsc2UoYXV0b1NlbWlDb2xvbigpLCAiRXhw
ZWN0ZWQgYSAnOycgZm9sbG93aW5nIGEgdGFyZ2V0ZWQgZXhwb3J0IGRlY2xhcmF0aW9uIik7CiAK
ICAgICAgICAgaWYgKCFtb2R1bGVOYW1lKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL1BhcnNlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3BhcnNlci9QYXJz
ZXIuaAppbmRleCA4NWYxODczNWNlZmFlY2Q5YTY1N2YzMDYxN2FkYWUwYjExYmZiOWRiLi4xZmJh
NGJhODZkYjFmMzJmYThiODFiOGE2NjRhYmY4YWQ2NjMyZjdmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvcGFyc2VyL1BhcnNlci5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9wYXJzZXIvUGFyc2VyLmgKQEAgLTE3ODQsNyArMTc4NCw3IEBAIGNsYXNzIFBhcnNlciB7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6SW1w
b3J0U3BlY2lmaWVyIHBhcnNlSW1wb3J0Q2xhdXNlSXRlbShUcmVlQnVpbGRlciYsIEltcG9ydFNw
ZWNpZmllclR5cGUpOwogICAgIHRlbXBsYXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gdHlwZW5hbWUg
VHJlZUJ1aWxkZXI6Ok1vZHVsZU5hbWUgcGFyc2VNb2R1bGVOYW1lKFRyZWVCdWlsZGVyJik7CiAg
ICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3RhdGVtZW50IHBhcnNlSW1wb3J0
RGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImKTsKLSAgICB0ZW1wbGF0ZSA8Y2xhc3MgVHJlZUJ1aWxk
ZXI+IHR5cGVuYW1lIFRyZWVCdWlsZGVyOjpFeHBvcnRTcGVjaWZpZXIgcGFyc2VFeHBvcnRTcGVj
aWZpZXIoVHJlZUJ1aWxkZXImIGNvbnRleHQsIFZlY3RvcjxzdGQ6OnBhaXI8Y29uc3QgSWRlbnRp
ZmllciosIGNvbnN0IElkZW50aWZpZXIqPj4mIG1heWJlRXhwb3J0ZWRMb2NhbE5hbWVzLCBib29s
JiBoYXNLZXl3b3JkRm9yTG9jYWxCaW5kaW5ncyk7CisgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVC
dWlsZGVyPiB0eXBlbmFtZSBUcmVlQnVpbGRlcjo6RXhwb3J0U3BlY2lmaWVyIHBhcnNlRXhwb3J0
U3BlY2lmaWVyKFRyZWVCdWlsZGVyJiBjb250ZXh0LCBWZWN0b3I8c3RkOjpwYWlyPGNvbnN0IElk
ZW50aWZpZXIqLCBjb25zdCBJZGVudGlmaWVyKj4+JiBtYXliZUV4cG9ydGVkTG9jYWxOYW1lcywg
Ym9vbCYgaGFzS2V5d29yZEZvckxvY2FsQmluZGluZ3MsIGJvb2wmIGhhc1JlZmVyZW5jZWRNb2R1
bGVFeHBvcnROYW1lcyk7CiAgICAgdGVtcGxhdGUgPGNsYXNzIFRyZWVCdWlsZGVyPiBUcmVlU3Rh
dGVtZW50IHBhcnNlRXhwb3J0RGVjbGFyYXRpb24oVHJlZUJ1aWxkZXImKTsKIAogICAgIHRlbXBs
YXRlIDxjbGFzcyBUcmVlQnVpbGRlcj4gQUxXQVlTX0lOTElORSBUcmVlRXhwcmVzc2lvbiBjcmVh
dGVSZXNvbHZlQW5kVXNlVmFyaWFibGUoVHJlZUJ1aWxkZXImLCBjb25zdCBJZGVudGlmaWVyKiwg
Ym9vbCBpc0V2YWwsIGNvbnN0IEpTVGV4dFBvc2l0aW9uJiwgY29uc3QgSlNUb2tlbkxvY2F0aW9u
Jik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV1RGL3d0Zi90ZXh0L1N0cmluZ1ZpZXcuaCBiL1NvdXJj
ZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCmluZGV4IDg0MDI0ZWU3NGNlOTUxNWEzMTI3MWZm
MmRiOTgyMDFmNDIxYmQ2MDguLjkyZjEzNDYxMDA2OGJhN2Y0NTFiZGNhOGFlNmRjZWNmYWFjYmY3
NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCisrKyBiL1Nv
dXJjZS9XVEYvd3RmL3RleHQvU3RyaW5nVmlldy5oCkBAIC0xMDg3LDkgKzEwODcsMjIgQEAgaW5s
aW5lIGJvb2wgZXF1YWxJZ25vcmluZ051bGxpdHkoU3RyaW5nVmlldyBhLCBTdHJpbmdWaWV3IGIp
CiAKIFdURl9FWFBPUlRfUFJJVkFURSBpbnQgY29kZVBvaW50Q29tcGFyZShTdHJpbmdWaWV3LCBT
dHJpbmdWaWV3KTsKIAoraW5saW5lIGJvb2wgaGFzVW5wYWlyZWRTdXJyb2dhdGUoU3RyaW5nVmll
dyBzdHJpbmcpCit7CisgICAgLy8gRmFzdCBwYXRoIGZvciA4LWJpdCBzdHJpbmdzOyB0aGV5IGNh
bid0IGhhdmUgYW55IHN1cnJvZ2F0ZXMuCisgICAgaWYgKHN0cmluZy5pczhCaXQoKSkKKyAgICAg
ICAgcmV0dXJuIGZhbHNlOworICAgIGZvciAoYXV0byBjb2RlUG9pbnQgOiBzdHJpbmcuY29kZVBv
aW50cygpKSB7CisgICAgICAgIGlmIChVX0lTX1NVUlJPR0FURShjb2RlUG9pbnQpKQorICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKwogfSAvLyBu
YW1lc3BhY2UgV1RGCiAKIHVzaW5nIFdURjo6YXBwZW5kOwogdXNpbmcgV1RGOjplcXVhbDsKIHVz
aW5nIFdURjo6U3RyaW5nVmlldzsKIHVzaW5nIFdURjo6U3RyaW5nVmlld1dpdGhVbmRlcmx5aW5n
U3RyaW5nOwordXNpbmcgV1RGOjpoYXNVbnBhaXJlZFN1cnJvZ2F0ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQ29udmVydFN0cmluZ3MuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01Db252ZXJ0U3RyaW5ncy5jcHAKaW5kZXggZWFiMDFm
NzM2MGMwMTZlOWExZDQ0MDM0ZTgwZTQzN2EzNTIyZGU4OC4uZTlhNGU2ZTBkNTRlMWQzNjdhZjg4
Y2QxNTU3ZGI0NzU5YzU4NjNjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0U3RyaW5ncy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNET01Db252ZXJ0U3RyaW5ncy5jcHAKQEAgLTYyLDE4ICs2Miw2IEBAIFN0cmluZyB2YWx1
ZVRvQnl0ZVN0cmluZyhKU0dsb2JhbE9iamVjdCYgbGV4aWNhbEdsb2JhbE9iamVjdCwgSlNWYWx1
ZSB2YWx1ZSkKICAgICByZXR1cm4gc3RyaW5nVG9CeXRlU3RyaW5nKGxleGljYWxHbG9iYWxPYmpl
Y3QsIHNjb3BlLCBXVEZNb3ZlKHN0cmluZykpOwogfQogCi1zdGF0aWMgaW5saW5lIGJvb2wgaGFz
VW5wYWlyZWRTdXJyb2dhdGUoU3RyaW5nVmlldyBzdHJpbmcpCi17Ci0gICAgLy8gRmFzdCBwYXRo
IGZvciA4LWJpdCBzdHJpbmdzOyB0aGV5IGNhbid0IGhhdmUgYW55IHN1cnJvZ2F0ZXMuCi0gICAg
aWYgKHN0cmluZy5pczhCaXQoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIGZvciAoYXV0
byBjb2RlUG9pbnQgOiBzdHJpbmcuY29kZVBvaW50cygpKSB7Ci0gICAgICAgIGlmIChVX0lTX1NV
UlJPR0FURShjb2RlUG9pbnQpKQotICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotICAg
IHJldHVybiBmYWxzZTsKLX0KLQogc3RhdGljIGlubGluZSBTdHJpbmcgc3RyaW5nVG9VU1ZTdHJp
bmcoU3RyaW5nJiYgc3RyaW5nKQogewogICAgIC8vIEZhc3QgcGF0aCBmb3IgdGhlIGNhc2Ugd2hl
cmUgdGhlcmUgYXJlIG5vIHVucGFpcmVkIHN1cnJvZ2F0ZXMuCmRpZmYgLS1naXQgYS9KU1Rlc3Rz
L0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk0MDk5MTgwZDkzNjhlMTdlNGFm
Zjk4NmViOTY0ZDlhNjE0ZjM3MzkuLmU2ZGIwZDhhMDAzOWQwODhhYWJhMzFhMzY2YzE3NTAzMzJk
MWI1N2MgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdl
TG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMTItMTUgIFl1c3VrZSBTdXp1a2kgIDx5c3V6dWtp
QGFwcGxlLmNvbT4KKworICAgICAgICBbSlNDXSBBY2NlcHQgYXJiaXRyYXJ5IG1vZHVsZSBuYW1l
c3BhY2UgaWRlbnRpZmllciBuYW1lcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjE3NTc2CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS83MDQxNjEwND4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIG1vZHVs
ZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy5qczogQWRkZWQuCisgICAgICAgICogbW9kdWxlcy9h
cmJpdHJhcnktbW9kdWxlLW5hbWVzL2V4cG9ydC5qczogQWRkZWQuCisgICAgICAgICogbW9kdWxl
cy9hcmJpdHJhcnktbW9kdWxlLW5hbWVzL2V4cG9ydDIuanM6IEFkZGVkLgorICAgICAgICAqIHN0
cmVzcy9tb2R1bGVzLXN5bnRheC1lcnJvci5qczoKKyAgICAgICAgKiB0ZXN0MjYyL2NvbmZpZy55
YW1sOgorCiAyMDIwLTEyLTE1ICBBbGV4ZXkgU2h2YXlrYSAgPHNodmFpa2FsZXNoQGdtYWlsLmNv
bT4KIAogICAgICAgICBOb24tZW51bWVyYWJsZSBwcm9wZXJ0eSBmYWlscyB0byBzaGFkb3cgaW5o
ZXJpdGVkIGVudW1lcmFibGUgcHJvcGVydHkgZnJvbSBmb3ItaW4KZGlmZiAtLWdpdCBhL0pTVGVz
dHMvbW9kdWxlcy9hcmJpdHJhcnktbW9kdWxlLW5hbWVzLmpzIGIvSlNUZXN0cy9tb2R1bGVzL2Fy
Yml0cmFyeS1tb2R1bGUtbmFtZXMuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOWE0YTAwNzMzNGI1Y2QzMjEwYjRl
YTg4OTVlNjhjNTI5YjU0ZmYzMAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvbW9kdWxlcy9h
cmJpdHJhcnktbW9kdWxlLW5hbWVzLmpzCkBAIC0wLDAgKzEsMTIgQEAKK2ltcG9ydCB7CisgICAg
ImRlbGV0ZSIgYXMgZGVsZXRpbmcsCisgICAgImlmIiBhcyBvazEsCisgICAgIm9rMiIgYXMgb2sy
Cit9IGZyb20gIi4vYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy9leHBvcnQuanMiOworaW1wb3J0IHsg
InZhciIgYXMgdmFyaWFibGUgfSBmcm9tICIuL2FyYml0cmFyeS1tb2R1bGUtbmFtZXMvZXhwb3J0
LmpzIjsKK2ltcG9ydCB7IHNob3VsZEJlLCBzaG91bGRUaHJvdyB9IGZyb20gIi4vcmVzb3VyY2Vz
L2Fzc2VydC5qcyI7CisKK3Nob3VsZEJlKGRlbGV0aW5nLCA0Mik7CitzaG91bGRCZSh2YXJpYWJs
ZS50ZXN0LCA0MCk7CitzaG91bGRCZShvazEsIDQwMCk7CitzaG91bGRCZShvazIsIDQwMSk7CmRp
ZmYgLS1naXQgYS9KU1Rlc3RzL21vZHVsZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy9leHBvcnQu
anMgYi9KU1Rlc3RzL21vZHVsZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy9leHBvcnQuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTE1NTE2ZTQyYzRhMWM4NTQ3YmEwNmRmZjhjNGYwNGY5NDc3MTIyMQotLS0gL2Rl
di9udWxsCisrKyBiL0pTVGVzdHMvbW9kdWxlcy9hcmJpdHJhcnktbW9kdWxlLW5hbWVzL2V4cG9y
dC5qcwpAQCAtMCwwICsxLDggQEAKK3ZhciBkZWxldGluZyA9IDQyOworCitleHBvcnQgeworICAg
IGRlbGV0aW5nIGFzICJkZWxldGUiCit9OworZXhwb3J0ICogYXMgInZhciIgZnJvbSAiLi9leHBv
cnQyLmpzIjsKK2V4cG9ydCB7ICJpZiIgfSBmcm9tICIuL2V4cG9ydDIuanMiOworZXhwb3J0IHsg
ImVsc2UiIGFzICJvazIiIH0gZnJvbSAiLi9leHBvcnQyLmpzIjsKZGlmZiAtLWdpdCBhL0pTVGVz
dHMvbW9kdWxlcy9hcmJpdHJhcnktbW9kdWxlLW5hbWVzL2V4cG9ydDIuanMgYi9KU1Rlc3RzL21v
ZHVsZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy9leHBvcnQyLmpzCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjYwYTk0
M2I4YjU3ODQ1NTQ4NDAwYjNiNzZjNTEyMjQ1NGM1NzU4NTUKLS0tIC9kZXYvbnVsbAorKysgYi9K
U1Rlc3RzL21vZHVsZXMvYXJiaXRyYXJ5LW1vZHVsZS1uYW1lcy9leHBvcnQyLmpzCkBAIC0wLDAg
KzEsNyBAQAorZXhwb3J0IHZhciB0ZXN0ID0gNDA7Cit2YXIgb2syID0gNDAwOwordmFyIG9rMyA9
IDQwMTsKK2V4cG9ydCB7CisgICAgb2syIGFzICJpZiIsCisgICAgb2szIGFzICJlbHNlIgorfTsK
ZGlmZiAtLWdpdCBhL0pTVGVzdHMvc3RyZXNzL21vZHVsZXMtc3ludGF4LWVycm9yLmpzIGIvSlNU
ZXN0cy9zdHJlc3MvbW9kdWxlcy1zeW50YXgtZXJyb3IuanMKaW5kZXggZGNkZjJlZTE0YWFmMzg2
YTQzZTkwNTIyMjVkN2EzN2E3OTFmMzEwNC4uOGFjNGZjOTM5Mjg2ZTU4OWM0ZjZjNmJjMmI3ZjBk
NDMxYzliZmVlNSAxMDA2NDQKLS0tIGEvSlNUZXN0cy9zdHJlc3MvbW9kdWxlcy1zeW50YXgtZXJy
b3IuanMKKysrIGIvSlNUZXN0cy9zdHJlc3MvbW9kdWxlcy1zeW50YXgtZXJyb3IuanMKQEAgLTIx
LDcgKzIxLDcgQEAgZnVuY3Rpb24gY2hlY2tNb2R1bGVTeW50YXhFcnJvcihzb3VyY2UsIGVycm9y
TWVzc2FnZSkgewogCiBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCiBpbXBvcnQg
eyx9IGZyb20gIkNvY29hIgotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4g
RXhwZWN0ZWQgYW4gaW1wb3J0ZWQgbmFtZSBmb3IgdGhlIGltcG9ydCBkZWNsYXJhdGlvbi46MmAp
OworYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYW4gaW1w
b3J0ZWQgbmFtZSBvciBhIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcgZm9yIHRoZSBpbXBvcnQg
ZGVjbGFyYXRpb24uOjJgKTsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAog
aW1wb3J0ICogZnJvbSAiQ29jb2EiCkBAIC0xNTgsNyArMTU4LDcgQEAgZnVuY3Rpb24gbm9Ub3BM
ZXZlbCgpIHsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAogaW1wb3J0IGEs
IHsgW2Fzc2lnbl0gYXMgYyB9IGZyb20gIkNvY29hIgotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVj
dGVkIHRva2VuICdbJy4gRXhwZWN0ZWQgYW4gaW1wb3J0ZWQgbmFtZSBmb3IgdGhlIGltcG9ydCBk
ZWNsYXJhdGlvbi46MmApOworYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICdbJy4g
RXhwZWN0ZWQgYW4gaW1wb3J0ZWQgbmFtZSBvciBhIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcg
Zm9yIHRoZSBpbXBvcnQgZGVjbGFyYXRpb24uOjJgKTsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJv
cihTdHJpbmcucmF3YAogaW1wb3J0IGQsIHsgZyBhcyB7b2JqfSB9IGZyb20gIkNhcHB1Y2Npbm8i
CkBAIC0xNjYsNyArMTY2LDcgQEAgZnVuY3Rpb24gbm9Ub3BMZXZlbCgpIHsKIAogY2hlY2tNb2R1
bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAogaW1wb3J0IGQsIHsge29ian0gfSBmcm9tICJDYXBw
dWNjaW5vIgotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICd7Jy4gRXhwZWN0ZWQg
YW4gaW1wb3J0ZWQgbmFtZSBmb3IgdGhlIGltcG9ydCBkZWNsYXJhdGlvbi46MmApOworYCwgYFN5
bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICd7Jy4gRXhwZWN0ZWQgYW4gaW1wb3J0ZWQgbmFt
ZSBvciBhIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcgZm9yIHRoZSBpbXBvcnQgZGVjbGFyYXRp
b24uOjJgKTsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAogaW1wb3J0IHsg
YmluZGluZwpAQCAtMTg0LDExICsxODQsMTEgQEAgZnVuY3Rpb24gbm9Ub3BMZXZlbCgpIHsKIAog
Y2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAogZXhwb3J0IHsgLCB9IGZyb20gIkNv
Y29hIgotYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSB2
YXJpYWJsZSBuYW1lIGZvciB0aGUgZXhwb3J0IGRlY2xhcmF0aW9uLjoyYCk7CitgLCBgU3ludGF4
RXJyb3I6IFVuZXhwZWN0ZWQgdG9rZW4gJywnLiBFeHBlY3RlZCBhIHZhcmlhYmxlIG5hbWUgb3Ig
YSBtb2R1bGUgZXhwb3J0IG5hbWUgc3RyaW5nIGZvciB0aGUgZXhwb3J0IGRlY2xhcmF0aW9uLjoy
YCk7CiAKIGNoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKIGV4cG9ydCB7IGEsICwg
fSBmcm9tICJDb2NvYSIKLWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnLCcuIEV4
cGVjdGVkIGEgdmFyaWFibGUgbmFtZSBmb3IgdGhlIGV4cG9ydCBkZWNsYXJhdGlvbi46MmApOwor
YCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcsJy4gRXhwZWN0ZWQgYSB2YXJpYWJs
ZSBuYW1lIG9yIGEgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZyBmb3IgdGhlIGV4cG9ydCBkZWNs
YXJhdGlvbi46MmApOwogCiBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCiBleHBv
cnQgYSBmcm9tICJDb2NvYSIKQEAgLTIwMCw3ICsyMDAsNyBAQCBmdW5jdGlvbiBub1RvcExldmVs
KCkgewogCiBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCiBleHBvcnQgeyAqIGFz
IGIgfSBmcm9tICJDb2NvYSIKLWAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCB0b2tlbiAnKicu
IEV4cGVjdGVkIGEgdmFyaWFibGUgbmFtZSBmb3IgdGhlIGV4cG9ydCBkZWNsYXJhdGlvbi46MmAp
OworYCwgYFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICcqJy4gRXhwZWN0ZWQgYSB2YXJp
YWJsZSBuYW1lIG9yIGEgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZyBmb3IgdGhlIGV4cG9ydCBk
ZWNsYXJhdGlvbi46MmApOwogCiBjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCiBl
eHBvcnQgKiBhcyBiCkBAIC0yMDgsNyArMjA4LDcgQEAgZnVuY3Rpb24gbm9Ub3BMZXZlbCgpIHsK
IAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAogZXhwb3J0ICogYXMgNDIgZnJv
bSAiQ29jb2EiCi1gLCBgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgbnVtYmVyICc0MicuIEV4cGVj
dGVkIGFuIGV4cG9ydGVkIG5hbWUgZm9yIHRoZSBleHBvcnQgZGVjbGFyYXRpb24uOjJgKTsKK2As
IGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBudW1iZXIgJzQyJy4gRXhwZWN0ZWQgYW4gZXhwb3J0
ZWQgbmFtZSBvciBhIG1vZHVsZSBleHBvcnQgbmFtZSBzdHJpbmcgZm9yIHRoZSBleHBvcnQgZGVj
bGFyYXRpb24uOjJgKTsKIAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAogZXhw
b3J0IGNvbnN0IGIgPSA0MjsKQEAgLTMxNiw2ICszMTYsNDIgQEAgZnVuY3Rpb24gbm9Ub3BMZXZl
bCgpIHsKIH0KIGAsIGBTeW50YXhFcnJvcjogVW5leHBlY3RlZCBrZXl3b3JkICdleHBvcnQnOjNg
KTsKIAorY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAoraW1wb3J0IHsgIlx1ZDgw
MCIgYXMgdGVzdCB9IGZyb20gIi4vb2suanMiCitgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBV
bmV4cGVjdGVkIHN0cmluZyBsaXRlcmFsICJcdWQ4MDAiLiBFeHBlY3RlZCBhIHdlbGwtZm9ybWVk
LXVuaWNvZGUgc3RyaW5nIGZvciB0aGUgbW9kdWxlIGV4cG9ydCBuYW1lLjoyYCk7CisKK2NoZWNr
TW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AKK2ltcG9ydCB7ICJ0ZXN0IiB9IGZyb20gIi4v
b2suanMiCitgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHRva2VuICd9Jy4g
RXhwZWN0ZWQgJ2FzJyBhZnRlciB0aGUgbW9kdWxlIGV4cG9ydCBuYW1lIHN0cmluZy46MmApOwor
CitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitleHBvcnQgeyAidGVzdCIgfQor
YCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogQ2Fubm90IHVzZSBtb2R1bGUgZXhwb3J0IG5hbWVz
IGlmIHRoZXkgcmVmZXJlbmNlIHZhcmlhYmxlIG5hbWVzIGluIHRoZSBjdXJyZW50IG1vZHVsZS46
M2ApOworCitjaGVja01vZHVsZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitleHBvcnQgeyAidGVz
dCIgYXMgIm9rIiB9CitgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBDYW5ub3QgdXNlIG1vZHVs
ZSBleHBvcnQgbmFtZXMgaWYgdGhleSByZWZlcmVuY2UgdmFyaWFibGUgbmFtZXMgaW4gdGhlIGN1
cnJlbnQgbW9kdWxlLjozYCk7CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3RyaW5nLnJhd2AK
K2V4cG9ydCB7ICJcdWQ4MDAiIH0gZnJvbSAiLi9vay5qcyIKK2AsIFN0cmluZy5yYXdgU3ludGF4
RXJyb3I6IFVuZXhwZWN0ZWQgc3RyaW5nIGxpdGVyYWwgIlx1ZDgwMCIuIEV4cGVjdGVkIGEgd2Vs
bC1mb3JtZWQtdW5pY29kZSBzdHJpbmcgZm9yIHRoZSBtb2R1bGUgZXhwb3J0IG5hbWUuOjJgKTsK
KworY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YAorZXhwb3J0IHsgb2sgYXMgIlx1
ZDgwMCIgfSBmcm9tICIuL29rLmpzIgorYCwgU3RyaW5nLnJhd2BTeW50YXhFcnJvcjogVW5leHBl
Y3RlZCBzdHJpbmcgbGl0ZXJhbCAiXHVkODAwIi4gRXhwZWN0ZWQgYSB3ZWxsLWZvcm1lZC11bmlj
b2RlIHN0cmluZyBmb3IgdGhlIG1vZHVsZSBleHBvcnQgbmFtZS46MmApOworCitjaGVja01vZHVs
ZVN5bnRheEVycm9yKFN0cmluZy5yYXdgCitleHBvcnQgeyAiaGVsbG8iIGFzICJcdWQ4MDAiIH0g
ZnJvbSAiLi9vay5qcyIKK2AsIFN0cmluZy5yYXdgU3ludGF4RXJyb3I6IFVuZXhwZWN0ZWQgc3Ry
aW5nIGxpdGVyYWwgIlx1ZDgwMCIuIEV4cGVjdGVkIGEgd2VsbC1mb3JtZWQtdW5pY29kZSBzdHJp
bmcgZm9yIHRoZSBtb2R1bGUgZXhwb3J0IG5hbWUuOjJgKTsKKworY2hlY2tNb2R1bGVTeW50YXhF
cnJvcihTdHJpbmcucmF3YAorZXhwb3J0IHsgIlx1ZDgwMCIgYXMgImhlbGxvIiB9IGZyb20gIi4v
b2suanMiCitgLCBTdHJpbmcucmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHN0cmluZyBsaXRl
cmFsICJcdWQ4MDAiLiBFeHBlY3RlZCBhIHdlbGwtZm9ybWVkLXVuaWNvZGUgc3RyaW5nIGZvciB0
aGUgbW9kdWxlIGV4cG9ydCBuYW1lLjoyYCk7CisKK2NoZWNrTW9kdWxlU3ludGF4RXJyb3IoU3Ry
aW5nLnJhd2AKK2V4cG9ydCAqIGFzICJcdWQ4MDAiIGZyb20gIi4vb2suanMiCitgLCBTdHJpbmcu
cmF3YFN5bnRheEVycm9yOiBVbmV4cGVjdGVkIHN0cmluZyBsaXRlcmFsICJcdWQ4MDAiLiBFeHBl
Y3RlZCBhIHdlbGwtZm9ybWVkLXVuaWNvZGUgc3RyaW5nIGZvciB0aGUgbW9kdWxlIGV4cG9ydCBu
YW1lLjoyYCk7CisKIC8vIC0tLS0tLS0tLS0tLS0tLSBvdGhlciAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0KIAogY2hlY2tNb2R1bGVTeW50YXhFcnJvcihTdHJpbmcucmF3YApkaWZmIC0tZ2l0IGEvSlNU
ZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sIGIvSlNUZXN0cy90ZXN0MjYyL2NvbmZpZy55YW1sCmlu
ZGV4IGJkZDhiYmZkNTJkYTY0NzIwYmZkNzdmZTdmOGM4YzExNmE2MGFiMzYuLjlhNGM1ZTczMTMy
MDhmNjA0NGNlZDFiNzFjMzIzNjMxYTI0YjU0NDYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvdGVzdDI2
Mi9jb25maWcueWFtbAorKysgYi9KU1Rlc3RzL3Rlc3QyNjIvY29uZmlnLnlhbWwKQEAgLTE5LDcg
KzE5LDYgQEAgc2tpcDoKICAgICAtIHJlZ2V4cC1sb29rYmVoaW5kCiAgICAgLSBsZWdhY3ktcmVn
ZXhwCiAKLSAgICAtIGFyYml0cmFyeS1tb2R1bGUtbmFtZXNwYWNlLW5hbWVzCiAgICAgLSBjbGFz
cy1tZXRob2RzLXByaXZhdGUKICAgICAtIGNsYXNzLXN0YXRpYy1tZXRob2RzLXByaXZhdGUKICAg
ICAtIGNsZWFudXBTb21lCg==
</data>
<flag name="review"
          id="433799"
          type_id="1"
          status="+"
          setter="darin"
    />
    <flag name="commit-queue"
          id="433830"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>