<?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>107829</bug_id>
          
          <creation_ts>2013-01-24 08:14:24 -0800</creation_ts>
          <short_desc>Web Inspector: support JavaScript variable mutation in protocol and V8 bindings</short_desc>
          <delta_ts>2013-02-07 07:01:56 -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>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Peter Rybin">prybin</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>buildbot</cc>
    
    <cc>dglazkov</cc>
    
    <cc>haraken</cc>
    
    <cc>japhet</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rniwa</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>815488</commentid>
    <comment_count>0</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2013-01-24 08:14:24 -0800</bug_when>
    <thetext>WebInspector lacks such feature as changing local variable value.
Add this feature to protocol, backend and V8 bindings (since V8 started to support this).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815493</commentid>
    <comment_count>1</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2013-01-24 08:17:01 -0800</bug_when>
    <thetext>See the sister bug for JSC:
https://bugs.webkit.org/show_bug.cgi?id=107830</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815506</commentid>
    <comment_count>2</comment_count>
      <attachid>184509</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2013-01-24 08:30:52 -0800</bug_when>
    <thetext>Created attachment 184509
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815522</commentid>
    <comment_count>3</comment_count>
      <attachid>184509</attachid>
    <who name="Yury Semikhatsky">yurys</who>
    <bug_when>2013-01-24 09:01:26 -0800</bug_when>
    <thetext>Comment on attachment 184509
Patch

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

&gt; Source/WebCore/inspector/InjectedScriptSource.js:595
&gt; +            setter = function(scopeIndex, variableName, newValue) {

style: { on next line

&gt; Source/WebCore/inspector/InjectedScriptSource.js:603
&gt; +            setter = function(scopeIndex, variableName, newValue) {

please use InjectedScriptHost.setFunctionVariableValue.bind(InjectedScriptHost,... instead

&gt; Source/WebCore/inspector/Inspector.json:2847
&gt; +                    { &quot;name&quot;: &quot;scopeNumber&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;0-based number of scope as was listed in scope chain. Only &apos;local&apos;, &apos;closure&apos; and &apos;catch&apos; scope types are allowed. Other scopes could be manipulated manually.&quot; },

Please add a note to the changelog on why you don&apos;t want to deal with &quot;with&quot; scopes.

&gt; Source/WebCore/inspector/Inspector.json:2850
&gt; +                ],

Please hide this from the public protocol.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815531</commentid>
    <comment_count>4</comment_count>
      <attachid>184509</attachid>
    <who name="Andrey Adaikin">aandrey</who>
    <bug_when>2013-01-24 09:08:35 -0800</bug_when>
    <thetext>Comment on attachment 184509
Patch

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

&gt; Source/WebCore/inspector/InjectedScript.cpp:119
&gt; +void InjectedScript::setVariableValue(ErrorString* errorString, const ScriptValue&amp; callFrames, const String* callFrameOpt, const String* functionObjectIdOpt, int scopeNumber, const String&amp; variableName, const String&amp; newValueStr)

callFrameOpt -&gt; callFrameIdOpt

&gt; Source/WebCore/inspector/InjectedScriptSource.js:585
&gt; +     * @param {*} newValue, unmasked custom value.

@param {RuntimeAgent.CallArgument} newValue? or is it just a {string} here?

&gt; Source/WebCore/inspector/InjectedScriptSource.js:586
&gt; +     * @return {*}

@return {string|undefined}

&gt; Source/WebCore/inspector/InjectedScriptSource.js:595
&gt; +            setter = function(scopeIndex, variableName, newValue) {

IMO, inlined try-catch blocks would look much more readable. One-liner code dup saver of the &quot;Failed...&quot; string does nor worth it.

&gt; Source/WebCore/inspector/Inspector.json:2845
&gt; +                    { &quot;name&quot;: &quot;callFrame&quot;, &quot;$ref&quot;: &quot;CallFrameId&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Id of callframe that holds variable&quot; },

name it &quot;callFrameId&quot;?

&gt; Source/WebCore/inspector/Inspector.json:2849
&gt; +                    { &quot;name&quot;: &quot;newValue&quot;, &quot;$ref&quot;: &quot;Runtime.CallArgument&quot;, &quot;description&quot;: &quot;New variable value&quot; }

dots at the end of descriptions are missing

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:587
&gt; +        injectedScript = m_injectedScriptManager-&gt;injectedScriptForObjectId(*callFrame);

callFrame -&gt; callFrameId</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815589</commentid>
    <comment_count>5</comment_count>
      <attachid>184524</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2013-01-24 10:33:23 -0800</bug_when>
    <thetext>Created attachment 184524
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815590</commentid>
    <comment_count>6</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2013-01-24 10:34:23 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/inspector/InjectedScriptSource.js:595
&gt; &gt; +            setter = function(scopeIndex, variableName, newValue) {
&gt; 
&gt; style: { on next line

Done

&gt; &gt; Source/WebCore/inspector/InjectedScriptSource.js:603
&gt; &gt; +            setter = function(scopeIndex, variableName, newValue) {
&gt; 
&gt; please use InjectedScriptHost.setFunctionVariableValue.bind(InjectedScriptHost,... instead

Done

&gt; &gt; Source/WebCore/inspector/Inspector.json:2847
&gt; &gt; +                    { &quot;name&quot;: &quot;scopeNumber&quot;, &quot;type&quot;: &quot;integer&quot;, &quot;description&quot;: &quot;0-based number of scope as was listed in scope chain. Only &apos;local&apos;, &apos;closure&apos; and &apos;catch&apos; scope types are allowed. Other scopes could be manipulated manually.&quot; },
&gt; Please add a note to the changelog on why you don&apos;t want to deal with &quot;with&quot; scopes.

Done

&gt; &gt; Source/WebCore/inspector/Inspector.json:2850
&gt; &gt; +                ],
&gt; Please hide this from the public protocol.

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>815591</commentid>
    <comment_count>7</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2013-01-24 10:35:31 -0800</bug_when>
    <thetext>&gt; &gt; Source/WebCore/inspector/InjectedScript.cpp:119
&gt; &gt; +void InjectedScript::setVariableValue(ErrorString* errorString, const ScriptValue&amp; callFrames, const String* callFrameOpt, const String* functionObjectIdOpt, int scopeNumber, const String&amp; variableName, const String&amp; newValueStr)
&gt; callFrameOpt -&gt; callFrameIdOpt

Done

&gt; &gt; Source/WebCore/inspector/InjectedScriptSource.js:585
&gt; &gt; +     * @param {*} newValue, unmasked custom value.
&gt; @param {RuntimeAgent.CallArgument} newValue? or is it just a {string} here?

Yes, that&apos;s a bug. Thank you for noting this.
Done

&gt; &gt; Source/WebCore/inspector/InjectedScriptSource.js:586
&gt; &gt; +     * @return {*}
&gt; @return {string|undefined}

Done

&gt; &gt; Source/WebCore/inspector/Inspector.json:2845
&gt; &gt; +                    { &quot;name&quot;: &quot;callFrame&quot;, &quot;$ref&quot;: &quot;CallFrameId&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;Id of callframe that holds variable&quot; },
&gt; name it &quot;callFrameId&quot;?

Done

&gt; &gt; Source/WebCore/inspector/Inspector.json:2849
&gt; &gt; +                    { &quot;name&quot;: &quot;newValue&quot;, &quot;$ref&quot;: &quot;Runtime.CallArgument&quot;, &quot;description&quot;: &quot;New variable value&quot; }
&gt; dots at the end of descriptions are missing

Done

&gt; &gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:587
&gt; &gt; +        injectedScript = m_injectedScriptManager-&gt;injectedScriptForObjectId(*callFrame);
&gt; callFrame -&gt; callFrameId

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816068</commentid>
    <comment_count>8</comment_count>
      <attachid>184524</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-24 18:29:00 -0800</bug_when>
    <thetext>Comment on attachment 184524
Patch

Attachment 184524 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16110385

New failing tests:
inspector/console/command-line-api.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816264</commentid>
    <comment_count>9</comment_count>
      <attachid>184524</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-01-24 22:51:27 -0800</bug_when>
    <thetext>Comment on attachment 184524
Patch

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

&gt; Source/WebCore/bindings/v8/DebuggerScript.js:99
&gt; +    if (!mirror.isFunction()) {

nit: no need for {}

&gt; Source/WebCore/bindings/v8/DebuggerScript.js:108
&gt; +    if (!scopeMirror) {

ditto

&gt; Source/WebCore/inspector/InjectedScriptSource.js:434
&gt; +                    return String(e);

return e.toString()

&gt; Source/WebCore/inspector/InjectedScriptSource.js:624
&gt; +            return String(e);

ditto</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816421</commentid>
    <comment_count>10</comment_count>
      <attachid>184524</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-25 02:47:47 -0800</bug_when>
    <thetext>Comment on attachment 184524
Patch

Attachment 184524 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/16122225

New failing tests:
inspector/console/command-line-api.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816445</commentid>
    <comment_count>11</comment_count>
      <attachid>184524</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-25 03:15:04 -0800</bug_when>
    <thetext>Comment on attachment 184524
Patch

Attachment 184524 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16115013

New failing tests:
svg/text/text-rect-precision.html
inspector/console/command-line-api.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>816526</commentid>
    <comment_count>12</comment_count>
      <attachid>184524</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-01-25 05:53:36 -0800</bug_when>
    <thetext>Comment on attachment 184524
Patch

Attachment 184524 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16124329

New failing tests:
inspector/console/command-line-api.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>824874</commentid>
    <comment_count>13</comment_count>
      <attachid>186491</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2013-02-04 16:17:33 -0800</bug_when>
    <thetext>Created attachment 186491
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825027</commentid>
    <comment_count>14</comment_count>
      <attachid>186491</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-04 19:17:28 -0800</bug_when>
    <thetext>Comment on attachment 186491
Patch

Attachment 186491 did not pass mac-wk2-ews (mac-wk2):
Output: http://queues.webkit.org/results/16376444

New failing tests:
inspector-protocol/debugger-setVariableValue.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825088</commentid>
    <comment_count>15</comment_count>
      <attachid>186491</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-04 20:55:26 -0800</bug_when>
    <thetext>Comment on attachment 186491
Patch

Attachment 186491 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/16374510

New failing tests:
inspector-protocol/debugger-setVariableValue.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>825282</commentid>
    <comment_count>16</comment_count>
      <attachid>186491</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2013-02-05 02:02:05 -0800</bug_when>
    <thetext>Comment on attachment 186491
Patch

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

Mac EWS claims inspector-protocol/debugger-setVariableValue.html [ Failure ] is failing. Otherwise looks good.

&gt; Source/WebCore/bindings/v8/DebuggerScript.js:99
&gt; +    if (!mirror.isFunction()) {

no {} around single line blocks.

&gt; Source/WebCore/bindings/v8/DebuggerScript.js:108
&gt; +    if (!scopeMirror) {

ditto

&gt; Source/WebCore/bindings/v8/JavaScriptCallFrame.cpp:142
&gt; +        deprecatedV8String(variableName),

What is deprecatedV8String ?

&gt; Source/WebCore/inspector/InjectedScript.cpp:146
&gt; +    // Normal return.

WebKit discourages comments.

&gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:602
&gt; +    String newValueStr = newValue-&gt;toJSONString();

netValueString (no abbreviations in WebKit). Why don&apos;t you pass it as RefPtr?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826773</commentid>
    <comment_count>17</comment_count>
      <attachid>186925</attachid>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2013-02-06 14:47:22 -0800</bug_when>
    <thetext>Created attachment 186925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826779</commentid>
    <comment_count>18</comment_count>
    <who name="Peter Rybin">prybin</who>
    <bug_when>2013-02-06 14:49:30 -0800</bug_when>
    <thetext>&gt; Mac EWS claims inspector-protocol/debugger-setVariableValue.html [ Failure ] is failing. Otherwise looks good.
Fixed

&gt; &gt; Source/WebCore/bindings/v8/DebuggerScript.js:99
&gt; &gt; +    if (!mirror.isFunction()) {
&gt; no {} around single line blocks.
Done

&gt; &gt; Source/WebCore/bindings/v8/DebuggerScript.js:108
&gt; &gt; +    if (!scopeMirror) {
&gt; ditto
Done

&gt; &gt; Source/WebCore/bindings/v8/JavaScriptCallFrame.cpp:142
&gt; &gt; +        deprecatedV8String(variableName),
&gt; What is deprecatedV8String ?
I copy-pasted code that was under multi-step refactoring.

&gt; &gt; Source/WebCore/inspector/InspectorDebuggerAgent.cpp:602
&gt; &gt; +    String newValueStr = newValue-&gt;toJSONString();
&gt; netValueString (no abbreviations in WebKit). Why don&apos;t you pass it as RefPtr?
Renamed. I did like similar command callFunctionOn is implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>826924</commentid>
    <comment_count>19</comment_count>
      <attachid>186925</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2013-02-06 17:46:10 -0800</bug_when>
    <thetext>Comment on attachment 186925
Patch

Attachment 186925 did not pass win-ews (win):
Output: http://queues.webkit.org/results/16396449</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827469</commentid>
    <comment_count>20</comment_count>
      <attachid>186925</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 07:01:50 -0800</bug_when>
    <thetext>Comment on attachment 186925
Patch

Clearing flags on attachment: 186925

Committed r142114: &lt;http://trac.webkit.org/changeset/142114&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>827470</commentid>
    <comment_count>21</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-02-07 07:01:56 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184509</attachid>
            <date>2013-01-24 08:30:52 -0800</date>
            <delta_ts>2013-01-24 10:33:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107829-20130124202744.patch</filename>
            <type>text/plain</type>
            <size>23372</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI1M2FiZmU2ODI2NDMy
ZWZhNjIyNGJkY2Y1Yzg5ZjYwMjVhMWRkNS4uMGExMTAwYThiZjA4Yjc2YzM5NGViZGQ3YzE1ODY4
NTJmYTAyN2JjMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU3IEBACisyMDEzLTAxLTI0ICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBzdXBwb3J0IEphdmFTY3JpcHQgdmFyaWFibGUgbXV0YXRpb24gaW4gcHJvdG9jb2wgYW5kIFY4
IGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDc4MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBIG5ldyBjb21tYW5kIGlzIGFkZGVkIHRvIHByb3RvY29sIGRlc2NyaXB0aW9uIGFuZCB0aGUg
Y2FsbCBpcyBwYXNzZWQgdGhyb3VnaAorICAgICAgICBkZWJ1Z2dlciBhZ2VudCB0aHJvdWdoIGlu
amVjdGVkIHNjcmlwdCBhbmQgZGVidWdnZXIgc2NyaXB0IGRvd24gdG8gVjggbWlycm9yCisgICAg
ICAgIEFQSS4gSlNDIGJpbmRpbmdzIGdvdCBhIHRob3J3IGV4Y2VwdGlvbiBzdHViLgorCisgICAg
ICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbmplY3RlZFNj
cmlwdEhvc3Q6OnNldEZ1bmN0aW9uVmFyaWFibGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzZXRWYXJpYWJsZVZhbHVl
KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RlYnVnZ2VyU2Ny
aXB0LmpzOgorICAgICAgICAoLik6CisgICAgICAgICogYmluZGluZ3MvdjgvSmF2YVNjcmlwdENh
bGxGcmFtZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzZXRW
YXJpYWJsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4
L0phdmFTY3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKEphdmFTY3JpcHRDYWxsRnJhbWUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNjcmlwdERlYnVnU2VydmVyOjpzZXRGdW5jdGlvblZhcmlhYmxlVmFsdWUpOgorICAg
ICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
aDoKKyAgICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9j
dXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
VjhJbmplY3RlZFNjcmlwdEhvc3Q6OnNldEZ1bmN0aW9uVmFyaWFibGVWYWx1ZUNhbGxiYWNrKToK
KyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEphdmFT
Y3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhKYXZhU2NyaXB0
Q2FsbEZyYW1lOjpzZXRWYXJpYWJsZVZhbHVlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkluamVjdGVkU2NyaXB0OjpzZXRWYXJpYWJsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0
ZWRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4p
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0
b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0VmFyaWFibGVWYWx1ZSk6CisgICAgICAgIChXZWJD
b3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAg
ICAgICAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0phdmFT
Y3JpcHRDYWxsRnJhbWUuaWRsOgorCiAyMDEzLTAxLTIyICBBbGV4aXMgTWVuYXJkICA8YWxleGlz
QHdlYmtpdC5vcmc+CiAKICAgICAgICAgQWxsb3cgY29uc3RydWN0aW9uIG9mIHVucHJlZml4ZWQg
dHJhbnNpdGlvbiBET00gZXZlbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IDlhZWY1NzYzMGJj
ZjE0MWNiZTAxN2IzNzA0YTQxM2FjNDJhNTM2OWIuLjhlMmJmY2QyMmMyZGZjMzg2OGU2ZjlkYTY0
OWY4ZmE3OGU0NmUwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTMwNiw2ICszMDYsMTMgQEAg
SlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQog
ICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK0pTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnNl
dEZ1bmN0aW9uVmFyaWFibGVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBG
SVhNRTogaW1wbGVtZW50IHRoaXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xMDc4MzAKKyAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAi
VmFyaWFibGUgdmFsdWUgbXV0YXRpb24gaXMgbm90IHN1cHBvcnRlZCIpKTsKKyAgICByZXR1cm4g
anNVbmRlZmluZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pz
L0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCmluZGV4IGEwNjgwODRhZmRmZTgw
MzFjYmQ1ZmMzMGYzYWNiZjg3ZjhlZDc1ZTcuLmUxZGQ3Yzc0MWFjZDAxODI5NmI3MzVhZjExODNi
NzE5MDgyZDYyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2
YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApAQCAtMTMwLDYgKzEzMCwxMyBAQCBK
U1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVUeXBlKEV4ZWNTdGF0ZSogZXhlYykK
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAorSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxs
RnJhbWU6OnNldFZhcmlhYmxlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8g
RklYTUU6IGltcGxlbWVudCB0aGlzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA3ODMwCisgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywg
IlZhcmlhYmxlIHZhbHVlIG11dGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiKSk7CisgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8v
IEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9EZWJ1Z2dlclNjcmlwdC5qcwppbmRleCAxNjkxZjU1ZTY0MmJmMjBlODhiZjBiYTQxNGI4Zjc2
ZjRmYWRkMjcyLi40MWE0Yzk3OGUxNmNiZDZjMjRmNGMyOTQ3ZjdlNDk1MzFmMjNmNWNjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qcwpAQCAtOTMsNiAr
OTMsMjUgQEAgRGVidWdnZXJTY3JpcHQuZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzID0gZnVuY3Rpb24o
dmFsdWUpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorRGVidWdnZXJTY3JpcHQuc2V0RnVuY3Rp
b25WYXJpYWJsZVZhbHVlID0gZnVuY3Rpb24oZnVuY3Rpb25WYWx1ZSwgc2NvcGVJbmRleCwgdmFy
aWFibGVOYW1lLCBuZXdWYWx1ZSkKK3sKKyAgICB2YXIgbWlycm9yID0gTWFrZU1pcnJvcihmdW5j
dGlvblZhbHVlKTsKKyAgICBpZiAoIW1pcnJvci5pc0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgdGhy
b3cgbmV3IEVycm9yKCJGdW5jdGlvbiB2YWx1ZSBoYXMgaW5jb3JyZWN0IHR5cGUiKTsKKyAgICB9
CisgICAgcmV0dXJuIERlYnVnZ2VyU2NyaXB0Ll9zZXRTY29wZVZhcmlhYmxlVmFsdWUobWlycm9y
LCBzY29wZUluZGV4LCB2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKTsKK30KKworRGVidWdnZXJTY3Jp
cHQuX3NldFNjb3BlVmFyaWFibGVWYWx1ZSA9IGZ1bmN0aW9uKHNjb3BlSG9sZGVyLCBzY29wZUlu
ZGV4LCB2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKQoreworICAgIHZhciBzY29wZU1pcnJvciA9IHNj
b3BlSG9sZGVyLnNjb3BlKHNjb3BlSW5kZXgpOworICAgIGlmICghc2NvcGVNaXJyb3IpIHsKKyAg
ICAgICAgdGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3Qgc2NvcGUgaW5kZXgiKTsKKyAgICB9Cisg
ICAgc2NvcGVNaXJyb3Iuc2V0VmFyaWFibGVWYWx1ZSh2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKTsK
KyAgICByZXR1cm4gdW5kZWZpbmVkOworfQorCiBEZWJ1Z2dlclNjcmlwdC5nZXRTY3JpcHRzID0g
ZnVuY3Rpb24oY29udGV4dERhdGEpCiB7CiAgICAgdmFyIHJlc3VsdCA9IFtdOwpAQCAtMjk1LDYg
KzMxNCwxMSBAQCBEZWJ1Z2dlclNjcmlwdC5fZnJhbWVNaXJyb3JUb0pTQ2FsbEZyYW1lID0gZnVu
Y3Rpb24oZnJhbWVNaXJyb3IsIGNhbGxlckZyYW1lKQogICAgICAgICByZXR1cm4gRGVidWcuTGl2
ZUVkaXQuUmVzdGFydEZyYW1lKGZyYW1lTWlycm9yKTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiBz
ZXRWYXJpYWJsZVZhbHVlKHNjb3BlTnVtYmVyLCB2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIERlYnVnZ2VyU2NyaXB0Ll9zZXRTY29wZVZhcmlhYmxlVmFsdWUo
ZnJhbWVNaXJyb3IsIHNjb3BlTnVtYmVyLCB2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKTsKKyAgICB9
CisKICAgICByZXR1cm4gewogICAgICAgICAic291cmNlSUQiOiBzb3VyY2VJRCwKICAgICAgICAg
ImxpbmUiOiBsb2NhdGlvbiA/IGxvY2F0aW9uLmxpbmUgOiAwLApAQCAtMzA1LDcgKzMyOSw4IEBA
IERlYnVnZ2VyU2NyaXB0Ll9mcmFtZU1pcnJvclRvSlNDYWxsRnJhbWUgPSBmdW5jdGlvbihmcmFt
ZU1pcnJvciwgY2FsbGVyRnJhbWUpCiAgICAgICAgICJzY29wZVR5cGUiOiBzY29wZVR5cGUsCiAg
ICAgICAgICJldmFsdWF0ZSI6IGV2YWx1YXRlLAogICAgICAgICAiY2FsbGVyIjogY2FsbGVyRnJh
bWUsCi0gICAgICAgICJyZXN0YXJ0IjogcmVzdGFydAorICAgICAgICAicmVzdGFydCI6IHJlc3Rh
cnQsCisgICAgICAgICJzZXRWYXJpYWJsZVZhbHVlIjogc2V0VmFyaWFibGVWYWx1ZQogICAgIH07
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRD
YWxsRnJhbWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxG
cmFtZS5jcHAKaW5kZXggMzE1MDM2ODEzMTViM2RhNTg2NTIyYTVhOTQzZDliZTcxMjRkN2U2Mi4u
Y2M5YTJhYzM3MDk5MGMzOWZlMGYxNjE0MjQ2OGMwMTEwYzM5ZGI4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTEzNCw2
ICsxMzQsMTcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IEphdmFTY3JpcHRDYWxsRnJhbWU6OnJl
c3RhcnQoKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBK
YXZhU2NyaXB0Q2FsbEZyYW1lOjpzZXRWYXJpYWJsZVZhbHVlKGludCBzY29wZU51bWJlciwgY29u
c3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuZXdWYWx1ZSkK
K3sKKyAgICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gc2V0VmFyaWFibGVWYWx1ZUZ1bmN0aW9u
ID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fY2FsbEZyYW1lLmdldCgpLT5HZXQo
djg6OlN0cmluZzo6TmV3U3ltYm9sKCJzZXRWYXJpYWJsZVZhbHVlIikpKTsKKyAgICB2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gYXJndltdID0geworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4o
djg6OkludGVnZXI6Ok5ldyhzY29wZU51bWJlcikpLAorICAgICAgICBkZXByZWNhdGVkVjhTdHJp
bmcodmFyaWFibGVOYW1lKSwKKyAgICAgICAgbmV3VmFsdWUKKyAgICB9OworICAgIHJldHVybiBz
ZXRWYXJpYWJsZVZhbHVlRnVuY3Rpb24tPkNhbGwobV9jYWxsRnJhbWUuZ2V0KCksIDMsIGFyZ3Yp
OworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSkFWQVND
UklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0ph
dmFTY3JpcHRDYWxsRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3Jp
cHRDYWxsRnJhbWUuaAppbmRleCAzMTMxNzA5MGUzN2NhMjA2NzkzMTlkMDhiYTQwOGEwNzBlNDRi
NzhiLi5hN2UzZGIxZTNkMTM5NmZjNDAyZjExNGFmYjllOWI5ODFlZjI2ZWNmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5oCkBAIC02MSw2
ICs2MSw3IEBAIHB1YmxpYzoKICAgICAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXZhbHVh
dGUoY29uc3QgU3RyaW5nJiBleHByZXNzaW9uKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
cmVzdGFydCgpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRWYXJpYWJsZVZhbHVlKGlu
dCBzY29wZU51bWJlciwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBuZXdWYWx1ZSk7CiAgICAgCiBwcml2YXRlOgogICAgIEphdmFTY3JpcHRDYWxsRnJh
bWUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gZGVidWdnZXJDb250ZXh0LCB2ODo6SGFuZGxlPHY4
OjpPYmplY3Q+IGNhbGxGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggN2NmYzI1OTk4YzgzYmI3NjVjZWQ4MTMyM2ExY2M4
M2RlZjAxNDJhMS4uMmU1NzAzZGU4NmYyMjIxOTc0NWVmYWY2NzgwMzM5ZGM2YmU3ZDc3MyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcApA
QCAtNTU1LDYgKzU1NSwyMCBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZl
cjo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iagogICAgIHJldHVybiBj
YWxsRGVidWdnZXJNZXRob2QoImdldEludGVybmFsUHJvcGVydGllcyIsIDEsIGFyZ3YpOwogfQog
Cit2ODo6TG9jYWw8djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0RnVuY3Rpb25WYXJp
YWJsZVZhbHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmdW5jdGlvblZhbHVlLCBpbnQgc2NvcGVO
dW1iZXIsIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
bmV3VmFsdWUpCit7CisgICAgaWYgKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCkuSXNFbXB0eSgpKQor
ICAgICAgICByZXR1cm4gKnY4OjpVbmRlZmluZWQoKTsKKworICAgIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBhcmd2W10gPSB7CisgICAgICAgIGZ1bmN0aW9uVmFsdWUsCisgICAgICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPih2ODo6SW50ZWdlcjo6TmV3KHNjb3BlTnVtYmVyKSksCisgICAgICAgIGRl
cHJlY2F0ZWRWOFN0cmluZyh2YXJpYWJsZU5hbWUpLAorICAgICAgICBuZXdWYWx1ZQorICAgIH07
CisgICAgcmV0dXJuIGNhbGxEZWJ1Z2dlck1ldGhvZCgic2V0RnVuY3Rpb25WYXJpYWJsZVZhbHVl
IiwgNCwgYXJndik7Cit9CisKIAogYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aXNQYXVzZWQoKQog
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2
ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKaW5k
ZXggYWVmZTJlYmJjMzcwNzljMDliYzlhMDY1MTBhOGNiMGJmZjRhYjZkNy4uN2RjMDFmMjljZTZk
MTVhZjNkZDYzYjNjZTQ1Y2NjOTRiY2Y1ODI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0xMDEsNiArMTAxLDggQEAgcHVibGljOgog
CiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZnVuY3Rpb25TY29wZXModjg6OkhhbmRsZTx2ODo6
RnVuY3Rpb24+KTsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBnZXRJbnRlcm5hbFByb3BlcnRp
ZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiYpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHNl
dEZ1bmN0aW9uVmFyaWFibGVWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZnVuY3Rpb25WYWx1
ZSwgaW50IHNjb3BlTnVtYmVyLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgdjg6OkhhbmRs
ZTx2ODo6VmFsdWU+IG5ld1ZhbHVlKTsKKwogCiAgICAgdmlydHVhbCB2b2lkIGNvbXBpbGVTY3Jp
cHQoU2NyaXB0U3RhdGUqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYg
c291cmNlVVJMLCBTdHJpbmcqIHNjcmlwdElkLCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2UpOwog
ICAgIHZpcnR1YWwgdm9pZCBjbGVhckNvbXBpbGVkU2NyaXB0cygpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0
SG9zdEN1c3RvbS5jcHAKaW5kZXggMWI3N2YzZjQ3YTk0ZDZkYjAxYTk3MjM0NGUyOWMzMDk5Njhh
MjY2MC4uYTk5OGU0MjkyNDMwODFlM2U5MzRhMDliZDgxNTdmNzNlOTE4NTE3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0
Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC0zMjEsNiArMzIxLDE5IEBAIHY4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVDYWxsYmFjayhjb25zdCB2
ODo6QXJndW1lbnRzCiAgICAgcmV0dXJuIHNjcmlwdC0+UnVuKCk7CiB9CiAKK3Y4OjpIYW5kbGU8
djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6c2V0RnVuY3Rpb25WYXJpYWJsZVZhbHVl
Q2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gZnVuY3Rpb25WYWx1ZSA9IGFyZ3NbMF07CisgICAgaW50IHNjb3BlSW5kZXggPSBh
cmdzWzFdLT5JbnQzMlZhbHVlKCk7CisgICAgU3RyaW5nIHZhcmlhYmxlTmFtZSA9IHRvV2ViQ29y
ZVN0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhhcmdzWzJdKTsKKyAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gbmV3VmFsdWUgPSBhcmdzWzNdOworCisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0
KiBob3N0ID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOwor
ICAgIFNjcmlwdERlYnVnU2VydmVyJiBkZWJ1Z1NlcnZlciA9IGhvc3QtPnNjcmlwdERlYnVnU2Vy
dmVyKCk7CisgICAgcmV0dXJuIGRlYnVnU2VydmVyLnNldEZ1bmN0aW9uVmFyaWFibGVWYWx1ZShm
dW5jdGlvblZhbHVlLCBzY29wZUluZGV4LCB2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKTsKK30KKwor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlw
dENhbGxGcmFtZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20v
VjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcAppbmRleCBlMDg3NGIyZDljOTU3YjM5MWNk
MjJlZjZhMmM3MjhjNTY1NWY0ODZhLi43Y2IyODllODFlOGE4Njc2ZjA0YTJhNzhhMDc1OTczZjI2
ZjNhMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhK
YXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApAQCAtNTAsNiArNTAs
MTUgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFy
dENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMKICAgICByZXR1cm4gaW1wbC0+cmVzdGFydCgp
OwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzZXRW
YXJpYWJsZVZhbHVlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBK
YXZhU2NyaXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2
ZShhcmdzLkhvbGRlcigpKTsKKyAgICBpbnQgc2NvcGVJbmRleCA9IGFyZ3NbMF0tPkludDMyVmFs
dWUoKTsKKyAgICBTdHJpbmcgdmFyaWFibGVOYW1lID0gdG9XZWJDb3JlU3RyaW5nV2l0aFVuZGVm
aW5lZE9yTnVsbENoZWNrKGFyZ3NbMV0pOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuZXdW
YWx1ZSA9IGFyZ3NbMl07CisgICAgcmV0dXJuIGltcGwtPnNldFZhcmlhYmxlVmFsdWUoc2NvcGVJ
bmRleCwgdmFyaWFibGVOYW1lLCBuZXdWYWx1ZSk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW5BY2Nlc3NvckdldHRlcih2ODo6TG9j
YWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAg
ICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05h
dGl2ZShpbmZvLkhvbGRlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHQuY3BwCmluZGV4IDUzZjEzZTAzM2MxMTI2NDE4M2EyOWE3NzJlMDU2MmY1OGViOTIxZGQu
LmUxYTg0MjY5MTE0NDJiODNhYmJlNmU5MGU0MzgyOThhNmRkM2FmNjggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtMTE2LDYgKzExNiwzNCBAQCB2
b2lkIEluamVjdGVkU2NyaXB0OjpyZXN0YXJ0RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
LCBjb25zdCBTY3JpcHRWYWx1ZSYgYwogICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJv
ciI7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnNldFZhcmlhYmxlVmFsdWUoRXJyb3JTdHJp
bmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3Ry
aW5nKiBjYWxsRnJhbWVPcHQsIGNvbnN0IFN0cmluZyogZnVuY3Rpb25PYmplY3RJZE9wdCwgaW50
IHNjb3BlTnVtYmVyLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBu
ZXdWYWx1ZVN0cikKK3sKKyAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgInNldFZhcmlhYmxlVmFsdWUiKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChjYWxsRnJhbWVzKTsKKyAgICBpZiAoY2FsbEZyYW1lT3B0KQorICAgICAgICBmdW5j
dGlvbi5hcHBlbmRBcmd1bWVudCgqY2FsbEZyYW1lT3B0KTsKKyAgICBlbHNlCisgICAgICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZhbHNlKTsKKyAgICBpZiAoZnVuY3Rpb25PYmplY3RJZE9w
dAorICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudCgqZnVuY3Rpb25PYmplY3RJZE9wdCk7
CisgICAgZWxzZQorICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmYWxzZSk7CisgICAg
ZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoc2NvcGVOdW1iZXIpOworICAgIGZ1bmN0aW9uLmFwcGVu
ZEFyZ3VtZW50KHZhcmlhYmxlTmFtZSk7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmV3
VmFsdWVTdHIpOworICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7CisgICAg
bWFrZUNhbGwoZnVuY3Rpb24sICZyZXN1bHRWYWx1ZSk7CisgICAgaWYgKCFyZXN1bHRWYWx1ZSkg
eworICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiOworICAgICAgICByZXR1
cm47CisgICAgfQorICAgIGlmIChyZXN1bHRWYWx1ZS0+dHlwZSgpID09IEluc3BlY3RvclZhbHVl
OjpUeXBlU3RyaW5nKSB7CisgICAgICAgIHJlc3VsdFZhbHVlLT5hc1N0cmluZyhlcnJvclN0cmlu
Zyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgLy8gTm9ybWFsIHJldHVybi4KK30KKwog
dm9pZCBJbmplY3RlZFNjcmlwdDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8RnVuY3Rpb25EZXRhaWxz
PiogcmVzdWx0KQogewogICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNj
cmlwdE9iamVjdCgpLCAiZ2V0RnVuY3Rpb25EZXRhaWxzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5oCmluZGV4IGRkOWMyOTkyMGE4ZDM0NGM4NzAzYmNjZmY4NDU4
M2M4NmEzNDFhZTEuLjY3ZTQ4ZjEyNGEzNWE1NjA4NGJhOTljNWZkNTJlM2FhNjkzMTdkYzggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC04MCw2ICs4MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWls
ZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+KiByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAgICAg
dm9pZCByZXN0YXJ0RnJhbWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZy
YW1lcywgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4q
IHJlc3VsdCk7CisgICAgdm9pZCBzZXRWYXJpYWJsZVZhbHVlKEVycm9yU3RyaW5nKiwgY29uc3Qg
U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyogY2FsbEZyYW1lT3B0LCBjb25z
dCBTdHJpbmcqIGZ1bmN0aW9uT2JqZWN0SWRPcHQsIGludCBzY29wZU51bWJlciwgY29uc3QgU3Ry
aW5nJiB2YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWVTdHIpOwogICAgIHZvaWQg
Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlvbklk
LCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQp
OwogICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2Jq
ZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBl
QnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPiA+KiByZXN1bHQpOwogICAgIHZv
aWQgZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6SW50
ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+ID4qIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCmluZGV4IDg4M2I1ZmZkMTEyYTU5NDM4
MjJlMjhjNTM4NmU5MDJiNDBlNDkxNDIuLmRhNWJiZmFlNTkwMTc5NTExZmM4NmI4ODk5MWU5YTE3
NjNlMTEyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dEhvc3QuaWRsCkBAIC00OCw0ICs0OCw1IEBACiAgICAgW0N1c3RvbV0gRE9NU3RyaW5nIGRhdGFi
YXNlSWQoaW4gRE9NT2JqZWN0IGRhdGFiYXNlKTsKICAgICBbQ3VzdG9tXSBET01TdHJpbmcgc3Rv
cmFnZUlkKGluIERPTU9iamVjdCBzdG9yYWdlKTsKICAgICBbQ3VzdG9tXSBET01PYmplY3QgZXZh
bHVhdGUoaW4gRE9NU3RyaW5nIHRleHQpOworICAgIFtDdXN0b21dIERPTU9iamVjdCBzZXRGdW5j
dGlvblZhcmlhYmxlVmFsdWUoaW4gRE9NT2JqZWN0IGZ1bmN0aW9uT2JqZWN0LCBpbiBpbnQgc2Nv
cGVJbmRleCwgaW4gRE9NU3RyaW5nIHZhcmlhYmxlTmFtZSwgRE9NT2JqZWN0IG5ld1ZhbHVlKTsK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRT
b3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2Uu
anMKaW5kZXggMTgxMjAxODRiZmU3NDg2M2I0N2I0NDRhZGUyYTMwNWEzNWUzMzdmYy4uNGNjMGY3
MDEwYzVkMDNiN2NlODI2Mjc3NDlkYzg5M2VkNmY0MTEyZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtNTc2LDYgKzU3Niw0MyBA
QCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAq
IEVpdGhlciBjYWxsRnJhbWVJZCBvciBmdW5jdGlvbk9iamVjdElkIG11c3QgYmUgc3BlY2lmaWVk
LgorICAgICAqIEBwYXJhbSB7T2JqZWN0fSB0b3BDYWxsRnJhbWUKKyAgICAgKiBAcGFyYW0ge3N0
cmluZ3xib29sZWFufSBjYWxsRnJhbWVJZCBvciBmYWxzZQorICAgICAqIEBwYXJhbSB7c3RyaW5n
fGJvb2xlYW59IGZ1bmN0aW9uT2JqZWN0SWQgb3IgZmFsc2UKKyAgICAgKiBAcGFyYW0ge2ludGVn
ZXJ9IHNjb3BlTnVtYmVyCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHZhcmlhYmxlTmFtZQorICAg
ICAqIEBwYXJhbSB7Kn0gbmV3VmFsdWUsIHVubWFza2VkIGN1c3RvbSB2YWx1ZS4KKyAgICAgKiBA
cmV0dXJuIHsqfQorICAgICAqLworICAgIHNldFZhcmlhYmxlVmFsdWU6IGZ1bmN0aW9uKHRvcENh
bGxGcmFtZSwgY2FsbEZyYW1lSWQsIGZ1bmN0aW9uT2JqZWN0SWQsIHNjb3BlTnVtYmVyLCB2YXJp
YWJsZU5hbWUsIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgdmFyIHNldHRlcjsKKyAgICAgICAg
aWYgKGNhbGxGcmFtZUlkKSB7CisgICAgICAgICAgICB2YXIgY2FsbEZyYW1lID0gdGhpcy5fY2Fs
bEZyYW1lRm9ySWQodG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCk7CisgICAgICAgICAgICBpZiAo
IWNhbGxGcmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIGNhbGwg
ZnJhbWUgd2l0aCBnaXZlbiBpZCI7CisgICAgICAgICAgICBzZXR0ZXIgPSBmdW5jdGlvbihzY29w
ZUluZGV4LCB2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKSB7CisgICAgICAgICAgICAgICAgcmV0dXJu
IGNhbGxGcmFtZS5zZXRWYXJpYWJsZVZhbHVlKHNjb3BlSW5kZXgsIHZhcmlhYmxlTmFtZSwgbmV3
VmFsdWUpOworICAgICAgICAgICAgfTsgICAgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAg
ICB2YXIgcGFyc2VkRnVuY3Rpb25JZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQoZnVuY3Rpb25PYmpl
Y3RJZCk7CisgICAgICAgICAgICB2YXIgZnVuYyA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZEZ1
bmN0aW9uSWQpOworICAgICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9PSAiZnVuY3Rpb24iKQor
ICAgICAgICAgICAgICAgIHJldHVybiAiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gYnkgaWQuIjsK
KyAgICAgICAgICAgIHNldHRlciA9IGZ1bmN0aW9uKHNjb3BlSW5kZXgsIHZhcmlhYmxlTmFtZSwg
bmV3VmFsdWUpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHRIb3N0LnNl
dEZ1bmN0aW9uVmFyaWFibGVWYWx1ZShmdW5jLCBzY29wZUluZGV4LCB2YXJpYWJsZU5hbWUsIG5l
d1ZhbHVlKTsKKyAgICAgICAgICAgIH07ICAgIAorICAgICAgICB9CisgICAgICAgIHRyeSB7Cisg
ICAgICAgICAgICBzZXR0ZXIoc2NvcGVOdW1iZXIsIHZhcmlhYmxlTmFtZSwgbmV3VmFsdWUpOwor
ICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1cm4gIkZhaWxlZCB0byBjaGFu
Z2UgdmFyaWFibGUgdmFsdWU6ICIgKyBlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB1bmRl
ZmluZWQ7CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7T2JqZWN0fSB0b3BDYWxs
RnJhbWUKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2FsbEZyYW1lSWQKICAgICAgKiBAcmV0dXJu
IHtPYmplY3R9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
Lmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggZDIy
ZmYwZTAyNTUxYWNlMjUzMTA3OTU3MGIwNTA2YTlmMzc4MzQxZS4uYTVlZGUxZGI4Y2U1YjI3MDlk
MDY0OWM5NWFlODE3N2YzZTM0ODQxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3IuanNvbgpAQCAtMjgzOCw2ICsyODM4LDE3IEBACiAgICAgICAgICAgICAgICAgXSwKICAgICAg
ICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24i
OiAiU2V0cyBvdmVybGF5IG1lc3NhZ2UuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsK
KyAgICAgICAgICAgICAgICAibmFtZSI6ICJzZXRWYXJpYWJsZVZhbHVlIiwKKyAgICAgICAgICAg
ICAgICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxs
RnJhbWUiLCAiJHJlZiI6ICJDYWxsRnJhbWVJZCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlw
dGlvbiI6ICJJZCBvZiBjYWxsZnJhbWUgdGhhdCBob2xkcyB2YXJpYWJsZSIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJmdW5jdGlvbk9iamVjdElkIiwgIiRyZWYiOiAiUnVudGlt
ZS5SZW1vdGVPYmplY3RJZCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJPYmpl
Y3QgaWQgb2YgY2xvc3VyZSAoZnVuY3Rpb24pIHRoYXQgaG9sZHMgdmFyaWFibGUiIH0sCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2NvcGVOdW1iZXIiLCAidHlwZSI6ICJpbnRlZ2Vy
IiwgImRlc2NyaXB0aW9uIjogIjAtYmFzZWQgbnVtYmVyIG9mIHNjb3BlIGFzIHdhcyBsaXN0ZWQg
aW4gc2NvcGUgY2hhaW4uIE9ubHkgJ2xvY2FsJywgJ2Nsb3N1cmUnIGFuZCAnY2F0Y2gnIHNjb3Bl
IHR5cGVzIGFyZSBhbGxvd2VkLiBPdGhlciBzY29wZXMgY291bGQgYmUgbWFuaXB1bGF0ZWQgbWFu
dWFsbHkuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZhcmlhYmxlTmFtZSIs
ICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJWYXJpYWJsZSBuYW1lIiB9LAorICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm5ld1ZhbHVlIiwgIiRyZWYiOiAiUnVudGltZS5D
YWxsQXJndW1lbnQiLCAiZGVzY3JpcHRpb24iOiAiTmV3IHZhcmlhYmxlIHZhbHVlIiB9CisgICAg
ICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2hhbmdlcyB2
YWx1ZSBvZiB2YXJpYWJsZSBpbiBhIGNhbGxmcmFtZSBvciBhIGNsb3N1cmUuIEVpdGhlciBjYWxs
ZnJhbWUgb3IgZnVuY3Rpb24gbXVzdCBiZSBzcGVjaWZpZWQuIE9iamVjdC1iYXNlZCBzY29wZXMg
YXJlIG5vdCBzdXBwb3J0ZWQgYW5kIG11c3QgYmUgbXV0YXRlZCBtYW51YWxseS4iCiAgICAgICAg
ICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBbCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZDU2ZTli
ZjIzMmEzNWI1MGM1NmU2MjlkYzA4YzkzOTgxNGM2MGUxYy4uNDVhNTAxOGUwMjJkZmY1MGY2NmE4
YTVjNDg5ZGNmNTE1NDc1ZDA5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJv
clN0cmluZywgY29uc3QKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1f
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGZ1bmN0aW9u
SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgKmVy
cm9yU3RyaW5nID0gIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSI7CisgICAgICAgICplcnJvclN0
cmluZyA9ICJGdW5jdGlvbiBvYmplY3QgaWQgaXMgb2Jzb2xldGUiOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9uRGV0YWlscyhlcnJvclN0cmlu
ZywgZnVuY3Rpb25JZCwgJmRldGFpbHMpOwpAQCAtNTgwLDYgKzU4MCwzMCBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OnNldE92ZXJsYXlNZXNzYWdlKEVycm9yU3RyaW5nKiwgY29uc3Qg
U3RyaW5nKikKIHsKIH0KIAordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRWYXJpYWJs
ZVZhbHVlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nKiBjYWxsRnJhbWUs
IGNvbnN0IFN0cmluZyogZnVuY3Rpb25PYmplY3RJZCwgaW50IHNjb3BlTnVtYmVyLCBjb25zdCBT
dHJpbmcmIHZhcmlhYmxlTmFtZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIG5ld1Zh
bHVlKQoreworICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0OworICAgIGlmIChjYWxs
RnJhbWUpIHsKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdl
ci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZCgqY2FsbEZyYW1lKTsKKyAgICAgICAgaWYgKGlu
amVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgeworICAgICAgICAgICAgKmVycm9yU3RyaW5nID0g
Ikluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IH0KKyAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uT2JqZWN0SWQpIHsKKyAgICAgICAgaW5qZWN0ZWRT
Y3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJ
ZCgqZnVuY3Rpb25PYmplY3RJZCk7CisgICAgICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1Zh
bHVlKCkpIHsKKyAgICAgICAgICAgICplcnJvclN0cmluZyA9ICJGdW5jdGlvbiBvYmplY3QgaWQg
aXMgb2Jzb2xldGUiOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNl
IHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkVpdGhlciBjYWxsIGZyYW1lIG9yIGZ1bmN0aW9u
IG9iamVjdCBtdXN0IGJlIHNwZWNpZmllZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
U3RyaW5nIG5ld1ZhbHVlU3RyID0gbmV3VmFsdWUtPnRvSlNPTlN0cmluZygpOworCisgICAgaW5q
ZWN0ZWRTY3JpcHQuc2V0VmFyaWFibGVWYWx1ZShlcnJvclN0cmluZywgbV9jdXJyZW50Q2FsbFN0
YWNrLCBjYWxsRnJhbWUsIGZ1bmN0aW9uT2JqZWN0SWQsIHNjb3BlTnVtYmVyLCB2YXJpYWJsZU5h
bWUsIG5ld1ZhbHVlU3RyKTsKK30KKwogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY3Jp
cHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KQogewog
ICAgIGlmIChzY3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKSAhPSBT
Y3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA4NDg4ZjUz
ZDFlZGFlZWU3Zjg3OTY4OGI3OGMwOGZmZDAyODk4MGQ4Li43NDg2ZDE5Y2ExZTJjYzk1NzNiZmRl
N2Q3YjhkMTM5OGI5MTRlZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21waWxlU2NyaXB0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxUeXBlQnVp
bGRlcjo6RGVidWdnZXI6OlNjcmlwdElkPiosIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5n
Piogc3ludGF4RXJyb3JNZXNzYWdlKTsKICAgICB2b2lkIHJ1blNjcmlwdChFcnJvclN0cmluZyos
IGNvbnN0IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6U2NyaXB0SWQmLCBjb25zdCBpbnQqIGV4ZWN1
dGlvbkNvbnRleHRJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogZG9O
b3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29s
Piogd2FzVGhyb3duKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFyaWFibGVWYWx1
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyogaW5fY2FsbEZyYW1lLCBjb25zdCBTdHJpbmcq
IGluX2Z1bmN0aW9uT2JqZWN0SWQsIGludCBpbl9zY29wZU51bWJlciwgY29uc3QgU3RyaW5nJiBp
bl92YXJpYWJsZU5hbWUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBpbl9uZXdWYWx1
ZSk7CiAKICAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRnJv
bnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkYXRhKTsKICAgICB2b2lkIGNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxG
cmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5p
ZGwKaW5kZXggMTcwMTFlNDkyMGE1MDJkODc1NjJkZjNjYjNlNzBiNzQ2ZGJmNTlkNy4uMDJjOGU4
NWIwYzdlOWZmOGEwNDYxZTI5NDkzZjcwYjE2ZmZiNzU0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbApAQCAtMzgsNiArMzgsNyBAQAog
CiAgICAgW0N1c3RvbV0gdm9pZCBldmFsdWF0ZShpbiBET01TdHJpbmcgc2NyaXB0KTsKICAgICBb
Q3VzdG9tXSBET01PYmplY3QgcmVzdGFydCgpOworICAgIFtDdXN0b21dIERPTU9iamVjdCBzZXRW
YXJpYWJsZVZhbHVlKGluIGludCBzY29wZUluZGV4LCBpbiBET01TdHJpbmcgdmFyaWFibGVOYW1l
LCBET01PYmplY3QgbmV3VmFsdWUpOwogCiAgICAgcmVhZG9ubHkgYXR0cmlidXRlIEphdmFTY3Jp
cHRDYWxsRnJhbWUgY2FsbGVyOwogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIHNvdXJjZUlE
Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>184524</attachid>
            <date>2013-01-24 10:33:23 -0800</date>
            <delta_ts>2013-02-04 16:17:26 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107829-20130124223014.patch</filename>
            <type>text/plain</type>
            <size>26476</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQwNDUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjI1M2FiZmU2ODI2NDMy
ZWZhNjIyNGJkY2Y1Yzg5ZjYwMjVhMWRkNS4uYTcwNWEwNDNlZWYxZTJhNDhlYzdmYjBkYWI5YzVm
MmIwMTBjZTMxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEzLTAxLTI0ICBQZXRl
ciBSeWJpbiAgPHBldGVyLnJ5YmluQGdtYWlsLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBzdXBwb3J0IEphdmFTY3JpcHQgdmFyaWFibGUgbXV0YXRpb24gaW4gcHJvdG9jb2wgYW5kIFY4
IGJpbmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDc4MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAg
ICBBIG5ldyBjb21tYW5kIGlzIGFkZGVkIHRvIHByb3RvY29sIGRlc2NyaXB0aW9uIGFuZCB0aGUg
Y2FsbCBpcyBwYXNzZWQgdGhyb3VnaAorICAgICAgICBkZWJ1Z2dlciBhZ2VudCB0aHJvdWdoIGlu
amVjdGVkIHNjcmlwdCBhbmQgZGVidWdnZXIgc2NyaXB0IGRvd24gdG8gVjggbWlycm9yCisgICAg
ICAgIEFQSS4gSlNDIGJpbmRpbmdzIGdvdCBhIHRob3J3IGV4Y2VwdGlvbiBzdHViLgorCisgICAg
ICAgIE9ubHkgZGVjbGFyYXRpdmUgSmF2YVNjcmlwdCBzY29wZXMgYXJlIHN1cHBvcnRlZCAobG9j
YWwsIGNsb3N1cmUsIGNhdGNoKS4gT3RoZXIKKyAgICAgICAgc2NvcGVzIChnbG9iYWwsIHdpdGgp
IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IFY4IGFuZCBub3Qgc3VwcG9ydGVkIGJ5IHByb3RvY29sLCBi
ZWNhdXNlCisgICAgICAgIG1hbnVhbCBhcHByb2FjaCAoZGlyZWN0IHByb3BlcnR5IGFzc2lnbWVu
dCkgaXMgYXZhaWxhYmxlIGZvciB0aGVtIGluIGZvcm0gb2YgZXZhbHVhdGUKKyAgICAgICAgY29t
bWFuZHMgYW5kIGlzIG1vcmUgZGVzaXJhYmxlIGJlY2F1c2Ugb2YgYSBjb21wbGV4IG5hdHVyZSBv
ZiBvcGVyYXRpb24gKGl0IGNhbiB0aHJvdworICAgICAgICBleGNlcHRpb24gaW4gc2V2ZXJhbCBj
YXNlcyBzdWNoIGFzIGV4Y2VwdGlvbiBpbiBzZXR0ZXIgZnVuY3Rpb24pLgorCisgICAgICAgIE5v
IG5ldyB0ZXN0cyAoT09QUyEpLgorCisgICAgICAgICogYmluZGluZ3MvanMvSlNJbmplY3RlZFNj
cmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNJbmplY3RlZFNjcmlwdEhv
c3Q6OnNldEZ1bmN0aW9uVmFyaWFibGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6SlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzZXRWYXJpYWJsZVZhbHVlKToKKyAg
ICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0RlYnVnZ2VyU2NyaXB0Lmpz
OgorICAgICAgICAoLik6CisgICAgICAgICogYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFt
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzZXRWYXJpYWJs
ZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L0phdmFT
Y3JpcHRDYWxsRnJhbWUuaDoKKyAgICAgICAgKEphdmFTY3JpcHRDYWxsRnJhbWUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNjcmlwdERlYnVnU2VydmVyOjpzZXRGdW5jdGlvblZhcmlhYmxlVmFsdWUpOgorICAgICAgICAo
V2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaDoKKyAg
ICAgICAgKFNjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9jdXN0b20v
VjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhJbmpl
Y3RlZFNjcmlwdEhvc3Q6OnNldEZ1bmN0aW9uVmFyaWFibGVWYWx1ZUNhbGxiYWNrKToKKyAgICAg
ICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEphdmFTY3JpcHRD
YWxsRnJhbWVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6VjhKYXZhU2NyaXB0Q2FsbEZy
YW1lOjpzZXRWYXJpYWJsZVZhbHVlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZSk6CisgICAg
ICAgICogaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oklu
amVjdGVkU2NyaXB0OjpzZXRWYXJpYWJsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oOgorICAgICAgICAoSW5qZWN0ZWRTY3Jp
cHQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qczoKKyAgICAgICAgKC4pOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3IuanNvbjoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpnZXRGdW5jdGlvbkRldGFpbHMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6c2V0VmFyaWFibGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOgorICAgICAgICAo
SW5zcGVjdG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0phdmFTY3JpcHRD
YWxsRnJhbWUuaWRsOgorCiAyMDEzLTAxLTIyICBBbGV4aXMgTWVuYXJkICA8YWxleGlzQHdlYmtp
dC5vcmc+CiAKICAgICAgICAgQWxsb3cgY29uc3RydWN0aW9uIG9mIHVucHJlZml4ZWQgdHJhbnNp
dGlvbiBET00gZXZlbnRzLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMv
SlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
anMvSlNJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IDlhZWY1NzYzMGJjZjE0MWNi
ZTAxN2IzNzA0YTQxM2FjNDJhNTM2OWIuLjhlMmJmY2QyMmMyZGZjMzg2OGU2ZjlkYTY0OWY4ZmE3
OGU0NmUwMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0
ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKQEAgLTMwNiw2ICszMDYsMTMgQEAgSlNWYWx1
ZSBKU0luamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJl
dHVybiByZXN1bHQ7CiB9CiAKK0pTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnNldEZ1bmN0
aW9uVmFyaWFibGVWYWx1ZShKU0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBGSVhNRTog
aW1wbGVtZW50IHRoaXMuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDc4MzAKKyAgICB0aHJvd0Vycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVmFyaWFi
bGUgdmFsdWUgbXV0YXRpb24gaXMgbm90IHN1cHBvcnRlZCIpKTsKKyAgICByZXR1cm4ganNVbmRl
ZmluZWQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2
YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0phdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwCmluZGV4IGEwNjgwODRhZmRmZTgwMzFjYmQ1
ZmMzMGYzYWNiZjg3ZjhlZDc1ZTcuLmUxZGQ3Yzc0MWFjZDAxODI5NmI3MzVhZjExODNiNzE5MDgy
ZDYyODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlw
dENhbGxGcmFtZUN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNK
YXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApAQCAtMTMwLDYgKzEzMCwxMyBAQCBKU1ZhbHVl
IEpTSmF2YVNjcmlwdENhbGxGcmFtZTo6c2NvcGVUeXBlKEV4ZWNTdGF0ZSogZXhlYykKICAgICBy
ZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAorSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6
OnNldFZhcmlhYmxlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gRklYTUU6
IGltcGxlbWVudCB0aGlzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA3ODMwCisgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlZhcmlh
YmxlIHZhbHVlIG11dGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiKSk7CisgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvRGVidWdnZXJTY3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1
Z2dlclNjcmlwdC5qcwppbmRleCAxNjkxZjU1ZTY0MmJmMjBlODhiZjBiYTQxNGI4Zjc2ZjRmYWRk
MjcyLi40MWE0Yzk3OGUxNmNiZDZjMjRmNGMyOTQ3ZjdlNDk1MzFmMjNmNWNjIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qcworKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qcwpAQCAtOTMsNiArOTMsMjUg
QEAgRGVidWdnZXJTY3JpcHQuZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzID0gZnVuY3Rpb24odmFsdWUp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorRGVidWdnZXJTY3JpcHQuc2V0RnVuY3Rpb25WYXJp
YWJsZVZhbHVlID0gZnVuY3Rpb24oZnVuY3Rpb25WYWx1ZSwgc2NvcGVJbmRleCwgdmFyaWFibGVO
YW1lLCBuZXdWYWx1ZSkKK3sKKyAgICB2YXIgbWlycm9yID0gTWFrZU1pcnJvcihmdW5jdGlvblZh
bHVlKTsKKyAgICBpZiAoIW1pcnJvci5pc0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgdGhyb3cgbmV3
IEVycm9yKCJGdW5jdGlvbiB2YWx1ZSBoYXMgaW5jb3JyZWN0IHR5cGUiKTsKKyAgICB9CisgICAg
cmV0dXJuIERlYnVnZ2VyU2NyaXB0Ll9zZXRTY29wZVZhcmlhYmxlVmFsdWUobWlycm9yLCBzY29w
ZUluZGV4LCB2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKTsKK30KKworRGVidWdnZXJTY3JpcHQuX3Nl
dFNjb3BlVmFyaWFibGVWYWx1ZSA9IGZ1bmN0aW9uKHNjb3BlSG9sZGVyLCBzY29wZUluZGV4LCB2
YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKQoreworICAgIHZhciBzY29wZU1pcnJvciA9IHNjb3BlSG9s
ZGVyLnNjb3BlKHNjb3BlSW5kZXgpOworICAgIGlmICghc2NvcGVNaXJyb3IpIHsKKyAgICAgICAg
dGhyb3cgbmV3IEVycm9yKCJJbmNvcnJlY3Qgc2NvcGUgaW5kZXgiKTsKKyAgICB9CisgICAgc2Nv
cGVNaXJyb3Iuc2V0VmFyaWFibGVWYWx1ZSh2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKTsKKyAgICBy
ZXR1cm4gdW5kZWZpbmVkOworfQorCiBEZWJ1Z2dlclNjcmlwdC5nZXRTY3JpcHRzID0gZnVuY3Rp
b24oY29udGV4dERhdGEpCiB7CiAgICAgdmFyIHJlc3VsdCA9IFtdOwpAQCAtMjk1LDYgKzMxNCwx
MSBAQCBEZWJ1Z2dlclNjcmlwdC5fZnJhbWVNaXJyb3JUb0pTQ2FsbEZyYW1lID0gZnVuY3Rpb24o
ZnJhbWVNaXJyb3IsIGNhbGxlckZyYW1lKQogICAgICAgICByZXR1cm4gRGVidWcuTGl2ZUVkaXQu
UmVzdGFydEZyYW1lKGZyYW1lTWlycm9yKTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiBzZXRWYXJp
YWJsZVZhbHVlKHNjb3BlTnVtYmVyLCB2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIERlYnVnZ2VyU2NyaXB0Ll9zZXRTY29wZVZhcmlhYmxlVmFsdWUoZnJhbWVN
aXJyb3IsIHNjb3BlTnVtYmVyLCB2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKTsKKyAgICB9CisKICAg
ICByZXR1cm4gewogICAgICAgICAic291cmNlSUQiOiBzb3VyY2VJRCwKICAgICAgICAgImxpbmUi
OiBsb2NhdGlvbiA/IGxvY2F0aW9uLmxpbmUgOiAwLApAQCAtMzA1LDcgKzMyOSw4IEBAIERlYnVn
Z2VyU2NyaXB0Ll9mcmFtZU1pcnJvclRvSlNDYWxsRnJhbWUgPSBmdW5jdGlvbihmcmFtZU1pcnJv
ciwgY2FsbGVyRnJhbWUpCiAgICAgICAgICJzY29wZVR5cGUiOiBzY29wZVR5cGUsCiAgICAgICAg
ICJldmFsdWF0ZSI6IGV2YWx1YXRlLAogICAgICAgICAiY2FsbGVyIjogY2FsbGVyRnJhbWUsCi0g
ICAgICAgICJyZXN0YXJ0IjogcmVzdGFydAorICAgICAgICAicmVzdGFydCI6IHJlc3RhcnQsCisg
ICAgICAgICJzZXRWYXJpYWJsZVZhbHVlIjogc2V0VmFyaWFibGVWYWx1ZQogICAgIH07CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJh
bWUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5j
cHAKaW5kZXggMzE1MDM2ODEzMTViM2RhNTg2NTIyYTVhOTQzZDliZTcxMjRkN2U2Mi4uY2M5YTJh
YzM3MDk5MGMzOWZlMGYxNjE0MjQ2OGMwMTEwYzM5ZGI4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTEzNCw2ICsxMzQs
MTcgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IEphdmFTY3JpcHRDYWxsRnJhbWU6OnJlc3RhcnQo
KQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBKYXZhU2Ny
aXB0Q2FsbEZyYW1lOjpzZXRWYXJpYWJsZVZhbHVlKGludCBzY29wZU51bWJlciwgY29uc3QgU3Ry
aW5nJiB2YXJpYWJsZU5hbWUsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuZXdWYWx1ZSkKK3sKKyAg
ICB2ODo6SGFuZGxlPHY4OjpGdW5jdGlvbj4gc2V0VmFyaWFibGVWYWx1ZUZ1bmN0aW9uID0gdjg6
OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0KG1fY2FsbEZyYW1lLmdldCgpLT5HZXQodjg6OlN0
cmluZzo6TmV3U3ltYm9sKCJzZXRWYXJpYWJsZVZhbHVlIikpKTsKKyAgICB2ODo6SGFuZGxlPHY4
OjpWYWx1ZT4gYXJndltdID0geworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6Oklu
dGVnZXI6Ok5ldyhzY29wZU51bWJlcikpLAorICAgICAgICBkZXByZWNhdGVkVjhTdHJpbmcodmFy
aWFibGVOYW1lKSwKKyAgICAgICAgbmV3VmFsdWUKKyAgICB9OworICAgIHJldHVybiBzZXRWYXJp
YWJsZVZhbHVlRnVuY3Rpb24tPkNhbGwobV9jYWxsRnJhbWUuZ2V0KCksIDMsIGFyZ3YpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3Jp
cHRDYWxsRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxs
RnJhbWUuaAppbmRleCAzMTMxNzA5MGUzN2NhMjA2NzkzMTlkMDhiYTQwOGEwNzBlNDRiNzhiLi5h
N2UzZGIxZTNkMTM5NmZjNDAyZjExNGFmYjllOWI5ODFlZjI2ZWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5oCkBAIC02MSw2ICs2MSw3
IEBAIHB1YmxpYzoKICAgICAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXZhbHVhdGUoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdGFy
dCgpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRWYXJpYWJsZVZhbHVlKGludCBzY29w
ZU51bWJlciwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBuZXdWYWx1ZSk7CiAgICAgCiBwcml2YXRlOgogICAgIEphdmFTY3JpcHRDYWxsRnJhbWUodjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gZGVidWdnZXJDb250ZXh0LCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNhbGxGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKaW5kZXggN2NmYzI1OTk4YzgzYmI3NjVjZWQ4MTMyM2ExY2M4M2RlZjAx
NDJhMS4uMmU1NzAzZGU4NmYyMjIxOTc0NWVmYWY2NzgwMzM5ZGM2YmU3ZDc3MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNTU1
LDYgKzU1NSwyMCBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6Z2V0
SW50ZXJuYWxQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iagogICAgIHJldHVybiBjYWxsRGVi
dWdnZXJNZXRob2QoImdldEludGVybmFsUHJvcGVydGllcyIsIDEsIGFyZ3YpOwogfQogCit2ODo6
TG9jYWw8djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0RnVuY3Rpb25WYXJpYWJsZVZh
bHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmdW5jdGlvblZhbHVlLCBpbnQgc2NvcGVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmV3VmFs
dWUpCit7CisgICAgaWYgKG1fZGVidWdnZXJTY3JpcHQuZ2V0KCkuSXNFbXB0eSgpKQorICAgICAg
ICByZXR1cm4gKnY4OjpVbmRlZmluZWQoKTsKKworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBh
cmd2W10gPSB7CisgICAgICAgIGZ1bmN0aW9uVmFsdWUsCisgICAgICAgIHY4OjpIYW5kbGU8djg6
OlZhbHVlPih2ODo6SW50ZWdlcjo6TmV3KHNjb3BlTnVtYmVyKSksCisgICAgICAgIGRlcHJlY2F0
ZWRWOFN0cmluZyh2YXJpYWJsZU5hbWUpLAorICAgICAgICBuZXdWYWx1ZQorICAgIH07CisgICAg
cmV0dXJuIGNhbGxEZWJ1Z2dlck1ldGhvZCgic2V0RnVuY3Rpb25WYXJpYWJsZVZhbHVlIiwgNCwg
YXJndik7Cit9CisKIAogYm9vbCBTY3JpcHREZWJ1Z1NlcnZlcjo6aXNQYXVzZWQoKQogewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggYWVm
ZTJlYmJjMzcwNzljMDliYzlhMDY1MTBhOGNiMGJmZjRhYjZkNy4uN2RjMDFmMjljZTZkMTVhZjNk
ZDYzYjNjZTQ1Y2NjOTRiY2Y1ODI3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9TY3JpcHREZWJ1Z1NlcnZlci5oCkBAIC0xMDEsNiArMTAxLDggQEAgcHVibGljOgogCiAgICAg
djg6OkxvY2FsPHY4OjpWYWx1ZT4gZnVuY3Rpb25TY29wZXModjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+KTsKICAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBnZXRJbnRlcm5hbFByb3BlcnRpZXModjg6
OkhhbmRsZTx2ODo6T2JqZWN0PiYpOworICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHNldEZ1bmN0
aW9uVmFyaWFibGVWYWx1ZSh2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZnVuY3Rpb25WYWx1ZSwgaW50
IHNjb3BlTnVtYmVyLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwgdjg6OkhhbmRsZTx2ODo6
VmFsdWU+IG5ld1ZhbHVlKTsKKwogCiAgICAgdmlydHVhbCB2b2lkIGNvbXBpbGVTY3JpcHQoU2Ny
aXB0U3RhdGUqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNl
VVJMLCBTdHJpbmcqIHNjcmlwdElkLCBTdHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2UpOwogICAgIHZp
cnR1YWwgdm9pZCBjbGVhckNvbXBpbGVkU2NyaXB0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1
c3RvbS5jcHAKaW5kZXggMWI3N2YzZjQ3YTk0ZDZkYjAxYTk3MjM0NGUyOWMzMDk5NjhhMjY2MC4u
YTk5OGU0MjkyNDMwODFlM2U5MzRhMDliZDgxNTdmNzNlOTE4NTE3ZiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNj
cmlwdEhvc3RDdXN0b20uY3BwCkBAIC0zMjEsNiArMzIxLDE5IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6ZXZhbHVhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJn
dW1lbnRzCiAgICAgcmV0dXJuIHNjcmlwdC0+UnVuKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZh
bHVlPiBWOEluamVjdGVkU2NyaXB0SG9zdDo6c2V0RnVuY3Rpb25WYXJpYWJsZVZhbHVlQ2FsbGJh
Y2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1
ZT4gZnVuY3Rpb25WYWx1ZSA9IGFyZ3NbMF07CisgICAgaW50IHNjb3BlSW5kZXggPSBhcmdzWzFd
LT5JbnQzMlZhbHVlKCk7CisgICAgU3RyaW5nIHZhcmlhYmxlTmFtZSA9IHRvV2ViQ29yZVN0cmlu
Z1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhhcmdzWzJdKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpW
YWx1ZT4gbmV3VmFsdWUgPSBhcmdzWzNdOworCisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0
ID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIFNj
cmlwdERlYnVnU2VydmVyJiBkZWJ1Z1NlcnZlciA9IGhvc3QtPnNjcmlwdERlYnVnU2VydmVyKCk7
CisgICAgcmV0dXJuIGRlYnVnU2VydmVyLnNldEZ1bmN0aW9uVmFyaWFibGVWYWx1ZShmdW5jdGlv
blZhbHVlLCBzY29wZUluZGV4LCB2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKTsKK30KKworCiB9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxG
cmFtZUN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZh
U2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcAppbmRleCBlMDg3NGIyZDljOTU3YjM5MWNkMjJlZjZh
MmM3MjhjNTY1NWY0ODZhLi43Y2IyODllODFlOGE4Njc2ZjA0YTJhNzhhMDc1OTczZjI2ZjNhMTUw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZhU2Ny
aXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9j
dXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcApAQCAtNTAsNiArNTAsMTUgQEAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydENhbGxi
YWNrKGNvbnN0IHY4OjpBcmd1bWVudHMKICAgICByZXR1cm4gaW1wbC0+cmVzdGFydCgpOwogfQog
Cit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzZXRWYXJpYWJs
ZVZhbHVlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBKYXZhU2Ny
aXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShhcmdz
LkhvbGRlcigpKTsKKyAgICBpbnQgc2NvcGVJbmRleCA9IGFyZ3NbMF0tPkludDMyVmFsdWUoKTsK
KyAgICBTdHJpbmcgdmFyaWFibGVOYW1lID0gdG9XZWJDb3JlU3RyaW5nV2l0aFVuZGVmaW5lZE9y
TnVsbENoZWNrKGFyZ3NbMV0pOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuZXdWYWx1ZSA9
IGFyZ3NbMl07CisgICAgcmV0dXJuIGltcGwtPnNldFZhcmlhYmxlVmFsdWUoc2NvcGVJbmRleCwg
dmFyaWFibGVOYW1lLCBuZXdWYWx1ZSk7Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEph
dmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlQ2hhaW5BY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6
OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBKYXZh
U2NyaXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShp
bmZvLkhvbGRlcigpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQu
Y3BwCmluZGV4IDUzZjEzZTAzM2MxMTI2NDE4M2EyOWE3NzJlMDU2MmY1OGViOTIxZGQuLmFiZmRm
NTE0ZjNjN2I2MjlmMjgzOWE0MzUxM2JlOThhYzk4M2Y2ZDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcApAQCAtMTE2LDYgKzExNiwzNCBAQCB2b2lkIElu
amVjdGVkU2NyaXB0OjpyZXN0YXJ0RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTY3JpcHRWYWx1ZSYgYwogICAgICplcnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciI7CiB9
CiAKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6OnNldFZhcmlhYmxlVmFsdWUoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5nKiBj
YWxsRnJhbWVJZE9wdCwgY29uc3QgU3RyaW5nKiBmdW5jdGlvbk9iamVjdElkT3B0LCBpbnQgc2Nv
cGVOdW1iZXIsIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcmIG5ld1Zh
bHVlU3RyKQoreworICAgIFNjcmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlw
dE9iamVjdCgpLCAic2V0VmFyaWFibGVWYWx1ZSIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3Vt
ZW50KGNhbGxGcmFtZXMpOworICAgIGlmIChjYWxsRnJhbWVJZE9wdCkKKyAgICAgICAgZnVuY3Rp
b24uYXBwZW5kQXJndW1lbnQoKmNhbGxGcmFtZUlkT3B0KTsKKyAgICBlbHNlCisgICAgICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZhbHNlKTsKKyAgICBpZiAoZnVuY3Rpb25PYmplY3RJZE9w
dCkKKyAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoKmZ1bmN0aW9uT2JqZWN0SWRPcHQp
OworICAgIGVsc2UKKyAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQoZmFsc2UpOworICAg
IGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHNjb3BlTnVtYmVyKTsKKyAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudCh2YXJpYWJsZU5hbWUpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KG5l
d1ZhbHVlU3RyKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHJlc3VsdFZhbHVlOworICAg
IG1ha2VDYWxsKGZ1bmN0aW9uLCAmcmVzdWx0VmFsdWUpOworICAgIGlmICghcmVzdWx0VmFsdWUp
IHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkludGVybmFsIGVycm9yIjsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKyAgICBpZiAocmVzdWx0VmFsdWUtPnR5cGUoKSA9PSBJbnNwZWN0b3JWYWx1
ZTo6VHlwZVN0cmluZykgeworICAgICAgICByZXN1bHRWYWx1ZS0+YXNTdHJpbmcoZXJyb3JTdHJp
bmcpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIC8vIE5vcm1hbCByZXR1cm4uCit9CisK
IHZvaWQgSW5qZWN0ZWRTY3JpcHQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEZ1bmN0aW9uRGV0YWls
cz4qIHJlc3VsdCkKIHsKICAgICBTY3JpcHRGdW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRT
Y3JpcHRPYmplY3QoKSwgImdldEZ1bmN0aW9uRGV0YWlscyIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAppbmRleCBkZDljMjk5MjBhOGQzNDRjODcwM2JjY2ZmODQ1
ODNjODZhMzQxYWUxLi5mY2VjOGZkOWVmZDBkODM5MDc4MDFjY2YzN2E4NzBjZjFiNjg1MzgyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuaApAQCAtODAsNiArODAs
NyBAQCBwdWJsaWM6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlZlB0cjxUeXBlQnVp
bGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiogcmVzdWx0LAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAg
IHZvaWQgcmVzdGFydEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxG
cmFtZXMsIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
KiByZXN1bHQpOworICAgIHZvaWQgc2V0VmFyaWFibGVWYWx1ZShFcnJvclN0cmluZyosIGNvbnN0
IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcqIGNhbGxGcmFtZUlkT3B0LCBj
b25zdCBTdHJpbmcqIGZ1bmN0aW9uT2JqZWN0SWRPcHQsIGludCBzY29wZU51bWJlciwgY29uc3Qg
U3RyaW5nJiB2YXJpYWJsZU5hbWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWVTdHIpOwogICAgIHZv
aWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmdW5jdGlv
bklkLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+KiByZXN1
bHQpOwogICAgIHZvaWQgZ2V0UHJvcGVydGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQsIGJvb2wgb3duUHJvcGVydGllcywgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxU
eXBlQnVpbGRlcjo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlwdG9yPiA+KiByZXN1bHQpOwogICAg
IHZvaWQgZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBv
YmplY3RJZCwgUmVmUHRyPFR5cGVCdWlsZGVyOjpBcnJheTxUeXBlQnVpbGRlcjo6UnVudGltZTo6
SW50ZXJuYWxQcm9wZXJ0eURlc2NyaXB0b3I+ID4qIHJlc3VsdCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdEhvc3QuaWRsCmluZGV4IDg4M2I1ZmZkMTEyYTU5
NDM4MjJlMjhjNTM4NmU5MDJiNDBlNDkxNDIuLmRhNWJiZmFlNTkwMTc5NTExZmM4NmI4ODk5MWU5
YTE3NjNlMTEyODkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdEhvc3QuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdEhvc3QuaWRsCkBAIC00OCw0ICs0OCw1IEBACiAgICAgW0N1c3RvbV0gRE9NU3RyaW5nIGRh
dGFiYXNlSWQoaW4gRE9NT2JqZWN0IGRhdGFiYXNlKTsKICAgICBbQ3VzdG9tXSBET01TdHJpbmcg
c3RvcmFnZUlkKGluIERPTU9iamVjdCBzdG9yYWdlKTsKICAgICBbQ3VzdG9tXSBET01PYmplY3Qg
ZXZhbHVhdGUoaW4gRE9NU3RyaW5nIHRleHQpOworICAgIFtDdXN0b21dIERPTU9iamVjdCBzZXRG
dW5jdGlvblZhcmlhYmxlVmFsdWUoaW4gRE9NT2JqZWN0IGZ1bmN0aW9uT2JqZWN0LCBpbiBpbnQg
c2NvcGVJbmRleCwgaW4gRE9NU3RyaW5nIHZhcmlhYmxlTmFtZSwgRE9NT2JqZWN0IG5ld1ZhbHVl
KTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3Jp
cHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3Vy
Y2UuanMKaW5kZXggMTgxMjAxODRiZmU3NDg2M2I0N2I0NDRhZGUyYTMwNWEzNWUzMzdmYy4uNjhi
MjhmOTY3YWVjNzI3YTIxOTIwNGMyNGQ2ZGMxMTk2YTY3OWI1NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtNDI3LDIxICs0Mjcs
MTMgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIHJlc29s
dmVkQXJncyA9IFtdOwogICAgICAgICAgICAgYXJncyA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFs
dWF0ZShhcmdzKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7
ICsraSkgewotICAgICAgICAgICAgICAgIG9iamVjdElkID0gYXJnc1tpXS5vYmplY3RJZDsKLSAg
ICAgICAgICAgICAgICBpZiAob2JqZWN0SWQpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIHBh
cnNlZEFyZ0lkID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmplY3RJZCk7Ci0gICAgICAgICAgICAg
ICAgICAgIGlmICghcGFyc2VkQXJnSWQgfHwgcGFyc2VkQXJnSWRbImluamVjdGVkU2NyaXB0SWQi
XSAhPT0gaW5qZWN0ZWRTY3JpcHRJZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAi
QXJndW1lbnRzIHNob3VsZCBiZWxvbmcgdG8gdGhlIHNhbWUgSmF2YVNjcmlwdCB3b3JsZCBhcyB0
aGUgdGFyZ2V0IG9iamVjdC4iOwotCi0gICAgICAgICAgICAgICAgICAgIHZhciByZXNvbHZlZEFy
ZyA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZEFyZ0lkKTsKLSAgICAgICAgICAgICAgICAgICAg
aWYgKCF0aGlzLl9pc0RlZmluZWQocmVzb2x2ZWRBcmcpKQotICAgICAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuICJDb3VsZCBub3QgZmluZCBvYmplY3Qgd2l0aCBnaXZlbiBpZCI7Ci0KLSAgICAg
ICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmdzLnB1c2gocmVzb2x2ZWRBcmcpOwotICAgICAgICAg
ICAgICAgIH0gZWxzZSBpZiAoInZhbHVlIiBpbiBhcmdzW2ldKQotICAgICAgICAgICAgICAgICAg
ICByZXNvbHZlZEFyZ3MucHVzaChhcmdzW2ldLnZhbHVlKTsKLSAgICAgICAgICAgICAgICBlbHNl
Ci0gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJncy5wdXNoKHVuZGVmaW5lZCk7CisgICAg
ICAgICAgICAgICAgdmFyIHJlc29sdmVkQ2FsbEFyZ3VtZW50OworICAgICAgICAgICAgICAgIHRy
eSB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ2FsbEFyZ3VtZW50ID0gdGhpcy5fcmVz
b2x2ZUNhbGxBcmd1bWVudChhcmdzW2ldKTsKKyAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoZSk7CisgICAgICAgICAgICAgICAg
fQorICAgICAgICAgICAgICAgIHJlc29sdmVkQXJncy5wdXNoKHJlc29sdmVkQ2FsbEFyZ3VtZW50
KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTQ1Nyw2ICs0NDksMzAgQEAgSW5qZWN0
ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2NyZWF0ZVRo
cm93blZhbHVlKGUsIG9iamVjdEdyb3VwKTsKICAgICAgICAgfQogICAgIH0sCisgICAgCisgICAg
LyoqCisgICAgICogUmVzb2x2ZXMgYSB2YWx1ZSBmcm9tIENhbGxBcmd1bWVudCBkZXNjcmlwdGlv
bi4KKyAgICAgKiBAcGFyYW0ge1J1bnRpbWVBZ2VudC5DYWxsQXJndW1lbnR9IGNhbGxBcmd1bWVu
dEpzb24KKyAgICAgKiBAcmV0dXJuIHsqfSByZXNvbHZlZCB2YWx1ZQorICAgICAqIEB0aHJvdyB7
c3RyaW5nfSBlcnJvciBtZXNzYWdlCisgICAgICovCisgICAgX3Jlc29sdmVDYWxsQXJndW1lbnQ6
IGZ1bmN0aW9uKGNhbGxBcmd1bWVudEpzb24pIHsKKyAgICAgICAgdmFyIG9iamVjdElkID0gY2Fs
bEFyZ3VtZW50SnNvbi5vYmplY3RJZDsKKyAgICAgICAgaWYgKG9iamVjdElkKSB7CisgICAgICAg
ICAgICB2YXIgcGFyc2VkQXJnSWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKKyAg
ICAgICAgICAgIGlmICghcGFyc2VkQXJnSWQgfHwgcGFyc2VkQXJnSWRbImluamVjdGVkU2NyaXB0
SWQiXSAhPT0gaW5qZWN0ZWRTY3JpcHRJZCkKKyAgICAgICAgICAgICAgICB0aHJvdyAiQXJndW1l
bnRzIHNob3VsZCBiZWxvbmcgdG8gdGhlIHNhbWUgSmF2YVNjcmlwdCB3b3JsZCBhcyB0aGUgdGFy
Z2V0IG9iamVjdC4iOworCisgICAgICAgICAgICB2YXIgcmVzb2x2ZWRBcmcgPSB0aGlzLl9vYmpl
Y3RGb3JJZChwYXJzZWRBcmdJZCk7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2lzRGVmaW5lZChy
ZXNvbHZlZEFyZykpCisgICAgICAgICAgICAgICAgdGhyb3cgIkNvdWxkIG5vdCBmaW5kIG9iamVj
dCB3aXRoIGdpdmVuIGlkIjsKKworICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVkQXJnOworICAg
ICAgICB9IGVsc2UgaWYgKCJ2YWx1ZSIgaW4gY2FsbEFyZ3VtZW50SnNvbikKKyAgICAgICAgICAg
IHJldHVybiBjYWxsQXJndW1lbnRKc29uLnZhbHVlOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICByZXR1cm4gdW5kZWZpbmVkOworICAgIH0sCiAKICAgICAvKioKICAgICAgKiBAcGFyYW0ge0Z1
bmN0aW9ufSBldmFsRnVuY3Rpb24KQEAgLTU3Niw2ICs1OTIsNDYgQEAgSW5qZWN0ZWRTY3JpcHQu
cHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBFaXRoZXIgY2FsbEZyYW1l
SWQgb3IgZnVuY3Rpb25PYmplY3RJZCBtdXN0IGJlIHNwZWNpZmllZC4KKyAgICAgKiBAcGFyYW0g
e09iamVjdH0gdG9wQ2FsbEZyYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd8Ym9vbGVhbn0gY2Fs
bEZyYW1lSWQgb3IgZmFsc2UKKyAgICAgKiBAcGFyYW0ge3N0cmluZ3xib29sZWFufSBmdW5jdGlv
bk9iamVjdElkIG9yIGZhbHNlCisgICAgICogQHBhcmFtIHtpbnRlZ2VyfSBzY29wZU51bWJlcgor
ICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YXJpYWJsZU5hbWUKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gbmV3VmFsdWVKc29uU3RyaW5nIFJ1bnRpbWVBZ2VudC5DYWxsQXJndW1lbnQgc3RydWN0dXJl
IHNlcmlhbGl6ZWQgYXMgc3RyaW5nIAorICAgICAqIEByZXR1cm4ge3N0cmluZ3x1bmRlZmluZWR9
IHVuZGVmaW5lZCBpZiBzdWNjZXNzIG9yIGFuIGVycm9yIG1lc3NhZ2UgCisgICAgICovCisgICAg
c2V0VmFyaWFibGVWYWx1ZTogZnVuY3Rpb24odG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCwgZnVu
Y3Rpb25PYmplY3RJZCwgc2NvcGVOdW1iZXIsIHZhcmlhYmxlTmFtZSwgbmV3VmFsdWVKc29uU3Ry
aW5nKQorICAgIHsKKyAgICAgICAgdmFyIHNldHRlcjsKKyAgICAgICAgaWYgKGNhbGxGcmFtZUlk
KSB7CisgICAgICAgICAgICB2YXIgY2FsbEZyYW1lID0gdGhpcy5fY2FsbEZyYW1lRm9ySWQodG9w
Q2FsbEZyYW1lLCBjYWxsRnJhbWVJZCk7CisgICAgICAgICAgICBpZiAoIWNhbGxGcmFtZSkKKyAg
ICAgICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIGNhbGwgZnJhbWUgd2l0aCBnaXZl
biBpZCI7CisgICAgICAgICAgICBzZXR0ZXIgPSBjYWxsRnJhbWUuc2V0VmFyaWFibGVWYWx1ZS5i
aW5kKGNhbGxGcmFtZSk7ICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgdmFyIHBh
cnNlZEZ1bmN0aW9uSWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKGZ1bmN0aW9uT2JqZWN0SWQpOwor
ICAgICAgICAgICAgdmFyIGZ1bmMgPSB0aGlzLl9vYmplY3RGb3JJZChwYXJzZWRGdW5jdGlvbklk
KTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0gImZ1bmN0aW9uIikKKyAgICAgICAg
ICAgICAgICByZXR1cm4gIkNhbm5vdCByZXNvbHZlIGZ1bmN0aW9uIGJ5IGlkLiI7CisgICAgICAg
ICAgICBzZXR0ZXIgPSBJbmplY3RlZFNjcmlwdEhvc3Quc2V0RnVuY3Rpb25WYXJpYWJsZVZhbHVl
LmJpbmQoSW5qZWN0ZWRTY3JpcHRIb3N0LCBmdW5jKTsgCisgICAgICAgIH0KKyAgICAgICAgdmFy
IG5ld1ZhbHVlSnNvbiA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZShuZXdWYWx1ZUpzb25T
dHJpbmcpOworICAgICAgICB2YXIgcmVzb2x2ZWRWYWx1ZTsKKyAgICAgICAgdHJ5IHsKKyAgICAg
ICAgICAgIHJlc29sdmVkVmFsdWUgPSB0aGlzLl9yZXNvbHZlQ2FsbEFyZ3VtZW50KG5ld1ZhbHVl
SnNvbikKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhl
KTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAgICAgc2V0dGVyKHNjb3BlTnVt
YmVyLCB2YXJpYWJsZU5hbWUsIHJlc29sdmVkVmFsdWUpOworICAgICAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgICAgICByZXR1cm4gIkZhaWxlZCB0byBjaGFuZ2UgdmFyaWFibGUgdmFsdWU6ICIg
KyBlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgfSwKKworICAg
IC8qKgogICAgICAqIEBwYXJhbSB7T2JqZWN0fSB0b3BDYWxsRnJhbWUKICAgICAgKiBAcGFyYW0g
e3N0cmluZ30gY2FsbEZyYW1lSWQKICAgICAgKiBAcmV0dXJuIHtPYmplY3R9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggZDIyZmYwZTAyNTUxYWNlMjUzMTA3OTU3
MGIwNTA2YTlmMzc4MzQxZS4uZTY5M2Y2Y2QyYTYxYzc5M2JlNGYwZjY2MDEyYjJmOWE4MDA5ZGUx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtMjgzOCw2ICsy
ODM4LDE4IEBACiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAgICAgICAgICAiaGlkZGVuIjog
dHJ1ZSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiU2V0cyBvdmVybGF5IG1lc3Nh
Z2UuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAibmFt
ZSI6ICJzZXRWYXJpYWJsZVZhbHVlIiwKKyAgICAgICAgICAgICAgICAicGFyYW1ldGVycyI6IFsK
KyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxsRnJhbWVJZCIsICIkcmVmIjogIkNh
bGxGcmFtZUlkIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIklkIG9mIGNhbGxm
cmFtZSB0aGF0IGhvbGRzIHZhcmlhYmxlLiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFt
ZSI6ICJmdW5jdGlvbk9iamVjdElkIiwgIiRyZWYiOiAiUnVudGltZS5SZW1vdGVPYmplY3RJZCIs
ICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJPYmplY3QgaWQgb2YgY2xvc3VyZSAo
ZnVuY3Rpb24pIHRoYXQgaG9sZHMgdmFyaWFibGUuIiB9LAorICAgICAgICAgICAgICAgICAgICB7
ICJuYW1lIjogInNjb3BlTnVtYmVyIiwgInR5cGUiOiAiaW50ZWdlciIsICJkZXNjcmlwdGlvbiI6
ICIwLWJhc2VkIG51bWJlciBvZiBzY29wZSBhcyB3YXMgbGlzdGVkIGluIHNjb3BlIGNoYWluLiBP
bmx5ICdsb2NhbCcsICdjbG9zdXJlJyBhbmQgJ2NhdGNoJyBzY29wZSB0eXBlcyBhcmUgYWxsb3dl
ZC4gT3RoZXIgc2NvcGVzIGNvdWxkIGJlIG1hbmlwdWxhdGVkIG1hbnVhbGx5LiIgfSwKKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2YXJpYWJsZU5hbWUiLCAidHlwZSI6ICJzdHJpbmci
LCAiZGVzY3JpcHRpb24iOiAiVmFyaWFibGUgbmFtZS4iIH0sCisgICAgICAgICAgICAgICAgICAg
IHsgIm5hbWUiOiAibmV3VmFsdWUiLCAiJHJlZiI6ICJSdW50aW1lLkNhbGxBcmd1bWVudCIsICJk
ZXNjcmlwdGlvbiI6ICJOZXcgdmFyaWFibGUgdmFsdWUuIiB9CisgICAgICAgICAgICAgICAgXSwK
KyAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKKyAgICAgICAgICAgICAgICAiZGVzY3Jp
cHRpb24iOiAiQ2hhbmdlcyB2YWx1ZSBvZiB2YXJpYWJsZSBpbiBhIGNhbGxmcmFtZSBvciBhIGNs
b3N1cmUuIEVpdGhlciBjYWxsZnJhbWUgb3IgZnVuY3Rpb24gbXVzdCBiZSBzcGVjaWZpZWQuIE9i
amVjdC1iYXNlZCBzY29wZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYW5kIG11c3QgYmUgbXV0YXRlZCBt
YW51YWxseS4iCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAgICAgICAgICJldmVudHMiOiBb
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKaW5kZXggZDU2ZTliZjIzMmEzNWI1MGM1NmU2MjlkYzA4YzkzOTgxNGM2MGUxYy4uMGY4
ZmFiMjA0M2EwZTAwYzg4Y2UxZDE3MDI2NWNkMTJkNzkzY2ZjZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtNDExLDcg
KzQxMSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Z2V0RnVuY3Rpb25EZXRhaWxz
KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QKIHsKICAgICBJbmplY3RlZFNjcmlwdCBp
bmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZv
ck9iamVjdElkKGZ1bmN0aW9uSWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVl
KCkpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSI7
CisgICAgICAgICplcnJvclN0cmluZyA9ICJGdW5jdGlvbiBvYmplY3QgaWQgaXMgb2Jzb2xldGUi
OwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGluamVjdGVkU2NyaXB0LmdldEZ1bmN0aW9u
RGV0YWlscyhlcnJvclN0cmluZywgZnVuY3Rpb25JZCwgJmRldGFpbHMpOwpAQCAtNTgwLDYgKzU4
MCwzMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldE92ZXJsYXlNZXNzYWdlKEVy
cm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKikKIHsKIH0KIAordm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRWYXJpYWJsZVZhbHVlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nKiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nKiBmdW5jdGlvbk9iamVjdElkLCBpbnQg
c2NvcGVOdW1iZXIsIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYgbmV3VmFsdWUpCit7CisgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRT
Y3JpcHQ7CisgICAgaWYgKGNhbGxGcmFtZUlkKSB7CisgICAgICAgIGluamVjdGVkU2NyaXB0ID0g
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoKmNhbGxG
cmFtZUlkKTsKKyAgICAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgeworICAg
ICAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSI7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2UgaWYgKGZ1bmN0aW9uT2JqZWN0
SWQpIHsKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+
aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZCgqZnVuY3Rpb25PYmplY3RJZCk7CisgICAgICAgIGlm
IChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKKyAgICAgICAgICAgICplcnJvclN0cmlu
ZyA9ICJGdW5jdGlvbiBvYmplY3QgaWQgaXMgb2Jzb2xldGUiOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkVpdGhl
ciBjYWxsIGZyYW1lIG9yIGZ1bmN0aW9uIG9iamVjdCBtdXN0IGJlIHNwZWNpZmllZCI7CisgICAg
ICAgIHJldHVybjsKKyAgICB9CisgICAgU3RyaW5nIG5ld1ZhbHVlU3RyID0gbmV3VmFsdWUtPnRv
SlNPTlN0cmluZygpOworCisgICAgaW5qZWN0ZWRTY3JpcHQuc2V0VmFyaWFibGVWYWx1ZShlcnJv
clN0cmluZywgbV9jdXJyZW50Q2FsbFN0YWNrLCBjYWxsRnJhbWVJZCwgZnVuY3Rpb25PYmplY3RJ
ZCwgc2NvcGVOdW1iZXIsIHZhcmlhYmxlTmFtZSwgbmV3VmFsdWVTdHIpOworfQorCiB2b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRCeUNTUChjb25zdCBT
dHJpbmcmIGRpcmVjdGl2ZVRleHQpCiB7CiAgICAgaWYgKHNjcmlwdERlYnVnU2VydmVyKCkucGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9IFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4
Y2VwdGlvbnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oCmluZGV4IDg0ODhmNTNkMWVkYWVlZTdmODc5Njg4Yjc4YzA4ZmZkMDI4OTgw
ZDguLjc0ODZkMTljYTFlMmNjOTU3M2JmZGU3ZDdiOGQxMzk4YjkxNGVlNTYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtMTEz
LDYgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNvbXBpbGVTY3JpcHQoRXJyb3JTdHJpbmcq
LCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBUeXBl
QnVpbGRlcjo6T3B0T3V0cHV0PFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6U2NyaXB0SWQ+KiwgVHlw
ZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBzeW50YXhFcnJvck1lc3NhZ2UpOwogICAgIHZv
aWQgcnVuU2NyaXB0KEVycm9yU3RyaW5nKiwgY29uc3QgVHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpT
Y3JpcHRJZCYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBjb25zdCBTdHJpbmcqIG9i
amVjdEdyb3VwLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBU
eXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pOwogICAgIHZpcnR1YWwgdm9p
ZCBzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyopOworICAgIHZp
cnR1YWwgdm9pZCBzZXRWYXJpYWJsZVZhbHVlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKiBp
bl9jYWxsRnJhbWUsIGNvbnN0IFN0cmluZyogaW5fZnVuY3Rpb25PYmplY3RJZCwgaW50IGluX3Nj
b3BlTnVtYmVyLCBjb25zdCBTdHJpbmcmIGluX3ZhcmlhYmxlTmFtZSwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mIGluX25ld1ZhbHVlKTsKIAogICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9u
TmV4dFN0YXRlbWVudChJbnNwZWN0b3JGcm9udGVuZDo6RGVidWdnZXI6OlJlYXNvbjo6RW51bSBi
cmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRhdGEpOwogICAgIHZvaWQg
Y2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbCBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbAppbmRleCAxNzAxMWU0OTIwYTUwMmQ4NzU2MmRm
M2NiM2U3MGI3NDZkYmY1OWQ3Li4wMmM4ZTg1YjBjN2U5ZmY4YTA0NjFlMjk0OTNmNzBiMTZmZmI3
NTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxG
cmFtZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJh
bWUuaWRsCkBAIC0zOCw2ICszOCw3IEBACiAKICAgICBbQ3VzdG9tXSB2b2lkIGV2YWx1YXRlKGlu
IERPTVN0cmluZyBzY3JpcHQpOwogICAgIFtDdXN0b21dIERPTU9iamVjdCByZXN0YXJ0KCk7Cisg
ICAgW0N1c3RvbV0gRE9NT2JqZWN0IHNldFZhcmlhYmxlVmFsdWUoaW4gaW50IHNjb3BlSW5kZXgs
IGluIERPTVN0cmluZyB2YXJpYWJsZU5hbWUsIERPTU9iamVjdCBuZXdWYWx1ZSk7CiAKICAgICBy
ZWFkb25seSBhdHRyaWJ1dGUgSmF2YVNjcmlwdENhbGxGcmFtZSBjYWxsZXI7CiAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGxvbmcgc291cmNlSUQ7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186491</attachid>
            <date>2013-02-04 16:17:33 -0800</date>
            <delta_ts>2013-02-06 14:47:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107829-20130205041411.patch</filename>
            <type>text/plain</type>
            <size>36280</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxODI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTRkZjJlNDAxOWI1OTdi
ZTE0ZGFlMzVlNzlkMTJmMDMxODA4OTNmZi4uZTJjOTg0ZTUwZjY4ZmE2ZWUwZjE1YzExNDM2NzUy
ODRmZGVhN2YzMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEzLTAyLTA0ICBQZXRl
ciBSeWJpbiAgPHByeWJpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
c3VwcG9ydCBKYXZhU2NyaXB0IHZhcmlhYmxlIG11dGF0aW9uIGluIHByb3RvY29sIGFuZCBWOCBi
aW5kaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA3ODI5CisKKyAgICAgICAgQSBuZXcgY29tbWFuZCBpcyBhZGRlZCB0byBwcm90b2NvbCBkZXNj
cmlwdGlvbiBhbmQgdGhlIGNhbGwgaXMgcGFzc2VkIHRocm91Z2gKKyAgICAgICAgZGVidWdnZXIg
YWdlbnQgdGhyb3VnaCBpbmplY3RlZCBzY3JpcHQgYW5kIGRlYnVnZ2VyIHNjcmlwdCBkb3duIHRv
IFY4IG1pcnJvcgorICAgICAgICBBUEkuIEpTQyBiaW5kaW5ncyBnb3QgYSB0aG9ydyBleGNlcHRp
b24gc3R1Yi4KKworICAgICAgICBPbmx5IGRlY2xhcmF0aXZlIEphdmFTY3JpcHQgc2NvcGVzIGFy
ZSBzdXBwb3J0ZWQgKGxvY2FsLCBjbG9zdXJlLCBjYXRjaCkuIE90aGVyCisgICAgICAgIHNjb3Bl
cyAoZ2xvYmFsLCB3aXRoKSBhcmUgbm90IHN1cHBvcnRlZCBieSBWOCBhbmQgbm90IHN1cHBvcnRl
ZCBieSBwcm90b2NvbCwgYmVjYXVzZQorICAgICAgICBtYW51YWwgYXBwcm9hY2ggKGRpcmVjdCBw
cm9wZXJ0eSBhc3NpZ21lbnQpIGlzIGF2YWlsYWJsZSBmb3IgdGhlbSBpbiBmb3JtIG9mIGV2YWx1
YXRlCisgICAgICAgIGNvbW1hbmRzIGFuZCBpcyBtb3JlIGRlc2lyYWJsZSBiZWNhdXNlIG9mIGEg
Y29tcGxleCBuYXR1cmUgb2Ygb3BlcmF0aW9uIChpdCBjYW4gdGhyb3cKKyAgICAgICAgZXhjZXB0
aW9uIGluIHNldmVyYWwgY2FzZXMgc3VjaCBhcyBleGNlcHRpb24gaW4gc2V0dGVyIGZ1bmN0aW9u
KS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
OiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXItc2V0VmFyaWFibGVWYWx1ZS5odG1sCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6c2V0RnVuY3Rpb25WYXJpYWJsZVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSmF2YVNj
cmlwdENhbGxGcmFtZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFTY3JpcHRD
YWxsRnJhbWU6OnNldFZhcmlhYmxlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanM6CisgICAgICAgICguKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkphdmFTY3JpcHRDYWxsRnJhbWU6OnNldFZhcmlhYmxlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5oOgorICAgICAg
ICAoSmF2YVNjcmlwdENhbGxGcmFtZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldEZ1
bmN0aW9uVmFyaWFibGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6c2V0RnVuY3Rp
b25WYXJpYWJsZVZhbHVlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnNldFZhcmlhYmxlVmFsdWVDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OnNldFZhcmlhYmxl
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0Lmg6CisgICAgICAgIChJbmplY3RlZFNjcmlwdCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0U291cmNlLmpzOgorICAgICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0
YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRWYXJp
YWJsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGw6CisKIDIwMTMtMDIt
MDQgIEd1c3Rhdm8gTm9yb25oYSBTaWx2YSAgPGduc0Bnbm9tZS5vcmc+CiAKICAgICAgICAgW1Nv
dXBdIFJlbW92ZSBkdXBsaWNhdGUgc2V0dGluZyBvZiBmaXJzdCBwYXJ0eSBmb3IgY29va2llcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlwdEhv
c3RDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmplY3RlZFNjcmlw
dEhvc3RDdXN0b20uY3BwCmluZGV4IDA4OWE4MmZlOGRjMDFkMTc5ZjU3NTY0ZGY2ZTc5ZWRhYWM3
OTlmMWIuLjBmMTVlNGJlMGUwY2U5YzE1MGVkOGFmZDBmZTJmNTNiYjZmMzljYWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9t
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9z
dEN1c3RvbS5jcHAKQEAgLTMwNyw2ICszMDcsMTMgQEAgSlNWYWx1ZSBKU0luamVjdGVkU2NyaXB0
SG9zdDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBleGVjKQogICAgIHJldHVybiByZXN1bHQ7CiB9CiAK
K0pTVmFsdWUgSlNJbmplY3RlZFNjcmlwdEhvc3Q6OnNldEZ1bmN0aW9uVmFyaWFibGVWYWx1ZShK
U0M6OkV4ZWNTdGF0ZSogZXhlYykKK3sKKyAgICAvLyBGSVhNRTogaW1wbGVtZW50IHRoaXMuIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDc4MzAKKyAgICB0aHJvd0Vy
cm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiVmFyaWFibGUgdmFsdWUgbXV0YXRpb24g
aXMgbm90IHN1cHBvcnRlZCIpKTsKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKK30KKwogfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1
c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxsRnJh
bWVDdXN0b20uY3BwCmluZGV4IGEwNjgwODRhZmRmZTgwMzFjYmQ1ZmMzMGYzYWNiZjg3ZjhlZDc1
ZTcuLmUxZGQ3Yzc0MWFjZDAxODI5NmI3MzVhZjExODNiNzE5MDgyZDYyODggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZhU2NyaXB0Q2FsbEZyYW1l
Q3VzdG9tLmNwcApAQCAtMTMwLDYgKzEzMCwxMyBAQCBKU1ZhbHVlIEpTSmF2YVNjcmlwdENhbGxG
cmFtZTo6c2NvcGVUeXBlKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4ganNVbmRlZmluZWQo
KTsKIH0KIAorSlNWYWx1ZSBKU0phdmFTY3JpcHRDYWxsRnJhbWU6OnNldFZhcmlhYmxlVmFsdWUo
SlNDOjpFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gRklYTUU6IGltcGxlbWVudCB0aGlzLiBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3ODMwCisgICAgdGhyb3dF
cnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlZhcmlhYmxlIHZhbHVlIG11dGF0aW9u
IGlzIG5vdCBzdXBwb3J0ZWQiKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3Jp
cHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qcwppbmRl
eCAxNjkxZjU1ZTY0MmJmMjBlODhiZjBiYTQxNGI4Zjc2ZjRmYWRkMjcyLi40MWE0Yzk3OGUxNmNi
ZDZjMjRmNGMyOTQ3ZjdlNDk1MzFmMjNmNWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9EZWJ1Z2dlclNjcmlwdC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9EZWJ1Z2dlclNjcmlwdC5qcwpAQCAtOTMsNiArOTMsMjUgQEAgRGVidWdnZXJTY3JpcHQu
Z2V0SW50ZXJuYWxQcm9wZXJ0aWVzID0gZnVuY3Rpb24odmFsdWUpCiAgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAorRGVidWdnZXJTY3JpcHQuc2V0RnVuY3Rpb25WYXJpYWJsZVZhbHVlID0gZnVuY3Rp
b24oZnVuY3Rpb25WYWx1ZSwgc2NvcGVJbmRleCwgdmFyaWFibGVOYW1lLCBuZXdWYWx1ZSkKK3sK
KyAgICB2YXIgbWlycm9yID0gTWFrZU1pcnJvcihmdW5jdGlvblZhbHVlKTsKKyAgICBpZiAoIW1p
cnJvci5pc0Z1bmN0aW9uKCkpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJGdW5jdGlvbiB2
YWx1ZSBoYXMgaW5jb3JyZWN0IHR5cGUiKTsKKyAgICB9CisgICAgcmV0dXJuIERlYnVnZ2VyU2Ny
aXB0Ll9zZXRTY29wZVZhcmlhYmxlVmFsdWUobWlycm9yLCBzY29wZUluZGV4LCB2YXJpYWJsZU5h
bWUsIG5ld1ZhbHVlKTsKK30KKworRGVidWdnZXJTY3JpcHQuX3NldFNjb3BlVmFyaWFibGVWYWx1
ZSA9IGZ1bmN0aW9uKHNjb3BlSG9sZGVyLCBzY29wZUluZGV4LCB2YXJpYWJsZU5hbWUsIG5ld1Zh
bHVlKQoreworICAgIHZhciBzY29wZU1pcnJvciA9IHNjb3BlSG9sZGVyLnNjb3BlKHNjb3BlSW5k
ZXgpOworICAgIGlmICghc2NvcGVNaXJyb3IpIHsKKyAgICAgICAgdGhyb3cgbmV3IEVycm9yKCJJ
bmNvcnJlY3Qgc2NvcGUgaW5kZXgiKTsKKyAgICB9CisgICAgc2NvcGVNaXJyb3Iuc2V0VmFyaWFi
bGVWYWx1ZSh2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKTsKKyAgICByZXR1cm4gdW5kZWZpbmVkOwor
fQorCiBEZWJ1Z2dlclNjcmlwdC5nZXRTY3JpcHRzID0gZnVuY3Rpb24oY29udGV4dERhdGEpCiB7
CiAgICAgdmFyIHJlc3VsdCA9IFtdOwpAQCAtMjk1LDYgKzMxNCwxMSBAQCBEZWJ1Z2dlclNjcmlw
dC5fZnJhbWVNaXJyb3JUb0pTQ2FsbEZyYW1lID0gZnVuY3Rpb24oZnJhbWVNaXJyb3IsIGNhbGxl
ckZyYW1lKQogICAgICAgICByZXR1cm4gRGVidWcuTGl2ZUVkaXQuUmVzdGFydEZyYW1lKGZyYW1l
TWlycm9yKTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiBzZXRWYXJpYWJsZVZhbHVlKHNjb3BlTnVt
YmVyLCB2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIERlYnVn
Z2VyU2NyaXB0Ll9zZXRTY29wZVZhcmlhYmxlVmFsdWUoZnJhbWVNaXJyb3IsIHNjb3BlTnVtYmVy
LCB2YXJpYWJsZU5hbWUsIG5ld1ZhbHVlKTsKKyAgICB9CisKICAgICByZXR1cm4gewogICAgICAg
ICAic291cmNlSUQiOiBzb3VyY2VJRCwKICAgICAgICAgImxpbmUiOiBsb2NhdGlvbiA/IGxvY2F0
aW9uLmxpbmUgOiAwLApAQCAtMzA1LDcgKzMyOSw4IEBAIERlYnVnZ2VyU2NyaXB0Ll9mcmFtZU1p
cnJvclRvSlNDYWxsRnJhbWUgPSBmdW5jdGlvbihmcmFtZU1pcnJvciwgY2FsbGVyRnJhbWUpCiAg
ICAgICAgICJzY29wZVR5cGUiOiBzY29wZVR5cGUsCiAgICAgICAgICJldmFsdWF0ZSI6IGV2YWx1
YXRlLAogICAgICAgICAiY2FsbGVyIjogY2FsbGVyRnJhbWUsCi0gICAgICAgICJyZXN0YXJ0Ijog
cmVzdGFydAorICAgICAgICAicmVzdGFydCI6IHJlc3RhcnQsCisgICAgICAgICJzZXRWYXJpYWJs
ZVZhbHVlIjogc2V0VmFyaWFibGVWYWx1ZQogICAgIH07CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKaW5kZXggNzcxMWUwOTY5
MDdmNjYwOGYwYjYzM2UyNGFlMGRhMjUxYTc1OTM2NC4uNWVkMzg3ZjA5ZTc1M2Y0Y2E3OTI5M2Yz
ODI4NzdjODMzMDI4OTZhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
SmF2YVNjcmlwdENhbGxGcmFtZS5jcHAKQEAgLTEzNCw2ICsxMzQsMTcgQEAgdjg6OkhhbmRsZTx2
ODo6VmFsdWU+IEphdmFTY3JpcHRDYWxsRnJhbWU6OnJlc3RhcnQoKQogICAgIHJldHVybiByZXN1
bHQ7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzZXRW
YXJpYWJsZVZhbHVlKGludCBzY29wZU51bWJlciwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUs
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuZXdWYWx1ZSkKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpG
dW5jdGlvbj4gc2V0VmFyaWFibGVWYWx1ZUZ1bmN0aW9uID0gdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+OjpDYXN0KG1fY2FsbEZyYW1lLmdldCgpLT5HZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJz
ZXRWYXJpYWJsZVZhbHVlIikpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gYXJndltdID0g
eworICAgICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6OkludGVnZXI6Ok5ldyhzY29wZU51
bWJlcikpLAorICAgICAgICBkZXByZWNhdGVkVjhTdHJpbmcodmFyaWFibGVOYW1lKSwKKyAgICAg
ICAgbmV3VmFsdWUKKyAgICB9OworICAgIHJldHVybiBzZXRWYXJpYWJsZVZhbHVlRnVuY3Rpb24t
PkNhbGwobV9jYWxsRnJhbWUuZ2V0KCksIDMsIGFyZ3YpOworfQorCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuaCBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuaAppbmRleCAzMTMx
NzA5MGUzN2NhMjA2NzkzMTlkMDhiYTQwOGEwNzBlNDRiNzhiLi5hN2UzZGIxZTNkMTM5NmZjNDAy
ZjExNGFmYjllOWI5ODFlZjI2ZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvSmF2YVNjcmlwdENhbGxGcmFtZS5oCkBAIC02MSw2ICs2MSw3IEBAIHB1YmxpYzoKICAgICAK
ICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXZhbHVhdGUoY29uc3QgU3RyaW5nJiBleHByZXNz
aW9uKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdGFydCgpOworICAgIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiBzZXRWYXJpYWJsZVZhbHVlKGludCBzY29wZU51bWJlciwgY29uc3QgU3Ry
aW5nJiB2YXJpYWJsZU5hbWUsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuZXdWYWx1ZSk7CiAgICAg
CiBwcml2YXRlOgogICAgIEphdmFTY3JpcHRDYWxsRnJhbWUodjg6OkhhbmRsZTx2ODo6Q29udGV4
dD4gZGVidWdnZXJDb250ZXh0LCB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGNhbGxGcmFtZSk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5k
ZXggMjAzZTcyNTk4YmQ4ZjdiNTgxZjM4YWNlZGNlZjQ5ZWU4MTkwNzMwOC4uZGUxMDEzZDBkNmIw
MmFlMzU2Zjk4NDAzYWU2NzVjODFjMThkMmYzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNTU3LDYgKzU1NywyMCBAQCB2ODo6
TG9jYWw8djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6Z2V0SW50ZXJuYWxQcm9wZXJ0aWVz
KHY4OjpIYW5kbGU8djg6Ok9iagogICAgIHJldHVybiBjYWxsRGVidWdnZXJNZXRob2QoImdldElu
dGVybmFsUHJvcGVydGllcyIsIDEsIGFyZ3YpOwogfQogCit2ODo6TG9jYWw8djg6OlZhbHVlPiBT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2V0RnVuY3Rpb25WYXJpYWJsZVZhbHVlKHY4OjpIYW5kbGU8djg6
OlZhbHVlPiBmdW5jdGlvblZhbHVlLCBpbnQgc2NvcGVOdW1iZXIsIGNvbnN0IFN0cmluZyYgdmFy
aWFibGVOYW1lLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmV3VmFsdWUpCit7CisgICAgaWYgKG1f
ZGVidWdnZXJTY3JpcHQuZ2V0KCkuSXNFbXB0eSgpKQorICAgICAgICByZXR1cm4gKih2ODo6VGhy
b3dFeGNlcHRpb24odjg6OlN0cmluZzo6TmV3KCJEZWJ1Z2dpbmcgaXMgbm90IGVuYWJsZWQuIikp
KTsKKworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBhcmd2W10gPSB7CisgICAgICAgIGZ1bmN0
aW9uVmFsdWUsCisgICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPih2ODo6SW50ZWdlcjo6TmV3
KHNjb3BlTnVtYmVyKSksCisgICAgICAgIGRlcHJlY2F0ZWRWOFN0cmluZyh2YXJpYWJsZU5hbWUp
LAorICAgICAgICBuZXdWYWx1ZQorICAgIH07CisgICAgcmV0dXJuIGNhbGxEZWJ1Z2dlck1ldGhv
ZCgic2V0RnVuY3Rpb25WYXJpYWJsZVZhbHVlIiwgNCwgYXJndik7Cit9CisKIAogYm9vbCBTY3Jp
cHREZWJ1Z1NlcnZlcjo6aXNQYXVzZWQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1NjcmlwdERlYnVnU2VydmVyLmgKaW5kZXggYWVmZTJlYmJjMzcwNzljMDliYzlhMDY1MTBh
OGNiMGJmZjRhYjZkNy4uN2RjMDFmMjljZTZkMTVhZjNkZDYzYjNjZTQ1Y2NjOTRiY2Y1ODI3NSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCkBA
IC0xMDEsNiArMTAxLDggQEAgcHVibGljOgogCiAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gZnVu
Y3Rpb25TY29wZXModjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+KTsKICAgICB2ODo6TG9jYWw8djg6
OlZhbHVlPiBnZXRJbnRlcm5hbFByb3BlcnRpZXModjg6OkhhbmRsZTx2ODo6T2JqZWN0PiYpOwor
ICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IHNldEZ1bmN0aW9uVmFyaWFibGVWYWx1ZSh2ODo6SGFu
ZGxlPHY4OjpWYWx1ZT4gZnVuY3Rpb25WYWx1ZSwgaW50IHNjb3BlTnVtYmVyLCBjb25zdCBTdHJp
bmcmIHZhcmlhYmxlTmFtZSwgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5ld1ZhbHVlKTsKKwogCiAg
ICAgdmlydHVhbCB2b2lkIGNvbXBpbGVTY3JpcHQoU2NyaXB0U3RhdGUqLCBjb25zdCBTdHJpbmcm
IGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyYgc291cmNlVVJMLCBTdHJpbmcqIHNjcmlwdElkLCBT
dHJpbmcqIGV4Y2VwdGlvbk1lc3NhZ2UpOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhckNvbXBpbGVk
U2NyaXB0cygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9t
L1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKaW5kZXggNDEwNGJkZmFm
ODczODUwMjUzOTYxMDZiYWM4ZjcxNTMzZGNjYzZhNi4uMDc4M2QyYzYwZmQwOGY2ZDZkZDg2NTkw
YzY1YzczMzFkMjJlMmIzNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
Y3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC0z
MjEsNiArMzIxLDE5IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9z
dDo6ZXZhbHVhdGVDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzCiAgICAgcmV0dXJuIHNjcmlw
dC0+UnVuKCk7CiB9CiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEluamVjdGVkU2NyaXB0SG9z
dDo6c2V0RnVuY3Rpb25WYXJpYWJsZVZhbHVlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cyYg
YXJncykKK3sKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZnVuY3Rpb25WYWx1ZSA9IGFyZ3Nb
MF07CisgICAgaW50IHNjb3BlSW5kZXggPSBhcmdzWzFdLT5JbnQzMlZhbHVlKCk7CisgICAgU3Ry
aW5nIHZhcmlhYmxlTmFtZSA9IHRvV2ViQ29yZVN0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVj
ayhhcmdzWzJdKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmV3VmFsdWUgPSBhcmdzWzNd
OworCisgICAgSW5qZWN0ZWRTY3JpcHRIb3N0KiBob3N0ID0gVjhJbmplY3RlZFNjcmlwdEhvc3Q6
OnRvTmF0aXZlKGFyZ3MuSG9sZGVyKCkpOworICAgIFNjcmlwdERlYnVnU2VydmVyJiBkZWJ1Z1Nl
cnZlciA9IGhvc3QtPnNjcmlwdERlYnVnU2VydmVyKCk7CisgICAgcmV0dXJuIGRlYnVnU2VydmVy
LnNldEZ1bmN0aW9uVmFyaWFibGVWYWx1ZShmdW5jdGlvblZhbHVlLCBzY29wZUluZGV4LCB2YXJp
YWJsZU5hbWUsIG5ld1ZhbHVlKTsKK30KKworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNw
cAppbmRleCBlMDg3NGIyZDljOTU3YjM5MWNkMjJlZjZhMmM3MjhjNTY1NWY0ODZhLi43Y2IyODll
ODFlOGE4Njc2ZjA0YTJhNzhhMDc1OTczZjI2ZjNhMTUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhKYXZhU2NyaXB0Q2FsbEZy
YW1lQ3VzdG9tLmNwcApAQCAtNTAsNiArNTAsMTUgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4
SmF2YVNjcmlwdENhbGxGcmFtZTo6cmVzdGFydENhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMK
ICAgICByZXR1cm4gaW1wbC0+cmVzdGFydCgpOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4g
VjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzZXRWYXJpYWJsZVZhbHVlQ2FsbGJhY2soY29uc3Qgdjg6
OkFyZ3VtZW50cyYgYXJncykKK3sKKyAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBpbXBsID0gVjhK
YXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBpbnQgc2Nv
cGVJbmRleCA9IGFyZ3NbMF0tPkludDMyVmFsdWUoKTsKKyAgICBTdHJpbmcgdmFyaWFibGVOYW1l
ID0gdG9XZWJDb3JlU3RyaW5nV2l0aFVuZGVmaW5lZE9yTnVsbENoZWNrKGFyZ3NbMV0pOworICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuZXdWYWx1ZSA9IGFyZ3NbMl07CisgICAgcmV0dXJuIGlt
cGwtPnNldFZhcmlhYmxlVmFsdWUoc2NvcGVJbmRleCwgdmFyaWFibGVOYW1lLCBuZXdWYWx1ZSk7
Cit9CisKIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnNjb3Bl
Q2hhaW5BY2Nlc3NvckdldHRlcih2ODo6TG9jYWw8djg6OlN0cmluZz4gbmFtZSwgY29uc3Qgdjg6
OkFjY2Vzc29ySW5mbyYgaW5mbykKIHsKICAgICBKYXZhU2NyaXB0Q2FsbEZyYW1lKiBpbXBsID0g
VjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjp0b05hdGl2ZShpbmZvLkhvbGRlcigpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwCmluZGV4IGZhZTgxZGI5ZTRmY2E2
YmNmOTQ3ZGQxN2NiNDJkMDQ4NzUzZjRlMzIuLjYwYWEwY2E4OTI4MTdiMWUyZDU5OTY2ZTAxMzNh
ZmZlMmU4MmMyMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3Rl
ZFNjcmlwdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
LmNwcApAQCAtMTE2LDYgKzExNiwzNiBAQCB2b2lkIEluamVjdGVkU2NyaXB0OjpyZXN0YXJ0RnJh
bWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRWYWx1ZSYgYwogICAgICpl
cnJvclN0cmluZyA9ICJJbnRlcm5hbCBlcnJvciI7CiB9CiAKK3ZvaWQgSW5qZWN0ZWRTY3JpcHQ6
OnNldFZhcmlhYmxlVmFsdWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTY3JpcHRW
YWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5nKiBjYWxsRnJhbWVJZE9wdCwgY29uc3QgU3Ry
aW5nKiBmdW5jdGlvbk9iamVjdElkT3B0LCBpbnQgc2NvcGVOdW1iZXIsIGNvbnN0IFN0cmluZyYg
dmFyaWFibGVOYW1lLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlU3RyKQoreworICAgIFNjcmlwdEZ1
bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAic2V0VmFyaWFibGVW
YWx1ZSIpOworICAgIGlmIChjYWxsRnJhbWVJZE9wdCkgeworICAgICAgICBmdW5jdGlvbi5hcHBl
bmRBcmd1bWVudChjYWxsRnJhbWVzKTsKKyAgICAgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQo
KmNhbGxGcmFtZUlkT3B0KTsKKyAgICB9IGVsc2UgeworICAgICAgICBmdW5jdGlvbi5hcHBlbmRB
cmd1bWVudChmYWxzZSk7CisgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZhbHNlKTsK
KyAgICB9CisgICAgaWYgKGZ1bmN0aW9uT2JqZWN0SWRPcHQpCisgICAgICAgIGZ1bmN0aW9uLmFw
cGVuZEFyZ3VtZW50KCpmdW5jdGlvbk9iamVjdElkT3B0KTsKKyAgICBlbHNlCisgICAgICAgIGZ1
bmN0aW9uLmFwcGVuZEFyZ3VtZW50KGZhbHNlKTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVu
dChzY29wZU51bWJlcik7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQodmFyaWFibGVOYW1l
KTsKKyAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChuZXdWYWx1ZVN0cik7CisgICAgUmVmUHRy
PEluc3BlY3RvclZhbHVlPiByZXN1bHRWYWx1ZTsKKyAgICBtYWtlQ2FsbChmdW5jdGlvbiwgJnJl
c3VsdFZhbHVlKTsKKyAgICBpZiAoIXJlc3VsdFZhbHVlKSB7CisgICAgICAgICplcnJvclN0cmlu
ZyA9ICJJbnRlcm5hbCBlcnJvciI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKHJl
c3VsdFZhbHVlLT50eXBlKCkgPT0gSW5zcGVjdG9yVmFsdWU6OlR5cGVTdHJpbmcpIHsKKyAgICAg
ICAgcmVzdWx0VmFsdWUtPmFzU3RyaW5nKGVycm9yU3RyaW5nKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKyAgICAvLyBOb3JtYWwgcmV0dXJuLgorfQorCiB2b2lkIEluamVjdGVkU2NyaXB0Ojpn
ZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcm
IGZ1bmN0aW9uSWQsIFJlZlB0cjxGdW5jdGlvbkRldGFpbHM+KiByZXN1bHQpCiB7CiAgICAgU2Ny
aXB0RnVuY3Rpb25DYWxsIGZ1bmN0aW9uKGluamVjdGVkU2NyaXB0T2JqZWN0KCksICJnZXRGdW5j
dGlvbkRldGFpbHMiKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgK
aW5kZXggNWQ1ZGM0MDg0YjA4MGIyNjUwMmEzYzBhYjU5NjljODVhYzQxMWVhNy4uMmY5NmMyZGY3
ODg2ODkyZGIzMzczYTU0NmEwMDc2YmM5ODA2YjNiMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luamVjdGVkU2NyaXB0LmgKQEAgLTgwLDYgKzgwLDcgQEAgcHVibGljOgogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9i
amVjdD4qIHJlc3VsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUJ1aWxkZXI6
Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKTsKICAgICB2b2lkIHJlc3RhcnRGcmFtZShFcnJv
clN0cmluZyosIGNvbnN0IFNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBTdHJpbmcmIGNh
bGxGcmFtZUlkLCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiogcmVzdWx0KTsKKyAgICB2b2lkIHNl
dFZhcmlhYmxlVmFsdWUoRXJyb3JTdHJpbmcqLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1l
cywgY29uc3QgU3RyaW5nKiBjYWxsRnJhbWVJZE9wdCwgY29uc3QgU3RyaW5nKiBmdW5jdGlvbk9i
amVjdElkT3B0LCBpbnQgc2NvcGVOdW1iZXIsIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCBj
b25zdCBTdHJpbmcmIG5ld1ZhbHVlU3RyKTsKICAgICB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPFR5cGVCdWlsZGVy
OjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KTsKICAgICB2b2lkIGdldFByb3Bl
cnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBib29sIG93blByb3Bl
cnRpZXMsIFJlZlB0cjxUeXBlQnVpbGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlBy
b3BlcnR5RGVzY3JpcHRvcj4gPiogcmVzdWx0KTsKICAgICB2b2lkIGdldEludGVybmFsUHJvcGVy
dGllcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIFJlZlB0cjxUeXBlQnVp
bGRlcjo6QXJyYXk8VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlw
dG9yPiA+KiByZXN1bHQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
amVjdGVkU2NyaXB0SG9zdC5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRIb3N0LmlkbAppbmRleCBkMzdhMWI4MGIzOTIwNTMwNzFkZTE1OGRhNDcwYWJmMDA5ZGZh
Yzc1Li43YTVhNTgwZDU4ZDEwYTYzZTY1ZDhhYWNjM2VjZGM3OTk4MmJmNmUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRIb3N0LmlkbApAQCAtNDksNCAr
NDksNiBAQAogICAgIFtDdXN0b21dIERPTVN0cmluZyBkYXRhYmFzZUlkKGluIERPTU9iamVjdCBk
YXRhYmFzZSk7CiAgICAgW0N1c3RvbV0gRE9NU3RyaW5nIHN0b3JhZ2VJZChpbiBET01PYmplY3Qg
c3RvcmFnZSk7CiAgICAgW0N1c3RvbV0gRE9NT2JqZWN0IGV2YWx1YXRlKGluIERPTVN0cmluZyB0
ZXh0KTsKKyAgICAvLyBPbmx5IGRlY2xhcmF0aXZlIHNjb3BlIChsb2NhbCwgd2l0aCBhbmQgY2F0
Y2gpIGlzIGFjY2VwdGVkLiBSZXR1cm5zIHVuZGVmaW5lZC4gCisgICAgW0N1c3RvbV0gRE9NT2Jq
ZWN0IHNldEZ1bmN0aW9uVmFyaWFibGVWYWx1ZShpbiBET01PYmplY3QgZnVuY3Rpb25PYmplY3Qs
IGluIGludCBzY29wZUluZGV4LCBpbiBET01TdHJpbmcgdmFyaWFibGVOYW1lLCBET01PYmplY3Qg
bmV3VmFsdWUpOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Jbmpl
Y3RlZFNjcmlwdFNvdXJjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNj
cmlwdFNvdXJjZS5qcwppbmRleCA1YjFjYThhMTJkMjJjMmRiMTE5MzcwZWQzOWEwOGVmZDIyMWI1
NzViLi45MWViMWUyN2IwZDk2MTYxZjcyYjBkNTE0YzA0Zjc2NDZkOTkwMDdmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHRTb3VyY2UuanMKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCkBAIC00Mjcs
MjEgKzQyNywxMyBAQCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB2
YXIgcmVzb2x2ZWRBcmdzID0gW107CiAgICAgICAgICAgICBhcmdzID0gSW5qZWN0ZWRTY3JpcHRI
b3N0LmV2YWx1YXRlKGFyZ3MpOwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBhcmdz
Lmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgb2JqZWN0SWQgPSBhcmdzW2ldLm9iamVj
dElkOwotICAgICAgICAgICAgICAgIGlmIChvYmplY3RJZCkgewotICAgICAgICAgICAgICAgICAg
ICB2YXIgcGFyc2VkQXJnSWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVjdElkKTsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKCFwYXJzZWRBcmdJZCB8fCBwYXJzZWRBcmdJZFsiaW5qZWN0ZWRT
Y3JpcHRJZCJdICE9PSBpbmplY3RlZFNjcmlwdElkKQotICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuICJBcmd1bWVudHMgc2hvdWxkIGJlbG9uZyB0byB0aGUgc2FtZSBKYXZhU2NyaXB0IHdv
cmxkIGFzIHRoZSB0YXJnZXQgb2JqZWN0LiI7Ci0KLSAgICAgICAgICAgICAgICAgICAgdmFyIHJl
c29sdmVkQXJnID0gdGhpcy5fb2JqZWN0Rm9ySWQocGFyc2VkQXJnSWQpOwotICAgICAgICAgICAg
ICAgICAgICBpZiAoIXRoaXMuX2lzRGVmaW5lZChyZXNvbHZlZEFyZykpCi0gICAgICAgICAgICAg
ICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIG9iamVjdCB3aXRoIGdpdmVuIGlkIjsK
LQotICAgICAgICAgICAgICAgICAgICByZXNvbHZlZEFyZ3MucHVzaChyZXNvbHZlZEFyZyk7Ci0g
ICAgICAgICAgICAgICAgfSBlbHNlIGlmICgidmFsdWUiIGluIGFyZ3NbaV0pCi0gICAgICAgICAg
ICAgICAgICAgIHJlc29sdmVkQXJncy5wdXNoKGFyZ3NbaV0udmFsdWUpOwotICAgICAgICAgICAg
ICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmdzLnB1c2godW5kZWZpbmVk
KTsKKyAgICAgICAgICAgICAgICB2YXIgcmVzb2x2ZWRDYWxsQXJndW1lbnQ7CisgICAgICAgICAg
ICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRDYWxsQXJndW1lbnQgPSB0
aGlzLl9yZXNvbHZlQ2FsbEFyZ3VtZW50KGFyZ3NbaV0pOworICAgICAgICAgICAgICAgIH0gY2F0
Y2ggKGUpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFN0cmluZyhlKTsKKyAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmdzLnB1c2gocmVzb2x2ZWRDYWxs
QXJndW1lbnQpCiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNDU3LDYgKzQ0OSwzMCBA
QCBJbmplY3RlZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5f
Y3JlYXRlVGhyb3duVmFsdWUoZSwgb2JqZWN0R3JvdXApOwogICAgICAgICB9CiAgICAgfSwKKyAg
ICAKKyAgICAvKioKKyAgICAgKiBSZXNvbHZlcyBhIHZhbHVlIGZyb20gQ2FsbEFyZ3VtZW50IGRl
c2NyaXB0aW9uLgorICAgICAqIEBwYXJhbSB7UnVudGltZUFnZW50LkNhbGxBcmd1bWVudH0gY2Fs
bEFyZ3VtZW50SnNvbgorICAgICAqIEByZXR1cm4geyp9IHJlc29sdmVkIHZhbHVlCisgICAgICog
QHRocm93IHtzdHJpbmd9IGVycm9yIG1lc3NhZ2UKKyAgICAgKi8KKyAgICBfcmVzb2x2ZUNhbGxB
cmd1bWVudDogZnVuY3Rpb24oY2FsbEFyZ3VtZW50SnNvbikgeworICAgICAgICB2YXIgb2JqZWN0
SWQgPSBjYWxsQXJndW1lbnRKc29uLm9iamVjdElkOworICAgICAgICBpZiAob2JqZWN0SWQpIHsK
KyAgICAgICAgICAgIHZhciBwYXJzZWRBcmdJZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQob2JqZWN0
SWQpOworICAgICAgICAgICAgaWYgKCFwYXJzZWRBcmdJZCB8fCBwYXJzZWRBcmdJZFsiaW5qZWN0
ZWRTY3JpcHRJZCJdICE9PSBpbmplY3RlZFNjcmlwdElkKQorICAgICAgICAgICAgICAgIHRocm93
ICJBcmd1bWVudHMgc2hvdWxkIGJlbG9uZyB0byB0aGUgc2FtZSBKYXZhU2NyaXB0IHdvcmxkIGFz
IHRoZSB0YXJnZXQgb2JqZWN0LiI7CisKKyAgICAgICAgICAgIHZhciByZXNvbHZlZEFyZyA9IHRo
aXMuX29iamVjdEZvcklkKHBhcnNlZEFyZ0lkKTsKKyAgICAgICAgICAgIGlmICghdGhpcy5faXNE
ZWZpbmVkKHJlc29sdmVkQXJnKSkKKyAgICAgICAgICAgICAgICB0aHJvdyAiQ291bGQgbm90IGZp
bmQgb2JqZWN0IHdpdGggZ2l2ZW4gaWQiOworCisgICAgICAgICAgICByZXR1cm4gcmVzb2x2ZWRB
cmc7CisgICAgICAgIH0gZWxzZSBpZiAoInZhbHVlIiBpbiBjYWxsQXJndW1lbnRKc29uKQorICAg
ICAgICAgICAgcmV0dXJuIGNhbGxBcmd1bWVudEpzb24udmFsdWU7CisgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgIHJldHVybiB1bmRlZmluZWQ7CisgICAgfSwKIAogICAgIC8qKgogICAgICAqIEBw
YXJhbSB7RnVuY3Rpb259IGV2YWxGdW5jdGlvbgpAQCAtNTc2LDYgKzU5Miw1MSBAQCBJbmplY3Rl
ZFNjcmlwdC5wcm90b3R5cGUgPSB7CiAgICAgfSwKIAogICAgIC8qKgorICAgICAqIEVpdGhlciBj
YWxsRnJhbWVJZCBvciBmdW5jdGlvbk9iamVjdElkIG11c3QgYmUgc3BlY2lmaWVkLgorICAgICAq
IEBwYXJhbSB7T2JqZWN0fSB0b3BDYWxsRnJhbWUKKyAgICAgKiBAcGFyYW0ge3N0cmluZ3xib29s
ZWFufSBjYWxsRnJhbWVJZCBvciBmYWxzZQorICAgICAqIEBwYXJhbSB7c3RyaW5nfGJvb2xlYW59
IGZ1bmN0aW9uT2JqZWN0SWQgb3IgZmFsc2UKKyAgICAgKiBAcGFyYW0ge2ludGVnZXJ9IHNjb3Bl
TnVtYmVyCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHZhcmlhYmxlTmFtZQorICAgICAqIEBwYXJh
bSB7c3RyaW5nfSBuZXdWYWx1ZUpzb25TdHJpbmcgUnVudGltZUFnZW50LkNhbGxBcmd1bWVudCBz
dHJ1Y3R1cmUgc2VyaWFsaXplZCBhcyBzdHJpbmcgCisgICAgICogQHJldHVybiB7c3RyaW5nfHVu
ZGVmaW5lZH0gdW5kZWZpbmVkIGlmIHN1Y2Nlc3Mgb3IgYW4gZXJyb3IgbWVzc2FnZSAKKyAgICAg
Ki8KKyAgICBzZXRWYXJpYWJsZVZhbHVlOiBmdW5jdGlvbih0b3BDYWxsRnJhbWUsIGNhbGxGcmFt
ZUlkLCBmdW5jdGlvbk9iamVjdElkLCBzY29wZU51bWJlciwgdmFyaWFibGVOYW1lLCBuZXdWYWx1
ZUpzb25TdHJpbmcpCisgICAgeyAgIAorICAgICAgICB2YXIgc2V0dGVyOworICAgICAgICBpZiAo
Y2FsbEZyYW1lSWQpIHsKKyAgICAgICAgICAgIHZhciBjYWxsRnJhbWUgPSB0aGlzLl9jYWxsRnJh
bWVGb3JJZCh0b3BDYWxsRnJhbWUsIGNhbGxGcmFtZUlkKTsKKyAgICAgICAgICAgIGlmICghY2Fs
bEZyYW1lKQorICAgICAgICAgICAgICAgIHJldHVybiAiQ291bGQgbm90IGZpbmQgY2FsbCBmcmFt
ZSB3aXRoIGdpdmVuIGlkIjsKKyAgICAgICAgICAgIHNldHRlciA9IGNhbGxGcmFtZS5zZXRWYXJp
YWJsZVZhbHVlLmJpbmQoY2FsbEZyYW1lKTsgICAgCisgICAgICAgIH0gZWxzZSB7CisgICAgICAg
ICAgICB2YXIgcGFyc2VkRnVuY3Rpb25JZCA9IHRoaXMuX3BhcnNlT2JqZWN0SWQoZnVuY3Rpb25P
YmplY3RJZCk7CisgICAgICAgICAgICB2YXIgZnVuYyA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNl
ZEZ1bmN0aW9uSWQpOworICAgICAgICAgICAgaWYgKHR5cGVvZiBmdW5jICE9PSAiZnVuY3Rpb24i
KQorICAgICAgICAgICAgICAgIHJldHVybiAiQ2Fubm90IHJlc29sdmUgZnVuY3Rpb24gYnkgaWQu
IjsKKyAgICAgICAgICAgIHNldHRlciA9IEluamVjdGVkU2NyaXB0SG9zdC5zZXRGdW5jdGlvblZh
cmlhYmxlVmFsdWUuYmluZChJbmplY3RlZFNjcmlwdEhvc3QsIGZ1bmMpOyAKKyAgICAgICAgfQor
ICAgICAgICB2YXIgbmV3VmFsdWVKc29uOworICAgICAgICB0cnkgeworICAgICAgICAgICAgbmV3
VmFsdWVKc29uID0gSW5qZWN0ZWRTY3JpcHRIb3N0LmV2YWx1YXRlKCIoIiArIG5ld1ZhbHVlSnNv
blN0cmluZyArICIpIik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHJldHVy
biAiRmFpbGVkIHRvIHBhcnNlIG5ldyB2YWx1ZSBKU09OICIgKyBuZXdWYWx1ZUpzb25TdHJpbmcg
KyAiIDogIiArIGU7CisgICAgICAgIH0KKyAgICAgICAgdmFyIHJlc29sdmVkVmFsdWU7CisgICAg
ICAgIHRyeSB7CisgICAgICAgICAgICByZXNvbHZlZFZhbHVlID0gdGhpcy5fcmVzb2x2ZUNhbGxB
cmd1bWVudChuZXdWYWx1ZUpzb24pOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAg
ICByZXR1cm4gU3RyaW5nKGUpOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBzZXR0ZXIoc2NvcGVOdW1iZXIsIHZhcmlhYmxlTmFtZSwgcmVzb2x2ZWRWYWx1ZSk7CisgICAg
ICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIHJldHVybiAiRmFpbGVkIHRvIGNoYW5nZSB2
YXJpYWJsZSB2YWx1ZTogIiArIGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHVuZGVmaW5l
ZDsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFtIHtPYmplY3R9IHRvcENhbGxGcmFt
ZQogICAgICAqIEBwYXJhbSB7c3RyaW5nfSBjYWxsRnJhbWVJZAogICAgICAqIEByZXR1cm4ge09i
amVjdH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
biBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgppbmRleCA2ZTI0YWI3
NzE0MTA1ZjkzYTVhNWJjODkyNzQ1NTU0NTk1Nzc0YmI5Li45YTBhOTBhNWZmZjk5NjFkOTE0NTkz
ZDc5MmIyYmEyZGYzMjQ3YzlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yLmpzb24KKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5q
c29uCkBAIC0yOTA4LDYgKzI5MDgsMTggQEAKICAgICAgICAgICAgICAgICBdLAogICAgICAgICAg
ICAgICAgICJoaWRkZW4iOiB0cnVlLAogICAgICAgICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJT
ZXRzIG92ZXJsYXkgbWVzc2FnZS4iCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgeworICAg
ICAgICAgICAgICAgICJuYW1lIjogInNldFZhcmlhYmxlVmFsdWUiLAorICAgICAgICAgICAgICAg
ICJwYXJhbWV0ZXJzIjogWworICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogImNhbGxGcmFt
ZUlkIiwgIiRyZWYiOiAiQ2FsbEZyYW1lSWQiLCAib3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRp
b24iOiAiSWQgb2YgY2FsbGZyYW1lIHRoYXQgaG9sZHMgdmFyaWFibGUuIiB9LAorICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogImZ1bmN0aW9uT2JqZWN0SWQiLCAiJHJlZiI6ICJSdW50aW1l
LlJlbW90ZU9iamVjdElkIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0aW9uIjogIk9iamVj
dCBpZCBvZiBjbG9zdXJlIChmdW5jdGlvbikgdGhhdCBob2xkcyB2YXJpYWJsZS4iIH0sCisgICAg
ICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAic2NvcGVOdW1iZXIiLCAidHlwZSI6ICJpbnRlZ2Vy
IiwgImRlc2NyaXB0aW9uIjogIjAtYmFzZWQgbnVtYmVyIG9mIHNjb3BlIGFzIHdhcyBsaXN0ZWQg
aW4gc2NvcGUgY2hhaW4uIE9ubHkgJ2xvY2FsJywgJ2Nsb3N1cmUnIGFuZCAnY2F0Y2gnIHNjb3Bl
IHR5cGVzIGFyZSBhbGxvd2VkLiBPdGhlciBzY29wZXMgY291bGQgYmUgbWFuaXB1bGF0ZWQgbWFu
dWFsbHkuIiB9LAorICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInZhcmlhYmxlTmFtZSIs
ICJ0eXBlIjogInN0cmluZyIsICJkZXNjcmlwdGlvbiI6ICJWYXJpYWJsZSBuYW1lLiIgfSwKKyAg
ICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJuZXdWYWx1ZSIsICIkcmVmIjogIlJ1bnRpbWUu
Q2FsbEFyZ3VtZW50IiwgImRlc2NyaXB0aW9uIjogIk5ldyB2YXJpYWJsZSB2YWx1ZS4iIH0KKyAg
ICAgICAgICAgICAgICBdLAorICAgICAgICAgICAgICAgICJoaWRkZW4iOiB0cnVlLAorICAgICAg
ICAgICAgICAgICJkZXNjcmlwdGlvbiI6ICJDaGFuZ2VzIHZhbHVlIG9mIHZhcmlhYmxlIGluIGEg
Y2FsbGZyYW1lIG9yIGEgY2xvc3VyZS4gRWl0aGVyIGNhbGxmcmFtZSBvciBmdW5jdGlvbiBtdXN0
IGJlIHNwZWNpZmllZC4gT2JqZWN0LWJhc2VkIHNjb3BlcyBhcmUgbm90IHN1cHBvcnRlZCBhbmQg
bXVzdCBiZSBtdXRhdGVkIG1hbnVhbGx5LiIKICAgICAgICAgICAgIH0KICAgICAgICAgXSwKICAg
ICAgICAgImV2ZW50cyI6IFsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA4MzQ3ZjY3ZWRkMzU4Y2I3NjUzMWNjOWVjNmRj
YTFjZGE2N2ExZjA5Li5iNTFlM2E1ZWE5N2NlNGI4MjRkYzFkNjdjOWRmMjAxMGY2MjhjMDRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCkBAIC00MTEsNyArNDExLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpn
ZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdAogewogICAg
IEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIt
PmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoZnVuY3Rpb25JZCk7CiAgICAgaWYgKGluamVjdGVk
U2NyaXB0Lmhhc05vVmFsdWUoKSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVk
IGZyYW1lIGhhcyBnb25lIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gIkZ1bmN0aW9uIG9iamVj
dCBpZCBpcyBvYnNvbGV0ZSI7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgaW5qZWN0ZWRT
Y3JpcHQuZ2V0RnVuY3Rpb25EZXRhaWxzKGVycm9yU3RyaW5nLCBmdW5jdGlvbklkLCAmZGV0YWls
cyk7CkBAIC01ODAsNiArNTgwLDMwIEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0
T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcqKQogewogfQogCit2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldFZhcmlhYmxlVmFsdWUoRXJyb3JTdHJpbmcqIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcqIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcqIGZ1bmN0
aW9uT2JqZWN0SWQsIGludCBzY29wZU51bWJlciwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBuZXdWYWx1ZSkKK3sKKyAgICBJbmplY3Rl
ZFNjcmlwdCBpbmplY3RlZFNjcmlwdDsKKyAgICBpZiAoY2FsbEZyYW1lSWQpIHsKKyAgICAgICAg
aW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRG
b3JPYmplY3RJZCgqY2FsbEZyYW1lSWQpOworICAgICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFz
Tm9WYWx1ZSgpKSB7CisgICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW5zcGVjdGVkIGZyYW1l
IGhhcyBnb25lIjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSBp
ZiAoZnVuY3Rpb25PYmplY3RJZCkgeworICAgICAgICBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKCpmdW5jdGlvbk9iamVj
dElkKTsKKyAgICAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgeworICAgICAg
ICAgICAgKmVycm9yU3RyaW5nID0gIkZ1bmN0aW9uIG9iamVjdCBpZCBjYW5ub3QgYmUgcmVzb2x2
ZWQiOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAg
ICAgKmVycm9yU3RyaW5nID0gIkVpdGhlciBjYWxsIGZyYW1lIG9yIGZ1bmN0aW9uIG9iamVjdCBt
dXN0IGJlIHNwZWNpZmllZCI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAgU3RyaW5nIG5l
d1ZhbHVlU3RyID0gbmV3VmFsdWUtPnRvSlNPTlN0cmluZygpOworCisgICAgaW5qZWN0ZWRTY3Jp
cHQuc2V0VmFyaWFibGVWYWx1ZShlcnJvclN0cmluZywgbV9jdXJyZW50Q2FsbFN0YWNrLCBjYWxs
RnJhbWVJZCwgZnVuY3Rpb25PYmplY3RJZCwgc2NvcGVOdW1iZXIsIHZhcmlhYmxlTmFtZSwgbmV3
VmFsdWVTdHIpOworfQorCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdEV4ZWN1
dGlvbkJsb2NrZWRCeUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpCiB7CiAgICAgaWYg
KHNjcmlwdERlYnVnU2VydmVyKCkucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9IFNjcmlwdERl
YnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDg0ODhmNTNkMWVkYWVl
ZTdmODc5Njg4Yjc4YzA4ZmZkMDI4OTgwZDguLjc0ODZkMTljYTFlMmNjOTU3M2JmZGU3ZDdiOGQx
Mzk4YjkxNGVlNTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaApAQCAtMTEzLDYgKzExMyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGNv
bXBpbGVTY3JpcHQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0
IFN0cmluZyYgc291cmNlVVJMLCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PFR5cGVCdWlsZGVyOjpE
ZWJ1Z2dlcjo6U2NyaXB0SWQ+KiwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxTdHJpbmc+KiBzeW50
YXhFcnJvck1lc3NhZ2UpOwogICAgIHZvaWQgcnVuU2NyaXB0KEVycm9yU3RyaW5nKiwgY29uc3Qg
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3JpcHRJZCYsIGNvbnN0IGludCogZXhlY3V0aW9uQ29u
dGV4dElkLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBkb05vdFBhdXNl
T25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIFJlZlB0cjxUeXBlQnVpbGRlcjo6UnVudGltZTo6
UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJvb2w+KiB3YXNU
aHJvd24pOwogICAgIHZpcnR1YWwgdm9pZCBzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyos
IGNvbnN0IFN0cmluZyopOworICAgIHZpcnR1YWwgdm9pZCBzZXRWYXJpYWJsZVZhbHVlKEVycm9y
U3RyaW5nKiwgY29uc3QgU3RyaW5nKiBpbl9jYWxsRnJhbWUsIGNvbnN0IFN0cmluZyogaW5fZnVu
Y3Rpb25PYmplY3RJZCwgaW50IGluX3Njb3BlTnVtYmVyLCBjb25zdCBTdHJpbmcmIGluX3Zhcmlh
YmxlTmFtZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mIGluX25ld1ZhbHVlKTsKIAog
ICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0YXRlbWVudChJbnNwZWN0b3JGcm9udGVuZDo6
RGVidWdnZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JP
YmplY3Q+IGRhdGEpOwogICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlk
bCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbAppbmRl
eCAzYzFkMzFkYTVmYzRlOTM5YzAyNWNmNWNjMDA1Mzk0ODMxOWI1MTY3Li5lOWU1M2Q4YWVkYjcy
ZDg0YWIzZjU3YmIxNmZjOTNkNGM4MzBjMjUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsCkBAIC0zOSw2ICszOSw5IEBACiAKICAgICBb
Q3VzdG9tXSB2b2lkIGV2YWx1YXRlKGluIERPTVN0cmluZyBzY3JpcHQpOwogICAgIFtDdXN0b21d
IERPTU9iamVjdCByZXN0YXJ0KCk7CisgICAgCisgICAgLy8gT25seSBkZWNsYXJhdGl2ZSBzY29w
ZSAobG9jYWwsIHdpdGggYW5kIGNhdGNoKSBpcyBhY2NlcHRlZC4gUmV0dXJucyB1bmRlZmluZWQu
IAorICAgIFtDdXN0b21dIERPTU9iamVjdCBzZXRWYXJpYWJsZVZhbHVlKGluIGludCBzY29wZUlu
ZGV4LCBpbiBET01TdHJpbmcgdmFyaWFibGVOYW1lLCBET01PYmplY3QgbmV3VmFsdWUpOwogCiAg
ICAgcmVhZG9ubHkgYXR0cmlidXRlIEphdmFTY3JpcHRDYWxsRnJhbWUgY2FsbGVyOwogICAgIHJl
YWRvbmx5IGF0dHJpYnV0ZSBsb25nIHNvdXJjZUlEOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk0NTA1OWU4YmQ3NjI2MDIy
YTA4MWQ5OGFjZDkwMzQ4M2UxNThlZjAuLjJmNzNhYjYwMmU1YjVkMmNiMDhjMDhjMGFjMzQzN2Zi
Yjg5NzVhNTUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRU
ZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0wMi0wNCAgUGV0ZXIgUnliaW4g
IDxwcnliaW5AY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IHN1cHBvcnQg
SmF2YVNjcmlwdCB2YXJpYWJsZSBtdXRhdGlvbiBpbiBwcm90b2NvbCBhbmQgVjggYmluZGluZ3MK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzgyOQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVj
dG9yLXByb3RvY29sL2RlYnVnZ2VyLXNldFZhcmlhYmxlVmFsdWUtZXhwZWN0ZWQudHh0OiBBZGRl
ZC4KKyAgICAgICAgKiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXItc2V0VmFyaWFibGVWYWx1
ZS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUt
YXBpLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3It
cHJvdG9jb2wvZGVidWdnZXItc2V0VmFyaWFibGVWYWx1ZS1leHBlY3RlZC50eHQ6IEFkZGVkLgor
CiAyMDEzLTAyLTA0ICBEaW1hIEdvcmJpayAgPGRnb3JiaWtAYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYlZUVCA8aT4sIDxiPiBhbmQgPHU+IGVsZW1lbnRzIHNob3VsZCBoYXZlIGRlZmF1bHQgc3R5
bGVzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIt
c2V0VmFyaWFibGVWYWx1ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJv
dG9jb2wvZGVidWdnZXItc2V0VmFyaWFibGVWYWx1ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
NGE4ZGJlOWU3ZThkODk2OTc0MjYxN2Y3YjY2MzcwNDE4ZGVjNjhlOQotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1zZXRWYXJpYWJsZVZh
bHVlLWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK0Nsb3N1cmUgcmV0dXJuczogeyJ0eXBl
Ijoic3RyaW5nIiwidmFsdWUiOiJ0dHR0cnVlNTIwMTMifQorIChleHBlY3RlZDogJ3R0dHRydWU1
MjAxMycpCisnRGVidWdnZXIuc2V0VmFyaWFibGVWYWx1ZScgd2Fzbid0IGZvdW5kCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1zZXRWYXJpYWJs
ZVZhbHVlLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXItc2V0
VmFyaWFibGVWYWx1ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjNlNDMyZGEyYzdlMmZlNWFkZjViNmZmZGU4
ZTQ2MDA1YTJjZjRiMDAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3It
cHJvdG9jb2wvZGVidWdnZXItc2V0VmFyaWFibGVWYWx1ZS5odG1sCkBAIC0wLDAgKzEsMTgwIEBA
Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iLi4v
aHR0cC90ZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvcmVzb3VyY2VzL3Byb3RvY29sLXRlc3QuanMi
Pjwvc2NyaXB0PgorPHNjcmlwdD4KKworZnVuY3Rpb24gdGVzdCgpCit7CisgICAgLy8gQSBnZW5l
cmFsLXB1cnBvc2UgZW5naW5lIGZvciBzZW5kaW5nIGEgc2VxdWVuY2Ugb2YgcHJvdG9jb2wgY29t
bWFuZHMuCisgICAgLy8gVGhlIGNsaWVudHMgcHJvdmlkZSByZXF1ZXN0cyBhbmQgcmVzcG9uc2Ug
aGFuZGxlcnMsIHdoaWxlIHRoZSBlbmdpbmUgY2F0Y2hlcworICAgIC8vIGVycm9ycyBhbmQgbWFr
ZXMgc3VyZSB0aGF0IG9uY2UgdGhlcmUncyBub3RoaW5nIHRvIGRvIGNvbXBsZXRlVGVzdCgpIGlz
IGNhbGxlZC4KKyAgICAvLyBAcGFyYW0gc3RlcCBpcyBhbiBvYmplY3Qgd2l0aCBjb21tYW5kLCBw
YXJhbXMgYW5kIGNhbGxiYWNrIGZpZWxkcyAKKyAgICBmdW5jdGlvbiBydW5SZXF1ZXN0U2VyaWVz
KHN0ZXApIHsKKyAgICAgICAgcHJvY2Vzc1N0ZXAoc3RlcCk7CisKKyAgICAgICAgZnVuY3Rpb24g
cHJvY2Vzc1N0ZXAocykgeworICAgICAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBwcm9j
ZXNzU3RlcE9yRmFpbChzKTsKKyAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmxvZyhlLnN0YWNrKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAg
IAorICAgICAgICBmdW5jdGlvbiBwcm9jZXNzU3RlcE9yRmFpbChzKSB7CisgICAgICAgICAgICBp
ZiAoIXMpIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwor
ICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgh
cy5jb21tYW5kKSB7CisgICAgICAgICAgICAgICAgLy8gQSBzaW1wbGUgbG9vcGJhY2sgc3RlcC4K
KyAgICAgICAgICAgICAgICB2YXIgbmV4dCA9IHMuY2FsbGJhY2soKTsKKyAgICAgICAgICAgICAg
ICBwcm9jZXNzU3RlcChuZXh0KTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAg
ICB9CisKKyAgICAgICAgICAgIHZhciBpbm5lckNhbGxiYWNrID0gZnVuY3Rpb24ocmVzcG9uc2Up
IHsKKyAgICAgICAgICAgICAgICB2YXIgbmV4dDsKKyAgICAgICAgICAgICAgICBpZiAoImVycm9y
IiBpbiByZXNwb25zZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoISgiZXJyb3JIYW5kbGVy
IiBpbiBzKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2cocmVz
cG9uc2UuZXJyb3IubWVzc2FnZSk7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAg
ICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBuZXh0ID0gcy5lcnJvckhhbmRsZXIocmVzcG9uc2UuZXJyb3IpOworICAg
ICAgICAgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhlLnN0YWNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47
CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHMuY2Fs
bGJhY2socmVzcG9uc2UucmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgfSBjYXRjaCAoZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coZS5zdGFjayk7Cisg
ICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgICAgICB9CisgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHByb2Nlc3NTdGVwKG5leHQpOworICAgICAg
ICAgICAgfQorICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZChzLmNvbW1hbmQs
IHMucGFyYW1zLCBpbm5lckNhbGxiYWNrKTsKKyAgICAgICAgfQorICAgIH0KKyAgICAKKyAgICB2
YXIgZmlyc3RTdGVwID0geyBjYWxsYmFjazogZW5hYmxlRGVidWdnZXIgfTsKKworICAgIHJ1blJl
cXVlc3RTZXJpZXMoZmlyc3RTdGVwKTsKKyAgICAKKyAgICBmdW5jdGlvbiBlbmFibGVEZWJ1Z2dl
cigpIHsKKyAgICAgICAgcmV0dXJuIHsgY29tbWFuZDogIkRlYnVnZ2VyLmVuYWJsZSIsIHBhcmFt
czoge30sIGNhbGxiYWNrOiBldmFsRnVuY3Rpb24gfTsKKyAgICB9CisgICAgCisgICAgLy8gVGVz
dGluZyBmdW5jdGlvbi9jbG9zdXJlIHNjb3Blcy4KKyAgICAKKyAgICBmdW5jdGlvbiBldmFsRnVu
Y3Rpb24ocmVzcG9uc2UpIHsKKyAgICAgICAgdmFyIGV4cHJlc3Npb24gPSAiKGZ1bmN0aW9uKHAp
e3ZhciByPTU7d2l0aCh7eWVhcjoyMDEzfSl7cmV0dXJuIGZ1bmN0aW9uIENsb3N1cmUocSl7cmV0
dXJuIHArcStyK3llYXJ9O319KSgndHR0JykiOworICAgICAgICByZXR1cm4geyBjb21tYW5kOiAi
UnVudGltZS5ldmFsdWF0ZSIsIHBhcmFtczoge2V4cHJlc3Npb246IGV4cHJlc3Npb259LCBjYWxs
YmFjazogY2FsbGJhY2tFdmFsRnVuY3Rpb24gfTsKKyAgICB9CisgICAgCisgICAgZnVuY3Rpb24g
Y2FsbGJhY2tFdmFsRnVuY3Rpb24ocmVzdWx0KSB7CisgICAgICAgIHZhciBpZCA9IHJlc3VsdC5y
ZXN1bHQub2JqZWN0SWQ7CisgICAgICAgIGlmIChpZCA9PT0gdW5kZWZpbmVkKQorICAgICAgICAg
ICAgdGhyb3cgbmV3IEVycm9yKCJvYmplY3RJZCBpcyBleHBlY3RlZCIpOworICAgICAgICByZXR1
cm4gY3JlYXRlQ2hlY2tGdW5jdGlvblN0ZXBDaGFpbihpZCk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gY3JlYXRlQ2hlY2tGdW5jdGlvblN0ZXBDaGFpbihmdW5jdGlvbk9iamVjdElkKSB7CisgICAg
ICAgIHZhciBwYXJhbXMgPSB7CisgICAgICAgICAgICBvYmplY3RJZDogZnVuY3Rpb25PYmplY3RJ
ZCwKKyAgICAgICAgICAgIGZ1bmN0aW9uRGVjbGFyYXRpb246ICJmdW5jdGlvbigpe3JldHVybiB0
aGlzKHRydWUpO30iCisgICAgICAgIH07CisgICAgICAgIHJldHVybiB7CisgICAgICAgICAgICBj
b21tYW5kOiAiUnVudGltZS5jYWxsRnVuY3Rpb25PbiIsIHBhcmFtczogcGFyYW1zLCBjYWxsYmFj
azogY2FsbGJhY2tMb2dDbG9zdXJlRXZhbAorICAgICAgICB9OworCisJICAgIGZ1bmN0aW9uIGNh
bGxiYWNrTG9nQ2xvc3VyZUV2YWwocmVzdWx0KSB7CisJICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiQ2xvc3VyZSByZXR1cm5zOiAiICsgSlNPTi5zdHJpbmdpZnkocmVzdWx0LnJlc3VsdCkpOwor
CSAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIiAoZXhwZWN0ZWQ6ICd0dHR0cnVlNTIwMTMnKSIp
OworCSAgICAgICAgCisJICAgICAgICB2YXIgcGFyYW1zID0geworCSAgICAgICAgICAgIGZ1bmN0
aW9uT2JqZWN0SWQ6IGZ1bmN0aW9uT2JqZWN0SWQsCisJICAgICAgICAgICAgc2NvcGVOdW1iZXI6
IDEsCisJICAgICAgICAgICAgdmFyaWFibGVOYW1lOiAiciIsCisJICAgICAgICAgICAgbmV3VmFs
dWU6IHsgdmFsdWU6IDQgfQorCSAgICAgICAgfTsKKwkgICAgICAgIHJldHVybiB7CisJICAgICAg
ICAgICAgY29tbWFuZDogIkRlYnVnZ2VyLnNldFZhcmlhYmxlVmFsdWUiLCBwYXJhbXM6IHBhcmFt
cywgY2FsbGJhY2s6IHNldFZhcmlhYmxlQ2FsbGJhY2sKKwkgICAgICAgIH07CisJICAgIH0KKwkg
ICAgCisJICAgIGZ1bmN0aW9uIHNldFZhcmlhYmxlQ2FsbGJhY2soKSB7CisJICAgICAgICBJbnNw
ZWN0b3JUZXN0LmxvZygiRGVidWdnZXIuc2V0VmFyaWFibGVWYWx1ZSBPSyIpOworCSAgICAgICAg
CisJICAgICAgICB2YXIgcGFyYW1zID0geworCSAgICAgICAgICAgIG9iamVjdElkOiBmdW5jdGlv
bk9iamVjdElkLAorCSAgICAgICAgICAgIGZ1bmN0aW9uRGVjbGFyYXRpb246ICJmdW5jdGlvbigp
e3JldHVybiB0aGlzKHRydWUpO30iCisJICAgICAgICB9OworCSAgICAgICAgcmV0dXJuIHsKKwkg
ICAgICAgICAgICBjb21tYW5kOiAiUnVudGltZS5jYWxsRnVuY3Rpb25PbiIsIHBhcmFtczogcGFy
YW1zLCBjYWxsYmFjazogY2FsbGJhY2tMb2dDbG9zdXJlRXZhbDIKKwkgICAgICAgIH07CisJICAg
ICAgICAKKwkgICAgfQorCisJICAgIGZ1bmN0aW9uIGNhbGxiYWNrTG9nQ2xvc3VyZUV2YWwyKHJl
c3VsdCkgeworCSAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkNsb3N1cmUgcmV0dXJuczogIiAr
IEpTT04uc3RyaW5naWZ5KHJlc3VsdC5yZXN1bHQpKTsKKwkgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCIgKGV4cGVjdGVkOiAndHR0dHJ1ZTQyMDEzJykiKTsKKwkgICAgICAgIAorCSAgICAgICAg
dmFyIHBhcmFtcyA9IHsKKwkgICAgICAgICAgICAvLyBObyB0YXJnZXQgaXMgc3BlY2lmaWVkCisJ
ICAgICAgICAgICAgc2NvcGVOdW1iZXI6IDEsCisJICAgICAgICAgICAgdmFyaWFibGVOYW1lOiAi
ciIsCisJICAgICAgICAgICAgbmV3VmFsdWU6IHsgdmFsdWU6IDQgfQorCSAgICAgICAgfTsKKwkg
ICAgICAgIHJldHVybiB7CisJICAgICAgICAgICAgY29tbWFuZDogIkRlYnVnZ2VyLnNldFZhcmlh
YmxlVmFsdWUiLCBwYXJhbXM6IHBhcmFtcywgZXJyb3JIYW5kbGVyOiBzZXRWYXJpYWJsZUVycm9y
Q2FsbGJhY2szCisJICAgICAgICB9OworCSAgICB9CisJICAgIAorCSAgICBmdW5jdGlvbiBzZXRW
YXJpYWJsZUVycm9yQ2FsbGJhY2szKGVycm9yKSB7CisJICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZygiRXhwZWN0ZWQgZXJyb3I6ICIgKyBKU09OLnN0cmluZ2lmeShlcnJvcikpOworCisJICAgICAg
ICB2YXIgcGFyYW1zID0geworCSAgICAgICAgICAgIGZ1bmN0aW9uT2JqZWN0SWQ6IGZ1bmN0aW9u
T2JqZWN0SWQsCisJICAgICAgICAgICAgc2NvcGVOdW1iZXI6IDEwMCwgLy8gV3Jvbmcgc2NvcGUg
bnVtYmVyCisJICAgICAgICAgICAgdmFyaWFibGVOYW1lOiAiciIsCisJICAgICAgICAgICAgbmV3
VmFsdWU6IHsgdmFsdWU6IDQgfQorCSAgICAgICAgfTsKKwkgICAgICAgIHJldHVybiB7CisJICAg
ICAgICAgICAgY29tbWFuZDogIkRlYnVnZ2VyLnNldFZhcmlhYmxlVmFsdWUiLCBwYXJhbXM6IHBh
cmFtcywgZXJyb3JIYW5kbGVyOiBzZXRWYXJpYWJsZUVycm9yQ2FsbGJhY2s0CisJICAgICAgICB9
OworCSAgICB9CisJICAgIAorCSAgICBmdW5jdGlvbiBzZXRWYXJpYWJsZUVycm9yQ2FsbGJhY2s0
KGVycm9yKSB7CisJICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiRXhwZWN0ZWQgZXJyb3IiKTsK
KworCSAgICAgICAgdmFyIHBhcmFtcyA9IHsKKwkgICAgICAgICAgICBmdW5jdGlvbk9iamVjdElk
OiBmdW5jdGlvbk9iamVjdElkLAorCSAgICAgICAgICAgIHNjb3BlTnVtYmVyOiAxLAorCSAgICAg
ICAgICAgIHZhcmlhYmxlTmFtZTogImJhZCIsIC8vIFdyb25nIHZhcmlhYmxlIG5hbWUKKwkgICAg
ICAgICAgICBuZXdWYWx1ZTogeyB2YWx1ZTogNCB9CisJICAgICAgICB9OworCSAgICAgICAgcmV0
dXJuIHsKKwkgICAgICAgICAgICBjb21tYW5kOiAiRGVidWdnZXIuc2V0VmFyaWFibGVWYWx1ZSIs
IHBhcmFtczogcGFyYW1zLCBlcnJvckhhbmRsZXI6IHNldFZhcmlhYmxlRXJyb3JDYWxsYmFjazUK
KwkgICAgICAgIH07CisJICAgIH0KKwkgICAgCisJICAgIGZ1bmN0aW9uIHNldFZhcmlhYmxlRXJy
b3JDYWxsYmFjazUoZXJyb3IpIHsKKwkgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFeHBlY3Rl
ZCBlcnJvciIpOworCSAgICAgICAgCisJICAgICAgICAvLyBFbmQgb2YgdGVzdC4KKwkgICAgICAg
IHJldHVybjsKKwkgICAgfQorICAgIH0KK30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25M
b2FkPSJydW5UZXN0KCk7Ij4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9jb25zb2xlL2NvbW1hbmQtbGluZS1hcGktZXhwZWN0ZWQudHh0IGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29tbWFuZC1saW5lLWFwaS1leHBlY3RlZC50eHQK
aW5kZXggNGNhN2I3YWQ5YmFhNWY5YWQ1NWEwYTIwNmRiYmM3YzQ5YTRkNDk3Ny4uYWMzNjk5OTE3
NWM3MmVmZmY2OTg1NmNhN2JlMmMyYTY2NGFhZTEzNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2NvbnNvbGUvY29tbWFuZC1saW5lLWFwaS1leHBlY3RlZC50eHQKKysrIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29tbWFuZC1saW5lLWFwaS1leHBlY3RlZC50eHQK
QEAgLTEsNCArMSw0IEBACi1DT05TT0xFIE1FU1NBR0U6IGxpbmUgMTA2MDogVGhlIGNvbnNvbGUg
ZnVuY3Rpb24gJCgpIGhhcyBjaGFuZ2VkIGZyb20gJD1nZXRFbGVtZW50QnlJZChpZCkgdG8gJD1x
dWVyeVNlbGVjdG9yKHNlbGVjdG9yKS4gWW91IG1pZ2h0IHRyeSAkKCIjJXMiKQorQ09OU09MRSBN
RVNTQUdFOiBsaW5lIDExMjE6IFRoZSBjb25zb2xlIGZ1bmN0aW9uICQoKSBoYXMgY2hhbmdlZCBm
cm9tICQ9Z2V0RWxlbWVudEJ5SWQoaWQpIHRvICQ9cXVlcnlTZWxlY3RvcihzZWxlY3RvcikuIFlv
dSBtaWdodCB0cnkgJCgiIyVzIikKIFRlc3RzIHRoYXQgY29tbWFuZCBsaW5lIGFwaSB3b3Jrcy4K
IAogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3It
cHJvdG9jb2wvZGVidWdnZXItc2V0VmFyaWFibGVWYWx1ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRU
ZXN0cy9wbGF0Zm9ybS9jaHJvbWl1bS9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXItc2V0VmFy
aWFibGVWYWx1ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjMzZWRmMzVhMGIwY2FiYjM3MDJk
YjBmMzM3NGQ2MzA0MjFlMjM1NgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3BsYXRm
b3JtL2Nocm9taXVtL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1zZXRWYXJpYWJsZVZhbHVl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDkgQEAKK0Nsb3N1cmUgcmV0dXJuczogeyJ0eXBlIjoi
c3RyaW5nIiwidmFsdWUiOiJ0dHR0cnVlNTIwMTMifQorIChleHBlY3RlZDogJ3R0dHRydWU1MjAx
MycpCitEZWJ1Z2dlci5zZXRWYXJpYWJsZVZhbHVlIE9LCitDbG9zdXJlIHJldHVybnM6IHsidHlw
ZSI6InN0cmluZyIsInZhbHVlIjoidHR0dHJ1ZTQyMDEzIn0KKyAoZXhwZWN0ZWQ6ICd0dHR0cnVl
NDIwMTMnKQorRXhwZWN0ZWQgZXJyb3I6IHsiY29kZSI6LTMyMDAwLCJtZXNzYWdlIjoiRWl0aGVy
IGNhbGwgZnJhbWUgb3IgZnVuY3Rpb24gb2JqZWN0IG11c3QgYmUgc3BlY2lmaWVkIn0KK0V4cGVj
dGVkIGVycm9yCitFeHBlY3RlZCBlcnJvcgorCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>186925</attachid>
            <date>2013-02-06 14:47:22 -0800</date>
            <delta_ts>2013-02-07 07:01:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-107829-20130207024358.patch</filename>
            <type>text/plain</type>
            <size>36522</size>
            <attacher name="Peter Rybin">prybin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQxOTk4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggY2RmY2Q1Yzg5ZjlmYmNj
N2RlZjllNDNlNmMzYTVmMjViZmViNzcwNC4uYmFkMTRiNzQ1YmNlYjFhODU2NDg5NDUzNzE1Y2U5
NDhjYmQxNDczNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYzIEBACisyMDEzLTAyLTA2ICBQZXRl
ciBSeWJpbiAgPHByeWJpbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjog
c3VwcG9ydCBKYXZhU2NyaXB0IHZhcmlhYmxlIG11dGF0aW9uIGluIHByb3RvY29sIGFuZCBWOCBi
aW5kaW5ncworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTA3ODI5CisKKyAgICAgICAgQSBuZXcgY29tbWFuZCBpcyBhZGRlZCB0byBwcm90b2NvbCBkZXNj
cmlwdGlvbiBhbmQgdGhlIGNhbGwgaXMgcGFzc2VkIHRocm91Z2gKKyAgICAgICAgZGVidWdnZXIg
YWdlbnQgdGhyb3VnaCBpbmplY3RlZCBzY3JpcHQgYW5kIGRlYnVnZ2VyIHNjcmlwdCBkb3duIHRv
IFY4IG1pcnJvcgorICAgICAgICBBUEkuIEpTQyBiaW5kaW5ncyBnb3QgYSB0aG9ydyBleGNlcHRp
b24gc3R1Yi4KKworICAgICAgICBPbmx5IGRlY2xhcmF0aXZlIEphdmFTY3JpcHQgc2NvcGVzIGFy
ZSBzdXBwb3J0ZWQgKGxvY2FsLCBjbG9zdXJlLCBjYXRjaCkuIE90aGVyCisgICAgICAgIHNjb3Bl
cyAoZ2xvYmFsLCB3aXRoKSBhcmUgbm90IHN1cHBvcnRlZCBieSBWOCBhbmQgbm90IHN1cHBvcnRl
ZCBieSBwcm90b2NvbCwgYmVjYXVzZQorICAgICAgICBtYW51YWwgYXBwcm9hY2ggKGRpcmVjdCBw
cm9wZXJ0eSBhc3NpZ21lbnQpIGlzIGF2YWlsYWJsZSBmb3IgdGhlbSBpbiBmb3JtIG9mIGV2YWx1
YXRlCisgICAgICAgIGNvbW1hbmRzIGFuZCBpcyBtb3JlIGRlc2lyYWJsZSBiZWNhdXNlIG9mIGEg
Y29tcGxleCBuYXR1cmUgb2Ygb3BlcmF0aW9uIChpdCBjYW4gdGhyb3cKKyAgICAgICAgZXhjZXB0
aW9uIGluIHNldmVyYWwgY2FzZXMgc3VjaCBhcyBleGNlcHRpb24gaW4gc2V0dGVyIGZ1bmN0aW9u
KS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
OiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXItc2V0VmFyaWFibGVWYWx1ZS5odG1sCisKKyAg
ICAgICAgKiBiaW5kaW5ncy9qcy9KU0luamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpKU0luamVjdGVkU2NyaXB0SG9zdDo6c2V0RnVuY3Rpb25WYXJpYWJsZVZh
bHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTSmF2YVNj
cmlwdENhbGxGcmFtZUN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0phdmFTY3JpcHRD
YWxsRnJhbWU6OnNldFZhcmlhYmxlVmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanM6CisgICAgICAgICguKToKKyAgICAgICAg
KiBiaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkphdmFTY3JpcHRDYWxsRnJhbWU6OnNldFZhcmlhYmxlVmFsdWUpOgorICAgICAgICAoV2ViQ29y
ZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5oOgorICAgICAg
ICAoSmF2YVNjcmlwdENhbGxGcmFtZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXI6OnNldEZ1
bmN0aW9uVmFyaWFibGVWYWx1ZSk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBiaW5k
aW5ncy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oOgorICAgICAgICAoU2NyaXB0RGVidWdTZXJ2ZXIp
OgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOEluamVjdGVkU2NyaXB0SG9zdDo6c2V0RnVuY3Rp
b25WYXJpYWJsZVZhbHVlQ2FsbGJhY2spOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICog
YmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOEphdmFTY3JpcHRDYWxsRnJhbWU6OnNldFZhcmlhYmxlVmFsdWVDYWxs
YmFjayk6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5qZWN0ZWRTY3JpcHQ6OnNldFZhcmlhYmxl
VmFsdWUpOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0Lmg6CisgICAgICAgIChJbmplY3RlZFNjcmlwdCk6CisgICAgICAgICogaW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0SG9zdC5pZGw6CisgICAgICAgICogaW5zcGVjdG9yL0luamVjdGVkU2Ny
aXB0U291cmNlLmpzOgorICAgICAgICAoLik6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rv
ci5qc29uOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0
YWlscyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRWYXJp
YWJsZVZhbHVlKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgIChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KToK
KyAgICAgICAgKiBpbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5pZGw6CisKIDIwMTMtMDIt
MDYgIEFuZHJlYXMgS2xpbmcgIDxha2xpbmdAYXBwbGUuY29tPgogCiAgICAgICAgIE9wdGltaXpl
IEdseXBoUGFnZSBmb3IgY2FzZSB3aGVyZSBhbGwgZ2x5cGhzIGFyZSBhdmFpbGFibGUgaW4gdGhl
IHNhbWUgZm9udC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSW5q
ZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pT
SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcAppbmRleCAwODlhODJmZThkYzAxZDE3OWY1NzU2
NGRmNmU3OWVkYWFjNzk5ZjFiLi4wZjE1ZTRiZTBlMGNlOWMxNTBlZDhhZmQwZmUyZjUzYmI2ZjM5
Y2FjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0luamVjdGVkU2Ny
aXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNJbmpl
Y3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCkBAIC0zMDcsNiArMzA3LDEzIEBAIEpTVmFsdWUgSlNJ
bmplY3RlZFNjcmlwdEhvc3Q6OmV2YWx1YXRlKEV4ZWNTdGF0ZSogZXhlYykKICAgICByZXR1cm4g
cmVzdWx0OwogfQogCitKU1ZhbHVlIEpTSW5qZWN0ZWRTY3JpcHRIb3N0OjpzZXRGdW5jdGlvblZh
cmlhYmxlVmFsdWUoSlNDOjpFeGVjU3RhdGUqIGV4ZWMpCit7CisgICAgLy8gRklYTUU6IGltcGxl
bWVudCB0aGlzLiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA3ODMw
CisgICAgdGhyb3dFcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlZhcmlhYmxlIHZh
bHVlIG11dGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQiKSk7CisgICAgcmV0dXJuIGpzVW5kZWZpbmVk
KCk7Cit9CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEVOQUJMRShJTlNQ
RUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3Jp
cHRDYWxsRnJhbWVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNKYXZh
U2NyaXB0Q2FsbEZyYW1lQ3VzdG9tLmNwcAppbmRleCBhMDY4MDg0YWZkZmU4MDMxY2JkNWZjMzBm
M2FjYmY4N2Y4ZWQ3NWU3Li5lMWRkN2M3NDFhY2QwMTgyOTZiNzM1YWYxMTgzYjcxOTA4MmQ2Mjg4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0phdmFTY3JpcHRDYWxs
RnJhbWVDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTSmF2YVNj
cmlwdENhbGxGcmFtZUN1c3RvbS5jcHAKQEAgLTEzMCw2ICsxMzAsMTMgQEAgSlNWYWx1ZSBKU0ph
dmFTY3JpcHRDYWxsRnJhbWU6OnNjb3BlVHlwZShFeGVjU3RhdGUqIGV4ZWMpCiAgICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7CiB9CiAKK0pTVmFsdWUgSlNKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzZXRW
YXJpYWJsZVZhbHVlKEpTQzo6RXhlY1N0YXRlKiBleGVjKQoreworICAgIC8vIEZJWE1FOiBpbXBs
ZW1lbnQgdGhpcy4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwNzgz
MAorICAgIHRocm93RXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJWYXJpYWJsZSB2
YWx1ZSBtdXRhdGlvbiBpcyBub3Qgc3VwcG9ydGVkIikpOworICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L0RlYnVnZ2VyU2NyaXB0LmpzIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJT
Y3JpcHQuanMKaW5kZXggMTY5MWY1NWU2NDJiZjIwZTg4YmYwYmE0MTRiOGY3NmY0ZmFkZDI3Mi4u
MmViNDNjNjFhOWI0N2EyZDkzM2FiZWEzMGE0NWYwNTEzYTc5MDM0OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvRGVidWdnZXJTY3JpcHQuanMKQEAgLTkzLDYgKzkzLDIzIEBAIERl
YnVnZ2VyU2NyaXB0LmdldEludGVybmFsUHJvcGVydGllcyA9IGZ1bmN0aW9uKHZhbHVlKQogICAg
IHJldHVybiByZXN1bHQ7CiB9CiAKK0RlYnVnZ2VyU2NyaXB0LnNldEZ1bmN0aW9uVmFyaWFibGVW
YWx1ZSA9IGZ1bmN0aW9uKGZ1bmN0aW9uVmFsdWUsIHNjb3BlSW5kZXgsIHZhcmlhYmxlTmFtZSwg
bmV3VmFsdWUpCit7CisgICAgdmFyIG1pcnJvciA9IE1ha2VNaXJyb3IoZnVuY3Rpb25WYWx1ZSk7
CisgICAgaWYgKCFtaXJyb3IuaXNGdW5jdGlvbigpKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkZ1bmN0aW9uIHZhbHVlIGhhcyBpbmNvcnJlY3QgdHlwZSIpOworICAgIHJldHVybiBEZWJ1Z2dl
clNjcmlwdC5fc2V0U2NvcGVWYXJpYWJsZVZhbHVlKG1pcnJvciwgc2NvcGVJbmRleCwgdmFyaWFi
bGVOYW1lLCBuZXdWYWx1ZSk7Cit9CisKK0RlYnVnZ2VyU2NyaXB0Ll9zZXRTY29wZVZhcmlhYmxl
VmFsdWUgPSBmdW5jdGlvbihzY29wZUhvbGRlciwgc2NvcGVJbmRleCwgdmFyaWFibGVOYW1lLCBu
ZXdWYWx1ZSkKK3sKKyAgICB2YXIgc2NvcGVNaXJyb3IgPSBzY29wZUhvbGRlci5zY29wZShzY29w
ZUluZGV4KTsKKyAgICBpZiAoIXNjb3BlTWlycm9yKQorICAgICAgICB0aHJvdyBuZXcgRXJyb3Io
IkluY29ycmVjdCBzY29wZSBpbmRleCIpOworICAgIHNjb3BlTWlycm9yLnNldFZhcmlhYmxlVmFs
dWUodmFyaWFibGVOYW1lLCBuZXdWYWx1ZSk7CisgICAgcmV0dXJuIHVuZGVmaW5lZDsKK30KKwog
RGVidWdnZXJTY3JpcHQuZ2V0U2NyaXB0cyA9IGZ1bmN0aW9uKGNvbnRleHREYXRhKQogewogICAg
IHZhciByZXN1bHQgPSBbXTsKQEAgLTI5NSw2ICszMTIsMTEgQEAgRGVidWdnZXJTY3JpcHQuX2Zy
YW1lTWlycm9yVG9KU0NhbGxGcmFtZSA9IGZ1bmN0aW9uKGZyYW1lTWlycm9yLCBjYWxsZXJGcmFt
ZSkKICAgICAgICAgcmV0dXJuIERlYnVnLkxpdmVFZGl0LlJlc3RhcnRGcmFtZShmcmFtZU1pcnJv
cik7CiAgICAgfQogCisgICAgZnVuY3Rpb24gc2V0VmFyaWFibGVWYWx1ZShzY29wZU51bWJlciwg
dmFyaWFibGVOYW1lLCBuZXdWYWx1ZSkKKyAgICB7CisgICAgICAgIHJldHVybiBEZWJ1Z2dlclNj
cmlwdC5fc2V0U2NvcGVWYXJpYWJsZVZhbHVlKGZyYW1lTWlycm9yLCBzY29wZU51bWJlciwgdmFy
aWFibGVOYW1lLCBuZXdWYWx1ZSk7CisgICAgfQorCiAgICAgcmV0dXJuIHsKICAgICAgICAgInNv
dXJjZUlEIjogc291cmNlSUQsCiAgICAgICAgICJsaW5lIjogbG9jYXRpb24gPyBsb2NhdGlvbi5s
aW5lIDogMCwKQEAgLTMwNSw3ICszMjcsOCBAQCBEZWJ1Z2dlclNjcmlwdC5fZnJhbWVNaXJyb3JU
b0pTQ2FsbEZyYW1lID0gZnVuY3Rpb24oZnJhbWVNaXJyb3IsIGNhbGxlckZyYW1lKQogICAgICAg
ICAic2NvcGVUeXBlIjogc2NvcGVUeXBlLAogICAgICAgICAiZXZhbHVhdGUiOiBldmFsdWF0ZSwK
ICAgICAgICAgImNhbGxlciI6IGNhbGxlckZyYW1lLAotICAgICAgICAicmVzdGFydCI6IHJlc3Rh
cnQKKyAgICAgICAgInJlc3RhcnQiOiByZXN0YXJ0LAorICAgICAgICAic2V0VmFyaWFibGVWYWx1
ZSI6IHNldFZhcmlhYmxlVmFsdWUKICAgICB9OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCmluZGV4IDc3MTFlMDk2OTA3ZjY2
MDhmMGI2MzNlMjRhZTBkYTI1MWE3NTkzNjQuLmJhMDVkNjAzZWVlZGQxMDhiNzRmY2IxNzQwNThm
NDZmNDFkMWZkYzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFT
Y3JpcHRDYWxsRnJhbWUuY3BwCkBAIC0xMzQsNiArMTM0LDE3IEBAIHY4OjpIYW5kbGU8djg6OlZh
bHVlPiBKYXZhU2NyaXB0Q2FsbEZyYW1lOjpyZXN0YXJ0KCkKICAgICByZXR1cm4gcmVzdWx0Owog
fQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gSmF2YVNjcmlwdENhbGxGcmFtZTo6c2V0VmFyaWFi
bGVWYWx1ZShpbnQgc2NvcGVOdW1iZXIsIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gbmV3VmFsdWUpCit7CisgICAgdjg6OkhhbmRsZTx2ODo6RnVuY3Rp
b24+IHNldFZhcmlhYmxlVmFsdWVGdW5jdGlvbiA9IHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPjo6
Q2FzdChtX2NhbGxGcmFtZS5nZXQoKS0+R2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgic2V0VmFy
aWFibGVWYWx1ZSIpKSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSA9IHsKKyAg
ICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+KHY4OjpJbnRlZ2VyOjpOZXcoc2NvcGVOdW1iZXIp
KSwKKyAgICAgICAgdjhTdHJpbmcodmFyaWFibGVOYW1lLCBtX2RlYnVnZ2VyQ29udGV4dC0+R2V0
SXNvbGF0ZSgpKSwKKyAgICAgICAgbmV3VmFsdWUKKyAgICB9OworICAgIHJldHVybiBzZXRWYXJp
YWJsZVZhbHVlRnVuY3Rpb24tPkNhbGwobV9jYWxsRnJhbWUuZ2V0KCksIDMsIGFyZ3YpOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3Jp
cHRDYWxsRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0phdmFTY3JpcHRDYWxs
RnJhbWUuaAppbmRleCAzMTMxNzA5MGUzN2NhMjA2NzkzMTlkMDhiYTQwOGEwNzBlNDRiNzhiLi5h
N2UzZGIxZTNkMTM5NmZjNDAyZjExNGFmYjllOWI5ODFlZjI2ZWNmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9KYXZhU2NyaXB0Q2FsbEZyYW1lLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvSmF2YVNjcmlwdENhbGxGcmFtZS5oCkBAIC02MSw2ICs2MSw3
IEBAIHB1YmxpYzoKICAgICAKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZXZhbHVhdGUoY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uKTsKICAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gcmVzdGFy
dCgpOworICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBzZXRWYXJpYWJsZVZhbHVlKGludCBzY29w
ZU51bWJlciwgY29uc3QgU3RyaW5nJiB2YXJpYWJsZU5hbWUsIHY4OjpIYW5kbGU8djg6OlZhbHVl
PiBuZXdWYWx1ZSk7CiAgICAgCiBwcml2YXRlOgogICAgIEphdmFTY3JpcHRDYWxsRnJhbWUodjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gZGVidWdnZXJDb250ZXh0LCB2ODo6SGFuZGxlPHY4OjpPYmpl
Y3Q+IGNhbGxGcmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9T
Y3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKaW5kZXggMjAzZTcyNTk4YmQ4ZjdiNTgxZjM4YWNlZGNlZjQ5ZWU4MTkw
NzMwOC4uZTQwNDk1ZjI0ODU1YzlmMWNjOGIwMzM4YjE4ODM3MjRlMGI1OWUxNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmNwcApAQCAtNTU3
LDYgKzU1NywyMSBAQCB2ODo6TG9jYWw8djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6Z2V0
SW50ZXJuYWxQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iagogICAgIHJldHVybiBjYWxsRGVi
dWdnZXJNZXRob2QoImdldEludGVybmFsUHJvcGVydGllcyIsIDEsIGFyZ3YpOwogfQogCit2ODo6
TG9jYWw8djg6OlZhbHVlPiBTY3JpcHREZWJ1Z1NlcnZlcjo6c2V0RnVuY3Rpb25WYXJpYWJsZVZh
bHVlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiBmdW5jdGlvblZhbHVlLCBpbnQgc2NvcGVOdW1iZXIs
IGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1lLCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmV3VmFs
dWUpCit7CisgICAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBkZWJ1Z2dlckNvbnRleHQgPSB2ODo6
RGVidWc6OkdldERlYnVnQ29udGV4dCgpOworICAgIGlmIChtX2RlYnVnZ2VyU2NyaXB0LmdldCgp
LklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuICoodjg6OlRocm93RXhjZXB0aW9uKHY4OjpTdHJp
bmc6Ok5ldygiRGVidWdnaW5nIGlzIG5vdCBlbmFibGVkLiIpKSk7CisKKyAgICB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gYXJndltdID0geworICAgICAgICBmdW5jdGlvblZhbHVlLAorICAgICAgICB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4odjg6OkludGVnZXI6Ok5ldyhzY29wZU51bWJlcikpLAorICAg
ICAgICB2OFN0cmluZyh2YXJpYWJsZU5hbWUsIGRlYnVnZ2VyQ29udGV4dC0+R2V0SXNvbGF0ZSgp
KSwKKyAgICAgICAgbmV3VmFsdWUKKyAgICB9OworICAgIHJldHVybiBjYWxsRGVidWdnZXJNZXRo
b2QoInNldEZ1bmN0aW9uVmFyaWFibGVWYWx1ZSIsIDQsIGFyZ3YpOworfQorCiAKIGJvb2wgU2Ny
aXB0RGVidWdTZXJ2ZXI6OmlzUGF1c2VkKCkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9TY3JpcHREZWJ1Z1NlcnZlci5oCmluZGV4IGFlZmUyZWJiYzM3MDc5YzA5YmM5YTA2NTEw
YThjYjBiZmY0YWI2ZDcuLjdkYzAxZjI5Y2U2ZDE1YWYzZGQ2M2IzY2U0NWNjYzk0YmNmNTgyNzUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1NjcmlwdERlYnVnU2VydmVy
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvU2NyaXB0RGVidWdTZXJ2ZXIuaApA
QCAtMTAxLDYgKzEwMSw4IEBAIHB1YmxpYzoKIAogICAgIHY4OjpMb2NhbDx2ODo6VmFsdWU+IGZ1
bmN0aW9uU2NvcGVzKHY4OjpIYW5kbGU8djg6OkZ1bmN0aW9uPik7CiAgICAgdjg6OkxvY2FsPHY4
OjpWYWx1ZT4gZ2V0SW50ZXJuYWxQcm9wZXJ0aWVzKHY4OjpIYW5kbGU8djg6Ok9iamVjdD4mKTsK
KyAgICB2ODo6TG9jYWw8djg6OlZhbHVlPiBzZXRGdW5jdGlvblZhcmlhYmxlVmFsdWUodjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGZ1bmN0aW9uVmFsdWUsIGludCBzY29wZU51bWJlciwgY29uc3QgU3Ry
aW5nJiB2YXJpYWJsZU5hbWUsIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBuZXdWYWx1ZSk7CisKIAog
ICAgIHZpcnR1YWwgdm9pZCBjb21waWxlU2NyaXB0KFNjcmlwdFN0YXRlKiwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgU3RyaW5nKiBzY3JpcHRJZCwg
U3RyaW5nKiBleGNlcHRpb25NZXNzYWdlKTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJDb21waWxl
ZFNjcmlwdHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhJbmplY3RlZFNjcmlwdEhvc3RDdXN0b20uY3BwCmluZGV4IDQxMDRiZGZh
Zjg3Mzg1MDI1Mzk2MTA2YmFjOGY3MTUzM2RjY2M2YTYuLjA3ODNkMmM2MGZkMDhmNmQ2ZGQ4NjU5
MGM2NWM3MzMxZDIyZTJiMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOEluamVjdGVkU2NyaXB0SG9zdEN1c3RvbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SW5qZWN0ZWRTY3JpcHRIb3N0Q3VzdG9tLmNwcApAQCAt
MzIxLDYgKzMyMSwxOSBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhv
c3Q6OmV2YWx1YXRlQ2FsbGJhY2soY29uc3Qgdjg6OkFyZ3VtZW50cwogICAgIHJldHVybiBzY3Jp
cHQtPlJ1bigpOwogfQogCit2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhJbmplY3RlZFNjcmlwdEhv
c3Q6OnNldEZ1bmN0aW9uVmFyaWFibGVWYWx1ZUNhbGxiYWNrKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCit7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGZ1bmN0aW9uVmFsdWUgPSBhcmdz
WzBdOworICAgIGludCBzY29wZUluZGV4ID0gYXJnc1sxXS0+SW50MzJWYWx1ZSgpOworICAgIFN0
cmluZyB2YXJpYWJsZU5hbWUgPSB0b1dlYkNvcmVTdHJpbmdXaXRoVW5kZWZpbmVkT3JOdWxsQ2hl
Y2soYXJnc1syXSk7CisgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IG5ld1ZhbHVlID0gYXJnc1sz
XTsKKworICAgIEluamVjdGVkU2NyaXB0SG9zdCogaG9zdCA9IFY4SW5qZWN0ZWRTY3JpcHRIb3N0
Ojp0b05hdGl2ZShhcmdzLkhvbGRlcigpKTsKKyAgICBTY3JpcHREZWJ1Z1NlcnZlciYgZGVidWdT
ZXJ2ZXIgPSBob3N0LT5zY3JpcHREZWJ1Z1NlcnZlcigpOworICAgIHJldHVybiBkZWJ1Z1NlcnZl
ci5zZXRGdW5jdGlvblZhcmlhYmxlVmFsdWUoZnVuY3Rpb25WYWx1ZSwgc2NvcGVJbmRleCwgdmFy
aWFibGVOYW1lLCBuZXdWYWx1ZSk7Cit9CisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAj
ZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3Y4L2N1c3RvbS9WOEphdmFTY3JpcHRDYWxsRnJhbWVDdXN0b20uY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5j
cHAKaW5kZXggZTA4NzRiMmQ5Yzk1N2IzOTFjZDIyZWY2YTJjNzI4YzU2NTVmNDg2YS4uN2NiMjg5
ZTgxZThhODY3NmYwNGEyYTc4YTA3NTk3M2YyNmYzYTE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxGcmFtZUN1c3RvbS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4SmF2YVNjcmlwdENhbGxG
cmFtZUN1c3RvbS5jcHAKQEAgLTUwLDYgKzUwLDE1IEBAIHY4OjpIYW5kbGU8djg6OlZhbHVlPiBW
OEphdmFTY3JpcHRDYWxsRnJhbWU6OnJlc3RhcnRDYWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRz
CiAgICAgcmV0dXJuIGltcGwtPnJlc3RhcnQoKTsKIH0KIAordjg6OkhhbmRsZTx2ODo6VmFsdWU+
IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6c2V0VmFyaWFibGVWYWx1ZUNhbGxiYWNrKGNvbnN0IHY4
OjpBcmd1bWVudHMmIGFyZ3MpCit7CisgICAgSmF2YVNjcmlwdENhbGxGcmFtZSogaW1wbCA9IFY4
SmF2YVNjcmlwdENhbGxGcmFtZTo6dG9OYXRpdmUoYXJncy5Ib2xkZXIoKSk7CisgICAgaW50IHNj
b3BlSW5kZXggPSBhcmdzWzBdLT5JbnQzMlZhbHVlKCk7CisgICAgU3RyaW5nIHZhcmlhYmxlTmFt
ZSA9IHRvV2ViQ29yZVN0cmluZ1dpdGhVbmRlZmluZWRPck51bGxDaGVjayhhcmdzWzFdKTsKKyAg
ICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gbmV3VmFsdWUgPSBhcmdzWzJdOworICAgIHJldHVybiBp
bXBsLT5zZXRWYXJpYWJsZVZhbHVlKHNjb3BlSW5kZXgsIHZhcmlhYmxlTmFtZSwgbmV3VmFsdWUp
OworfQorCiB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gVjhKYXZhU2NyaXB0Q2FsbEZyYW1lOjpzY29w
ZUNoYWluQWNjZXNzb3JHZXR0ZXIodjg6OkxvY2FsPHY4OjpTdHJpbmc+IG5hbWUsIGNvbnN0IHY4
OjpBY2Nlc3NvckluZm8mIGluZm8pCiB7CiAgICAgSmF2YVNjcmlwdENhbGxGcmFtZSogaW1wbCA9
IFY4SmF2YVNjcmlwdENhbGxGcmFtZTo6dG9OYXRpdmUoaW5mby5Ib2xkZXIoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRTY3JpcHQuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0LmNwcAppbmRleCBmYWU4MWRiOWU0ZmNh
NmJjZjk0N2RkMTdjYjQyZDA0ODc1M2Y0ZTMyLi42MGFhMGNhODkyODE3YjFlMmQ1OTk2NmUwMTMz
YWZmZTJlODJjMjI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0
ZWRTY3JpcHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlw
dC5jcHAKQEAgLTExNiw2ICsxMTYsMzYgQEAgdm9pZCBJbmplY3RlZFNjcmlwdDo6cmVzdGFydEZy
YW1lKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0VmFsdWUmIGMKICAgICAq
ZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IiOwogfQogCit2b2lkIEluamVjdGVkU2NyaXB0
OjpzZXRWYXJpYWJsZVZhbHVlKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU2NyaXB0
VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IFN0cmluZyogY2FsbEZyYW1lSWRPcHQsIGNvbnN0IFN0
cmluZyogZnVuY3Rpb25PYmplY3RJZE9wdCwgaW50IHNjb3BlTnVtYmVyLCBjb25zdCBTdHJpbmcm
IHZhcmlhYmxlTmFtZSwgY29uc3QgU3RyaW5nJiBuZXdWYWx1ZVN0cikKK3sKKyAgICBTY3JpcHRG
dW5jdGlvbkNhbGwgZnVuY3Rpb24oaW5qZWN0ZWRTY3JpcHRPYmplY3QoKSwgInNldFZhcmlhYmxl
VmFsdWUiKTsKKyAgICBpZiAoY2FsbEZyYW1lSWRPcHQpIHsKKyAgICAgICAgZnVuY3Rpb24uYXBw
ZW5kQXJndW1lbnQoY2FsbEZyYW1lcyk7CisgICAgICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50
KCpjYWxsRnJhbWVJZE9wdCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgZnVuY3Rpb24uYXBwZW5k
QXJndW1lbnQoZmFsc2UpOworICAgICAgICBmdW5jdGlvbi5hcHBlbmRBcmd1bWVudChmYWxzZSk7
CisgICAgfQorICAgIGlmIChmdW5jdGlvbk9iamVjdElkT3B0KQorICAgICAgICBmdW5jdGlvbi5h
cHBlbmRBcmd1bWVudCgqZnVuY3Rpb25PYmplY3RJZE9wdCk7CisgICAgZWxzZQorICAgICAgICBm
dW5jdGlvbi5hcHBlbmRBcmd1bWVudChmYWxzZSk7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1l
bnQoc2NvcGVOdW1iZXIpOworICAgIGZ1bmN0aW9uLmFwcGVuZEFyZ3VtZW50KHZhcmlhYmxlTmFt
ZSk7CisgICAgZnVuY3Rpb24uYXBwZW5kQXJndW1lbnQobmV3VmFsdWVTdHIpOworICAgIFJlZlB0
cjxJbnNwZWN0b3JWYWx1ZT4gcmVzdWx0VmFsdWU7CisgICAgbWFrZUNhbGwoZnVuY3Rpb24sICZy
ZXN1bHRWYWx1ZSk7CisgICAgaWYgKCFyZXN1bHRWYWx1ZSkgeworICAgICAgICAqZXJyb3JTdHJp
bmcgPSAiSW50ZXJuYWwgZXJyb3IiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmIChy
ZXN1bHRWYWx1ZS0+dHlwZSgpID09IEluc3BlY3RvclZhbHVlOjpUeXBlU3RyaW5nKSB7CisgICAg
ICAgIHJlc3VsdFZhbHVlLT5hc1N0cmluZyhlcnJvclN0cmluZyk7CisgICAgICAgIHJldHVybjsK
KyAgICB9CisgICAgLy8gTm9ybWFsIHJldHVybi4KK30KKwogdm9pZCBJbmplY3RlZFNjcmlwdDo6
Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5n
JiBmdW5jdGlvbklkLCBSZWZQdHI8RnVuY3Rpb25EZXRhaWxzPiogcmVzdWx0KQogewogICAgIFNj
cmlwdEZ1bmN0aW9uQ2FsbCBmdW5jdGlvbihpbmplY3RlZFNjcmlwdE9iamVjdCgpLCAiZ2V0RnVu
Y3Rpb25EZXRhaWxzIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5o
CmluZGV4IDVkNWRjNDA4NGIwODBiMjY1MDJhM2MwYWI1OTY5Yzg1YWM0MTFlYTcuLjJmOTZjMmRm
Nzg4Njg5MmRiMzM3M2E1NDZhMDA3NmJjOTgwNmIzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbmplY3RlZFNjcmlwdC5oCkBAIC04MCw2ICs4MCw3IEBAIHB1YmxpYzoKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPFR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVP
YmplY3Q+KiByZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFR5cGVCdWlsZGVy
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bik7CiAgICAgdm9pZCByZXN0YXJ0RnJhbWUoRXJy
b3JTdHJpbmcqLCBjb25zdCBTY3JpcHRWYWx1ZSYgY2FsbEZyYW1lcywgY29uc3QgU3RyaW5nJiBj
YWxsRnJhbWVJZCwgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIHJlc3VsdCk7CisgICAgdm9pZCBz
ZXRWYXJpYWJsZVZhbHVlKEVycm9yU3RyaW5nKiwgY29uc3QgU2NyaXB0VmFsdWUmIGNhbGxGcmFt
ZXMsIGNvbnN0IFN0cmluZyogY2FsbEZyYW1lSWRPcHQsIGNvbnN0IFN0cmluZyogZnVuY3Rpb25P
YmplY3RJZE9wdCwgaW50IHNjb3BlTnVtYmVyLCBjb25zdCBTdHJpbmcmIHZhcmlhYmxlTmFtZSwg
Y29uc3QgU3RyaW5nJiBuZXdWYWx1ZVN0cik7CiAgICAgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMo
RXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxUeXBlQnVpbGRl
cjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgYm9vbCBvd25Qcm9w
ZXJ0aWVzLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpQ
cm9wZXJ0eURlc2NyaXB0b3I+ID4qIHJlc3VsdCk7CiAgICAgdm9pZCBnZXRJbnRlcm5hbFByb3Bl
cnRpZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBSZWZQdHI8VHlwZUJ1
aWxkZXI6OkFycmF5PFR5cGVCdWlsZGVyOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3Jp
cHRvcj4gPiogcmVzdWx0KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bmplY3RlZFNjcmlwdEhvc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVk
U2NyaXB0SG9zdC5pZGwKaW5kZXggZDM3YTFiODBiMzkyMDUzMDcxZGUxNThkYTQ3MGFiZjAwOWRm
YWM3NS4uN2E1YTU4MGQ1OGQxMGE2M2U2NWQ4YWFjYzNlY2RjNzk5ODJiZjZlMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0SG9zdC5pZGwKQEAgLTQ5LDQg
KzQ5LDYgQEAKICAgICBbQ3VzdG9tXSBET01TdHJpbmcgZGF0YWJhc2VJZChpbiBET01PYmplY3Qg
ZGF0YWJhc2UpOwogICAgIFtDdXN0b21dIERPTVN0cmluZyBzdG9yYWdlSWQoaW4gRE9NT2JqZWN0
IHN0b3JhZ2UpOwogICAgIFtDdXN0b21dIERPTU9iamVjdCBldmFsdWF0ZShpbiBET01TdHJpbmcg
dGV4dCk7CisgICAgLy8gT25seSBkZWNsYXJhdGl2ZSBzY29wZSAobG9jYWwsIHdpdGggYW5kIGNh
dGNoKSBpcyBhY2NlcHRlZC4gUmV0dXJucyB1bmRlZmluZWQuIAorICAgIFtDdXN0b21dIERPTU9i
amVjdCBzZXRGdW5jdGlvblZhcmlhYmxlVmFsdWUoaW4gRE9NT2JqZWN0IGZ1bmN0aW9uT2JqZWN0
LCBpbiBpbnQgc2NvcGVJbmRleCwgaW4gRE9NU3RyaW5nIHZhcmlhYmxlTmFtZSwgRE9NT2JqZWN0
IG5ld1ZhbHVlKTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5q
ZWN0ZWRTY3JpcHRTb3VyY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5qZWN0ZWRT
Y3JpcHRTb3VyY2UuanMKaW5kZXggNWIxY2E4YTEyZDIyYzJkYjExOTM3MGVkMzlhMDhlZmQyMjFi
NTc1Yi4uOTFlYjFlMjdiMGQ5NjE2MWY3MmIwZDUxNGMwNGY3NjQ2ZDk5MDA3ZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luamVjdGVkU2NyaXB0U291cmNlLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbmplY3RlZFNjcmlwdFNvdXJjZS5qcwpAQCAtNDI3
LDIxICs0MjcsMTMgQEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAg
dmFyIHJlc29sdmVkQXJncyA9IFtdOwogICAgICAgICAgICAgYXJncyA9IEluamVjdGVkU2NyaXB0
SG9zdC5ldmFsdWF0ZShhcmdzKTsKICAgICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJn
cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgICAgIG9iamVjdElkID0gYXJnc1tpXS5vYmpl
Y3RJZDsKLSAgICAgICAgICAgICAgICBpZiAob2JqZWN0SWQpIHsKLSAgICAgICAgICAgICAgICAg
ICAgdmFyIHBhcnNlZEFyZ0lkID0gdGhpcy5fcGFyc2VPYmplY3RJZChvYmplY3RJZCk7Ci0gICAg
ICAgICAgICAgICAgICAgIGlmICghcGFyc2VkQXJnSWQgfHwgcGFyc2VkQXJnSWRbImluamVjdGVk
U2NyaXB0SWQiXSAhPT0gaW5qZWN0ZWRTY3JpcHRJZCkKLSAgICAgICAgICAgICAgICAgICAgICAg
IHJldHVybiAiQXJndW1lbnRzIHNob3VsZCBiZWxvbmcgdG8gdGhlIHNhbWUgSmF2YVNjcmlwdCB3
b3JsZCBhcyB0aGUgdGFyZ2V0IG9iamVjdC4iOwotCi0gICAgICAgICAgICAgICAgICAgIHZhciBy
ZXNvbHZlZEFyZyA9IHRoaXMuX29iamVjdEZvcklkKHBhcnNlZEFyZ0lkKTsKLSAgICAgICAgICAg
ICAgICAgICAgaWYgKCF0aGlzLl9pc0RlZmluZWQocmVzb2x2ZWRBcmcpKQotICAgICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuICJDb3VsZCBub3QgZmluZCBvYmplY3Qgd2l0aCBnaXZlbiBpZCI7
Ci0KLSAgICAgICAgICAgICAgICAgICAgcmVzb2x2ZWRBcmdzLnB1c2gocmVzb2x2ZWRBcmcpOwot
ICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoInZhbHVlIiBpbiBhcmdzW2ldKQotICAgICAgICAg
ICAgICAgICAgICByZXNvbHZlZEFyZ3MucHVzaChhcmdzW2ldLnZhbHVlKTsKLSAgICAgICAgICAg
ICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQXJncy5wdXNoKHVuZGVmaW5l
ZCk7CisgICAgICAgICAgICAgICAgdmFyIHJlc29sdmVkQ2FsbEFyZ3VtZW50OworICAgICAgICAg
ICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkQ2FsbEFyZ3VtZW50ID0g
dGhpcy5fcmVzb2x2ZUNhbGxBcmd1bWVudChhcmdzW2ldKTsKKyAgICAgICAgICAgICAgICB9IGNh
dGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBTdHJpbmcoZSk7CisgICAgICAg
ICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJlc29sdmVkQXJncy5wdXNoKHJlc29sdmVkQ2Fs
bEFyZ3VtZW50KQogICAgICAgICAgICAgfQogICAgICAgICB9CiAKQEAgLTQ1Nyw2ICs0NDksMzAg
QEAgSW5qZWN0ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuIHRoaXMu
X2NyZWF0ZVRocm93blZhbHVlKGUsIG9iamVjdEdyb3VwKTsKICAgICAgICAgfQogICAgIH0sCisg
ICAgCisgICAgLyoqCisgICAgICogUmVzb2x2ZXMgYSB2YWx1ZSBmcm9tIENhbGxBcmd1bWVudCBk
ZXNjcmlwdGlvbi4KKyAgICAgKiBAcGFyYW0ge1J1bnRpbWVBZ2VudC5DYWxsQXJndW1lbnR9IGNh
bGxBcmd1bWVudEpzb24KKyAgICAgKiBAcmV0dXJuIHsqfSByZXNvbHZlZCB2YWx1ZQorICAgICAq
IEB0aHJvdyB7c3RyaW5nfSBlcnJvciBtZXNzYWdlCisgICAgICovCisgICAgX3Jlc29sdmVDYWxs
QXJndW1lbnQ6IGZ1bmN0aW9uKGNhbGxBcmd1bWVudEpzb24pIHsKKyAgICAgICAgdmFyIG9iamVj
dElkID0gY2FsbEFyZ3VtZW50SnNvbi5vYmplY3RJZDsKKyAgICAgICAgaWYgKG9iamVjdElkKSB7
CisgICAgICAgICAgICB2YXIgcGFyc2VkQXJnSWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKG9iamVj
dElkKTsKKyAgICAgICAgICAgIGlmICghcGFyc2VkQXJnSWQgfHwgcGFyc2VkQXJnSWRbImluamVj
dGVkU2NyaXB0SWQiXSAhPT0gaW5qZWN0ZWRTY3JpcHRJZCkKKyAgICAgICAgICAgICAgICB0aHJv
dyAiQXJndW1lbnRzIHNob3VsZCBiZWxvbmcgdG8gdGhlIHNhbWUgSmF2YVNjcmlwdCB3b3JsZCBh
cyB0aGUgdGFyZ2V0IG9iamVjdC4iOworCisgICAgICAgICAgICB2YXIgcmVzb2x2ZWRBcmcgPSB0
aGlzLl9vYmplY3RGb3JJZChwYXJzZWRBcmdJZCk7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2lz
RGVmaW5lZChyZXNvbHZlZEFyZykpCisgICAgICAgICAgICAgICAgdGhyb3cgIkNvdWxkIG5vdCBm
aW5kIG9iamVjdCB3aXRoIGdpdmVuIGlkIjsKKworICAgICAgICAgICAgcmV0dXJuIHJlc29sdmVk
QXJnOworICAgICAgICB9IGVsc2UgaWYgKCJ2YWx1ZSIgaW4gY2FsbEFyZ3VtZW50SnNvbikKKyAg
ICAgICAgICAgIHJldHVybiBjYWxsQXJndW1lbnRKc29uLnZhbHVlOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICByZXR1cm4gdW5kZWZpbmVkOworICAgIH0sCiAKICAgICAvKioKICAgICAgKiBA
cGFyYW0ge0Z1bmN0aW9ufSBldmFsRnVuY3Rpb24KQEAgLTU3Niw2ICs1OTIsNTEgQEAgSW5qZWN0
ZWRTY3JpcHQucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBFaXRoZXIg
Y2FsbEZyYW1lSWQgb3IgZnVuY3Rpb25PYmplY3RJZCBtdXN0IGJlIHNwZWNpZmllZC4KKyAgICAg
KiBAcGFyYW0ge09iamVjdH0gdG9wQ2FsbEZyYW1lCisgICAgICogQHBhcmFtIHtzdHJpbmd8Ym9v
bGVhbn0gY2FsbEZyYW1lSWQgb3IgZmFsc2UKKyAgICAgKiBAcGFyYW0ge3N0cmluZ3xib29sZWFu
fSBmdW5jdGlvbk9iamVjdElkIG9yIGZhbHNlCisgICAgICogQHBhcmFtIHtpbnRlZ2VyfSBzY29w
ZU51bWJlcgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB2YXJpYWJsZU5hbWUKKyAgICAgKiBAcGFy
YW0ge3N0cmluZ30gbmV3VmFsdWVKc29uU3RyaW5nIFJ1bnRpbWVBZ2VudC5DYWxsQXJndW1lbnQg
c3RydWN0dXJlIHNlcmlhbGl6ZWQgYXMgc3RyaW5nIAorICAgICAqIEByZXR1cm4ge3N0cmluZ3x1
bmRlZmluZWR9IHVuZGVmaW5lZCBpZiBzdWNjZXNzIG9yIGFuIGVycm9yIG1lc3NhZ2UgCisgICAg
ICovCisgICAgc2V0VmFyaWFibGVWYWx1ZTogZnVuY3Rpb24odG9wQ2FsbEZyYW1lLCBjYWxsRnJh
bWVJZCwgZnVuY3Rpb25PYmplY3RJZCwgc2NvcGVOdW1iZXIsIHZhcmlhYmxlTmFtZSwgbmV3VmFs
dWVKc29uU3RyaW5nKQorICAgIHsgICAKKyAgICAgICAgdmFyIHNldHRlcjsKKyAgICAgICAgaWYg
KGNhbGxGcmFtZUlkKSB7CisgICAgICAgICAgICB2YXIgY2FsbEZyYW1lID0gdGhpcy5fY2FsbEZy
YW1lRm9ySWQodG9wQ2FsbEZyYW1lLCBjYWxsRnJhbWVJZCk7CisgICAgICAgICAgICBpZiAoIWNh
bGxGcmFtZSkKKyAgICAgICAgICAgICAgICByZXR1cm4gIkNvdWxkIG5vdCBmaW5kIGNhbGwgZnJh
bWUgd2l0aCBnaXZlbiBpZCI7CisgICAgICAgICAgICBzZXR0ZXIgPSBjYWxsRnJhbWUuc2V0VmFy
aWFibGVWYWx1ZS5iaW5kKGNhbGxGcmFtZSk7ICAgIAorICAgICAgICB9IGVsc2UgeworICAgICAg
ICAgICAgdmFyIHBhcnNlZEZ1bmN0aW9uSWQgPSB0aGlzLl9wYXJzZU9iamVjdElkKGZ1bmN0aW9u
T2JqZWN0SWQpOworICAgICAgICAgICAgdmFyIGZ1bmMgPSB0aGlzLl9vYmplY3RGb3JJZChwYXJz
ZWRGdW5jdGlvbklkKTsKKyAgICAgICAgICAgIGlmICh0eXBlb2YgZnVuYyAhPT0gImZ1bmN0aW9u
IikKKyAgICAgICAgICAgICAgICByZXR1cm4gIkNhbm5vdCByZXNvbHZlIGZ1bmN0aW9uIGJ5IGlk
LiI7CisgICAgICAgICAgICBzZXR0ZXIgPSBJbmplY3RlZFNjcmlwdEhvc3Quc2V0RnVuY3Rpb25W
YXJpYWJsZVZhbHVlLmJpbmQoSW5qZWN0ZWRTY3JpcHRIb3N0LCBmdW5jKTsgCisgICAgICAgIH0K
KyAgICAgICAgdmFyIG5ld1ZhbHVlSnNvbjsKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIG5l
d1ZhbHVlSnNvbiA9IEluamVjdGVkU2NyaXB0SG9zdC5ldmFsdWF0ZSgiKCIgKyBuZXdWYWx1ZUpz
b25TdHJpbmcgKyAiKSIpOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1
cm4gIkZhaWxlZCB0byBwYXJzZSBuZXcgdmFsdWUgSlNPTiAiICsgbmV3VmFsdWVKc29uU3RyaW5n
ICsgIiA6ICIgKyBlOworICAgICAgICB9CisgICAgICAgIHZhciByZXNvbHZlZFZhbHVlOworICAg
ICAgICB0cnkgeworICAgICAgICAgICAgcmVzb2x2ZWRWYWx1ZSA9IHRoaXMuX3Jlc29sdmVDYWxs
QXJndW1lbnQobmV3VmFsdWVKc29uKTsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAg
ICAgcmV0dXJuIFN0cmluZyhlKTsKKyAgICAgICAgfQorICAgICAgICB0cnkgeworICAgICAgICAg
ICAgc2V0dGVyKHNjb3BlTnVtYmVyLCB2YXJpYWJsZU5hbWUsIHJlc29sdmVkVmFsdWUpOworICAg
ICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICByZXR1cm4gIkZhaWxlZCB0byBjaGFuZ2Ug
dmFyaWFibGUgdmFsdWU6ICIgKyBlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB1bmRlZmlu
ZWQ7CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7T2JqZWN0fSB0b3BDYWxsRnJh
bWUKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gY2FsbEZyYW1lSWQKICAgICAgKiBAcmV0dXJuIHtP
YmplY3R9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpz
b24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggZWNmY2Zl
NzRiZGFjMTdlOWFlYzIyODEyZWQ2YjlhZWNlN2E1OTFiZC4uNTI0OTI4MjBjMTgxMjA4ZTA5MTMy
N2FlODlhNzE0NDQ2ZjQzOGQwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3Iu
anNvbgpAQCAtMjkxNiw2ICsyOTE2LDE4IEBACiAgICAgICAgICAgICAgICAgXSwKICAgICAgICAg
ICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKICAgICAgICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAi
U2V0cyBvdmVybGF5IG1lc3NhZ2UuIgorICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsKKyAg
ICAgICAgICAgICAgICAibmFtZSI6ICJzZXRWYXJpYWJsZVZhbHVlIiwKKyAgICAgICAgICAgICAg
ICAicGFyYW1ldGVycyI6IFsKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJjYWxsRnJh
bWVJZCIsICIkcmVmIjogIkNhbGxGcmFtZUlkIiwgIm9wdGlvbmFsIjogdHJ1ZSwgImRlc2NyaXB0
aW9uIjogIklkIG9mIGNhbGxmcmFtZSB0aGF0IGhvbGRzIHZhcmlhYmxlLiIgfSwKKyAgICAgICAg
ICAgICAgICAgICAgeyAibmFtZSI6ICJmdW5jdGlvbk9iamVjdElkIiwgIiRyZWYiOiAiUnVudGlt
ZS5SZW1vdGVPYmplY3RJZCIsICJvcHRpb25hbCI6IHRydWUsICJkZXNjcmlwdGlvbiI6ICJPYmpl
Y3QgaWQgb2YgY2xvc3VyZSAoZnVuY3Rpb24pIHRoYXQgaG9sZHMgdmFyaWFibGUuIiB9LAorICAg
ICAgICAgICAgICAgICAgICB7ICJuYW1lIjogInNjb3BlTnVtYmVyIiwgInR5cGUiOiAiaW50ZWdl
ciIsICJkZXNjcmlwdGlvbiI6ICIwLWJhc2VkIG51bWJlciBvZiBzY29wZSBhcyB3YXMgbGlzdGVk
IGluIHNjb3BlIGNoYWluLiBPbmx5ICdsb2NhbCcsICdjbG9zdXJlJyBhbmQgJ2NhdGNoJyBzY29w
ZSB0eXBlcyBhcmUgYWxsb3dlZC4gT3RoZXIgc2NvcGVzIGNvdWxkIGJlIG1hbmlwdWxhdGVkIG1h
bnVhbGx5LiIgfSwKKyAgICAgICAgICAgICAgICAgICAgeyAibmFtZSI6ICJ2YXJpYWJsZU5hbWUi
LCAidHlwZSI6ICJzdHJpbmciLCAiZGVzY3JpcHRpb24iOiAiVmFyaWFibGUgbmFtZS4iIH0sCisg
ICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAibmV3VmFsdWUiLCAiJHJlZiI6ICJSdW50aW1l
LkNhbGxBcmd1bWVudCIsICJkZXNjcmlwdGlvbiI6ICJOZXcgdmFyaWFibGUgdmFsdWUuIiB9Cisg
ICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICAiaGlkZGVuIjogdHJ1ZSwKKyAgICAg
ICAgICAgICAgICAiZGVzY3JpcHRpb24iOiAiQ2hhbmdlcyB2YWx1ZSBvZiB2YXJpYWJsZSBpbiBh
IGNhbGxmcmFtZSBvciBhIGNsb3N1cmUuIEVpdGhlciBjYWxsZnJhbWUgb3IgZnVuY3Rpb24gbXVz
dCBiZSBzcGVjaWZpZWQuIE9iamVjdC1iYXNlZCBzY29wZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYW5k
IG11c3QgYmUgbXV0YXRlZCBtYW51YWxseS4iCiAgICAgICAgICAgICB9CiAgICAgICAgIF0sCiAg
ICAgICAgICJldmVudHMiOiBbCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggODM0N2Y2N2VkZDM1OGNiNzY1MzFjYzllYzZk
Y2ExY2RhNjdhMWYwOS4uMzdmY2U1YjM4M2I3ZjQ2OGZhNGY0NWQ4MDYyYTQ0MmJjZjVkMzM5ZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcApAQCAtNDExLDcgKzQxMSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
Z2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QKIHsKICAg
ICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKGZ1bmN0aW9uSWQpOwogICAgIGlmIChpbmplY3Rl
ZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3Rl
ZCBmcmFtZSBoYXMgZ29uZSI7CisgICAgICAgICplcnJvclN0cmluZyA9ICJGdW5jdGlvbiBvYmpl
Y3QgaWQgaXMgb2Jzb2xldGUiOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIGluamVjdGVk
U2NyaXB0LmdldEZ1bmN0aW9uRGV0YWlscyhlcnJvclN0cmluZywgZnVuY3Rpb25JZCwgJmRldGFp
bHMpOwpAQCAtNTgwLDYgKzU4MCwzMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNl
dE92ZXJsYXlNZXNzYWdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKikKIHsKIH0KIAordm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRWYXJpYWJsZVZhbHVlKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nKiBjYWxsRnJhbWVJZCwgY29uc3QgU3RyaW5nKiBmdW5j
dGlvbk9iamVjdElkLCBpbnQgc2NvcGVOdW1iZXIsIGNvbnN0IFN0cmluZyYgdmFyaWFibGVOYW1l
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbmV3VmFsdWUpCit7CisgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQ7CisgICAgaWYgKGNhbGxGcmFtZUlkKSB7CisgICAgICAg
IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0
Rm9yT2JqZWN0SWQoKmNhbGxGcmFtZUlkKTsKKyAgICAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhh
c05vVmFsdWUoKSkgeworICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBmcmFt
ZSBoYXMgZ29uZSI7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9IGVsc2Ug
aWYgKGZ1bmN0aW9uT2JqZWN0SWQpIHsKKyAgICAgICAgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVj
dGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZCgqZnVuY3Rpb25PYmpl
Y3RJZCk7CisgICAgICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKKyAgICAg
ICAgICAgICplcnJvclN0cmluZyA9ICJGdW5jdGlvbiBvYmplY3QgaWQgY2Fubm90IGJlIHJlc29s
dmVkIjsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorICAgIH0gZWxzZSB7CisgICAg
ICAgICplcnJvclN0cmluZyA9ICJFaXRoZXIgY2FsbCBmcmFtZSBvciBmdW5jdGlvbiBvYmplY3Qg
bXVzdCBiZSBzcGVjaWZpZWQiOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFN0cmluZyBu
ZXdWYWx1ZVN0cmluZyA9IG5ld1ZhbHVlLT50b0pTT05TdHJpbmcoKTsKKworICAgIGluamVjdGVk
U2NyaXB0LnNldFZhcmlhYmxlVmFsdWUoZXJyb3JTdHJpbmcsIG1fY3VycmVudENhbGxTdGFjaywg
Y2FsbEZyYW1lSWQsIGZ1bmN0aW9uT2JqZWN0SWQsIHNjb3BlTnVtYmVyLCB2YXJpYWJsZU5hbWUs
IG5ld1ZhbHVlU3RyaW5nKTsKK30KKwogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzY3Jp
cHRFeGVjdXRpb25CbG9ja2VkQnlDU1AoY29uc3QgU3RyaW5nJiBkaXJlY3RpdmVUZXh0KQogewog
ICAgIGlmIChzY3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKSAhPSBT
Y3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKSB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA4NDg4ZjUz
ZDFlZGFlZWU3Zjg3OTY4OGI3OGMwOGZmZDAyODk4MGQ4Li43NDg2ZDE5Y2ExZTJjYzk1NzNiZmRl
N2Q3YjhkMTM5OGI5MTRlZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTExMyw2ICsxMTMsNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBjb21waWxlU2NyaXB0KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxUeXBlQnVp
bGRlcjo6RGVidWdnZXI6OlNjcmlwdElkPiosIFR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8U3RyaW5n
Piogc3ludGF4RXJyb3JNZXNzYWdlKTsKICAgICB2b2lkIHJ1blNjcmlwdChFcnJvclN0cmluZyos
IGNvbnN0IFR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6U2NyaXB0SWQmLCBjb25zdCBpbnQqIGV4ZWN1
dGlvbkNvbnRleHRJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgYm9vbCogZG9O
b3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBSZWZQdHI8VHlwZUJ1aWxkZXI6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgVHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29s
Piogd2FzVGhyb3duKTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcqKTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0VmFyaWFibGVWYWx1
ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyogaW5fY2FsbEZyYW1lLCBjb25zdCBTdHJpbmcq
IGluX2Z1bmN0aW9uT2JqZWN0SWQsIGludCBpbl9zY29wZU51bWJlciwgY29uc3QgU3RyaW5nJiBp
bl92YXJpYWJsZU5hbWUsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBpbl9uZXdWYWx1
ZSk7CiAKICAgICB2b2lkIHNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRnJv
bnRlbmQ6OkRlYnVnZ2VyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBkYXRhKTsKICAgICB2b2lkIGNhbmNlbFBhdXNlT25OZXh0U3RhdGVtZW50
KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxG
cmFtZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSmF2YVNjcmlwdENhbGxGcmFtZS5p
ZGwKaW5kZXggM2MxZDMxZGE1ZmM0ZTkzOWMwMjVjZjVjYzAwNTM5NDgzMTliNTE2Ny4uZTllNTNk
OGFlZGI3MmQ4NGFiM2Y1N2JiMTZmYzkzZDRjODMwYzI1MSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuaWRsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmlkbApAQCAtMzksNiArMzksOSBAQAog
CiAgICAgW0N1c3RvbV0gdm9pZCBldmFsdWF0ZShpbiBET01TdHJpbmcgc2NyaXB0KTsKICAgICBb
Q3VzdG9tXSBET01PYmplY3QgcmVzdGFydCgpOworICAgIAorICAgIC8vIE9ubHkgZGVjbGFyYXRp
dmUgc2NvcGUgKGxvY2FsLCB3aXRoIGFuZCBjYXRjaCkgaXMgYWNjZXB0ZWQuIFJldHVybnMgdW5k
ZWZpbmVkLiAKKyAgICBbQ3VzdG9tXSBET01PYmplY3Qgc2V0VmFyaWFibGVWYWx1ZShpbiBpbnQg
c2NvcGVJbmRleCwgaW4gRE9NU3RyaW5nIHZhcmlhYmxlTmFtZSwgRE9NT2JqZWN0IG5ld1ZhbHVl
KTsKIAogICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBKYXZhU2NyaXB0Q2FsbEZyYW1lIGNhbGxlcjsK
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgbG9uZyBzb3VyY2VJRDsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA2YTBlOGNiYTM4
YmJlZjZlMTJiYTA5YjI2MjE2NzE5NTUzYmFiZGE5Li4wZThiMDMyMDE0OTZhMjU5NTUxMGMxM2I2
OWEwNmFkOTNkY2U3ZDAxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTUgQEAKKzIwMTMtMDItMDYgIFBldGVy
IFJ5YmluICA8cHJ5YmluQGNocm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBz
dXBwb3J0IEphdmFTY3JpcHQgdmFyaWFibGUgbXV0YXRpb24gaW4gcHJvdG9jb2wgYW5kIFY4IGJp
bmRpbmdzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDc4MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1zZXRWYXJpYWJsZVZhbHVlLWV4cGVjdGVkLnR4
dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyLXNldFZhcmlh
YmxlVmFsdWUuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2NvbnNvbGUvY29tbWFu
ZC1saW5lLWFwaS1leHBlY3RlZC50eHQ6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vaW5z
cGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyLXNldFZhcmlhYmxlVmFsdWUtZXhwZWN0ZWQudHh0OiBB
ZGRlZC4KKwogMjAxMy0wMi0wNiAgTWFyamEgSMO2bHR0w6QgIDxtYXJqYUBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgW1dLMl0gTmV3IHRlc3RzIGludHJvZHVjZWQgaW4gcjEwMDg5NSBmYWlsCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXItc2V0VmFy
aWFibGVWYWx1ZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wv
ZGVidWdnZXItc2V0VmFyaWFibGVWYWx1ZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZDY5YzA5
NjFiY2RjZmIxYjJkNDMzNzUwYTk3MDkxNWE4YjViMWE3MAotLS0gL2Rldi9udWxsCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1zZXRWYXJpYWJsZVZhbHVlLWV4
cGVjdGVkLnR4dApAQCAtMCwwICsxLDQgQEAKK0Nsb3N1cmUgcmV0dXJuczogeyJ0eXBlIjoic3Ry
aW5nIiwidmFsdWUiOiJ0dHR0cnVlNTIwMTMifQorIChleHBlY3RlZDogJ3R0dHRydWU1MjAxMycp
CitQcm90b2NvbCBjb21tYW5kICdEZWJ1Z2dlci5zZXRWYXJpYWJsZVZhbHVlJyBmYWlsZWQKKwpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyLXNldFZh
cmlhYmxlVmFsdWUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dl
ci1zZXRWYXJpYWJsZVZhbHVlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uM2NhYTE1OGRlZGE0MDY1OGJiOTE0
Y2YyMjMzOTdlZDY3ZWU2MjZlYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1zZXRWYXJpYWJsZVZhbHVlLmh0bWwKQEAgLTAsMCArMSwx
ODEgQEAKKzxodG1sPgorPGhlYWQ+Cis8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3Jj
PSIuLi9odHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMvcHJvdG9jb2wtdGVz
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAgICAvLyBB
IGdlbmVyYWwtcHVycG9zZSBlbmdpbmUgZm9yIHNlbmRpbmcgYSBzZXF1ZW5jZSBvZiBwcm90b2Nv
bCBjb21tYW5kcy4KKyAgICAvLyBUaGUgY2xpZW50cyBwcm92aWRlIHJlcXVlc3RzIGFuZCByZXNw
b25zZSBoYW5kbGVycywgd2hpbGUgdGhlIGVuZ2luZSBjYXRjaGVzCisgICAgLy8gZXJyb3JzIGFu
ZCBtYWtlcyBzdXJlIHRoYXQgb25jZSB0aGVyZSdzIG5vdGhpbmcgdG8gZG8gY29tcGxldGVUZXN0
KCkgaXMgY2FsbGVkLgorICAgIC8vIEBwYXJhbSBzdGVwIGlzIGFuIG9iamVjdCB3aXRoIGNvbW1h
bmQsIHBhcmFtcyBhbmQgY2FsbGJhY2sgZmllbGRzIAorICAgIGZ1bmN0aW9uIHJ1blJlcXVlc3RT
ZXJpZXMoc3RlcCkgeworICAgICAgICBwcm9jZXNzU3RlcChzdGVwKTsKKworICAgICAgICBmdW5j
dGlvbiBwcm9jZXNzU3RlcChzKSB7CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAg
IHByb2Nlc3NTdGVwT3JGYWlsKHMpOworICAgICAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGUuc3RhY2spOworICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAg
ICAgICAgCisgICAgICAgIGZ1bmN0aW9uIHByb2Nlc3NTdGVwT3JGYWlsKHMpIHsKKyAgICAgICAg
ICAgIGlmICghcykgeworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0
KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKCFzLmNvbW1hbmQpIHsKKyAgICAgICAgICAgICAgICAvLyBBIHNpbXBsZSBsb29wYmFjayBz
dGVwLgorICAgICAgICAgICAgICAgIHZhciBuZXh0ID0gcy5jYWxsYmFjaygpOworICAgICAgICAg
ICAgICAgIHByb2Nlc3NTdGVwKG5leHQpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgICAgIH0KKworICAgICAgICAgICAgdmFyIGlubmVyQ2FsbGJhY2sgPSBmdW5jdGlvbihyZXNw
b25zZSkgeworICAgICAgICAgICAgICAgIHZhciBuZXh0OworICAgICAgICAgICAgICAgIGlmICgi
ZXJyb3IiIGluIHJlc3BvbnNlKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghKCJlcnJvckhh
bmRsZXIiIGluIHMpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvLyBFcnJvciBtZXNzYWdl
IGlzIG5vdCBsb2dnZWQgaW50ZW50aW9uYWxseSwgaXQgbWF5IGJlIHBsYXRmb3JtLXNwZWNpZmlj
LgorICAgICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlByb3RvY29sIGNv
bW1hbmQgJyIgKyBzLmNvbW1hbmQgKyAiJyBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgdHJ5
IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgPSBzLmVycm9ySGFuZGxlcihyZXNwb25z
ZS5lcnJvcik7CisgICAgICAgICAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKGUuc3RhY2spOworICAgICAgICAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0g
ZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIHRyeSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICBuZXh0ID0gcy5jYWxsYmFjayhyZXNwb25zZS5yZXN1bHQpOworICAgICAgICAgICAgICAgICAg
ICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0Lmxv
ZyhlLnN0YWNrKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxl
dGVUZXN0KCk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgcHJvY2Vzc1N0ZXAo
bmV4dCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21t
YW5kKHMuY29tbWFuZCwgcy5wYXJhbXMsIGlubmVyQ2FsbGJhY2spOworICAgICAgICB9CisgICAg
fQorICAgIAorICAgIHZhciBmaXJzdFN0ZXAgPSB7IGNhbGxiYWNrOiBlbmFibGVEZWJ1Z2dlciB9
OworCisgICAgcnVuUmVxdWVzdFNlcmllcyhmaXJzdFN0ZXApOworICAgIAorICAgIGZ1bmN0aW9u
IGVuYWJsZURlYnVnZ2VyKCkgeworICAgICAgICByZXR1cm4geyBjb21tYW5kOiAiRGVidWdnZXIu
ZW5hYmxlIiwgcGFyYW1zOiB7fSwgY2FsbGJhY2s6IGV2YWxGdW5jdGlvbiB9OworICAgIH0KKyAg
ICAKKyAgICAvLyBUZXN0aW5nIGZ1bmN0aW9uL2Nsb3N1cmUgc2NvcGVzLgorICAgIAorICAgIGZ1
bmN0aW9uIGV2YWxGdW5jdGlvbihyZXNwb25zZSkgeworICAgICAgICB2YXIgZXhwcmVzc2lvbiA9
ICIoZnVuY3Rpb24ocCl7dmFyIHI9NTt3aXRoKHt5ZWFyOjIwMTN9KXtyZXR1cm4gZnVuY3Rpb24g
Q2xvc3VyZShxKXtyZXR1cm4gcCtxK3IreWVhcn07fX0pKCd0dHQnKSI7CisgICAgICAgIHJldHVy
biB7IGNvbW1hbmQ6ICJSdW50aW1lLmV2YWx1YXRlIiwgcGFyYW1zOiB7ZXhwcmVzc2lvbjogZXhw
cmVzc2lvbn0sIGNhbGxiYWNrOiBjYWxsYmFja0V2YWxGdW5jdGlvbiB9OworICAgIH0KKyAgICAK
KyAgICBmdW5jdGlvbiBjYWxsYmFja0V2YWxGdW5jdGlvbihyZXN1bHQpIHsKKyAgICAgICAgdmFy
IGlkID0gcmVzdWx0LnJlc3VsdC5vYmplY3RJZDsKKyAgICAgICAgaWYgKGlkID09PSB1bmRlZmlu
ZWQpCisgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoIm9iamVjdElkIGlzIGV4cGVjdGVkIik7
CisgICAgICAgIHJldHVybiBjcmVhdGVDaGVja0Z1bmN0aW9uU3RlcENoYWluKGlkKTsKKyAgICB9
CisKKyAgICBmdW5jdGlvbiBjcmVhdGVDaGVja0Z1bmN0aW9uU3RlcENoYWluKGZ1bmN0aW9uT2Jq
ZWN0SWQpIHsKKyAgICAgICAgdmFyIHBhcmFtcyA9IHsKKyAgICAgICAgICAgIG9iamVjdElkOiBm
dW5jdGlvbk9iamVjdElkLAorICAgICAgICAgICAgZnVuY3Rpb25EZWNsYXJhdGlvbjogImZ1bmN0
aW9uKCl7cmV0dXJuIHRoaXModHJ1ZSk7fSIKKyAgICAgICAgfTsKKyAgICAgICAgcmV0dXJuIHsK
KyAgICAgICAgICAgIGNvbW1hbmQ6ICJSdW50aW1lLmNhbGxGdW5jdGlvbk9uIiwgcGFyYW1zOiBw
YXJhbXMsIGNhbGxiYWNrOiBjYWxsYmFja0xvZ0Nsb3N1cmVFdmFsCisgICAgICAgIH07CisKKwkg
ICAgZnVuY3Rpb24gY2FsbGJhY2tMb2dDbG9zdXJlRXZhbChyZXN1bHQpIHsKKwkgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJDbG9zdXJlIHJldHVybnM6ICIgKyBKU09OLnN0cmluZ2lmeShyZXN1
bHQucmVzdWx0KSk7CisJICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiIChleHBlY3RlZDogJ3R0
dHRydWU1MjAxMycpIik7CisJICAgICAgICAKKwkgICAgICAgIHZhciBwYXJhbXMgPSB7CisJICAg
ICAgICAgICAgZnVuY3Rpb25PYmplY3RJZDogZnVuY3Rpb25PYmplY3RJZCwKKwkgICAgICAgICAg
ICBzY29wZU51bWJlcjogMSwKKwkgICAgICAgICAgICB2YXJpYWJsZU5hbWU6ICJyIiwKKwkgICAg
ICAgICAgICBuZXdWYWx1ZTogeyB2YWx1ZTogNCB9CisJICAgICAgICB9OworCSAgICAgICAgcmV0
dXJuIHsKKwkgICAgICAgICAgICBjb21tYW5kOiAiRGVidWdnZXIuc2V0VmFyaWFibGVWYWx1ZSIs
IHBhcmFtczogcGFyYW1zLCBjYWxsYmFjazogc2V0VmFyaWFibGVDYWxsYmFjaworCSAgICAgICAg
fTsKKwkgICAgfQorCSAgICAKKwkgICAgZnVuY3Rpb24gc2V0VmFyaWFibGVDYWxsYmFjaygpIHsK
KwkgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJEZWJ1Z2dlci5zZXRWYXJpYWJsZVZhbHVlIE9L
Iik7CisJICAgICAgICAKKwkgICAgICAgIHZhciBwYXJhbXMgPSB7CisJICAgICAgICAgICAgb2Jq
ZWN0SWQ6IGZ1bmN0aW9uT2JqZWN0SWQsCisJICAgICAgICAgICAgZnVuY3Rpb25EZWNsYXJhdGlv
bjogImZ1bmN0aW9uKCl7cmV0dXJuIHRoaXModHJ1ZSk7fSIKKwkgICAgICAgIH07CisJICAgICAg
ICByZXR1cm4geworCSAgICAgICAgICAgIGNvbW1hbmQ6ICJSdW50aW1lLmNhbGxGdW5jdGlvbk9u
IiwgcGFyYW1zOiBwYXJhbXMsIGNhbGxiYWNrOiBjYWxsYmFja0xvZ0Nsb3N1cmVFdmFsMgorCSAg
ICAgICAgfTsKKwkgICAgICAgIAorCSAgICB9CisKKwkgICAgZnVuY3Rpb24gY2FsbGJhY2tMb2dD
bG9zdXJlRXZhbDIocmVzdWx0KSB7CisJICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQ2xvc3Vy
ZSByZXR1cm5zOiAiICsgSlNPTi5zdHJpbmdpZnkocmVzdWx0LnJlc3VsdCkpOworCSAgICAgICAg
SW5zcGVjdG9yVGVzdC5sb2coIiAoZXhwZWN0ZWQ6ICd0dHR0cnVlNDIwMTMnKSIpOworCSAgICAg
ICAgCisJICAgICAgICB2YXIgcGFyYW1zID0geworCSAgICAgICAgICAgIC8vIE5vIHRhcmdldCBp
cyBzcGVjaWZpZWQKKwkgICAgICAgICAgICBzY29wZU51bWJlcjogMSwKKwkgICAgICAgICAgICB2
YXJpYWJsZU5hbWU6ICJyIiwKKwkgICAgICAgICAgICBuZXdWYWx1ZTogeyB2YWx1ZTogNCB9CisJ
ICAgICAgICB9OworCSAgICAgICAgcmV0dXJuIHsKKwkgICAgICAgICAgICBjb21tYW5kOiAiRGVi
dWdnZXIuc2V0VmFyaWFibGVWYWx1ZSIsIHBhcmFtczogcGFyYW1zLCBlcnJvckhhbmRsZXI6IHNl
dFZhcmlhYmxlRXJyb3JDYWxsYmFjazMKKwkgICAgICAgIH07CisJICAgIH0KKwkgICAgCisJICAg
IGZ1bmN0aW9uIHNldFZhcmlhYmxlRXJyb3JDYWxsYmFjazMoZXJyb3IpIHsKKwkgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJFeHBlY3RlZCBlcnJvcjogIiArIEpTT04uc3RyaW5naWZ5KGVycm9y
KSk7CisKKwkgICAgICAgIHZhciBwYXJhbXMgPSB7CisJICAgICAgICAgICAgZnVuY3Rpb25PYmpl
Y3RJZDogZnVuY3Rpb25PYmplY3RJZCwKKwkgICAgICAgICAgICBzY29wZU51bWJlcjogMTAwLCAv
LyBXcm9uZyBzY29wZSBudW1iZXIKKwkgICAgICAgICAgICB2YXJpYWJsZU5hbWU6ICJyIiwKKwkg
ICAgICAgICAgICBuZXdWYWx1ZTogeyB2YWx1ZTogNCB9CisJICAgICAgICB9OworCSAgICAgICAg
cmV0dXJuIHsKKwkgICAgICAgICAgICBjb21tYW5kOiAiRGVidWdnZXIuc2V0VmFyaWFibGVWYWx1
ZSIsIHBhcmFtczogcGFyYW1zLCBlcnJvckhhbmRsZXI6IHNldFZhcmlhYmxlRXJyb3JDYWxsYmFj
azQKKwkgICAgICAgIH07CisJICAgIH0KKwkgICAgCisJICAgIGZ1bmN0aW9uIHNldFZhcmlhYmxl
RXJyb3JDYWxsYmFjazQoZXJyb3IpIHsKKwkgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJFeHBl
Y3RlZCBlcnJvciIpOworCisJICAgICAgICB2YXIgcGFyYW1zID0geworCSAgICAgICAgICAgIGZ1
bmN0aW9uT2JqZWN0SWQ6IGZ1bmN0aW9uT2JqZWN0SWQsCisJICAgICAgICAgICAgc2NvcGVOdW1i
ZXI6IDEsCisJICAgICAgICAgICAgdmFyaWFibGVOYW1lOiAiYmFkIiwgLy8gV3JvbmcgdmFyaWFi
bGUgbmFtZQorCSAgICAgICAgICAgIG5ld1ZhbHVlOiB7IHZhbHVlOiA0IH0KKwkgICAgICAgIH07
CisJICAgICAgICByZXR1cm4geworCSAgICAgICAgICAgIGNvbW1hbmQ6ICJEZWJ1Z2dlci5zZXRW
YXJpYWJsZVZhbHVlIiwgcGFyYW1zOiBwYXJhbXMsIGVycm9ySGFuZGxlcjogc2V0VmFyaWFibGVF
cnJvckNhbGxiYWNrNQorCSAgICAgICAgfTsKKwkgICAgfQorCSAgICAKKwkgICAgZnVuY3Rpb24g
c2V0VmFyaWFibGVFcnJvckNhbGxiYWNrNShlcnJvcikgeworCSAgICAgICAgSW5zcGVjdG9yVGVz
dC5sb2coIkV4cGVjdGVkIGVycm9yIik7CisJICAgICAgICAKKwkgICAgICAgIC8vIEVuZCBvZiB0
ZXN0LgorCSAgICAgICAgcmV0dXJuOworCSAgICB9CisgICAgfQorfQorPC9zY3JpcHQ+Cis8L2hl
YWQ+Cis8Ym9keSBvbkxvYWQ9InJ1blRlc3QoKTsiPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2NvbnNvbGUvY29tbWFuZC1saW5lLWFwaS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBp
LWV4cGVjdGVkLnR4dAppbmRleCA0Y2E3YjdhZDliYWE1ZjlhZDU1YTBhMjA2ZGJiYzdjNDlhNGQ0
OTc3Li5hYzM2OTk5MTc1YzcyZWZmZjY5ODU2Y2E3YmUyYzJhNjY0YWFlMTM2IDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBpLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY29uc29sZS9jb21tYW5kLWxpbmUtYXBp
LWV4cGVjdGVkLnR4dApAQCAtMSw0ICsxLDQgQEAKLUNPTlNPTEUgTUVTU0FHRTogbGluZSAxMDYw
OiBUaGUgY29uc29sZSBmdW5jdGlvbiAkKCkgaGFzIGNoYW5nZWQgZnJvbSAkPWdldEVsZW1lbnRC
eUlkKGlkKSB0byAkPXF1ZXJ5U2VsZWN0b3Ioc2VsZWN0b3IpLiBZb3UgbWlnaHQgdHJ5ICQoIiMl
cyIpCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMTEyMTogVGhlIGNvbnNvbGUgZnVuY3Rpb24gJCgp
IGhhcyBjaGFuZ2VkIGZyb20gJD1nZXRFbGVtZW50QnlJZChpZCkgdG8gJD1xdWVyeVNlbGVjdG9y
KHNlbGVjdG9yKS4gWW91IG1pZ2h0IHRyeSAkKCIjJXMiKQogVGVzdHMgdGhhdCBjb21tYW5kIGxp
bmUgYXBpIHdvcmtzLgogCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9t
aXVtL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci1zZXRWYXJpYWJsZVZhbHVlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2Nocm9taXVtL2luc3BlY3Rvci1wcm90b2NvbC9k
ZWJ1Z2dlci1zZXRWYXJpYWJsZVZhbHVlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42MzNlZGYz
NWEwYjBjYWJiMzcwMmRiMGYzMzc0ZDYzMDQyMWUyMzU2Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvcGxhdGZvcm0vY2hyb21pdW0vaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyLXNl
dFZhcmlhYmxlVmFsdWUtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEsOSBAQAorQ2xvc3VyZSByZXR1
cm5zOiB7InR5cGUiOiJzdHJpbmciLCJ2YWx1ZSI6InR0dHRydWU1MjAxMyJ9CisgKGV4cGVjdGVk
OiAndHR0dHJ1ZTUyMDEzJykKK0RlYnVnZ2VyLnNldFZhcmlhYmxlVmFsdWUgT0sKK0Nsb3N1cmUg
cmV0dXJuczogeyJ0eXBlIjoic3RyaW5nIiwidmFsdWUiOiJ0dHR0cnVlNDIwMTMifQorIChleHBl
Y3RlZDogJ3R0dHRydWU0MjAxMycpCitFeHBlY3RlZCBlcnJvcjogeyJjb2RlIjotMzIwMDAsIm1l
c3NhZ2UiOiJFaXRoZXIgY2FsbCBmcmFtZSBvciBmdW5jdGlvbiBvYmplY3QgbXVzdCBiZSBzcGVj
aWZpZWQifQorRXhwZWN0ZWQgZXJyb3IKK0V4cGVjdGVkIGVycm9yCisK
</data>

          </attachment>
      

    </bug>

</bugzilla>