<?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>165150</bug_id>
          
          <creation_ts>2016-11-29 12:00:00 -0800</creation_ts>
          <short_desc>WebAssembly JS API: implement start function</short_desc>
          <delta_ts>2016-12-09 19:09:44 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>161709</blocked>
    
    <blocked>165658</blocked>
    
    <blocked>165714</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="JF Bastien">jfbastien</reporter>
          <assigned_to name="JF Bastien">jfbastien</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1254380</commentid>
    <comment_count>0</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-11-29 12:00:00 -0800</bug_when>
    <thetext>.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258073</commentid>
    <comment_count>1</comment_count>
      <attachid>296641</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-08 22:13:22 -0800</bug_when>
    <thetext>Created attachment 296641
WIP

I&apos;ve started implementing this. Here are basic JSON tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258076</commentid>
    <comment_count>2</comment_count>
      <attachid>296643</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-08 22:43:47 -0800</bug_when>
    <thetext>Created attachment 296643
patch

Feed the JSON tests from the Builder. I still have some checking to do, then the binary side.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258331</commentid>
    <comment_count>3</comment_count>
      <attachid>296698</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-09 14:13:47 -0800</bug_when>
    <thetext>Created attachment 296698
patch

Patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258334</commentid>
    <comment_count>4</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-09 14:18:25 -0800</bug_when>
    <thetext>rdar://problem/29599190</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258337</commentid>
    <comment_count>5</comment_count>
      <attachid>296698</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-12-09 14:26:41 -0800</bug_when>
    <thetext>Comment on attachment 296698
patch

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

&gt; JSTests/wasm/js-api/test_Start.js:14
&gt; +    const instance = new WebAssembly.Instance(module);

Please add a test that proves that this ran. Maybe by writing to memory.

&gt; Source/JavaScriptCore/wasm/WasmFormat.h:128
&gt; +    std::optional&lt;uint32_t&gt; startFunctionIndexSpace;

Why not just call this &quot;startFunctionIndex&quot;?

&gt; Source/JavaScriptCore/wasm/WasmModuleParser.cpp:397
&gt; +        || startFunctionIndex &gt;= m_functionIndexSpace.size())

Please add a test for this.

&gt; Source/JavaScriptCore/wasm/WasmModuleParser.cpp:401
&gt; +    if (signature-&gt;arguments.size() != 0
&gt; +        || signature-&gt;returnType != Void)

Please add a test for this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258350</commentid>
    <comment_count>6</comment_count>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-09 14:39:20 -0800</bug_when>
    <thetext>&gt; &gt; Source/JavaScriptCore/wasm/WasmFormat.h:128
&gt; &gt; +    std::optional&lt;uint32_t&gt; startFunctionIndexSpace;
&gt; 
&gt; Why not just call this &quot;startFunctionIndex&quot;?

Because the value we receive in the function index space, so it can include imports for now. Once we resolve the spec issue we&apos;ll have to change things, but it&apos;s still important to note that it isn&apos;t just the internal function index.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258363</commentid>
    <comment_count>7</comment_count>
      <attachid>296705</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-09 14:48:30 -0800</bug_when>
    <thetext>Created attachment 296705
patch

Address comments.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258365</commentid>
    <comment_count>8</comment_count>
      <attachid>296705</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-09 14:49:35 -0800</bug_when>
    <thetext>Comment on attachment 296705
patch

Rejecting attachment 296705 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;apply-attachment&apos;, &apos;--no-update&apos;, &apos;--non-interactive&apos;, 296705, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
unk #4 succeeded at 461 (offset 25 lines).
patching file Source/JavaScriptCore/wasm/js/WebAssemblyFunction.cpp
Hunk #1 succeeded at 102 with fuzz 1 (offset 12 lines).
patching file Source/JavaScriptCore/wasm/js/WebAssemblyFunction.h
patching file Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.cpp
patching file Source/JavaScriptCore/wasm/js/WebAssemblyModuleRecord.h

Failed to run &quot;[u&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/svn-apply&apos;, &apos;--force&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit

Full output: http://webkit-queues.webkit.org/results/2681933</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258372</commentid>
    <comment_count>9</comment_count>
      <attachid>296709</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-09 14:58:08 -0800</bug_when>
    <thetext>Created attachment 296709
patch

Fix merge conflict.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258388</commentid>
    <comment_count>10</comment_count>
      <attachid>296713</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-09 15:15:53 -0800</bug_when>
    <thetext>Created attachment 296713
patch

Another merge issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258420</commentid>
    <comment_count>11</comment_count>
      <attachid>296713</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-09 15:41:26 -0800</bug_when>
    <thetext>Comment on attachment 296713
patch

Rejecting attachment 296713 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;build&apos;, &apos;--no-clean&apos;, &apos;--no-update&apos;, &apos;--build-style=release&apos;, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
t -o /Volumes/Data/EWS/WebKit/WebKitBuild/Release/jsc
Undefined symbols for architecture x86_64:
  &quot;JSC::Wasm::ModuleInformation::~ModuleInformation()&quot;, referenced from:
      functionTestWasmModuleFunctions(JSC::ExecState*) in jsc.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)

** BUILD FAILED **


The following build commands failed:
	Ld /Volumes/Data/EWS/WebKit/WebKitBuild/Release/jsc normal x86_64
(1 failure)

Full output: http://webkit-queues.webkit.org/results/2682613</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258434</commentid>
    <comment_count>12</comment_count>
      <attachid>296731</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2016-12-09 16:06:31 -0800</bug_when>
    <thetext>Created attachment 296731
patch

Fix bot build issue which doesn&apos;t occur on local cmake build.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258512</commentid>
    <comment_count>13</comment_count>
      <attachid>296731</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-09 18:34:33 -0800</bug_when>
    <thetext>Comment on attachment 296731
patch

Clearing flags on attachment: 296731

Committed r209642: &lt;http://trac.webkit.org/changeset/209642&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1258513</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2016-12-09 18:34:37 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296641</attachid>
            <date>2016-12-08 22:13:22 -0800</date>
            <delta_ts>2016-12-08 22:43:47 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>0001-start.patch</filename>
            <type>text/plain</type>
            <size>2205</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAxY2E3NTRmNDRmY2RhNWFjNmVkNTBmYTAwMGQ2OGNjYzI2YjFiYmE3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDggRGVjIDIwMTYgMjI6MTI6MDggLTA4MDAKU3ViamVjdDogW1BBVENIXSBzdGFydAoK
LS0tCiBKU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMgfCA0NiArKysr
KysrKysrKysrKysrKysrKysrKysrKysrKysKIDEgZmlsZSBjaGFuZ2VkLCA0NiBpbnNlcnRpb25z
KCspCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0J1aWxkZXJKU09O
LmpzIGIvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0J1aWxkZXJKU09OLmpzCmluZGV4IDcz
MWQyNjIuLjA1OWFlNzIgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9C
dWlsZGVySlNPTi5qcworKysgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpT
T04uanMKQEAgLTI0MSw2ICsyNDEsNTIgQEAgY29uc3QgYXNzZXJ0T3BUaHJvd3MgPSAob3BGbiwg
bWVzc2FnZSkgPT4gewogICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZS5GdW5jdGlvbigiZm9vIiwg
MCwgeyBwYXJhbXM6IFsiaTMyIl0gfSksIEVycm9yLCBgTm90IHRoZSBzYW1lOiAiMSIgYW5kICIw
IjogUmUtZXhwb3J0aW5nIGltcG9ydCAiYmFyIiBhcyAiZm9vIiBoYXMgbWlzbWF0Y2hpbmcgdHlw
ZWApOwogfSkoKTsKIAorKGZ1bmN0aW9uIFN0YXJ0SW52YWxpZE51bWJlcmVkRnVuY3Rpb24oKSB7
CisgICAgY29uc3QgZSA9IChuZXcgQnVpbGRlcigpKQorICAgICAgICAuVHlwZSgpLkVuZCgpCisg
ICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5TdGFydCgwKS5FbmQoKQorICAgIGFz
c2VydC50aHJvd3MoKCkgPT4gZS5Db2RlKCkuRW5kKCksIEVycm9yLCBgPz8/YCk7Cit9KSgpOwor
CisoZnVuY3Rpb24gU3RhcnRJbnZhbGlkTmFtZWRGdW5jdGlvbigpIHsKKyAgICBjb25zdCBlID0g
KG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9u
KCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJmb28iKS5FbmQoKTsKKyAgICBhc3NlcnQudGhyb3dz
KCgpID0+IGUuQ29kZSgpLkVuZCgpLCBFcnJvciwgYD8/P2ApOworfSkoKTsKKworKGZ1bmN0aW9u
IFN0YXJ0TmFtZWRGdW5jdGlvbigpIHsKKyAgICBjb25zdCBlID0gKG5ldyBCdWlsZGVyKCkpCisg
ICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAg
LlN0YXJ0KCJmb28iKS5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rp
b24oImZvbyIsIHsgcGFyYW1zOiBbXSB9KS5FbmQoKQorICAgICAgICAuRW5kKCk7CisgICAgYXNz
ZXJ0LmVxKGouc2VjdGlvbi5sZW5ndGgsIDQpOworICAgIGFzc2VydC5lcShqLnNlY3Rpb25bMl0u
bmFtZSwgIlN0YXJ0Iik7CisgICAgYXNzZXJ0LmVxKGouc2VjdGlvblsyXS5kYXRhLmxlbmd0aCwg
MSk7CisgICAgYXNzZXJ0LmVxKGouc2VjdGlvblsyXS5kYXRhWzBdLCAwKTsKK30pKCk7CisKKyhm
dW5jdGlvbiBTdGFydEludmFsaWRUeXBlQXJnKCkgeworICAgIGNvbnN0IGUgPSAobmV3IEJ1aWxk
ZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQor
ICAgICAgICAuU3RhcnQoImZvbyIpLkVuZCgpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBlLkNv
ZGUoKS5GdW5jdGlvbigiZm9vIiwgeyBwYXJhbXM6IFsiaTMyIl0gfSkuRW5kKCksIEVycm9yLCBg
Pz8/YCk7Cit9KSgpOworCisoZnVuY3Rpb24gU3RhcnRJbnZhbGlkVHlwZVJldHVybigpIHsKKyAg
ICBjb25zdCBlID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAg
ICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJmb28iKS5FbmQoKQorICAgIGFz
c2VydC50aHJvd3MoKCkgPT4gZS5Db2RlKCkuRnVuY3Rpb24oImZvbyIsIHsgcGFyYW1zOiBbXSwg
cmV0OiAiaTMyIiB9KS5JMzJDb25zdCg0MikuUmV0KCkuRW5kKCksIEVycm9yLCBgPz8/YCk7Cit9
KSgpOworCiAoZnVuY3Rpb24gRW1wdHlDb2RlU2VjdGlvbigpIHsKICAgICBjb25zdCBiID0gbmV3
IEJ1aWxkZXIoKTsKICAgICBiLkNvZGUoKTsKLS0gCjIuMTAuMQoK
</data>
<flag name="commit-queue"
          id="319060"
          type_id="3"
          status="-"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296643</attachid>
            <date>2016-12-08 22:43:47 -0800</date>
            <delta_ts>2016-12-09 14:13:47 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-start.patch</filename>
            <type>text/plain</type>
            <size>4992</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSAxNjkyYTQ3YWE4ODZiNzA1MGQ4YTY4MWY4N2ZiNjA2MWVhNmMwNWQzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDggRGVjIDIwMTYgMjI6MTI6MDggLTA4MDAKU3ViamVjdDogW1BBVENIXSBzdGFydAoK
LS0tCiBKU1Rlc3RzL3dhc20vQnVpbGRlci5qcyAgICAgICAgICAgICAgICAgICAgfCAyMiArKysr
KysrKysrKystLQogSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0J1aWxkZXJKU09OLmpzIHwg
NDkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCiAyIGZpbGVzIGNoYW5nZWQsIDY5IGlu
c2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL0J1
aWxkZXIuanMgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwppbmRleCBjZWNiMmM3Li5iZGU1NjI2
IDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcworKysgYi9KU1Rlc3RzL3dhc20v
QnVpbGRlci5qcwpAQCAtNDI2LDggKzQyNiwxNiBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWls
ZGVyIHsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSAiU3RhcnQi
OgotICAgICAgICAgICAgICAgIC8vIEZJWE1FIGltcGxlbWVudCBzdGFydCBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNzA5Ci0gICAgICAgICAgICAgICAgdGhpc1tz
ZWN0aW9uXSA9ICgpID0+IHsgdGhyb3cgbmV3IEVycm9yKGBVbmltcGxlbWVudGVkOiBzZWN0aW9u
IHR5cGUgIiR7c2VjdGlvbn0iYCk7IH07CisgICAgICAgICAgICAgICAgdGhpc1tzZWN0aW9uXSA9
IGZ1bmN0aW9uKGZ1bmN0aW9uSW5kZXhPck5hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgY29u
c3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7CisgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0YXJ0QnVpbGRlciA9IHsKKyAgICAgICAgICAgICAgICAgICAgICAgIEVuZDogKCkgPT4g
dGhpcywKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHR5
cGVvZihmdW5jdGlvbkluZGV4T3JOYW1lKSAhPT0gIm51bWJlciIgJiYgdHlwZW9mKGZ1bmN0aW9u
SW5kZXhPck5hbWUpICE9PSAic3RyaW5nIikKKyAgICAgICAgICAgICAgICAgICAgICAgIHRocm93
IG5ldyBFcnJvcihgU3RhcnQgc2VjdGlvbidzIGZ1bmN0aW9uIGluZGV4ICBtdXN0IGVpdGhlciBi
ZSBhIG51bWJlciBvciBhIHN0cmluZ2ApOworICAgICAgICAgICAgICAgICAgICBzLmRhdGEucHVz
aChmdW5jdGlvbkluZGV4T3JOYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN0YXJ0
QnVpbGRlcjsKKyAgICAgICAgICAgICAgICB9OwogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAg
ICAgICAgICAgICBjYXNlICJFbGVtZW50IjoKQEAgLTQ0NSw2ICs0NTMsNyBAQCBleHBvcnQgZGVm
YXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB0
eXBlU2VjdGlvbiA9IGJ1aWxkZXIuX2dldFNlY3Rpb24oIlR5cGUiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBpbXBvcnRTZWN0aW9uID0gYnVpbGRlci5fZ2V0U2VjdGlvbigi
SW1wb3J0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZXhwb3J0U2VjdGlv
biA9IGJ1aWxkZXIuX2dldFNlY3Rpb24oIkV4cG9ydCIpOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IHN0YXJ0U2VjdGlvbiA9IGJ1aWxkZXIuX2dldFNlY3Rpb24oIlN0YXJ0Iik7
CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29kZVNlY3Rpb24gPSBzOwogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBvcnRTZWN0aW9uKSB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiBleHBvcnRTZWN0aW9uLmRhdGEp
IHsKQEAgLTQ3MSw2ICs0ODAsMTUgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRlciB7CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0U2VjdGlvbikgeworICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IHN0YXJ0U2VjdGlvbi5kYXRhWzBdOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBwZWQgPSBidWlsZGVyLl9nZXRGdW5j
dGlvbkZyb21JbmRleFNwYWNlKHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgaWYgKHR5cGVvZihtYXBwZWQpID09PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU3RhcnQgc2VjdGlvbiByZWZlcnMg
dG8gbm9uLWV4aXN0YW50IGZ1bmN0aW9uICcke3N0YXJ0fSdgKTsKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaWYgKHR5cGVvZihzdGFydCkgPT09ICJzdHJpbmciKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQgPSBzdGFydFNlY3Rpb24uZGF0YVswXSA9
IG1hcHBlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUUgaW4gY2hl
Y2tlZCBtb2RlLCB0ZXN0IHRoYXQgdGhlIHR5cGUgaXMgYWNjZXB0YWJsZSBmb3Igc3RhcnQgZnVu
Y3Rpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiBidWlsZGVyOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwKIApk
aWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0J1aWxkZXJKU09OLmpzIGIv
SlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0X0J1aWxkZXJKU09OLmpzCmluZGV4IDczMWQyNjIu
LjYzNWNjMmYgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9CdWlsZGVy
SlNPTi5qcworKysgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMK
QEAgLTI0MSw2ICsyNDEsNTUgQEAgY29uc3QgYXNzZXJ0T3BUaHJvd3MgPSAob3BGbiwgbWVzc2Fn
ZSkgPT4gewogICAgIGFzc2VydC50aHJvd3MoKCkgPT4gZS5GdW5jdGlvbigiZm9vIiwgMCwgeyBw
YXJhbXM6IFsiaTMyIl0gfSksIEVycm9yLCBgTm90IHRoZSBzYW1lOiAiMSIgYW5kICIwIjogUmUt
ZXhwb3J0aW5nIGltcG9ydCAiYmFyIiBhcyAiZm9vIiBoYXMgbWlzbWF0Y2hpbmcgdHlwZWApOwog
fSkoKTsKIAorKGZ1bmN0aW9uIFN0YXJ0SW52YWxpZE51bWJlcmVkRnVuY3Rpb24oKSB7CisgICAg
Y29uc3QgYiA9IChuZXcgQnVpbGRlcigpKQorICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAg
IC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5TdGFydCgwKS5FbmQoKQorICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gYi5Db2RlKCkuRW5kKCksIEVycm9yLCBgU3RhcnQgc2VjdGlvbiByZWZlcnMg
dG8gbm9uLWV4aXN0YW50IGZ1bmN0aW9uICcwJ2ApOworfSkoKTsKKworKGZ1bmN0aW9uIFN0YXJ0
SW52YWxpZE5hbWVkRnVuY3Rpb24oKSB7CisgICAgY29uc3QgYiA9IChuZXcgQnVpbGRlcigpKQor
ICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAg
IC5TdGFydCgiZm9vIikuRW5kKCk7CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBiLkNvZGUoKS5F
bmQoKSwgRXJyb3IsIGBTdGFydCBzZWN0aW9uIHJlZmVycyB0byBub24tZXhpc3RhbnQgZnVuY3Rp
b24gJ2ZvbydgKTsKK30pKCk7CisKKyhmdW5jdGlvbiBTdGFydE5hbWVkRnVuY3Rpb24oKSB7Cisg
ICAgY29uc3QgYiA9IChuZXcgQnVpbGRlcigpKQorICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAg
ICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5TdGFydCgiZm9vIikuRW5kKCkKKyAgICAg
ICAgLkNvZGUoKQorICAgICAgICAgICAgLkZ1bmN0aW9uKCJmb28iLCB7IHBhcmFtczogW10gfSku
RW5kKCkKKyAgICAgICAgLkVuZCgpOworICAgIGNvbnN0IGogPSBKU09OLnBhcnNlKGIuanNvbigp
KTsKKyAgICBhc3NlcnQuZXEoai5zZWN0aW9uLmxlbmd0aCwgNCk7CisgICAgYXNzZXJ0LmVxKGou
c2VjdGlvblsyXS5uYW1lLCAiU3RhcnQiKTsKKyAgICBhc3NlcnQuZXEoai5zZWN0aW9uWzJdLmRh
dGEubGVuZ3RoLCAxKTsKKyAgICBhc3NlcnQuZXEoai5zZWN0aW9uWzJdLmRhdGFbMF0sIDApOwor
fSkoKTsKKworKGZ1bmN0aW9uIFN0YXJ0SW52YWxpZFR5cGVBcmcoKSB7CisgICAgY29uc3QgYiA9
IChuZXcgQnVpbGRlcigpKQorICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgIC5GdW5jdGlv
bigpLkVuZCgpCisgICAgICAgIC5TdGFydCgiZm9vIikuRW5kKCkKKyAgICBhc3NlcnQudGhyb3dz
KCgpID0+IGIuQ29kZSgpLkZ1bmN0aW9uKCJmb28iLCB7IHBhcmFtczogWyJpMzIiXSB9KS5FbmQo
KSwgRXJyb3IsIGBgKTsKK30pKCk7CisKKyhmdW5jdGlvbiBTdGFydEludmFsaWRUeXBlUmV0dXJu
KCkgeworICAgIGNvbnN0IGIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQo
KQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuU3RhcnQoImZvbyIpLkVuZCgp
CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBiLkNvZGUoKS5GdW5jdGlvbigiZm9vIiwgeyBwYXJh
bXM6IFtdLCByZXQ6ICJpMzIiIH0pLkkzMkNvbnN0KDQyKS5SZXQoKS5FbmQoKSwgRXJyb3IsIGA/
Pz9gKTsKK30pKCk7CisKKy8vIEZJWE1FIHRlc3Qgc3RhcnQgb2YgaW1wb3J0IG9yIHRhYmxlLgor
CiAoZnVuY3Rpb24gRW1wdHlDb2RlU2VjdGlvbigpIHsKICAgICBjb25zdCBiID0gbmV3IEJ1aWxk
ZXIoKTsKICAgICBiLkNvZGUoKTsKLS0gCjIuMTAuMQoK
</data>
<flag name="commit-queue"
          id="319061"
          type_id="3"
          status="-"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296698</attachid>
            <date>2016-12-09 14:13:47 -0800</date>
            <delta_ts>2016-12-09 14:48:30 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-start.patch</filename>
            <type>text/plain</type>
            <size>19376</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA0OWE5OWE4N2FlOGE1MjI3ZDY4NDlhZDIxNWFjNTIyMWVmOTFhZGYxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDggRGVjIDIwMTYgMjI6MTI6MDggLTA4MDAKU3ViamVjdDogW1BBVENIXSBzdGFydAoK
LS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IDEzICsrKysrKwogSlNUZXN0cy93YXNtL0J1aWxkZXIuanMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAyNCArKysrKysrKystCiBKU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJp
bmFyeS5qcyAgICAgICAgICB8ICA0ICstCiBKU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfU3RhcnQu
anMgICAgICAgICAgICAgICAgICB8IDE1ICsrKysrKysKIEpTVGVzdHMvd2FzbS9zZWxmLXRlc3Qv
dGVzdF9CdWlsZGVySlNPTi5qcyAgICAgICAgIHwgNTEgKysrKysrKysrKysrKysrKysrKysrKwog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgfCAyNCAr
KysrKysrKysrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmggICAgICAg
ICAgICB8ICAyICsKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIu
Y3BwICAgIHwgMTYgKysrKysrLQogLi4uL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5jcHAgfCAxNSArKysrLS0tCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmggICB8ICAyICsKIC4uLi93YXNtL2pzL1dlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkLmNwcCAgICAgICAgICAgIHwgMzUgKysrKysrKysrKysrKy0tCiAuLi4vd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oICAgICAgICAgICAgICB8ICAyICsKIDEyIGZpbGVz
IGNoYW5nZWQsIDE4OSBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKIGNyZWF0ZSBtb2Rl
IDEwMDY0NCBKU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfU3RhcnQuanMKCmRpZmYgLS1naXQgYS9K
U1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4IDI2NjIzMDAuLjRkZTMw
ODMgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pTVGVzdHMvQ2hhbmdlTG9n
CkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMTItMDkgIEpGIEJhc3RpZW4gIDxqZmJhc3RpZW5AYXBw
bGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTogaW1wbGVtZW50IHN0YXJ0IGZ1
bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjUxNTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAq
IHdhc20vQnVpbGRlci5qczogYWxsb3cgYnVpbGRpbmcgYSAuU3RhcnQoKQorICAgICAgICAqIHdh
c20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qczoKKyAgICAgICAgKiB3YXNtL2pzLWFwaS90
ZXN0X1N0YXJ0LmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbnN0LmVtaXR0ZXJzLlN0YXJ0KTogc2Vy
aWFsaXplIGEgc3RhcnQgc2VjdGlvbgorICAgICAgICAqIHdhc20vc2VsZi10ZXN0L3Rlc3RfQnVp
bGRlckpTT04uanM6IHZhbGlkYXRlIHRoZSBzdGFydCBzZWN0aW9uJ3MgY29udGVudAorCiAyMDE2
LTEyLTA4ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWJB
c3NlbWJseTogSlNDOjpsaW5rKiBzaG91bGRuJ3QgbmVlZCBhIENvZGVCbG9jawpkaWZmIC0tZ2l0
IGEvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwppbmRl
eCBjZWNiMmM3Li5lZjhhMDhkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwor
KysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcwpAQCAtNDI2LDggKzQyNiwxNiBAQCBleHBvcnQg
ZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAg
ICAgICAgY2FzZSAiU3RhcnQiOgotICAgICAgICAgICAgICAgIC8vIEZJWE1FIGltcGxlbWVudCBz
dGFydCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNzA5Ci0gICAg
ICAgICAgICAgICAgdGhpc1tzZWN0aW9uXSA9ICgpID0+IHsgdGhyb3cgbmV3IEVycm9yKGBVbmlt
cGxlbWVudGVkOiBzZWN0aW9uIHR5cGUgIiR7c2VjdGlvbn0iYCk7IH07CisgICAgICAgICAgICAg
ICAgdGhpc1tzZWN0aW9uXSA9IGZ1bmN0aW9uKGZ1bmN0aW9uSW5kZXhPck5hbWUpIHsKKyAgICAg
ICAgICAgICAgICAgICAgY29uc3QgcyA9IHRoaXMuX2FkZFNlY3Rpb24oc2VjdGlvbik7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0QnVpbGRlciA9IHsKKyAgICAgICAgICAgICAgICAg
ICAgICAgIEVuZDogKCkgPT4gdGhpcywKKyAgICAgICAgICAgICAgICAgICAgfTsKKyAgICAgICAg
ICAgICAgICAgICAgaWYgKHR5cGVvZihmdW5jdGlvbkluZGV4T3JOYW1lKSAhPT0gIm51bWJlciIg
JiYgdHlwZW9mKGZ1bmN0aW9uSW5kZXhPck5hbWUpICE9PSAic3RyaW5nIikKKyAgICAgICAgICAg
ICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU3RhcnQgc2VjdGlvbidzIGZ1bmN0aW9uIGlu
ZGV4ICBtdXN0IGVpdGhlciBiZSBhIG51bWJlciBvciBhIHN0cmluZ2ApOworICAgICAgICAgICAg
ICAgICAgICBzLmRhdGEucHVzaChmdW5jdGlvbkluZGV4T3JOYW1lKTsKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIHN0YXJ0QnVpbGRlcjsKKyAgICAgICAgICAgICAgICB9OwogICAgICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlICJFbGVtZW50IjoKQEAgLTQ0NSw2ICs0
NTMsNyBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCB0eXBlU2VjdGlvbiA9IGJ1aWxkZXIuX2dldFNlY3Rpb24oIlR5cGUi
KTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbXBvcnRTZWN0aW9uID0gYnVp
bGRlci5fZ2V0U2VjdGlvbigiSW1wb3J0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgZXhwb3J0U2VjdGlvbiA9IGJ1aWxkZXIuX2dldFNlY3Rpb24oIkV4cG9ydCIpOworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHN0YXJ0U2VjdGlvbiA9IGJ1aWxkZXIuX2dl
dFNlY3Rpb24oIlN0YXJ0Iik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY29k
ZVNlY3Rpb24gPSBzOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChleHBvcnRTZWN0
aW9uKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciAoY29uc3QgZSBvZiBl
eHBvcnRTZWN0aW9uLmRhdGEpIHsKQEAgLTQ3MSw2ICs0ODAsMTcgQEAgZXhwb3J0IGRlZmF1bHQg
Y2xhc3MgQnVpbGRlciB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHN0YXJ0U2VjdGlvbikgewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydCA9IHN0YXJ0U2VjdGlv
bi5kYXRhWzBdOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBtYXBwZWQg
PSBidWlsZGVyLl9nZXRGdW5jdGlvbkZyb21JbmRleFNwYWNlKHN0YXJ0KTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZihtYXBwZWQpID09PSAidW5kZWZpbmVkIikK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgU3Rh
cnQgc2VjdGlvbiByZWZlcnMgdG8gbm9uLWV4aXN0YW50IGZ1bmN0aW9uICcke3N0YXJ0fSdgKTsK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZihzdGFydCkgPT09ICJz
dHJpbmciIHx8IHR5cGVvZihzdGFydCkgPT09ICJvYmplY3QiKQorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc3RhcnRTZWN0aW9uLmRhdGFbMF0gPSBtYXBwZWQ7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChidWlsZGVyLl9jaGVja2VkKSB7CisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBGSVhNRSBpbiBjaGVja2VkIG1vZGUsIHRl
c3QgdGhhdCB0aGUgdHlwZSBpcyBhY2NlcHRhYmxlIGZvciBzdGFydCBmdW5jdGlvbi4gV2UgcHJv
YmFibHkgd2FudCBfcmVnaXN0ZXJGdW5jdGlvblRvSW5kZXhTcGFjZSB0byBhbHNvIHJlZ2lzdGVy
IHR5cGVzIHBlciBpbmRleC4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NTY1OAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBidWls
ZGVyOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMgYi9KU1Rlc3RzL3dhc20vQnVpbGRlcl9X
ZWJBc3NlbWJseUJpbmFyeS5qcwppbmRleCA0OTQ2NDFhLi5iYTQyNTZiIDEwMDY0NAotLS0gYS9K
U1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qcworKysgYi9KU1Rlc3RzL3dh
c20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qcwpAQCAtOTUsNyArOTUsOSBAQCBjb25zdCBl
bWl0dGVycyA9IHsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0sCi0gICAgU3RhcnQ6
IChzZWN0aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxlbWVudGVk
YCk7IH0sCisgICAgU3RhcnQ6IChzZWN0aW9uLCBiaW4pID0+IHsKKyAgICAgICAgcHV0KGJpbiwg
InZhcnVpbnQzMiIsIHNlY3Rpb24uZGF0YVswXSk7CisgICAgfSwKICAgICBFbGVtZW50OiAoc2Vj
dGlvbiwgYmluKSA9PiB7IHRocm93IG5ldyBFcnJvcihgTm90IHlldCBpbXBsZW1lbnRlZGApOyB9
LAogCiAgICAgQ29kZTogKHNlY3Rpb24sIGJpbikgPT4gewpkaWZmIC0tZ2l0IGEvSlNUZXN0cy93
YXNtL2pzLWFwaS90ZXN0X1N0YXJ0LmpzIGIvSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X1N0YXJ0
LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZTY4ODIKLS0tIC9kZXYv
bnVsbAorKysgYi9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfU3RhcnQuanMKQEAgLTAsMCArMSwx
NSBAQAoraW1wb3J0ICogYXMgYXNzZXJ0IGZyb20gJy4uL2Fzc2VydC5qcyc7CitpbXBvcnQgQnVp
bGRlciBmcm9tICcuLi9CdWlsZGVyLmpzJzsKKworKGZ1bmN0aW9uIFN0YXJ0TmFtZWRGdW5jdGlv
bigpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5k
KCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJmb28iKS5FbmQo
KQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZvbyIsIHsgcGFyYW1z
OiBbXSB9KS5SZXR1cm4oKS5FbmQoKQorICAgICAgICAuRW5kKCk7CisgICAgY29uc3QgYmluID0g
Yi5XZWJBc3NlbWJseSgpLmdldCgpOworICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJs
eS5Nb2R1bGUoYmluKTsKKyAgICBjb25zdCBpbnN0YW5jZSA9IG5ldyBXZWJBc3NlbWJseS5JbnN0
YW5jZShtb2R1bGUpOworfSkoKTsKZGlmZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3Qv
dGVzdF9CdWlsZGVySlNPTi5qcyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9CdWlsZGVy
SlNPTi5qcwppbmRleCA3MzFkMjYyLi5lNmMyOTNjIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20v
c2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMKKysrIGIvSlNUZXN0cy93YXNtL3NlbGYtdGVz
dC90ZXN0X0J1aWxkZXJKU09OLmpzCkBAIC0yNDEsNiArMjQxLDU3IEBAIGNvbnN0IGFzc2VydE9w
VGhyb3dzID0gKG9wRm4sIG1lc3NhZ2UpID0+IHsKICAgICBhc3NlcnQudGhyb3dzKCgpID0+IGUu
RnVuY3Rpb24oImZvbyIsIDAsIHsgcGFyYW1zOiBbImkzMiJdIH0pLCBFcnJvciwgYE5vdCB0aGUg
c2FtZTogIjEiIGFuZCAiMCI6IFJlLWV4cG9ydGluZyBpbXBvcnQgImJhciIgYXMgImZvbyIgaGFz
IG1pc21hdGNoaW5nIHR5cGVgKTsKIH0pKCk7CiAKKyhmdW5jdGlvbiBTdGFydEludmFsaWROdW1i
ZXJlZEZ1bmN0aW9uKCkgeworICAgIGNvbnN0IGIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAg
LlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuU3RhcnQo
MCkuRW5kKCkKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IGIuQ29kZSgpLkVuZCgpLCBFcnJvciwg
YFN0YXJ0IHNlY3Rpb24gcmVmZXJzIHRvIG5vbi1leGlzdGFudCBmdW5jdGlvbiAnMCdgKTsKK30p
KCk7CisKKyhmdW5jdGlvbiBTdGFydEludmFsaWROYW1lZEZ1bmN0aW9uKCkgeworICAgIGNvbnN0
IGIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVu
Y3Rpb24oKS5FbmQoKQorICAgICAgICAuU3RhcnQoImZvbyIpLkVuZCgpOworICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gYi5Db2RlKCkuRW5kKCksIEVycm9yLCBgU3RhcnQgc2VjdGlvbiByZWZlcnMg
dG8gbm9uLWV4aXN0YW50IGZ1bmN0aW9uICdmb28nYCk7Cit9KSgpOworCisoZnVuY3Rpb24gU3Rh
cnROYW1lZEZ1bmN0aW9uKCkgeworICAgIGNvbnN0IGIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAg
ICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuU3Rh
cnQoImZvbyIpLkVuZCgpCisgICAgICAgIC5Db2RlKCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigi
Zm9vIiwgeyBwYXJhbXM6IFtdIH0pLkVuZCgpCisgICAgICAgIC5FbmQoKTsKKyAgICBjb25zdCBq
ID0gSlNPTi5wYXJzZShiLmpzb24oKSk7CisgICAgYXNzZXJ0LmVxKGouc2VjdGlvbi5sZW5ndGgs
IDQpOworICAgIGFzc2VydC5lcShqLnNlY3Rpb25bMl0ubmFtZSwgIlN0YXJ0Iik7CisgICAgYXNz
ZXJ0LmVxKGouc2VjdGlvblsyXS5kYXRhLmxlbmd0aCwgMSk7CisgICAgYXNzZXJ0LmVxKGouc2Vj
dGlvblsyXS5kYXRhWzBdLCAwKTsKK30pKCk7CisKKy8qIEZJWE1FIGltcGxlbWVudCBjaGVja2lu
ZyBvZiBzaWduYXR1cmUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2
NTY1OAorKGZ1bmN0aW9uIFN0YXJ0SW52YWxpZFR5cGVBcmcoKSB7CisgICAgY29uc3QgYiA9IChu
ZXcgQnVpbGRlcigpKQorICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgIC5GdW5jdGlvbigp
LkVuZCgpCisgICAgICAgIC5TdGFydCgiZm9vIikuRW5kKCkKKyAgICBhc3NlcnQudGhyb3dzKCgp
ID0+IGIuQ29kZSgpLkZ1bmN0aW9uKCJmb28iLCB7IHBhcmFtczogWyJpMzIiXSB9KS5FbmQoKSwg
RXJyb3IsIGA/Pz9gKTsKK30pKCk7CisKKyhmdW5jdGlvbiBTdGFydEludmFsaWRUeXBlUmV0dXJu
KCkgeworICAgIGNvbnN0IGIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQo
KQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAgICAuU3RhcnQoImZvbyIpLkVuZCgp
CisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBiLkNvZGUoKS5GdW5jdGlvbigiZm9vIiwgeyBwYXJh
bXM6IFtdLCByZXQ6ICJpMzIiIH0pLkkzMkNvbnN0KDQyKS5SZXQoKS5FbmQoKSwgRXJyb3IsIGA/
Pz9gKTsKK30pKCk7CisqLworCisvLyBGSVhNRSB0ZXN0IHN0YXJ0IG9mIGltcG9ydCBvciB0YWJs
ZS4gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTY1OAorCiAoZnVu
Y3Rpb24gRW1wdHlDb2RlU2VjdGlvbigpIHsKICAgICBjb25zdCBiID0gbmV3IEJ1aWxkZXIoKTsK
ICAgICBiLkNvZGUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VM
b2cgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGI1NDY1NDUuLmI1ZTIw
ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDE2LTEyLTA5
ICBKRiBCYXN0aWVuICA8amZiYXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJs
eSBKUyBBUEk6IGltcGxlbWVudCBzdGFydCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1MTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB3YXNtL1dhc21Gb3JtYXQuaDogcGFzcyB0aGUg
c3RhcnQgZnVuY3Rpb24gYXJvdW5kCisgICAgICAgICogd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNw
cDoKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxlUGFyc2VyOjpwYXJzZVRhYmxlKTogbWFyayB1
bnJlYWNoYWJsZSBjb2RlCisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZVBhcnNlcjo6cGFyc2VH
bG9iYWwpOiBtYXJrIHVucmVhY2hhYmxlIGNvZGUKKyAgICAgICAgKEpTQzo6V2FzbTo6TW9kdWxl
UGFyc2VyOjpwYXJzZVN0YXJ0KTogbWFyayB1bnJlYWNoYWJsZSBjb2RlCisgICAgICAgIChKU0M6
Oldhc206Ok1vZHVsZVBhcnNlcjo6cGFyc2VFbGVtZW50KTogbWFyayB1bnJlYWNoYWJsZSBjb2Rl
CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZVBhcnNlcjo6cGFyc2VEYXRhKTogbWFyayB1bnJl
YWNoYWJsZSBjb2RlCisgICAgICAgICogd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcDoK
KyAgICAgICAgKEpTQzo6Y2FsbFdlYkFzc2VtYmx5RnVuY3Rpb24pOiBORkM6IGNhbGwgdGhlIG5l
dyBmdW5jdGlvbiBiZWxvdworICAgICAgICAoSlNDOjpXZWJBc3NlbWJseUZ1bmN0aW9uOjpjYWxs
KTogc2VwYXJhdGUgdGhpcyBvdXQgc28gdGhhdCB0aGUgc3RhcnQgZnVuY3Rpb24gY2FuIHVzZSBp
dAorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5oOgorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwOgorICAgICAgICAoSlNDOjpXZWJBc3Nl
bWJseU1vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbik6IHZpc2l0IHRoZSBzdGFydCBmdW5jdGlv
bgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayk6IGhhbmRsZSBz
dGFydCBmdW5jdGlvbgorICAgICAgICAoSlNDOjpXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZh
bHVhdGUpOiBjYWxsIHRoZSBzdGFydCBmdW5jdGlvbiwgaWYgcHJlc2VudAorICAgICAgICAqIHdh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaDoKKwogMjAxNi0xMi0wOSAgQ3NhYmEgT3N6
dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgQVJNIGJ1
aWxkZml4IGFmdGVyIDIwOTU3MC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQu
aAppbmRleCA0M2IxMTlhLi4yYzkyZjI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZvcm1hdC5oCkBAIC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiSWRlbnRpZmllci5oIgogI2lu
Y2x1ZGUgIk1hY3JvQXNzZW1ibGVyQ29kZVJlZi5oIgogI2luY2x1ZGUgIldhc21PcHMuaCIKKyNp
bmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVz
cGFjZSBKU0MgewpAQCAtMTI0LDYgKzEyNSw3IEBAIHN0cnVjdCBNb2R1bGVJbmZvcm1hdGlvbiB7
CiAgICAgVmVjdG9yPFNpZ25hdHVyZSo+IGludGVybmFsRnVuY3Rpb25TaWduYXR1cmVzOwogICAg
IHN0ZDo6dW5pcXVlX3B0cjxNZW1vcnk+IG1lbW9yeTsKICAgICBWZWN0b3I8RXhwb3J0PiBleHBv
cnRzOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNl
OwogCiAgICAgfk1vZHVsZUluZm9ybWF0aW9uKCk7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcAppbmRleCBhZjEzM2E0Li5hZWYxYWM1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNw
cAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcApA
QCAtMzAxLDcgKzMwMSw4IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZUZ1bmN0aW9uKCkKIAog
Ym9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlVGFibGUoKQogewotICAgIC8vIEZJWE1FCisgICAgLy8g
RklYTUUgaW1wbGVtZW50IHRhYmxlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0xNjQxMzUKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0zNDAsNiArMzQxLDcgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNl
TWVtb3J5KCkKIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZUdsb2JhbCgpCiB7CiAgICAgLy8gRklY
TUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDEzMworICAgIFJF
TEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM5
MCwxMyArMzkyLDIyIEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZUV4cG9ydCgpCiAKIGJvb2wg
TW9kdWxlUGFyc2VyOjpwYXJzZVN0YXJ0KCkKIHsKLSAgICAvLyBGSVhNRSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNzA5CisgICAgdWludDMyX3Qgc3RhcnRGdW5j
dGlvbkluZGV4OworICAgIGlmICghcGFyc2VWYXJVSW50MzIoc3RhcnRGdW5jdGlvbkluZGV4KQor
ICAgICAgICB8fCBzdGFydEZ1bmN0aW9uSW5kZXggPj0gbV9mdW5jdGlvbkluZGV4U3BhY2Uuc2l6
ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgU2lnbmF0dXJlKiBzaWduYXR1cmUgPSBt
X2Z1bmN0aW9uSW5kZXhTcGFjZVtzdGFydEZ1bmN0aW9uSW5kZXhdLnNpZ25hdHVyZTsKKyAgICBp
ZiAoc2lnbmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpICE9IDAKKyAgICAgICAgfHwgc2lnbmF0dXJl
LT5yZXR1cm5UeXBlICE9IFZvaWQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBtX21vZHVs
ZS0+c3RhcnRGdW5jdGlvbkluZGV4U3BhY2UgPSBzdGFydEZ1bmN0aW9uSW5kZXg7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZUVsZW1lbnQoKQogewogICAg
IC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MDkK
KyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiB0cnVlOwogfQog
CkBAIC00MjUsNiArNDM2LDcgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlQ29kZSgpCiBib29s
IE1vZHVsZVBhcnNlcjo6cGFyc2VEYXRhKCkKIHsKICAgICAvLyBGSVhNRSBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNzA5CisgICAgUkVMRUFTRV9BU1NFUlRfTk9U
X1JFQUNIRUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcAppbmRleCBkYTQ1NGEx
Li45OTBhNjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseUZ1bmN0aW9uLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmNwcApAQCAtOTAsMjAgKzkwLDI1IEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgYXJnQ291bnQgPSBib3hlZEFyZ3Muc2l6ZSgpOwogICAgIH0KIAotICAg
IC8vIE5vdGU6IHdlIHNwZWNpZmljYWxseSB1c2UgdGhlIFdlYkFzc2VibHlGdW5jdGlvbiBhcyB0
aGUgY2FsbGVlIHRvIGJlZ2luIHdpdGggaW4gdGhlIFByb3RvQ2FsbEZyYW1lLgorICAgIC8vIE5v
dGU6IHdlIHNwZWNpZmljYWxseSB1c2UgdGhlIFdlYkFzc2VtYmx5RnVuY3Rpb24gYXMgdGhlIGNh
bGxlZSB0byBiZWdpbiB3aXRoIGluIHRoZSBQcm90b0NhbGxGcmFtZS4KICAgICAvLyBUaGUgcmVh
c29uIGZvciB0aGlzIGlzIHRoYXQgY2FsbGluZyBpbnRvIHRoZSBsbGludCBtYXkgc3RhY2sgb3Zl
cmZsb3csIGFuZCB0aGUgc3RhY2sgb3ZlcmZsb3cKICAgICAvLyBoYW5kbGVyIG1pZ2h0IHJlYWQg
dGhlIGdsb2JhbCBvYmplY3QgZnJvbSB0aGUgY2FsbGVlLiBUaGUgSlNXZWJBc3NlbWJseUNhbGxl
ZSBkb2Vzbid0IGhhdmUgYQogICAgIC8vIGdsb2JhbCBvYmplY3QsIGJ1dCB0aGUgV2ViQXNzZW1i
bHlGdW5jdGlvbiBkb2VzLgogICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwogICAg
IHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBmaXJzdEFyZ3VtZW50
LCBhcmdDb3VudCwgcmVtYWluaW5nQXJncyk7Ci0gICAgCisKKyAgICByZXR1cm4gd2FzbUZ1bmN0
aW9uLT5jYWxsKHZtLCAmcHJvdG9DYWxsRnJhbWUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBXZWJB
c3NlbWJseUZ1bmN0aW9uOjpjYWxsKFZNJiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvQ2FsbEZy
YW1lKQorewogICAgIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogcHJldkpTV2ViQXNzZW1ibHlJbnN0
YW5jZSA9IHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZTsKLSAgICB2bS50b3BKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UgPSB3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCk7Ci0gICAgRW5jb2RlZEpTVmFs
dWUgcmF3UmVzdWx0ID0gdm1FbnRyeVRvV2FzbSh3YXNtRnVuY3Rpb24tPndlYkFzc2VtYmx5Q2Fs
bGVlKCktPmpzVG9XYXNtRW50cnlQb2ludCgpLCAmdm0sICZwcm90b0NhbGxGcmFtZSk7CisgICAg
dm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlID0gaW5zdGFuY2UoKTsKKyAgICBFbmNvZGVkSlNW
YWx1ZSByYXdSZXN1bHQgPSB2bUVudHJ5VG9XYXNtKHdlYkFzc2VtYmx5Q2FsbGVlKCktPmpzVG9X
YXNtRW50cnlQb2ludCgpLCAmdm0sIHByb3RvQ2FsbEZyYW1lKTsKICAgICB2bS50b3BKU1dlYkFz
c2VtYmx5SW5zdGFuY2UgPSBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlOwogCiAgICAgLy8gRklY
TUUgaXMgdGhpcyBjb3JyZWN0PyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY0ODc2Ci0gICAgc3dpdGNoIChzaWduYXR1cmUtPnJldHVyblR5cGUpIHsKKyAgICBzd2l0
Y2ggKHNpZ25hdHVyZSgpLT5yZXR1cm5UeXBlKSB7CiAgICAgY2FzZSBXYXNtOjpWb2lkOgogICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwogICAgIGNhc2UgV2Fz
bTo6STMyOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNz
ZW1ibHlGdW5jdGlvbi5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5oCmluZGV4IDdjYzU2MmMuLjJjYmY4NTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmgKQEAgLTM0LDYgKzM0
LDcgQEAgbmFtZXNwYWNlIEpTQyB7CiAKIGNsYXNzIEpTR2xvYmFsT2JqZWN0OwogY2xhc3MgSlNX
ZWJBc3NlbWJseUNhbGxlZTsKK3N0cnVjdCBQcm90b0NhbGxGcmFtZTsKIGNsYXNzIFdlYkFzc2Vt
Ymx5SW5zdGFuY2U7CiAKIG5hbWVzcGFjZSBCMyB7CkBAIC02Miw2ICs2Myw3IEBAIHB1YmxpYzoK
ICAgICAgICAgQVNTRVJUKG1fc2lnbmF0dXJlKTsKICAgICAgICAgcmV0dXJuIG1fc2lnbmF0dXJl
OwogICAgIH0KKyAgICBFbmNvZGVkSlNWYWx1ZSBjYWxsKFZNJiwgUHJvdG9DYWxsRnJhbWUqKTsK
IAogcHJvdGVjdGVkOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxsKiwgU2xv
dFZpc2l0b3ImKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAppbmRleCA1MWM5ZDc5Li42NjQ2OGM5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJl
Y29yZC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQuY3BwCkBAIC0zNCw4ICszNCwxMCBAQAogI2luY2x1ZGUgIkpTTW9kdWxlRW52
aXJvbm1lbnQuaCIKICNpbmNsdWRlICJKU1dlYkFzc2VtYmx5SW5zdGFuY2UuaCIKICNpbmNsdWRl
ICJKU1dlYkFzc2VtYmx5TW9kdWxlLmgiCisjaW5jbHVkZSAiUHJvdG9DYWxsRnJhbWUuaCIKICNp
bmNsdWRlICJXYXNtRm9ybWF0LmgiCiAjaW5jbHVkZSAiV2ViQXNzZW1ibHlGdW5jdGlvbi5oIgor
I2luY2x1ZGUgPGxpbWl0cz4KIAogbmFtZXNwYWNlIEpTQyB7CiAKQEAgLTk2LDYgKzk4LDcgQEAg
dm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6dmlzaXRDaGlsZHJlbihKU0NlbGwqIGNlbGws
IFNsb3RWaXNpdG9yJiB2aXNpdG9yKQogICAgIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKiB0aGlz
T2JqZWN0ID0ganNDYXN0PFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkKj4oY2VsbCk7CiAgICAgQmFz
ZTo6dmlzaXRDaGlsZHJlbih0aGlzT2JqZWN0LCB2aXNpdG9yKTsKICAgICB2aXNpdG9yLmFwcGVu
ZCgmdGhpc09iamVjdC0+bV9pbnN0YW5jZSk7CisgICAgdmlzaXRvci5hcHBlbmQoJnRoaXNPYmpl
Y3QtPm1fc3RhcnRGdW5jdGlvbik7CiB9CiAKIHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OmxpbmsoRXhlY1N0YXRlKiBzdGF0ZSwgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0YW5jZSkK
QEAgLTEwNyw2ICsxMTAsMTAgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhF
eGVjU3RhdGUqIHN0YXRlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3QKIAogICAgIEpTV2Vi
QXNzZW1ibHlNb2R1bGUqIG1vZHVsZSA9IGluc3RhbmNlLT5tb2R1bGUoKTsKICAgICBjb25zdCBX
YXNtOjpNb2R1bGVJbmZvcm1hdGlvbiYgbW9kdWxlSW5mb3JtYXRpb24gPSBtb2R1bGUtPm1vZHVs
ZUluZm9ybWF0aW9uKCk7CisKKyAgICBib29sIGhhc1N0YXJ0ID0gISFtb2R1bGVJbmZvcm1hdGlv
bi5zdGFydEZ1bmN0aW9uSW5kZXhTcGFjZTsKKyAgICBhdXRvIHN0YXJ0RnVuY3Rpb25JbmRleFNw
YWNlID0gbW9kdWxlSW5mb3JtYXRpb24uc3RhcnRGdW5jdGlvbkluZGV4U3BhY2UudmFsdWVfb3Io
MCk7CisKICAgICBTeW1ib2xUYWJsZSogZXhwb3J0U3ltYm9sVGFibGUgPSBtb2R1bGUtPmV4cG9y
dFN5bWJvbFRhYmxlKCk7CiAgICAgdW5zaWduZWQgaW1wb3J0Q291bnQgPSBtb2R1bGUtPmltcG9y
dENvdW50KCk7CiAKQEAgLTEzMyw2ICsxNDAsOCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpsaW5rKEV4ZWNTdGF0ZSogc3RhdGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdAog
ICAgICAgICAgICAgV2FzbTo6U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBtb2R1bGUtPnNpZ25hdHVy
ZUZvckZ1bmN0aW9uSW5kZXhTcGFjZShleHAuZnVuY3Rpb25JbmRleCk7CiAgICAgICAgICAgICBX
ZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246OmNyZWF0
ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzaWduYXR1cmUtPmFyZ3VtZW50cy5zaXplKCksIGV4cC5maWVs
ZC5zdHJpbmcoKSwgaW5zdGFuY2UsIHdhc21DYWxsZWUsIHNpZ25hdHVyZSk7CiAgICAgICAgICAg
ICBleHBvcnRlZFZhbHVlID0gZnVuY3Rpb247CisgICAgICAgICAgICBpZiAoaGFzU3RhcnQgJiYg
c3RhcnRGdW5jdGlvbkluZGV4U3BhY2UgPT0gZXhwLmZ1bmN0aW9uSW5kZXgpCisgICAgICAgICAg
ICAgICAgbV9zdGFydEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgZnVuY3Rpb24pOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBXYXNtOjpFeHRlcm5hbDo6VGFibGU6
IHsKQEAgLTE1Nyw2ICsxNjYsMjAgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGlu
ayhFeGVjU3RhdGUqIHN0YXRlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3QKICAgICAgICAg
UkVMRUFTRV9BU1NFUlQocHV0UmVzdWx0KTsKICAgICB9CiAKKyAgICBpZiAoaGFzU3RhcnQpIHsK
KyAgICAgICAgV2FzbTo6U2lnbmF0dXJlKiBzaWduYXR1cmUgPSBtb2R1bGUtPnNpZ25hdHVyZUZv
ckZ1bmN0aW9uSW5kZXhTcGFjZShzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSk7CisgICAgICAgIC8v
IFRoZSBzdGFydCBmdW5jdGlvbiBtdXN0IG5vdCB0YWtlIGFueSBhcmd1bWVudHMgb3IgcmV0dXJu
IGFueXRoaW5nLiBUaGlzIGlzIGVuZm9yY2VkIGJ5IHRoZSBwYXJzZXIuCisgICAgICAgIEFTU0VS
VCghc2lnbmF0dXJlLT5hcmd1bWVudHMuc2l6ZSgpKTsKKyAgICAgICAgQVNTRVJUKHNpZ25hdHVy
ZS0+cmV0dXJuVHlwZSA9PSBXYXNtOjpWb2lkKTsKKyAgICAgICAgLy8gRklYTUUgY2FuIHN0YXJ0
IGNhbGwgaW1wb3J0cyAvIHRhYmxlcz8gVGhpcyBhc3N1bWVzIG5vdC4gaHR0cHM6Ly9naXRodWIu
Y29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9pc3N1ZXMvODk2CisgICAgICAgIGlmICghbV9zdGFydEZ1
bmN0aW9uLmdldCgpKSB7CisgICAgICAgICAgICAvLyBUaGUgc3RhcnQgZnVuY3Rpb24gd2Fzbid0
IGFkZGVkIGFib3ZlLiBJdCBtdXN0IGJlIGEgcHVyZWx5IGludGVybmFsIGZ1bmN0aW9uLgorICAg
ICAgICAgICAgSlNXZWJBc3NlbWJseUNhbGxlZSogd2FzbUNhbGxlZSA9IG1vZHVsZS0+Y2FsbGVl
RnJvbUZ1bmN0aW9uSW5kZXhTcGFjZShzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSk7CisgICAgICAg
ICAgICBXZWJBc3NlbWJseUZ1bmN0aW9uKiBmdW5jdGlvbiA9IFdlYkFzc2VtYmx5RnVuY3Rpb246
OmNyZWF0ZSh2bSwgZ2xvYmFsT2JqZWN0LCBzaWduYXR1cmUtPmFyZ3VtZW50cy5zaXplKCksICJz
dGFydCIsIGluc3RhbmNlLCB3YXNtQ2FsbGVlLCBzaWduYXR1cmUpOworICAgICAgICAgICAgbV9z
dGFydEZ1bmN0aW9uLnNldCh2bSwgdGhpcywgZnVuY3Rpb24pOworICAgICAgICB9CisgICAgfQor
CiAgICAgUkVMRUFTRV9BU1NFUlQoIW1faW5zdGFuY2UpOwogICAgIG1faW5zdGFuY2Uuc2V0KHZt
LCB0aGlzLCBpbnN0YW5jZSk7CiAgICAgbV9tb2R1bGVFbnZpcm9ubWVudC5zZXQodm0sIHRoaXMs
IG1vZHVsZUVudmlyb25tZW50KTsKQEAgLTE2NCwxMCArMTg3LDE0IEBAIHZvaWQgV2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBzdGF0ZSwgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBpbnN0CiAKIEpTVmFsdWUgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKEV4
ZWNTdGF0ZSogc3RhdGUpCiB7Ci0gICAgLy8gRklYTUUgdGhpcyBzaG91bGQgY2FsbCB0aGUgbW9k
dWxlJ3MgYHN0YXJ0YCBmdW5jdGlvbiwgaWYgYW55LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTY1MTUwCi0gICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2Vt
Ymx5L2Rlc2lnbi9ibG9iL21hc3Rlci9Nb2R1bGVzLm1kI21vZHVsZS1zdGFydC1mdW5jdGlvbgot
ICAgIC8vIFRoZSBzdGFydCBmdW5jdGlvbiBtdXN0IG5vdCB0YWtlIGFueSBhcmd1bWVudHMgb3Ig
cmV0dXJuIGFueXRoaW5nCi0gICAgVU5VU0VEX1BBUkFNKHN0YXRlKTsKKyAgICBpZiAoV2ViQXNz
ZW1ibHlGdW5jdGlvbiogc3RhcnRGdW5jdGlvbiA9IG1fc3RhcnRGdW5jdGlvbi5nZXQoKSkgewor
ICAgICAgICBWTSYgdm0gPSBzdGF0ZS0+dm0oKTsKKyAgICAgICAgYXV0byBzY29wZSA9IERFQ0xB
UkVfVEhST1dfU0NPUEUodm0pOworICAgICAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFt
ZTsKKyAgICAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChudWxscHRyLCBzdGFydEZ1bmN0aW9uLCBK
U1ZhbHVlKCksIDEsIG51bGxwdHIpOworICAgICAgICBzdGFydEZ1bmN0aW9uLT5jYWxsKHZtLCAm
cHJvdG9DYWxsRnJhbWUpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0p
OworICAgIH0KICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKaW5k
ZXggYTAyZjllZC4uNGU3MGU3OSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCkBAIC0zMyw2ICszMyw3IEBACiBu
YW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNXZWJBc3NlbWJseUluc3RhbmNlOworY2xhc3MgV2Vi
QXNzZW1ibHlGdW5jdGlvbjsKIAogLy8gQmFzZWQgb24gdGhlIFdlYkFzc2VtYmx5Lkluc3RhbmNl
IHNwZWNpZmljYXRpb24KIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9XZWJBc3NlbWJseS9kZXNpZ24v
YmxvYi9tYXN0ZXIvSlMubWQjd2ViYXNzZW1ibHlpbnN0YW5jZS1jb25zdHJ1Y3RvcgpAQCAtNTgs
NiArNTksNyBAQCBwcml2YXRlOgogICAgIHN0YXRpYyB2b2lkIHZpc2l0Q2hpbGRyZW4oSlNDZWxs
KiwgU2xvdFZpc2l0b3ImKTsKIAogICAgIFdyaXRlQmFycmllcjxKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U+IG1faW5zdGFuY2U7CisgICAgV3JpdGVCYXJyaWVyPFdlYkFzc2VtYmx5RnVuY3Rpb24+IG1f
c3RhcnRGdW5jdGlvbjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIEpTQwotLSAKMi4xMC4xCgo=
</data>
<flag name="review"
          id="319110"
          type_id="1"
          status="+"
          setter="saam"
    />
    <flag name="commit-queue"
          id="319111"
          type_id="3"
          status="-"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296705</attachid>
            <date>2016-12-09 14:48:30 -0800</date>
            <delta_ts>2016-12-09 14:58:08 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-start.patch</filename>
            <type>text/plain</type>
            <size>20587</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBmNGY5MmJmZDY0Yzc0ZTU0YTQ3ZWQ1MGJmOTFiMGE2NzFlZGNlNDBhIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDggRGVjIDIwMTYgMjI6MTI6MDggLTA4MDAKU3ViamVjdDogW1BBVENIXSBzdGFydAoK
LS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IDEzICsrKysrKwogSlNUZXN0cy93YXNtL0J1aWxkZXIuanMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAyOSArKysrKysrKysrKy0KIEpTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5
QmluYXJ5LmpzICAgICAgICAgIHwgIDQgKy0KIEpTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9TdGFy
dC5qcyAgICAgICAgICAgICAgICAgIHwgMzUgKysrKysrKysrKysrKysrCiBKU1Rlc3RzL3dhc20v
c2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMgICAgICAgICB8IDUxICsrKysrKysrKysrKysr
KysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgIHwgMjQgKysrKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1h
dC5oICAgICAgICAgICAgfCAgMiArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9k
dWxlUGFyc2VyLmNwcCAgICB8IDE2ICsrKysrKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNtL2pz
L1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIHwgMTUgKysrKy0tLQogLi4uL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5oICAgfCAgMiArCiAuLi4vd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVJlY29yZC5jcHAgICAgICAgICAgICB8IDM1ICsrKysrKysrKysrKystLQog
Li4uL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuaCAgICAgICAgICAgICAgfCAgMiAr
CiAxMiBmaWxlcyBjaGFuZ2VkLCAyMTQgaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCiBj
cmVhdGUgbW9kZSAxMDA2NDQgSlNUZXN0cy93YXNtL2pzLWFwaS90ZXN0X1N0YXJ0LmpzCgpkaWZm
IC0tZ2l0IGEvSlNUZXN0cy9DaGFuZ2VMb2cgYi9KU1Rlc3RzL0NoYW5nZUxvZwppbmRleCAyNjYy
MzAwLi4wYThkYmRiIDEwMDY0NAotLS0gYS9KU1Rlc3RzL0NoYW5nZUxvZworKysgYi9KU1Rlc3Rz
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE2LTEyLTA5ICBKRiBCYXN0aWVuICA8amZi
YXN0aWVuQGFwcGxlLmNvbT4KKworICAgICAgICBXZWJBc3NlbWJseSBKUyBBUEk6IGltcGxlbWVu
dCBzdGFydCBmdW5jdGlvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTY1MTUwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAg
ICAgICAgKiB3YXNtL0J1aWxkZXIuanM6IGFsbG93IGJ1aWxkaW5nIGEgLlN0YXJ0KCkKKyAgICAg
ICAgKiB3YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanM6CisgICAgICAgICogd2FzbS9q
cy1hcGkvdGVzdF9TdGFydC5qczogQWRkZWQuCisgICAgICAgIChjb25zdC5lbWl0dGVycy5TdGFy
dCk6IHNlcmlhbGl6ZSBhIHN0YXJ0IHNlY3Rpb24KKyAgICAgICAgKiB3YXNtL3NlbGYtdGVzdC90
ZXN0X0J1aWxkZXJKU09OLmpzOiB2YWxpZGF0ZSB0aGUgc3RhcnQgc2VjdGlvbidzIGNvbnRlbnQK
KwogMjAxNi0xMi0wOCAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CiAKICAgICAg
ICAgV2ViQXNzZW1ibHk6IEpTQzo6bGluayogc2hvdWxkbid0IG5lZWQgYSBDb2RlQmxvY2sKZGlm
ZiAtLWdpdCBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzIGIvSlNUZXN0cy93YXNtL0J1aWxkZXIu
anMKaW5kZXggY2VjYjJjNy4uODdhMDllZCAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL0J1aWxk
ZXIuanMKKysrIGIvSlNUZXN0cy93YXNtL0J1aWxkZXIuanMKQEAgLTQyNiw4ICs0MjYsMTYgQEAg
ZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRlciB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAK
ICAgICAgICAgICAgIGNhc2UgIlN0YXJ0IjoKLSAgICAgICAgICAgICAgICAvLyBGSVhNRSBpbXBs
ZW1lbnQgc3RhcnQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTcw
OQotICAgICAgICAgICAgICAgIHRoaXNbc2VjdGlvbl0gPSAoKSA9PiB7IHRocm93IG5ldyBFcnJv
cihgVW5pbXBsZW1lbnRlZDogc2VjdGlvbiB0eXBlICIke3NlY3Rpb259ImApOyB9OworICAgICAg
ICAgICAgICAgIHRoaXNbc2VjdGlvbl0gPSBmdW5jdGlvbihmdW5jdGlvbkluZGV4T3JOYW1lKSB7
CisgICAgICAgICAgICAgICAgICAgIGNvbnN0IHMgPSB0aGlzLl9hZGRTZWN0aW9uKHNlY3Rpb24p
OworICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydEJ1aWxkZXIgPSB7CisgICAgICAgICAg
ICAgICAgICAgICAgICBFbmQ6ICgpID0+IHRoaXMsCisgICAgICAgICAgICAgICAgICAgIH07Cisg
ICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YoZnVuY3Rpb25JbmRleE9yTmFtZSkgIT09ICJu
dW1iZXIiICYmIHR5cGVvZihmdW5jdGlvbkluZGV4T3JOYW1lKSAhPT0gInN0cmluZyIpCisgICAg
ICAgICAgICAgICAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IoYFN0YXJ0IHNlY3Rpb24ncyBmdW5j
dGlvbiBpbmRleCAgbXVzdCBlaXRoZXIgYmUgYSBudW1iZXIgb3IgYSBzdHJpbmdgKTsKKyAgICAg
ICAgICAgICAgICAgICAgcy5kYXRhLnB1c2goZnVuY3Rpb25JbmRleE9yTmFtZSk7CisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBzdGFydEJ1aWxkZXI7CisgICAgICAgICAgICAgICAgfTsKICAg
ICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgY2FzZSAiRWxlbWVudCI6CkBAIC00
NDUsNiArNDUzLDcgQEAgZXhwb3J0IGRlZmF1bHQgY2xhc3MgQnVpbGRlciB7CiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZVNlY3Rpb24gPSBidWlsZGVyLl9nZXRTZWN0aW9u
KCJUeXBlIik7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgaW1wb3J0U2VjdGlv
biA9IGJ1aWxkZXIuX2dldFNlY3Rpb24oIkltcG9ydCIpOwogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IGV4cG9ydFNlY3Rpb24gPSBidWlsZGVyLl9nZXRTZWN0aW9uKCJFeHBvcnQi
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGFydFNlY3Rpb24gPSBidWls
ZGVyLl9nZXRTZWN0aW9uKCJTdGFydCIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGNvZGVTZWN0aW9uID0gczsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoZXhw
b3J0U2VjdGlvbikgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgKGNvbnN0
IGUgb2YgZXhwb3J0U2VjdGlvbi5kYXRhKSB7CkBAIC00NzEsNiArNDgwLDIyIEBAIGV4cG9ydCBk
ZWZhdWx0IGNsYXNzIEJ1aWxkZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdGFydFNlY3Rp
b24pIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnQgPSBzdGFy
dFNlY3Rpb24uZGF0YVswXTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV0IG1h
cHBlZCA9IGJ1aWxkZXIuX2dldEZ1bmN0aW9uRnJvbUluZGV4U3BhY2Uoc3RhcnQpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIWJ1aWxkZXIuX2NoZWNrZWQpIHsKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2YobWFwcGVkKSA9PT0gInVu
ZGVmaW5lZCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFwcGVk
ID0gc3RhcnQ7IC8vIEluIHVuY2hlY2tlZCBtb2RlLCBzaW1wbHkgdXNlIHdoYXQgd2FzIHByb3Zp
ZGVkIGlmIGl0J3Mgbm9uc2Vuc2ljYWwuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBhc3NlcnQuaXNBKHN0YXJ0LCAibnVtYmVyIik7IC8vIEl0IGNhbid0IGJlIHRvbyBub25z
ZW5zaWNhbCwgb3RoZXJ3aXNlIHdlIGNhbid0IGNyZWF0ZSBhIGJpbmFyeS4KKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0U2VjdGlvbi5kYXRhWzBdID0gc3RhcnQ7Cisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKG1hcHBlZCkgPT09ICJ1bmRlZmluZWQiKQor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihg
U3RhcnQgc2VjdGlvbiByZWZlcnMgdG8gbm9uLWV4aXN0YW50IGZ1bmN0aW9uICcke3N0YXJ0fSdg
KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICh0eXBlb2Yoc3RhcnQp
ID09PSAic3RyaW5nIiB8fCB0eXBlb2Yoc3RhcnQpID09PSAib2JqZWN0IikKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFNlY3Rpb24uZGF0YVswXSA9IG1hcHBl
ZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FIGluIGNoZWNr
ZWQgbW9kZSwgdGVzdCB0aGF0IHRoZSB0eXBlIGlzIGFjY2VwdGFibGUgZm9yIHN0YXJ0IGZ1bmN0
aW9uLiBXZSBwcm9iYWJseSB3YW50IF9yZWdpc3RlckZ1bmN0aW9uVG9JbmRleFNwYWNlIHRvIGFs
c28gcmVnaXN0ZXIgdHlwZXMgcGVyIGluZGV4LiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MTY1NjU4CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
cmV0dXJuIGJ1aWxkZXI7CiAgICAgICAgICAgICAgICAgICAgICAgICB9LAogCmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qcyBiL0pTVGVzdHMvd2Fz
bS9CdWlsZGVyX1dlYkFzc2VtYmx5QmluYXJ5LmpzCmluZGV4IDQ5NDY0MWEuLmJhNDI1NmIgMTAw
NjQ0Ci0tLSBhL0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5QmluYXJ5LmpzCisrKyBi
L0pTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5QmluYXJ5LmpzCkBAIC05NSw3ICs5NSw5
IEBAIGNvbnN0IGVtaXR0ZXJzID0gewogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfSwK
LSAgICBTdGFydDogKHNlY3Rpb24sIGJpbikgPT4geyB0aHJvdyBuZXcgRXJyb3IoYE5vdCB5ZXQg
aW1wbGVtZW50ZWRgKTsgfSwKKyAgICBTdGFydDogKHNlY3Rpb24sIGJpbikgPT4geworICAgICAg
ICBwdXQoYmluLCAidmFydWludDMyIiwgc2VjdGlvbi5kYXRhWzBdKTsKKyAgICB9LAogICAgIEVs
ZW1lbnQ6IChzZWN0aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9yKGBOb3QgeWV0IGltcGxl
bWVudGVkYCk7IH0sCiAKICAgICBDb2RlOiAoc2VjdGlvbiwgYmluKSA9PiB7CmRpZmYgLS1naXQg
YS9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfU3RhcnQuanMgYi9KU1Rlc3RzL3dhc20vanMtYXBp
L3Rlc3RfU3RhcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVkNjE5
ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9TdGFydC5qcwpA
QCAtMCwwICsxLDM1IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAnLi4vYXNzZXJ0LmpzJzsK
K2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCisoZnVuY3Rpb24gU3RhcnRO
YW1lZEZ1bmN0aW9uKCkgeworICAgIGNvbnN0IGIgPSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAg
LlR5cGUoKS5FbmQoKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAgICAgIC5GdW5jdGlvbigi
aW1wIiwgImZ1bmMiLCB7IHBhcmFtczogWyJpMzIiXSB9KQorICAgICAgICAuRW5kKCkKKyAgICAg
ICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJmb28iKS5FbmQoKQorICAgICAg
ICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZvbyIsIHsgcGFyYW1zOiBbXSB9KQor
ICAgICAgICAgICAgICAgIC5JMzJDb25zdCg0MikKKyAgICAgICAgICAgICAgICAuQ2FsbCgwKSAv
LyBDYWxscyBmdW5jKDQyKS4KKyAgICAgICAgICAgIC5FbmQoKQorICAgICAgICAuRW5kKCk7Cisg
ICAgY29uc3QgYmluID0gYi5XZWJBc3NlbWJseSgpLmdldCgpOworICAgIGNvbnN0IG1vZHVsZSA9
IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICBsZXQgdmFsdWUgPSAwOworICAgIGNv
bnN0IHNldHRlciA9IHYgPT4gdmFsdWUgPSB2OworICAgIGNvbnN0IGluc3RhbmNlID0gbmV3IFdl
YkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzogc2V0dGVyIH0gfSk7Cisg
ICAgYXNzZXJ0LmVxKHZhbHVlLCA0Mik7Cit9KSgpOworCisoZnVuY3Rpb24gSW52YWxpZFN0YXJ0
RnVuY3Rpb25JbmRleCgpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAg
IC5zZXRDaGVja2VkKGZhbHNlKQorICAgICAgICAuVHlwZSgpLkVuZCgpCisgICAgICAgIC5GdW5j
dGlvbigpLkVuZCgpCisgICAgICAgIC5TdGFydCgwKS5FbmQoKSAvLyBJbnZhbGlkIGluZGV4Lgor
ICAgICAgICAuQ29kZSgpLkVuZCgpOworICAgIGNvbnN0IGJpbiA9IGIuV2ViQXNzZW1ibHkoKS5n
ZXQoKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmlu
KSwgRXJyb3IsIGBjb3VsZG4ndCBwYXJzZSBzZWN0aW9uIFN0YXJ0OiBTdGFydCBmdW5jdGlvbiBk
ZWNsYXJhdGlvbiAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1vZHVsZShiaW4pJylgKTsK
K30pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpT
T04uanMgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMKaW5kZXgg
NzMxZDI2Mi4uZTZjMjkzYyAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNtL3NlbGYtdGVzdC90ZXN0
X0J1aWxkZXJKU09OLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRlc3QvdGVzdF9CdWlsZGVy
SlNPTi5qcwpAQCAtMjQxLDYgKzI0MSw1NyBAQCBjb25zdCBhc3NlcnRPcFRocm93cyA9IChvcEZu
LCBtZXNzYWdlKSA9PiB7CiAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBlLkZ1bmN0aW9uKCJmb28i
LCAwLCB7IHBhcmFtczogWyJpMzIiXSB9KSwgRXJyb3IsIGBOb3QgdGhlIHNhbWU6ICIxIiBhbmQg
IjAiOiBSZS1leHBvcnRpbmcgaW1wb3J0ICJiYXIiIGFzICJmb28iIGhhcyBtaXNtYXRjaGluZyB0
eXBlYCk7CiB9KSgpOwogCisoZnVuY3Rpb24gU3RhcnRJbnZhbGlkTnVtYmVyZWRGdW5jdGlvbigp
IHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkK
KyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KDApLkVuZCgpCisgICAg
YXNzZXJ0LnRocm93cygoKSA9PiBiLkNvZGUoKS5FbmQoKSwgRXJyb3IsIGBTdGFydCBzZWN0aW9u
IHJlZmVycyB0byBub24tZXhpc3RhbnQgZnVuY3Rpb24gJzAnYCk7Cit9KSgpOworCisoZnVuY3Rp
b24gU3RhcnRJbnZhbGlkTmFtZWRGdW5jdGlvbigpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWls
ZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkK
KyAgICAgICAgLlN0YXJ0KCJmb28iKS5FbmQoKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IGIu
Q29kZSgpLkVuZCgpLCBFcnJvciwgYFN0YXJ0IHNlY3Rpb24gcmVmZXJzIHRvIG5vbi1leGlzdGFu
dCBmdW5jdGlvbiAnZm9vJ2ApOworfSkoKTsKKworKGZ1bmN0aW9uIFN0YXJ0TmFtZWRGdW5jdGlv
bigpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5k
KCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJmb28iKS5FbmQo
KQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZvbyIsIHsgcGFyYW1z
OiBbXSB9KS5FbmQoKQorICAgICAgICAuRW5kKCk7CisgICAgY29uc3QgaiA9IEpTT04ucGFyc2Uo
Yi5qc29uKCkpOworICAgIGFzc2VydC5lcShqLnNlY3Rpb24ubGVuZ3RoLCA0KTsKKyAgICBhc3Nl
cnQuZXEoai5zZWN0aW9uWzJdLm5hbWUsICJTdGFydCIpOworICAgIGFzc2VydC5lcShqLnNlY3Rp
b25bMl0uZGF0YS5sZW5ndGgsIDEpOworICAgIGFzc2VydC5lcShqLnNlY3Rpb25bMl0uZGF0YVsw
XSwgMCk7Cit9KSgpOworCisvKiBGSVhNRSBpbXBsZW1lbnQgY2hlY2tpbmcgb2Ygc2lnbmF0dXJl
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU2NTgKKyhmdW5jdGlv
biBTdGFydEludmFsaWRUeXBlQXJnKCkgeworICAgIGNvbnN0IGIgPSAobmV3IEJ1aWxkZXIoKSkK
KyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24oKS5FbmQoKQorICAgICAg
ICAuU3RhcnQoImZvbyIpLkVuZCgpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBiLkNvZGUoKS5G
dW5jdGlvbigiZm9vIiwgeyBwYXJhbXM6IFsiaTMyIl0gfSkuRW5kKCksIEVycm9yLCBgPz8/YCk7
Cit9KSgpOworCisoZnVuY3Rpb24gU3RhcnRJbnZhbGlkVHlwZVJldHVybigpIHsKKyAgICBjb25z
dCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1
bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJmb28iKS5FbmQoKQorICAgIGFzc2VydC50
aHJvd3MoKCkgPT4gYi5Db2RlKCkuRnVuY3Rpb24oImZvbyIsIHsgcGFyYW1zOiBbXSwgcmV0OiAi
aTMyIiB9KS5JMzJDb25zdCg0MikuUmV0KCkuRW5kKCksIEVycm9yLCBgPz8/YCk7Cit9KSgpOwor
Ki8KKworLy8gRklYTUUgdGVzdCBzdGFydCBvZiBpbXBvcnQgb3IgdGFibGUuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU2NTgKKwogKGZ1bmN0aW9uIEVtcHR5Q29k
ZVNlY3Rpb24oKSB7CiAgICAgY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7CiAgICAgYi5Db2RlKCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBiZjQwNjU3Li42MDUwMDYyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxNi0xMi0wOSAgSkYgQmFzdGllbiAg
PGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBs
ZW1lbnQgc3RhcnQgZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE2NTE1MAorCisgICAgICAgIFJldmlld2VkIGJ5IFNhYW0gQmFyYXRpLgor
CisgICAgICAgICogd2FzbS9XYXNtRm9ybWF0Lmg6IHBhc3MgdGhlIHN0YXJ0IGZ1bmN0aW9uIGFy
b3VuZAorICAgICAgICAqIHdhc20vV2FzbU1vZHVsZVBhcnNlci5jcHA6CisgICAgICAgIChKU0M6
Oldhc206Ok1vZHVsZVBhcnNlcjo6cGFyc2VUYWJsZSk6IG1hcmsgdW5yZWFjaGFibGUgY29kZQor
ICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlR2xvYmFsKTogbWFyayB1bnJl
YWNoYWJsZSBjb2RlCisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZVBhcnNlcjo6cGFyc2VTdGFy
dCk6IG1hcmsgdW5yZWFjaGFibGUgY29kZQorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJz
ZXI6OnBhcnNlRWxlbWVudCk6IG1hcmsgdW5yZWFjaGFibGUgY29kZQorICAgICAgICAoSlNDOjpX
YXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlRGF0YSk6IG1hcmsgdW5yZWFjaGFibGUgY29kZQorICAg
ICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6CisgICAgICAgIChKU0M6OmNh
bGxXZWJBc3NlbWJseUZ1bmN0aW9uKTogTkZDOiBjYWxsIHRoZSBuZXcgZnVuY3Rpb24gYmVsb3cK
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6Y2FsbCk6IHNlcGFyYXRlIHRoaXMg
b3V0IHNvIHRoYXQgdGhlIHN0YXJ0IGZ1bmN0aW9uIGNhbiB1c2UgaXQKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaDoKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6
OnZpc2l0Q2hpbGRyZW4pOiB2aXNpdCB0aGUgc3RhcnQgZnVuY3Rpb24KKyAgICAgICAgKEpTQzo6
V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmspOiBoYW5kbGUgc3RhcnQgZnVuY3Rpb24KKyAg
ICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1YXRlKTogY2FsbCB0aGUg
c3RhcnQgZnVuY3Rpb24sIGlmIHByZXNlbnQKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmg6CisKIDIwMTYtMTItMDkgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJv
QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBTb21lIHJlc291cmNlcyBmZXRj
aGVkIHZpYSBGZXRjaCBBUEkgZG8gbm90IGhhdmUgZGF0YQpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vV2FzbUZvcm1hdC5oCmluZGV4IDQzYjExOWEuLjJjOTJmMjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTMzLDYgKzMzLDcgQEAKICNpbmNsdWRlICJJZGVu
dGlmaWVyLmgiCiAjaW5jbHVkZSAiTWFjcm9Bc3NlbWJsZXJDb2RlUmVmLmgiCiAjaW5jbHVkZSAi
V2FzbU9wcy5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMjQsNiArMTI1LDcgQEAgc3RydWN0IE1vZHVs
ZUluZm9ybWF0aW9uIHsKICAgICBWZWN0b3I8U2lnbmF0dXJlKj4gaW50ZXJuYWxGdW5jdGlvblNp
Z25hdHVyZXM7CiAgICAgc3RkOjp1bmlxdWVfcHRyPE1lbW9yeT4gbWVtb3J5OwogICAgIFZlY3Rv
cjxFeHBvcnQ+IGV4cG9ydHM7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc3RhcnRGdW5j
dGlvbkluZGV4U3BhY2U7CiAKICAgICB+TW9kdWxlSW5mb3JtYXRpb24oKTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwCmluZGV4IGFmMTMz
YTQuLmFlZjFhYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21N
b2R1bGVQYXJzZXIuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1
bGVQYXJzZXIuY3BwCkBAIC0zMDEsNyArMzAxLDggQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNl
RnVuY3Rpb24oKQogCiBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VUYWJsZSgpCiB7Ci0gICAgLy8g
RklYTUUKKyAgICAvLyBGSVhNRSBpbXBsZW1lbnQgdGFibGUgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE2NDEzNQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTM0MCw2ICszNDEsNyBAQCBib29sIE1vZHVs
ZVBhcnNlcjo6cGFyc2VNZW1vcnkoKQogYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlR2xvYmFsKCkK
IHsKICAgICAvLyBGSVhNRSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTY0MTMzCisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gdHJ1
ZTsKIH0KIApAQCAtMzkwLDEzICszOTIsMjIgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlRXhw
b3J0KCkKIAogYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlU3RhcnQoKQogewotICAgIC8vIEZJWE1F
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MDkKKyAgICB1aW50
MzJfdCBzdGFydEZ1bmN0aW9uSW5kZXg7CisgICAgaWYgKCFwYXJzZVZhclVJbnQzMihzdGFydEZ1
bmN0aW9uSW5kZXgpCisgICAgICAgIHx8IHN0YXJ0RnVuY3Rpb25JbmRleCA+PSBtX2Z1bmN0aW9u
SW5kZXhTcGFjZS5zaXplKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBTaWduYXR1cmUq
IHNpZ25hdHVyZSA9IG1fZnVuY3Rpb25JbmRleFNwYWNlW3N0YXJ0RnVuY3Rpb25JbmRleF0uc2ln
bmF0dXJlOworICAgIGlmIChzaWduYXR1cmUtPmFyZ3VtZW50cy5zaXplKCkgIT0gMAorICAgICAg
ICB8fCBzaWduYXR1cmUtPnJldHVyblR5cGUgIT0gVm9pZCkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OworICAgIG1fbW9kdWxlLT5zdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSA9IHN0YXJ0RnVuY3Rpb25J
bmRleDsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlRWxl
bWVudCgpCiB7CiAgICAgLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2MTcwOQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0
dXJuIHRydWU7CiB9CiAKQEAgLTQyNSw2ICs0MzYsNyBAQCBib29sIE1vZHVsZVBhcnNlcjo6cGFy
c2VDb2RlKCkKIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZURhdGEoKQogewogICAgIC8vIEZJWE1F
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjE3MDkKKyAgICBSRUxF
QVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNw
cCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3Bw
CmluZGV4IGRhNDU0YTEuLjk5MGE2N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCkBAIC05MCwyMCArOTAsMjUgQEAg
c3RhdGljIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgY2FsbFdlYkFzc2VtYmx5RnVuY3Rp
b24oRXhlY1N0YXRlKiBleGVjKQogICAgICAgICBhcmdDb3VudCA9IGJveGVkQXJncy5zaXplKCk7
CiAgICAgfQogCi0gICAgLy8gTm90ZTogd2Ugc3BlY2lmaWNhbGx5IHVzZSB0aGUgV2ViQXNzZWJs
eUZ1bmN0aW9uIGFzIHRoZSBjYWxsZWUgdG8gYmVnaW4gd2l0aCBpbiB0aGUgUHJvdG9DYWxsRnJh
bWUuCisgICAgLy8gTm90ZTogd2Ugc3BlY2lmaWNhbGx5IHVzZSB0aGUgV2ViQXNzZW1ibHlGdW5j
dGlvbiBhcyB0aGUgY2FsbGVlIHRvIGJlZ2luIHdpdGggaW4gdGhlIFByb3RvQ2FsbEZyYW1lLgog
ICAgIC8vIFRoZSByZWFzb24gZm9yIHRoaXMgaXMgdGhhdCBjYWxsaW5nIGludG8gdGhlIGxsaW50
IG1heSBzdGFjayBvdmVyZmxvdywgYW5kIHRoZSBzdGFjayBvdmVyZmxvdwogICAgIC8vIGhhbmRs
ZXIgbWlnaHQgcmVhZCB0aGUgZ2xvYmFsIG9iamVjdCBmcm9tIHRoZSBjYWxsZWUuIFRoZSBKU1dl
YkFzc2VtYmx5Q2FsbGVlIGRvZXNuJ3QgaGF2ZSBhCiAgICAgLy8gZ2xvYmFsIG9iamVjdCwgYnV0
IHRoZSBXZWJBc3NlbWJseUZ1bmN0aW9uIGRvZXMuCiAgICAgUHJvdG9DYWxsRnJhbWUgcHJvdG9D
YWxsRnJhbWU7CiAgICAgcHJvdG9DYWxsRnJhbWUuaW5pdChudWxscHRyLCB3YXNtRnVuY3Rpb24s
IGZpcnN0QXJndW1lbnQsIGFyZ0NvdW50LCByZW1haW5pbmdBcmdzKTsKLSAgICAKKworICAgIHJl
dHVybiB3YXNtRnVuY3Rpb24tPmNhbGwodm0sICZwcm90b0NhbGxGcmFtZSk7Cit9CisKK0VuY29k
ZWRKU1ZhbHVlIFdlYkFzc2VtYmx5RnVuY3Rpb246OmNhbGwoVk0mIHZtLCBQcm90b0NhbGxGcmFt
ZSogcHJvdG9DYWxsRnJhbWUpCit7CiAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBwcmV2SlNX
ZWJBc3NlbWJseUluc3RhbmNlID0gdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlOwotICAgIHZt
LnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKTsKLSAg
ICBFbmNvZGVkSlNWYWx1ZSByYXdSZXN1bHQgPSB2bUVudHJ5VG9XYXNtKHdhc21GdW5jdGlvbi0+
d2ViQXNzZW1ibHlDYWxsZWUoKS0+anNUb1dhc21FbnRyeVBvaW50KCksICZ2bSwgJnByb3RvQ2Fs
bEZyYW1lKTsKKyAgICB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBpbnN0YW5jZSgpOwor
ICAgIEVuY29kZWRKU1ZhbHVlIHJhd1Jlc3VsdCA9IHZtRW50cnlUb1dhc20od2ViQXNzZW1ibHlD
YWxsZWUoKS0+anNUb1dhc21FbnRyeVBvaW50KCksICZ2bSwgcHJvdG9DYWxsRnJhbWUpOwogICAg
IHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHByZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2U7
CiAKICAgICAvLyBGSVhNRSBpcyB0aGlzIGNvcnJlY3Q/IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjQ4NzYKLSAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+cmV0dXJuVHlw
ZSkgeworICAgIHN3aXRjaCAoc2lnbmF0dXJlKCktPnJldHVyblR5cGUpIHsKICAgICBjYXNlIFdh
c206OlZvaWQ6CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgY2FzZSBXYXNtOjpJMzI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmgKaW5kZXggN2NjNTYyYy4uMmNiZjg1MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24u
aApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CiBjbGFzcyBKU1dlYkFzc2VtYmx5Q2FsbGVlOworc3RydWN0IFByb3RvQ2FsbEZyYW1lOwog
Y2xhc3MgV2ViQXNzZW1ibHlJbnN0YW5jZTsKIAogbmFtZXNwYWNlIEIzIHsKQEAgLTYyLDYgKzYz
LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9zaWduYXR1cmUpOwogICAgICAgICByZXR1
cm4gbV9zaWduYXR1cmU7CiAgICAgfQorICAgIEVuY29kZWRKU1ZhbHVlIGNhbGwoVk0mLCBQcm90
b0NhbGxGcmFtZSopOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDUxYzlkNzku
LjY2NDY4YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTM0LDggKzM0LDEwIEBACiAjaW5jbHVk
ZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5j
ZS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJQcm90b0Nh
bGxGcmFtZS5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJs
eUZ1bmN0aW9uLmgiCisjaW5jbHVkZSA8bGltaXRzPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
OTYsNiArOTgsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqPihj
ZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luc3RhbmNlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9zdGFydEZ1bmN0aW9uKTsKIH0KIAogdm9pZCBXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIHN0YXRlLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UqIGluc3RhbmNlKQpAQCAtMTA3LDYgKzExMCwxMCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogc3RhdGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5z
dAogCiAgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0gaW5zdGFuY2UtPm1vZHVsZSgp
OwogICAgIGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbiA9
IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKTsKKworICAgIGJvb2wgaGFzU3RhcnQgPSAhIW1v
ZHVsZUluZm9ybWF0aW9uLnN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlOworICAgIGF1dG8gc3RhcnRG
dW5jdGlvbkluZGV4U3BhY2UgPSBtb2R1bGVJbmZvcm1hdGlvbi5zdGFydEZ1bmN0aW9uSW5kZXhT
cGFjZS52YWx1ZV9vcigwKTsKKwogICAgIFN5bWJvbFRhYmxlKiBleHBvcnRTeW1ib2xUYWJsZSA9
IG1vZHVsZS0+ZXhwb3J0U3ltYm9sVGFibGUoKTsKICAgICB1bnNpZ25lZCBpbXBvcnRDb3VudCA9
IG1vZHVsZS0+aW1wb3J0Q291bnQoKTsKIApAQCAtMTMzLDYgKzE0MCw4IEBAIHZvaWQgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBzdGF0ZSwgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiBpbnN0CiAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1v
ZHVsZS0+c2lnbmF0dXJlRm9yRnVuY3Rpb25JbmRleFNwYWNlKGV4cC5mdW5jdGlvbkluZGV4KTsK
ICAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS0+YXJndW1lbnRzLnNp
emUoKSwgZXhwLmZpZWxkLnN0cmluZygpLCBpbnN0YW5jZSwgd2FzbUNhbGxlZSwgc2lnbmF0dXJl
KTsKICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBmdW5jdGlvbjsKKyAgICAgICAgICAgIGlm
IChoYXNTdGFydCAmJiBzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSA9PSBleHAuZnVuY3Rpb25JbmRl
eCkKKyAgICAgICAgICAgICAgICBtX3N0YXJ0RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBmdW5jdGlv
bik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFdhc206OkV4
dGVybmFsOjpUYWJsZTogewpAQCAtMTU3LDYgKzE2NiwyMCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogc3RhdGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSog
aW5zdAogICAgICAgICBSRUxFQVNFX0FTU0VSVChwdXRSZXN1bHQpOwogICAgIH0KIAorICAgIGlm
IChoYXNTdGFydCkgeworICAgICAgICBXYXNtOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1vZHVs
ZS0+c2lnbmF0dXJlRm9yRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNl
KTsKKyAgICAgICAgLy8gVGhlIHN0YXJ0IGZ1bmN0aW9uIG11c3Qgbm90IHRha2UgYW55IGFyZ3Vt
ZW50cyBvciByZXR1cm4gYW55dGhpbmcuIFRoaXMgaXMgZW5mb3JjZWQgYnkgdGhlIHBhcnNlci4K
KyAgICAgICAgQVNTRVJUKCFzaWduYXR1cmUtPmFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBB
U1NFUlQoc2lnbmF0dXJlLT5yZXR1cm5UeXBlID09IFdhc206OlZvaWQpOworICAgICAgICAvLyBG
SVhNRSBjYW4gc3RhcnQgY2FsbCBpbXBvcnRzIC8gdGFibGVzPyBUaGlzIGFzc3VtZXMgbm90LiBo
dHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2lzc3Vlcy84OTYKKyAgICAgICAg
aWYgKCFtX3N0YXJ0RnVuY3Rpb24uZ2V0KCkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzdGFydCBm
dW5jdGlvbiB3YXNuJ3QgYWRkZWQgYWJvdmUuIEl0IG11c3QgYmUgYSBwdXJlbHkgaW50ZXJuYWwg
ZnVuY3Rpb24uCisgICAgICAgICAgICBKU1dlYkFzc2VtYmx5Q2FsbGVlKiB3YXNtQ2FsbGVlID0g
bW9kdWxlLT5jYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rpb25JbmRleFNw
YWNlKTsKKyAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNz
ZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS0+YXJndW1l
bnRzLnNpemUoKSwgInN0YXJ0IiwgaW5zdGFuY2UsIHdhc21DYWxsZWUsIHNpZ25hdHVyZSk7Cisg
ICAgICAgICAgICBtX3N0YXJ0RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBmdW5jdGlvbik7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YW5jZSk7CiAgICAgbV9p
bnN0YW5jZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKICAgICBtX21vZHVsZUVudmlyb25tZW50
LnNldCh2bSwgdGhpcywgbW9kdWxlRW52aXJvbm1lbnQpOwpAQCAtMTY0LDEwICsxODcsMTQgQEAg
dm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIHN0YXRlLCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqIGluc3QKIAogSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICAvLyBGSVhNRSB0aGlzIHNob3Vs
ZCBjYWxsIHRoZSBtb2R1bGUncyBgc3RhcnRgIGZ1bmN0aW9uLCBpZiBhbnkuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUxNTAKLSAgICAvLyBodHRwczovL2dpdGh1
Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL01vZHVsZXMubWQjbW9kdWxlLXN0
YXJ0LWZ1bmN0aW9uCi0gICAgLy8gVGhlIHN0YXJ0IGZ1bmN0aW9uIG11c3Qgbm90IHRha2UgYW55
IGFyZ3VtZW50cyBvciByZXR1cm4gYW55dGhpbmcKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIGlmIChXZWJBc3NlbWJseUZ1bmN0aW9uKiBzdGFydEZ1bmN0aW9uID0gbV9zdGFydEZ1bmN0
aW9uLmdldCgpKSB7CisgICAgICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIFByb3RvQ2FsbEZyYW1l
IHByb3RvQ2FsbEZyYW1lOworICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIHN0
YXJ0RnVuY3Rpb24sIEpTVmFsdWUoKSwgMSwgbnVsbHB0cik7CisgICAgICAgIHN0YXJ0RnVuY3Rp
b24tPmNhbGwodm0sICZwcm90b0NhbGxGcmFtZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQuaAppbmRleCBhMDJmOWVkLi40ZTcwZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKQEAgLTMz
LDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U7CitjbGFzcyBXZWJBc3NlbWJseUZ1bmN0aW9uOwogCiAvLyBCYXNlZCBvbiB0aGUgV2ViQXNz
ZW1ibHkuSW5zdGFuY2Ugc3BlY2lmaWNhdGlvbgogLy8gaHR0cHM6Ly9naXRodWIuY29tL1dlYkFz
c2VtYmx5L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZCN3ZWJhc3NlbWJseWluc3RhbmNlLWNvbnN0
cnVjdG9yCkBAIC01OCw2ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZT4gbV9pbnN0YW5jZTsKKyAgICBXcml0ZUJhcnJpZXI8V2ViQXNzZW1i
bHlGdW5jdGlvbj4gbV9zdGFydEZ1bmN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0t
IAoyLjEwLjEKCg==
</data>
<flag name="commit-queue"
          id="319118"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296709</attachid>
            <date>2016-12-09 14:58:08 -0800</date>
            <delta_ts>2016-12-09 15:15:53 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-start.patch</filename>
            <type>text/plain</type>
            <size>21328</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA4ZjM1OTczYmQ2ODliNGMxNTQ2M2IzYjc3OTZhOTNiYmI3ZTM5MGY3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDggRGVjIDIwMTYgMjI6MTI6MDggLTA4MDAKU3ViamVjdDogW1BBVENIXSBzdGFydAoK
LS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IDEzICsrKysrKwogSlNUZXN0cy93YXNtL0J1aWxkZXIuanMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAyOSArKysrKysrKysrKy0KIEpTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5
QmluYXJ5LmpzICAgICAgICAgIHwgIDQgKy0KIEpTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9TdGFy
dC5qcyAgICAgICAgICAgICAgICAgIHwgMzUgKysrKysrKysrKysrKysrCiBKU1Rlc3RzL3dhc20v
c2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMgICAgICAgICB8IDUxICsrKysrKysrKysrKysr
KysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgIHwgMjQgKysrKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1h
dC5oICAgICAgICAgICAgfCAgNCArKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1v
ZHVsZVBhcnNlci5jcHAgICAgfCAxNiArKysrKystCiAuLi4vSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCB8IDI1ICsrKysrKy0tLS0tCiAuLi4vSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmggICB8ICAyICsKIC4uLi93YXNtL2pz
L1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCAgICAgICAgICAgIHwgMzUgKysrKysrKysrKysr
Ky0tCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oICAgICAgICAgICAgICB8
ICAyICsKIDEyIGZpbGVzIGNoYW5nZWQsIDIyMSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMo
LSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfU3RhcnQuanMK
CmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmluZGV4
IDkwN2ExYTQuLjQyNjZkM2UgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBiL0pT
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMTItMDkgIEpGIEJhc3RpZW4g
IDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTogaW1w
bGVtZW50IHN0YXJ0IGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNjUxNTAKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0aS4K
KworICAgICAgICAqIHdhc20vQnVpbGRlci5qczogYWxsb3cgYnVpbGRpbmcgYSAuU3RhcnQoKQor
ICAgICAgICAqIHdhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qczoKKyAgICAgICAgKiB3
YXNtL2pzLWFwaS90ZXN0X1N0YXJ0LmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbnN0LmVtaXR0ZXJz
LlN0YXJ0KTogc2VyaWFsaXplIGEgc3RhcnQgc2VjdGlvbgorICAgICAgICAqIHdhc20vc2VsZi10
ZXN0L3Rlc3RfQnVpbGRlckpTT04uanM6IHZhbGlkYXRlIHRoZSBzdGFydCBzZWN0aW9uJ3MgY29u
dGVudAorCiAyMDE2LTEyLTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTogaW1wbGVtZW50IGltcG9ydGluZyBhbmQgZGVmaW5p
bmcgTWVtb3J5CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcyBiL0pTVGVzdHMv
d2FzbS9CdWlsZGVyLmpzCmluZGV4IDI2ODRlOTMuLmExZjgwYjcgMTAwNjQ0Ci0tLSBhL0pTVGVz
dHMvd2FzbS9CdWlsZGVyLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCkBAIC00Mzcs
OCArNDM3LDE2IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkZXIgewogICAgICAgICAgICAg
ICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlICJTdGFydCI6Ci0gICAgICAgICAgICAgICAg
Ly8gRklYTUUgaW1wbGVtZW50IHN0YXJ0IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNjE3MDkKLSAgICAgICAgICAgICAgICB0aGlzW3NlY3Rpb25dID0gKCkgPT4geyB0
aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6IHNlY3Rpb24gdHlwZSAiJHtzZWN0aW9ufSJg
KTsgfTsKKyAgICAgICAgICAgICAgICB0aGlzW3NlY3Rpb25dID0gZnVuY3Rpb24oZnVuY3Rpb25J
bmRleE9yTmFtZSkgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy5fYWRkU2Vj
dGlvbihzZWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRCdWlsZGVyID0g
eworICAgICAgICAgICAgICAgICAgICAgICAgRW5kOiAoKSA9PiB0aGlzLAorICAgICAgICAgICAg
ICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGZ1bmN0aW9uSW5kZXhP
ck5hbWUpICE9PSAibnVtYmVyIiAmJiB0eXBlb2YoZnVuY3Rpb25JbmRleE9yTmFtZSkgIT09ICJz
dHJpbmciKQorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGFydCBz
ZWN0aW9uJ3MgZnVuY3Rpb24gaW5kZXggIG11c3QgZWl0aGVyIGJlIGEgbnVtYmVyIG9yIGEgc3Ry
aW5nYCk7CisgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKGZ1bmN0aW9uSW5kZXhPck5h
bWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnRCdWlsZGVyOworICAgICAgICAg
ICAgICAgIH07CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgIkVs
ZW1lbnQiOgpAQCAtNDU2LDYgKzQ2NCw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkZXIg
ewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVTZWN0aW9uID0gYnVpbGRl
ci5fZ2V0U2VjdGlvbigiVHlwZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IGltcG9ydFNlY3Rpb24gPSBidWlsZGVyLl9nZXRTZWN0aW9uKCJJbXBvcnQiKTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBjb25zdCBleHBvcnRTZWN0aW9uID0gYnVpbGRlci5fZ2V0U2Vj
dGlvbigiRXhwb3J0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRT
ZWN0aW9uID0gYnVpbGRlci5fZ2V0U2VjdGlvbigiU3RhcnQiKTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBjb2RlU2VjdGlvbiA9IHM7CiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgaWYgKGV4cG9ydFNlY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgZm9yIChjb25zdCBlIG9mIGV4cG9ydFNlY3Rpb24uZGF0YSkgewpAQCAtNDg4LDYgKzQ5Nywy
MiBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAoc3RhcnRTZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IHN0YXJ0ID0gc3RhcnRTZWN0aW9uLmRhdGFbMF07CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGxldCBtYXBwZWQgPSBidWlsZGVyLl9nZXRGdW5jdGlvbkZyb21JbmRleFNwYWNlKHN0
YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFidWlsZGVyLl9jaGVj
a2VkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKG1h
cHBlZCkgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIG1hcHBlZCA9IHN0YXJ0OyAvLyBJbiB1bmNoZWNrZWQgbW9kZSwgc2ltcGx5IHVzZSB3
aGF0IHdhcyBwcm92aWRlZCBpZiBpdCdzIG5vbnNlbnNpY2FsLgorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgYXNzZXJ0LmlzQShzdGFydCwgIm51bWJlciIpOyAvLyBJdCBjYW4n
dCBiZSB0b28gbm9uc2Vuc2ljYWwsIG90aGVyd2lzZSB3ZSBjYW4ndCBjcmVhdGUgYSBiaW5hcnku
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFNlY3Rpb24uZGF0YVsw
XSA9IHN0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZihtYXBwZWQpID09PSAi
dW5kZWZpbmVkIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJv
dyBuZXcgRXJyb3IoYFN0YXJ0IHNlY3Rpb24gcmVmZXJzIHRvIG5vbi1leGlzdGFudCBmdW5jdGlv
biAnJHtzdGFydH0nYCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAo
dHlwZW9mKHN0YXJ0KSA9PT0gInN0cmluZyIgfHwgdHlwZW9mKHN0YXJ0KSA9PT0gIm9iamVjdCIp
CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRTZWN0aW9uLmRh
dGFbMF0gPSBtYXBwZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBG
SVhNRSBpbiBjaGVja2VkIG1vZGUsIHRlc3QgdGhhdCB0aGUgdHlwZSBpcyBhY2NlcHRhYmxlIGZv
ciBzdGFydCBmdW5jdGlvbi4gV2UgcHJvYmFibHkgd2FudCBfcmVnaXN0ZXJGdW5jdGlvblRvSW5k
ZXhTcGFjZSB0byBhbHNvIHJlZ2lzdGVyIHR5cGVzIHBlciBpbmRleC4gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTY1OAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiBidWlsZGVyOwogICAgICAgICAgICAgICAgICAgICAgICAgfSwK
IApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnkuanMg
Yi9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qcwppbmRleCBiMTliOGI2
Li5hODU2YjRkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJp
bmFyeS5qcworKysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qcwpA
QCAtMTE1LDcgKzExNSw5IEBAIGNvbnN0IGVtaXR0ZXJzID0gewogICAgICAgICAgICAgfQogICAg
ICAgICB9CiAgICAgfSwKLSAgICBTdGFydDogKHNlY3Rpb24sIGJpbikgPT4geyB0aHJvdyBuZXcg
RXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKKyAgICBTdGFydDogKHNlY3Rpb24sIGJp
bikgPT4geworICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgc2VjdGlvbi5kYXRhWzBdKTsK
KyAgICB9LAogICAgIEVsZW1lbnQ6IChzZWN0aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVycm9y
KGBOb3QgeWV0IGltcGxlbWVudGVkYCk7IH0sCiAKICAgICBDb2RlOiAoc2VjdGlvbiwgYmluKSA9
PiB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfU3RhcnQuanMgYi9KU1Rl
c3RzL3dhc20vanMtYXBpL3Rlc3RfU3RhcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uMDVkNjE5ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1hcGkv
dGVzdF9TdGFydC5qcwpAQCAtMCwwICsxLDM1IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJvbSAn
Li4vYXNzZXJ0LmpzJzsKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOworCiso
ZnVuY3Rpb24gU3RhcnROYW1lZEZ1bmN0aW9uKCkgeworICAgIGNvbnN0IGIgPSAobmV3IEJ1aWxk
ZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAgICAg
ICAgIC5GdW5jdGlvbigiaW1wIiwgImZ1bmMiLCB7IHBhcmFtczogWyJpMzIiXSB9KQorICAgICAg
ICAuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJmb28i
KS5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZvbyIsIHsg
cGFyYW1zOiBbXSB9KQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCg0MikKKyAgICAgICAgICAg
ICAgICAuQ2FsbCgwKSAvLyBDYWxscyBmdW5jKDQyKS4KKyAgICAgICAgICAgIC5FbmQoKQorICAg
ICAgICAuRW5kKCk7CisgICAgY29uc3QgYmluID0gYi5XZWJBc3NlbWJseSgpLmdldCgpOworICAg
IGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICBsZXQgdmFs
dWUgPSAwOworICAgIGNvbnN0IHNldHRlciA9IHYgPT4gdmFsdWUgPSB2OworICAgIGNvbnN0IGlu
c3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVuYzog
c2V0dGVyIH0gfSk7CisgICAgYXNzZXJ0LmVxKHZhbHVlLCA0Mik7Cit9KSgpOworCisoZnVuY3Rp
b24gSW52YWxpZFN0YXJ0RnVuY3Rpb25JbmRleCgpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWls
ZGVyKCkpCisgICAgICAgIC5zZXRDaGVja2VkKGZhbHNlKQorICAgICAgICAuVHlwZSgpLkVuZCgp
CisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5TdGFydCgwKS5FbmQoKSAvLyBJ
bnZhbGlkIGluZGV4LgorICAgICAgICAuQ29kZSgpLkVuZCgpOworICAgIGNvbnN0IGJpbiA9IGIu
V2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJBc3Nl
bWJseS5Nb2R1bGUoYmluKSwgRXJyb3IsIGBjb3VsZG4ndCBwYXJzZSBzZWN0aW9uIFN0YXJ0OiBT
dGFydCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5Lk1v
ZHVsZShiaW4pJylgKTsKK30pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0
L3Rlc3RfQnVpbGRlckpTT04uanMgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfQnVpbGRl
ckpTT04uanMKaW5kZXggMDU1YWFmNi4uYjM5MjllYyAxMDA2NDQKLS0tIGEvSlNUZXN0cy93YXNt
L3NlbGYtdGVzdC90ZXN0X0J1aWxkZXJKU09OLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9zZWxmLXRl
c3QvdGVzdF9CdWlsZGVySlNPTi5qcwpAQCAtMjQxLDYgKzI0MSw1NyBAQCBjb25zdCBhc3NlcnRP
cFRocm93cyA9IChvcEZuLCBtZXNzYWdlKSA9PiB7CiAgICAgYXNzZXJ0LnRocm93cygoKSA9PiBl
LkZ1bmN0aW9uKCJmb28iLCAwLCB7IHBhcmFtczogWyJpMzIiXSB9KSwgRXJyb3IsIGBOb3QgdGhl
IHNhbWU6ICIxIiBhbmQgIjAiOiBSZS1leHBvcnRpbmcgaW1wb3J0ICJiYXIiIGFzICJmb28iIGhh
cyBtaXNtYXRjaGluZyB0eXBlYCk7CiB9KSgpOwogCisoZnVuY3Rpb24gU3RhcnRJbnZhbGlkTnVt
YmVyZWRGdW5jdGlvbigpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAg
IC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0
KDApLkVuZCgpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBiLkNvZGUoKS5FbmQoKSwgRXJyb3Is
IGBTdGFydCBzZWN0aW9uIHJlZmVycyB0byBub24tZXhpc3RhbnQgZnVuY3Rpb24gJzAnYCk7Cit9
KSgpOworCisoZnVuY3Rpb24gU3RhcnRJbnZhbGlkTmFtZWRGdW5jdGlvbigpIHsKKyAgICBjb25z
dCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1
bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJmb28iKS5FbmQoKTsKKyAgICBhc3NlcnQu
dGhyb3dzKCgpID0+IGIuQ29kZSgpLkVuZCgpLCBFcnJvciwgYFN0YXJ0IHNlY3Rpb24gcmVmZXJz
IHRvIG5vbi1leGlzdGFudCBmdW5jdGlvbiAnZm9vJ2ApOworfSkoKTsKKworKGZ1bmN0aW9uIFN0
YXJ0TmFtZWRGdW5jdGlvbigpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAg
ICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0
YXJ0KCJmb28iKS5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24o
ImZvbyIsIHsgcGFyYW1zOiBbXSB9KS5FbmQoKQorICAgICAgICAuRW5kKCk7CisgICAgY29uc3Qg
aiA9IEpTT04ucGFyc2UoYi5qc29uKCkpOworICAgIGFzc2VydC5lcShqLnNlY3Rpb24ubGVuZ3Ro
LCA0KTsKKyAgICBhc3NlcnQuZXEoai5zZWN0aW9uWzJdLm5hbWUsICJTdGFydCIpOworICAgIGFz
c2VydC5lcShqLnNlY3Rpb25bMl0uZGF0YS5sZW5ndGgsIDEpOworICAgIGFzc2VydC5lcShqLnNl
Y3Rpb25bMl0uZGF0YVswXSwgMCk7Cit9KSgpOworCisvKiBGSVhNRSBpbXBsZW1lbnQgY2hlY2tp
bmcgb2Ygc2lnbmF0dXJlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NjU2NTgKKyhmdW5jdGlvbiBTdGFydEludmFsaWRUeXBlQXJnKCkgeworICAgIGNvbnN0IGIgPSAo
bmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rpb24o
KS5FbmQoKQorICAgICAgICAuU3RhcnQoImZvbyIpLkVuZCgpCisgICAgYXNzZXJ0LnRocm93cygo
KSA9PiBiLkNvZGUoKS5GdW5jdGlvbigiZm9vIiwgeyBwYXJhbXM6IFsiaTMyIl0gfSkuRW5kKCks
IEVycm9yLCBgPz8/YCk7Cit9KSgpOworCisoZnVuY3Rpb24gU3RhcnRJbnZhbGlkVHlwZVJldHVy
bigpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5k
KCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJmb28iKS5FbmQo
KQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYi5Db2RlKCkuRnVuY3Rpb24oImZvbyIsIHsgcGFy
YW1zOiBbXSwgcmV0OiAiaTMyIiB9KS5JMzJDb25zdCg0MikuUmV0KCkuRW5kKCksIEVycm9yLCBg
Pz8/YCk7Cit9KSgpOworKi8KKworLy8gRklYTUUgdGVzdCBzdGFydCBvZiBpbXBvcnQgb3IgdGFi
bGUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU2NTgKKwogKGZ1
bmN0aW9uIEVtcHR5Q29kZVNlY3Rpb24oKSB7CiAgICAgY29uc3QgYiA9IG5ldyBCdWlsZGVyKCk7
CiAgICAgYi5Db2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdl
TG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAzY2IyZDg2Li42MzVk
YTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxNi0xMi0w
OSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNzZW1i
bHkgSlMgQVBJOiBpbXBsZW1lbnQgc3RhcnQgZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTE1MAorCisgICAgICAgIFJldmlld2VkIGJ5
IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogd2FzbS9XYXNtRm9ybWF0Lmg6IHBhc3MgdGhlIHN0
YXJ0IGZ1bmN0aW9uIGFyb3VuZAorICAgICAgICAqIHdhc20vV2FzbU1vZHVsZVBhcnNlci5jcHA6
CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZVBhcnNlcjo6cGFyc2VUYWJsZSk6IG1hcmsgdW5y
ZWFjaGFibGUgY29kZQorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlR2xv
YmFsKTogbWFyayB1bnJlYWNoYWJsZSBjb2RlCisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZVBh
cnNlcjo6cGFyc2VTdGFydCk6IG1hcmsgdW5yZWFjaGFibGUgY29kZQorICAgICAgICAoSlNDOjpX
YXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlRWxlbWVudCk6IG1hcmsgdW5yZWFjaGFibGUgY29kZQor
ICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlRGF0YSk6IG1hcmsgdW5yZWFj
aGFibGUgY29kZQorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6Cisg
ICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKTogTkZDOiBjYWxsIHRoZSBuZXcg
ZnVuY3Rpb24gYmVsb3cKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6Y2FsbCk6
IHNlcGFyYXRlIHRoaXMgb3V0IHNvIHRoYXQgdGhlIHN0YXJ0IGZ1bmN0aW9uIGNhbiB1c2UgaXQK
KyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaDoKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1i
bHlNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4pOiB2aXNpdCB0aGUgc3RhcnQgZnVuY3Rpb24K
KyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmspOiBoYW5kbGUgc3Rh
cnQgZnVuY3Rpb24KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2YWx1
YXRlKTogY2FsbCB0aGUgc3RhcnQgZnVuY3Rpb24sIGlmIHByZXNlbnQKKyAgICAgICAgKiB3YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmg6CisKIDIwMTYtMTItMDkgIFNhYW0gQmFyYXRp
ICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBpbXBs
ZW1lbnQgaW1wb3J0aW5nIGFuZCBkZWZpbmluZyBNZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL1dhc21Gb3JtYXQuaAppbmRleCA4MzgzZDRjLi5mMDQzNTE5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVkZSAiV2Fz
bU1lbW9yeUluZm9ybWF0aW9uLmgiCiAjaW5jbHVkZSAiV2FzbU9wcy5oIgogI2luY2x1ZGUgIldh
c21QYWdlQ291bnQuaCIKKyNpbmNsdWRlIDx3dGYvT3B0aW9uYWwuaD4KICNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBKU0MgewpAQCAtMTIzLDYgKzEyNCw5IEBAIHN0cnVjdCBN
b2R1bGVJbmZvcm1hdGlvbiB7CiAgICAgVmVjdG9yPFNpZ25hdHVyZSo+IGludGVybmFsRnVuY3Rp
b25TaWduYXR1cmVzOwogICAgIE1lbW9yeUluZm9ybWF0aW9uIG1lbW9yeTsKICAgICBWZWN0b3I8
RXhwb3J0PiBleHBvcnRzOworICAgIHN0ZDo6b3B0aW9uYWw8dWludDMyX3Q+IHN0YXJ0RnVuY3Rp
b25JbmRleFNwYWNlOworCisgICAgfk1vZHVsZUluZm9ybWF0aW9uKCk7CiB9OwogCiBzdHJ1Y3Qg
VW5saW5rZWRXYXNtVG9XYXNtQ2FsbCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9XYXNtTW9kdWxlUGFyc2VyLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Nb2R1bGVQYXJzZXIuY3BwCmluZGV4IDM3Mjk4ZjguLjlkYjA4YzggMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwCkBAIC0zMDMsNyAr
MzAzLDggQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlRnVuY3Rpb24oKQogCiBib29sIE1vZHVs
ZVBhcnNlcjo6cGFyc2VUYWJsZSgpCiB7Ci0gICAgLy8gRklYTUUKKyAgICAvLyBGSVhNRSBpbXBs
ZW1lbnQgdGFibGUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NDEz
NQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKQEAgLTM2NSw2ICszNjYsNyBAQCBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VNZW1vcnkoKQog
Ym9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlR2xvYmFsKCkKIHsKICAgICAvLyBGSVhNRSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTMzCisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDE1LDEzICs0MTcs
MjIgQEAgYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlRXhwb3J0KCkKIAogYm9vbCBNb2R1bGVQYXJz
ZXI6OnBhcnNlU3RhcnQoKQogewotICAgIC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjE3MDkKKyAgICB1aW50MzJfdCBzdGFydEZ1bmN0aW9uSW5kZXg7
CisgICAgaWYgKCFwYXJzZVZhclVJbnQzMihzdGFydEZ1bmN0aW9uSW5kZXgpCisgICAgICAgIHx8
IHN0YXJ0RnVuY3Rpb25JbmRleCA+PSBtX2Z1bmN0aW9uSW5kZXhTcGFjZS5zaXplKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKyAgICBTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1fZnVuY3Rpb25J
bmRleFNwYWNlW3N0YXJ0RnVuY3Rpb25JbmRleF0uc2lnbmF0dXJlOworICAgIGlmIChzaWduYXR1
cmUtPmFyZ3VtZW50cy5zaXplKCkgIT0gMAorICAgICAgICB8fCBzaWduYXR1cmUtPnJldHVyblR5
cGUgIT0gVm9pZCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIG1fbW9kdWxlLT5zdGFydEZ1
bmN0aW9uSW5kZXhTcGFjZSA9IHN0YXJ0RnVuY3Rpb25JbmRleDsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAogYm9vbCBNb2R1bGVQYXJzZXI6OnBhcnNlRWxlbWVudCgpCiB7CiAgICAgLy8gRklYTUUg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTcwOQorICAgIFJFTEVB
U0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTQ1MCw2
ICs0NjEsNyBAQCBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VDb2RlKCkKIGJvb2wgTW9kdWxlUGFy
c2VyOjpwYXJzZURhdGEoKQogewogICAgIC8vIEZJWE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjE3MDkKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwCmluZGV4IDE5NDc3MzEuLmQ4Yjg1ZGIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVu
Y3Rpb24uY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
RnVuY3Rpb24uY3BwCkBAIC05Miw2ICs5MiwxOCBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAg
ICAgIGFyZ0NvdW50ID0gYm94ZWRBcmdzLnNpemUoKTsKICAgICB9CiAKKyAgICAvLyBOb3RlOiB3
ZSBzcGVjaWZpY2FsbHkgdXNlIHRoZSBXZWJBc3NlbWJseUZ1bmN0aW9uIGFzIHRoZSBjYWxsZWUg
dG8gYmVnaW4gd2l0aCBpbiB0aGUgUHJvdG9DYWxsRnJhbWUuCisgICAgLy8gVGhlIHJlYXNvbiBm
b3IgdGhpcyBpcyB0aGF0IGNhbGxpbmcgaW50byB0aGUgbGxpbnQgbWF5IHN0YWNrIG92ZXJmbG93
LCBhbmQgdGhlIHN0YWNrIG92ZXJmbG93CisgICAgLy8gaGFuZGxlciBtaWdodCByZWFkIHRoZSBn
bG9iYWwgb2JqZWN0IGZyb20gdGhlIGNhbGxlZS4gVGhlIEpTV2ViQXNzZW1ibHlDYWxsZWUgZG9l
c24ndCBoYXZlIGEKKyAgICAvLyBnbG9iYWwgb2JqZWN0LCBidXQgdGhlIFdlYkFzc2VtYmx5RnVu
Y3Rpb24gZG9lcy4KKyAgICBQcm90b0NhbGxGcmFtZSBwcm90b0NhbGxGcmFtZTsKKyAgICBwcm90
b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIHdhc21GdW5jdGlvbiwgZmlyc3RBcmd1bWVudCwgYXJn
Q291bnQsIHJlbWFpbmluZ0FyZ3MpOworCisgICAgcmV0dXJuIHdhc21GdW5jdGlvbi0+Y2FsbCh2
bSwgJnByb3RvQ2FsbEZyYW1lKTsKK30KKworRW5jb2RlZEpTVmFsdWUgV2ViQXNzZW1ibHlGdW5j
dGlvbjo6Y2FsbChWTSYgdm0sIFByb3RvQ2FsbEZyYW1lKiBwcm90b0NhbGxGcmFtZSkKK3sKICAg
ICAvLyBTZXR1cCB0aGUgbWVtb3J5IHRoYXQgdGhlIGVudHJhbmNlIGxvYWRzLgogICAgIGlmIChK
U1dlYkFzc2VtYmx5TWVtb3J5KiBtZW1vcnkgPSB3YXNtRnVuY3Rpb24tPmluc3RhbmNlKCktPm1l
bW9yeSgpKSB7CiAgICAgICAgIFdhc206Ok1lbW9yeSogd2FzbU1lbW9yeSA9IG1lbW9yeS0+bWVt
b3J5KCk7CkBAIC0xMDIsMjAgKzExNCwxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAg
IHZtLnRvcFdhc21NZW1vcnlTaXplID0gMDsKICAgICB9CiAKLSAgICAvLyBOb3RlOiB3ZSBzcGVj
aWZpY2FsbHkgdXNlIHRoZSBXZWJBc3NlYmx5RnVuY3Rpb24gYXMgdGhlIGNhbGxlZSB0byBiZWdp
biB3aXRoIGluIHRoZSBQcm90b0NhbGxGcmFtZS4KLSAgICAvLyBUaGUgcmVhc29uIGZvciB0aGlz
IGlzIHRoYXQgY2FsbGluZyBpbnRvIHRoZSBsbGludCBtYXkgc3RhY2sgb3ZlcmZsb3csIGFuZCB0
aGUgc3RhY2sgb3ZlcmZsb3cKLSAgICAvLyBoYW5kbGVyIG1pZ2h0IHJlYWQgdGhlIGdsb2JhbCBv
YmplY3QgZnJvbSB0aGUgY2FsbGVlLiBUaGUgSlNXZWJBc3NlbWJseUNhbGxlZSBkb2Vzbid0IGhh
dmUgYQotICAgIC8vIGdsb2JhbCBvYmplY3QsIGJ1dCB0aGUgV2ViQXNzZW1ibHlGdW5jdGlvbiBk
b2VzLgotICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZy
YW1lLmluaXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBmaXJzdEFyZ3VtZW50LCBhcmdDb3VudCwg
cmVtYWluaW5nQXJncyk7Ci0gICAgCiAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBwcmV2SlNX
ZWJBc3NlbWJseUluc3RhbmNlID0gdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlOwotICAgIHZt
LnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKTsKLSAg
ICBFbmNvZGVkSlNWYWx1ZSByYXdSZXN1bHQgPSB2bUVudHJ5VG9XYXNtKHdhc21GdW5jdGlvbi0+
d2ViQXNzZW1ibHlDYWxsZWUoKS0+anNUb1dhc21FbnRyeVBvaW50KCksICZ2bSwgJnByb3RvQ2Fs
bEZyYW1lKTsKKyAgICB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBpbnN0YW5jZSgpOwor
ICAgIEVuY29kZWRKU1ZhbHVlIHJhd1Jlc3VsdCA9IHZtRW50cnlUb1dhc20od2ViQXNzZW1ibHlD
YWxsZWUoKS0+anNUb1dhc21FbnRyeVBvaW50KCksICZ2bSwgcHJvdG9DYWxsRnJhbWUpOwogICAg
IHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHByZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2U7
CiAKICAgICAvLyBGSVhNRSBpcyB0aGlzIGNvcnJlY3Q/IGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjQ4NzYKLSAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+cmV0dXJuVHlw
ZSkgeworICAgIHN3aXRjaCAoc2lnbmF0dXJlKCktPnJldHVyblR5cGUpIHsKICAgICBjYXNlIFdh
c206OlZvaWQ6CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7
CiAgICAgY2FzZSBXYXNtOjpJMzI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2Fz
bS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmgKaW5kZXggN2NjNTYyYy4uMmNiZjg1MiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24u
aApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNHbG9iYWxPYmpl
Y3Q7CiBjbGFzcyBKU1dlYkFzc2VtYmx5Q2FsbGVlOworc3RydWN0IFByb3RvQ2FsbEZyYW1lOwog
Y2xhc3MgV2ViQXNzZW1ibHlJbnN0YW5jZTsKIAogbmFtZXNwYWNlIEIzIHsKQEAgLTYyLDYgKzYz
LDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9zaWduYXR1cmUpOwogICAgICAgICByZXR1
cm4gbV9zaWduYXR1cmU7CiAgICAgfQorICAgIEVuY29kZWRKU1ZhbHVlIGNhbGwoVk0mLCBQcm90
b0NhbGxGcmFtZSopOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDM0ODBhNTAu
LjU2OWZiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTM0LDggKzM0LDEwIEBACiAjaW5jbHVk
ZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5j
ZS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJQcm90b0Nh
bGxGcmFtZS5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJs
eUZ1bmN0aW9uLmgiCisjaW5jbHVkZSA8bGltaXRzPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAt
OTYsNiArOTgsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVu
KEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqPihj
ZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAg
IHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luc3RhbmNlKTsKKyAgICB2aXNpdG9yLmFw
cGVuZCgmdGhpc09iamVjdC0+bV9zdGFydEZ1bmN0aW9uKTsKIH0KIAogdm9pZCBXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIHN0YXRlLCBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2UqIGluc3RhbmNlKQpAQCAtMTA3LDYgKzExMCwxMCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxl
UmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogc3RhdGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5z
dAogCiAgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0gaW5zdGFuY2UtPm1vZHVsZSgp
OwogICAgIGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbiA9
IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKTsKKworICAgIGJvb2wgaGFzU3RhcnQgPSAhIW1v
ZHVsZUluZm9ybWF0aW9uLnN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlOworICAgIGF1dG8gc3RhcnRG
dW5jdGlvbkluZGV4U3BhY2UgPSBtb2R1bGVJbmZvcm1hdGlvbi5zdGFydEZ1bmN0aW9uSW5kZXhT
cGFjZS52YWx1ZV9vcigwKTsKKwogICAgIFN5bWJvbFRhYmxlKiBleHBvcnRTeW1ib2xUYWJsZSA9
IG1vZHVsZS0+ZXhwb3J0U3ltYm9sVGFibGUoKTsKICAgICB1bnNpZ25lZCBpbXBvcnRDb3VudCA9
IG1vZHVsZS0+aW1wb3J0Q291bnQoKTsKIApAQCAtMTMzLDYgKzE0MCw4IEBAIHZvaWQgV2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBzdGF0ZSwgSlNXZWJBc3NlbWJseUlu
c3RhbmNlKiBpbnN0CiAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1v
ZHVsZS0+c2lnbmF0dXJlRm9yRnVuY3Rpb25JbmRleFNwYWNlKGV4cC5mdW5jdGlvbkluZGV4KTsK
ICAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS0+YXJndW1lbnRzLnNp
emUoKSwgZXhwLmZpZWxkLnN0cmluZygpLCBpbnN0YW5jZSwgd2FzbUNhbGxlZSwgc2lnbmF0dXJl
KTsKICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBmdW5jdGlvbjsKKyAgICAgICAgICAgIGlm
IChoYXNTdGFydCAmJiBzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSA9PSBleHAuZnVuY3Rpb25JbmRl
eCkKKyAgICAgICAgICAgICAgICBtX3N0YXJ0RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBmdW5jdGlv
bik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFdhc206OkV4
dGVybmFsOjpUYWJsZTogewpAQCAtMTU3LDYgKzE2NiwyMCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9k
dWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogc3RhdGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSog
aW5zdAogICAgICAgICBSRUxFQVNFX0FTU0VSVChwdXRSZXN1bHQpOwogICAgIH0KIAorICAgIGlm
IChoYXNTdGFydCkgeworICAgICAgICBXYXNtOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1vZHVs
ZS0+c2lnbmF0dXJlRm9yRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNl
KTsKKyAgICAgICAgLy8gVGhlIHN0YXJ0IGZ1bmN0aW9uIG11c3Qgbm90IHRha2UgYW55IGFyZ3Vt
ZW50cyBvciByZXR1cm4gYW55dGhpbmcuIFRoaXMgaXMgZW5mb3JjZWQgYnkgdGhlIHBhcnNlci4K
KyAgICAgICAgQVNTRVJUKCFzaWduYXR1cmUtPmFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBB
U1NFUlQoc2lnbmF0dXJlLT5yZXR1cm5UeXBlID09IFdhc206OlZvaWQpOworICAgICAgICAvLyBG
SVhNRSBjYW4gc3RhcnQgY2FsbCBpbXBvcnRzIC8gdGFibGVzPyBUaGlzIGFzc3VtZXMgbm90LiBo
dHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2lzc3Vlcy84OTYKKyAgICAgICAg
aWYgKCFtX3N0YXJ0RnVuY3Rpb24uZ2V0KCkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzdGFydCBm
dW5jdGlvbiB3YXNuJ3QgYWRkZWQgYWJvdmUuIEl0IG11c3QgYmUgYSBwdXJlbHkgaW50ZXJuYWwg
ZnVuY3Rpb24uCisgICAgICAgICAgICBKU1dlYkFzc2VtYmx5Q2FsbGVlKiB3YXNtQ2FsbGVlID0g
bW9kdWxlLT5jYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rpb25JbmRleFNw
YWNlKTsKKyAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNz
ZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS0+YXJndW1l
bnRzLnNpemUoKSwgInN0YXJ0IiwgaW5zdGFuY2UsIHdhc21DYWxsZWUsIHNpZ25hdHVyZSk7Cisg
ICAgICAgICAgICBtX3N0YXJ0RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBmdW5jdGlvbik7CisgICAg
ICAgIH0KKyAgICB9CisKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YW5jZSk7CiAgICAgbV9p
bnN0YW5jZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKICAgICBtX21vZHVsZUVudmlyb25tZW50
LnNldCh2bSwgdGhpcywgbW9kdWxlRW52aXJvbm1lbnQpOwpAQCAtMTY0LDEwICsxODcsMTQgQEAg
dm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIHN0YXRlLCBKU1dl
YkFzc2VtYmx5SW5zdGFuY2UqIGluc3QKIAogSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29y
ZDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICAvLyBGSVhNRSB0aGlzIHNob3Vs
ZCBjYWxsIHRoZSBtb2R1bGUncyBgc3RhcnRgIGZ1bmN0aW9uLCBpZiBhbnkuIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUxNTAKLSAgICAvLyBodHRwczovL2dpdGh1
Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL01vZHVsZXMubWQjbW9kdWxlLXN0
YXJ0LWZ1bmN0aW9uCi0gICAgLy8gVGhlIHN0YXJ0IGZ1bmN0aW9uIG11c3Qgbm90IHRha2UgYW55
IGFyZ3VtZW50cyBvciByZXR1cm4gYW55dGhpbmcKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOwor
ICAgIGlmIChXZWJBc3NlbWJseUZ1bmN0aW9uKiBzdGFydEZ1bmN0aW9uID0gbV9zdGFydEZ1bmN0
aW9uLmdldCgpKSB7CisgICAgICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgICAgICBhdXRv
IHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIFByb3RvQ2FsbEZyYW1l
IHByb3RvQ2FsbEZyYW1lOworICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIHN0
YXJ0RnVuY3Rpb24sIEpTVmFsdWUoKSwgMSwgbnVsbHB0cik7CisgICAgICAgIHN0YXJ0RnVuY3Rp
b24tPmNhbGwodm0sICZwcm90b0NhbGxGcmFtZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJ
T04oc2NvcGUsIHsgfSk7CisgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVs
ZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQuaAppbmRleCBhMDJmOWVkLi40ZTcwZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKQEAgLTMz
LDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFu
Y2U7CitjbGFzcyBXZWJBc3NlbWJseUZ1bmN0aW9uOwogCiAvLyBCYXNlZCBvbiB0aGUgV2ViQXNz
ZW1ibHkuSW5zdGFuY2Ugc3BlY2lmaWNhdGlvbgogLy8gaHR0cHM6Ly9naXRodWIuY29tL1dlYkFz
c2VtYmx5L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZCN3ZWJhc3NlbWJseWluc3RhbmNlLWNvbnN0
cnVjdG9yCkBAIC01OCw2ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRD
aGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTV2Vi
QXNzZW1ibHlJbnN0YW5jZT4gbV9pbnN0YW5jZTsKKyAgICBXcml0ZUJhcnJpZXI8V2ViQXNzZW1i
bHlGdW5jdGlvbj4gbV9zdGFydEZ1bmN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0t
IAoyLjEwLjEKCg==
</data>
<flag name="commit-queue"
          id="319120"
          type_id="3"
          status="+"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296713</attachid>
            <date>2016-12-09 15:15:53 -0800</date>
            <delta_ts>2016-12-09 16:06:31 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-start.patch</filename>
            <type>text/plain</type>
            <size>21949</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSA5MWQ4ZDBmY2Y4MmM4ZDBiMzQwZGZkZGEzMzljYzAxNWEyYTU2MWYzIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDggRGVjIDIwMTYgMjI6MTI6MDggLTA4MDAKU3ViamVjdDogW1BBVENIXSBzdGFydAoK
LS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IDEzICsrKysrKwogSlNUZXN0cy93YXNtL0J1aWxkZXIuanMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAyOSArKysrKysrKysrKy0KIEpTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5
QmluYXJ5LmpzICAgICAgICAgIHwgIDQgKy0KIEpTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9TdGFy
dC5qcyAgICAgICAgICAgICAgICAgIHwgMzUgKysrKysrKysrKysrKysrCiBKU1Rlc3RzL3dhc20v
c2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMgICAgICAgICB8IDUxICsrKysrKysrKysrKysr
KysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgIHwgMjQgKysrKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1h
dC5jcHAgICAgICAgICAgfCAgMiArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9y
bWF0LmggICAgICAgICAgICB8ICA0ICsrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TW9kdWxlUGFyc2VyLmNwcCAgICB8IDE2ICsrKysrKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIHwgMjcgKysrKysrKy0tLS0tCiAuLi4vSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmggICB8ICAyICsKIC4uLi93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCAgICAgICAgICAgIHwgMzUgKysrKysrKysr
KysrKy0tCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oICAgICAgICAgICAg
ICB8ICAyICsKIDEzIGZpbGVzIGNoYW5nZWQsIDIyNCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfU3RhcnQu
anMKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDkwN2ExYTQuLjQyNjZkM2UgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMTItMDkgIEpGIEJhc3Rp
ZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTog
aW1wbGVtZW50IHN0YXJ0IGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjUxNTAKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0
aS4KKworICAgICAgICAqIHdhc20vQnVpbGRlci5qczogYWxsb3cgYnVpbGRpbmcgYSAuU3RhcnQo
KQorICAgICAgICAqIHdhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qczoKKyAgICAgICAg
KiB3YXNtL2pzLWFwaS90ZXN0X1N0YXJ0LmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbnN0LmVtaXR0
ZXJzLlN0YXJ0KTogc2VyaWFsaXplIGEgc3RhcnQgc2VjdGlvbgorICAgICAgICAqIHdhc20vc2Vs
Zi10ZXN0L3Rlc3RfQnVpbGRlckpTT04uanM6IHZhbGlkYXRlIHRoZSBzdGFydCBzZWN0aW9uJ3Mg
Y29udGVudAorCiAyMDE2LTEyLTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTogaW1wbGVtZW50IGltcG9ydGluZyBhbmQgZGVm
aW5pbmcgTWVtb3J5CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcyBiL0pTVGVz
dHMvd2FzbS9CdWlsZGVyLmpzCmluZGV4IDI2ODRlOTMuLmExZjgwYjcgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvd2FzbS9CdWlsZGVyLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCkBAIC00
MzcsOCArNDM3LDE2IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkZXIgewogICAgICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlICJTdGFydCI6Ci0gICAgICAgICAgICAg
ICAgLy8gRklYTUUgaW1wbGVtZW50IHN0YXJ0IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjE3MDkKLSAgICAgICAgICAgICAgICB0aGlzW3NlY3Rpb25dID0gKCkgPT4g
eyB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6IHNlY3Rpb24gdHlwZSAiJHtzZWN0aW9u
fSJgKTsgfTsKKyAgICAgICAgICAgICAgICB0aGlzW3NlY3Rpb25dID0gZnVuY3Rpb24oZnVuY3Rp
b25JbmRleE9yTmFtZSkgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy5fYWRk
U2VjdGlvbihzZWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRCdWlsZGVy
ID0geworICAgICAgICAgICAgICAgICAgICAgICAgRW5kOiAoKSA9PiB0aGlzLAorICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGZ1bmN0aW9uSW5k
ZXhPck5hbWUpICE9PSAibnVtYmVyIiAmJiB0eXBlb2YoZnVuY3Rpb25JbmRleE9yTmFtZSkgIT09
ICJzdHJpbmciKQorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGFy
dCBzZWN0aW9uJ3MgZnVuY3Rpb24gaW5kZXggIG11c3QgZWl0aGVyIGJlIGEgbnVtYmVyIG9yIGEg
c3RyaW5nYCk7CisgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKGZ1bmN0aW9uSW5kZXhP
ck5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnRCdWlsZGVyOworICAgICAg
ICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2Ug
IkVsZW1lbnQiOgpAQCAtNDU2LDYgKzQ2NCw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxk
ZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVTZWN0aW9uID0gYnVp
bGRlci5fZ2V0U2VjdGlvbigiVHlwZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGltcG9ydFNlY3Rpb24gPSBidWlsZGVyLl9nZXRTZWN0aW9uKCJJbXBvcnQiKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHBvcnRTZWN0aW9uID0gYnVpbGRlci5fZ2V0
U2VjdGlvbigiRXhwb3J0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rh
cnRTZWN0aW9uID0gYnVpbGRlci5fZ2V0U2VjdGlvbigiU3RhcnQiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjb2RlU2VjdGlvbiA9IHM7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGV4cG9ydFNlY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIChjb25zdCBlIG9mIGV4cG9ydFNlY3Rpb24uZGF0YSkgewpAQCAtNDg4LDYgKzQ5
NywyMiBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoc3RhcnRTZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0YXJ0ID0gc3RhcnRTZWN0aW9uLmRhdGFbMF07CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxldCBtYXBwZWQgPSBidWlsZGVyLl9nZXRGdW5jdGlvbkZyb21JbmRleFNwYWNl
KHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFidWlsZGVyLl9j
aGVja2VkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9m
KG1hcHBlZCkgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hcHBlZCA9IHN0YXJ0OyAvLyBJbiB1bmNoZWNrZWQgbW9kZSwgc2ltcGx5IHVz
ZSB3aGF0IHdhcyBwcm92aWRlZCBpZiBpdCdzIG5vbnNlbnNpY2FsLgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmlzQShzdGFydCwgIm51bWJlciIpOyAvLyBJdCBj
YW4ndCBiZSB0b28gbm9uc2Vuc2ljYWwsIG90aGVyd2lzZSB3ZSBjYW4ndCBjcmVhdGUgYSBiaW5h
cnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFNlY3Rpb24uZGF0
YVswXSA9IHN0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZihtYXBwZWQpID09
PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYFN0YXJ0IHNlY3Rpb24gcmVmZXJzIHRvIG5vbi1leGlzdGFudCBmdW5j
dGlvbiAnJHtzdGFydH0nYCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodHlwZW9mKHN0YXJ0KSA9PT0gInN0cmluZyIgfHwgdHlwZW9mKHN0YXJ0KSA9PT0gIm9iamVj
dCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRTZWN0aW9u
LmRhdGFbMF0gPSBtYXBwZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBGSVhNRSBpbiBjaGVja2VkIG1vZGUsIHRlc3QgdGhhdCB0aGUgdHlwZSBpcyBhY2NlcHRhYmxl
IGZvciBzdGFydCBmdW5jdGlvbi4gV2UgcHJvYmFibHkgd2FudCBfcmVnaXN0ZXJGdW5jdGlvblRv
SW5kZXhTcGFjZSB0byBhbHNvIHJlZ2lzdGVyIHR5cGVzIHBlciBpbmRleC4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTY1OAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBidWlsZGVyOwogICAgICAgICAgICAgICAgICAgICAgICAg
fSwKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnku
anMgYi9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qcwppbmRleCBiMTli
OGI2Li5hODU2YjRkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJs
eUJpbmFyeS5qcworKysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5q
cwpAQCAtMTE1LDcgKzExNSw5IEBAIGNvbnN0IGVtaXR0ZXJzID0gewogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfSwKLSAgICBTdGFydDogKHNlY3Rpb24sIGJpbikgPT4geyB0aHJvdyBu
ZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKKyAgICBTdGFydDogKHNlY3Rpb24s
IGJpbikgPT4geworICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgc2VjdGlvbi5kYXRhWzBd
KTsKKyAgICB9LAogICAgIEVsZW1lbnQ6IChzZWN0aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVy
cm9yKGBOb3QgeWV0IGltcGxlbWVudGVkYCk7IH0sCiAKICAgICBDb2RlOiAoc2VjdGlvbiwgYmlu
KSA9PiB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfU3RhcnQuanMgYi9K
U1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfU3RhcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMDVkNjE5ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1h
cGkvdGVzdF9TdGFydC5qcwpAQCAtMCwwICsxLDM1IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJv
bSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwor
CisoZnVuY3Rpb24gU3RhcnROYW1lZEZ1bmN0aW9uKCkgeworICAgIGNvbnN0IGIgPSAobmV3IEJ1
aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAg
ICAgICAgIC5GdW5jdGlvbigiaW1wIiwgImZ1bmMiLCB7IHBhcmFtczogWyJpMzIiXSB9KQorICAg
ICAgICAuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJm
b28iKS5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZvbyIs
IHsgcGFyYW1zOiBbXSB9KQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCg0MikKKyAgICAgICAg
ICAgICAgICAuQ2FsbCgwKSAvLyBDYWxscyBmdW5jKDQyKS4KKyAgICAgICAgICAgIC5FbmQoKQor
ICAgICAgICAuRW5kKCk7CisgICAgY29uc3QgYmluID0gYi5XZWJBc3NlbWJseSgpLmdldCgpOwor
ICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICBsZXQg
dmFsdWUgPSAwOworICAgIGNvbnN0IHNldHRlciA9IHYgPT4gdmFsdWUgPSB2OworICAgIGNvbnN0
IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVu
Yzogc2V0dGVyIH0gfSk7CisgICAgYXNzZXJ0LmVxKHZhbHVlLCA0Mik7Cit9KSgpOworCisoZnVu
Y3Rpb24gSW52YWxpZFN0YXJ0RnVuY3Rpb25JbmRleCgpIHsKKyAgICBjb25zdCBiID0gKG5ldyBC
dWlsZGVyKCkpCisgICAgICAgIC5zZXRDaGVja2VkKGZhbHNlKQorICAgICAgICAuVHlwZSgpLkVu
ZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5TdGFydCgwKS5FbmQoKSAv
LyBJbnZhbGlkIGluZGV4LgorICAgICAgICAuQ29kZSgpLkVuZCgpOworICAgIGNvbnN0IGJpbiA9
IGIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoYmluKSwgRXJyb3IsIGBjb3VsZG4ndCBwYXJzZSBzZWN0aW9uIFN0YXJ0
OiBTdGFydCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5
Lk1vZHVsZShiaW4pJylgKTsKK30pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc2VsZi10
ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfQnVp
bGRlckpTT04uanMKaW5kZXggMDU1YWFmNi4uYjM5MjllYyAxMDA2NDQKLS0tIGEvSlNUZXN0cy93
YXNtL3NlbGYtdGVzdC90ZXN0X0J1aWxkZXJKU09OLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9zZWxm
LXRlc3QvdGVzdF9CdWlsZGVySlNPTi5qcwpAQCAtMjQxLDYgKzI0MSw1NyBAQCBjb25zdCBhc3Nl
cnRPcFRocm93cyA9IChvcEZuLCBtZXNzYWdlKSA9PiB7CiAgICAgYXNzZXJ0LnRocm93cygoKSA9
PiBlLkZ1bmN0aW9uKCJmb28iLCAwLCB7IHBhcmFtczogWyJpMzIiXSB9KSwgRXJyb3IsIGBOb3Qg
dGhlIHNhbWU6ICIxIiBhbmQgIjAiOiBSZS1leHBvcnRpbmcgaW1wb3J0ICJiYXIiIGFzICJmb28i
IGhhcyBtaXNtYXRjaGluZyB0eXBlYCk7CiB9KSgpOwogCisoZnVuY3Rpb24gU3RhcnRJbnZhbGlk
TnVtYmVyZWRGdW5jdGlvbigpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAg
ICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0
YXJ0KDApLkVuZCgpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBiLkNvZGUoKS5FbmQoKSwgRXJy
b3IsIGBTdGFydCBzZWN0aW9uIHJlZmVycyB0byBub24tZXhpc3RhbnQgZnVuY3Rpb24gJzAnYCk7
Cit9KSgpOworCisoZnVuY3Rpb24gU3RhcnRJbnZhbGlkTmFtZWRGdW5jdGlvbigpIHsKKyAgICBj
b25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAg
LkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJmb28iKS5FbmQoKTsKKyAgICBhc3Nl
cnQudGhyb3dzKCgpID0+IGIuQ29kZSgpLkVuZCgpLCBFcnJvciwgYFN0YXJ0IHNlY3Rpb24gcmVm
ZXJzIHRvIG5vbi1leGlzdGFudCBmdW5jdGlvbiAnZm9vJ2ApOworfSkoKTsKKworKGZ1bmN0aW9u
IFN0YXJ0TmFtZWRGdW5jdGlvbigpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisg
ICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAg
LlN0YXJ0KCJmb28iKS5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rp
b24oImZvbyIsIHsgcGFyYW1zOiBbXSB9KS5FbmQoKQorICAgICAgICAuRW5kKCk7CisgICAgY29u
c3QgaiA9IEpTT04ucGFyc2UoYi5qc29uKCkpOworICAgIGFzc2VydC5lcShqLnNlY3Rpb24ubGVu
Z3RoLCA0KTsKKyAgICBhc3NlcnQuZXEoai5zZWN0aW9uWzJdLm5hbWUsICJTdGFydCIpOworICAg
IGFzc2VydC5lcShqLnNlY3Rpb25bMl0uZGF0YS5sZW5ndGgsIDEpOworICAgIGFzc2VydC5lcShq
LnNlY3Rpb25bMl0uZGF0YVswXSwgMCk7Cit9KSgpOworCisvKiBGSVhNRSBpbXBsZW1lbnQgY2hl
Y2tpbmcgb2Ygc2lnbmF0dXJlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjU2NTgKKyhmdW5jdGlvbiBTdGFydEludmFsaWRUeXBlQXJnKCkgeworICAgIGNvbnN0IGIg
PSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rp
b24oKS5FbmQoKQorICAgICAgICAuU3RhcnQoImZvbyIpLkVuZCgpCisgICAgYXNzZXJ0LnRocm93
cygoKSA9PiBiLkNvZGUoKS5GdW5jdGlvbigiZm9vIiwgeyBwYXJhbXM6IFsiaTMyIl0gfSkuRW5k
KCksIEVycm9yLCBgPz8/YCk7Cit9KSgpOworCisoZnVuY3Rpb24gU3RhcnRJbnZhbGlkVHlwZVJl
dHVybigpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCku
RW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJmb28iKS5F
bmQoKQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYi5Db2RlKCkuRnVuY3Rpb24oImZvbyIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KS5JMzJDb25zdCg0MikuUmV0KCkuRW5kKCksIEVycm9y
LCBgPz8/YCk7Cit9KSgpOworKi8KKworLy8gRklYTUUgdGVzdCBzdGFydCBvZiBpbXBvcnQgb3Ig
dGFibGUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU2NTgKKwog
KGZ1bmN0aW9uIEVtcHR5Q29kZVNlY3Rpb24oKSB7CiAgICAgY29uc3QgYiA9IG5ldyBCdWlsZGVy
KCk7CiAgICAgYi5Db2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAzY2IyZDg2Li42
MzVkYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxNi0x
Mi0wOSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNz
ZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgc3RhcnQgZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTE1MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogd2FzbS9XYXNtRm9ybWF0Lmg6IHBhc3MgdGhl
IHN0YXJ0IGZ1bmN0aW9uIGFyb3VuZAorICAgICAgICAqIHdhc20vV2FzbU1vZHVsZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZVBhcnNlcjo6cGFyc2VUYWJsZSk6IG1hcmsg
dW5yZWFjaGFibGUgY29kZQorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNl
R2xvYmFsKTogbWFyayB1bnJlYWNoYWJsZSBjb2RlCisgICAgICAgIChKU0M6Oldhc206Ok1vZHVs
ZVBhcnNlcjo6cGFyc2VTdGFydCk6IG1hcmsgdW5yZWFjaGFibGUgY29kZQorICAgICAgICAoSlND
OjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlRWxlbWVudCk6IG1hcmsgdW5yZWFjaGFibGUgY29k
ZQorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlRGF0YSk6IG1hcmsgdW5y
ZWFjaGFibGUgY29kZQorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKTogTkZDOiBjYWxsIHRoZSBu
ZXcgZnVuY3Rpb24gYmVsb3cKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6Y2Fs
bCk6IHNlcGFyYXRlIHRoaXMgb3V0IHNvIHRoYXQgdGhlIHN0YXJ0IGZ1bmN0aW9uIGNhbiB1c2Ug
aXQKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaDoKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4pOiB2aXNpdCB0aGUgc3RhcnQgZnVuY3Rp
b24KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmspOiBoYW5kbGUg
c3RhcnQgZnVuY3Rpb24KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2
YWx1YXRlKTogY2FsbCB0aGUgc3RhcnQgZnVuY3Rpb24sIGlmIHByZXNlbnQKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmg6CisKIDIwMTYtMTItMDkgIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBp
bXBsZW1lbnQgaW1wb3J0aW5nIGFuZCBkZWZpbmluZyBNZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZvcm1hdC5jcHAKaW5kZXggNWUwYTYxYi4uMjY3YzU0YiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5jcHAKQEAgLTMzLDYgKzMzLDggQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorTW9kdWxlSW5mb3JtYXRpb246On5N
b2R1bGVJbmZvcm1hdGlvbigpIHsgfQorCiB9IH0gLy8gbmFtZXNwYWNlIEpTQzo6V2FzbQogCiAj
ZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2Fz
bUZvcm1hdC5oCmluZGV4IDgzODNkNGMuLmYwNDM1MTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
d2FzbS9XYXNtRm9ybWF0LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlICJXYXNtTWVtb3J5
SW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJXYXNtT3BzLmgiCiAjaW5jbHVkZSAiV2FzbVBhZ2VD
b3VudC5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMjMsNiArMTI0LDkgQEAgc3RydWN0IE1vZHVsZUlu
Zm9ybWF0aW9uIHsKICAgICBWZWN0b3I8U2lnbmF0dXJlKj4gaW50ZXJuYWxGdW5jdGlvblNpZ25h
dHVyZXM7CiAgICAgTWVtb3J5SW5mb3JtYXRpb24gbWVtb3J5OwogICAgIFZlY3RvcjxFeHBvcnQ+
IGV4cG9ydHM7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4gc3RhcnRGdW5jdGlvbkluZGV4
U3BhY2U7CisKKyAgICB+TW9kdWxlSW5mb3JtYXRpb24oKTsKIH07CiAKIHN0cnVjdCBVbmxpbmtl
ZFdhc21Ub1dhc21DYWxsIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L1dhc21Nb2R1bGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1v
ZHVsZVBhcnNlci5jcHAKaW5kZXggMzcyOThmOC4uOWRiMDhjOCAxMDA2NDQKLS0tIGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKQEAgLTMwMyw3ICszMDMsOCBA
QCBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvbigpCiAKIGJvb2wgTW9kdWxlUGFyc2Vy
OjpwYXJzZVRhYmxlKCkKIHsKLSAgICAvLyBGSVhNRQorICAgIC8vIEZJWE1FIGltcGxlbWVudCB0
YWJsZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0MTM1CisgICAg
UkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MzY1LDYgKzM2Niw3IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZU1lbW9yeSgpCiBib29sIE1v
ZHVsZVBhcnNlcjo6cGFyc2VHbG9iYWwoKQogewogICAgIC8vIEZJWE1FIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxMzMKKyAgICBSRUxFQVNFX0FTU0VSVF9OT1Rf
UkVBQ0hFRCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00MTUsMTMgKzQxNywyMiBAQCBi
b29sIE1vZHVsZVBhcnNlcjo6cGFyc2VFeHBvcnQoKQogCiBib29sIE1vZHVsZVBhcnNlcjo6cGFy
c2VTdGFydCgpCiB7Ci0gICAgLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTcwOQorICAgIHVpbnQzMl90IHN0YXJ0RnVuY3Rpb25JbmRleDsKKyAgICBp
ZiAoIXBhcnNlVmFyVUludDMyKHN0YXJ0RnVuY3Rpb25JbmRleCkKKyAgICAgICAgfHwgc3RhcnRG
dW5jdGlvbkluZGV4ID49IG1fZnVuY3Rpb25JbmRleFNwYWNlLnNpemUoKSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIFNpZ25hdHVyZSogc2lnbmF0dXJlID0gbV9mdW5jdGlvbkluZGV4U3Bh
Y2Vbc3RhcnRGdW5jdGlvbkluZGV4XS5zaWduYXR1cmU7CisgICAgaWYgKHNpZ25hdHVyZS0+YXJn
dW1lbnRzLnNpemUoKSAhPSAwCisgICAgICAgIHx8IHNpZ25hdHVyZS0+cmV0dXJuVHlwZSAhPSBW
b2lkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9tb2R1bGUtPnN0YXJ0RnVuY3Rpb25J
bmRleFNwYWNlID0gc3RhcnRGdW5jdGlvbkluZGV4OwogICAgIHJldHVybiB0cnVlOwogfQogCiBi
b29sIE1vZHVsZVBhcnNlcjo6cGFyc2VFbGVtZW50KCkKIHsKICAgICAvLyBGSVhNRSBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNzA5CisgICAgUkVMRUFTRV9BU1NF
UlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNDUwLDYgKzQ2MSw3
IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZUNvZGUoKQogYm9vbCBNb2R1bGVQYXJzZXI6OnBh
cnNlRGF0YSgpCiB7CiAgICAgLy8gRklYTUUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE2MTcwOQorICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAg
cmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20v
anMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggMTk0NzczMS4uMTA2ODAxYiAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlv
bi5jcHAKQEAgLTkyLDggKzkyLDIwIEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSogZXhlYykKICAgICAgICAgYXJn
Q291bnQgPSBib3hlZEFyZ3Muc2l6ZSgpOwogICAgIH0KIAorICAgIC8vIE5vdGU6IHdlIHNwZWNp
ZmljYWxseSB1c2UgdGhlIFdlYkFzc2VtYmx5RnVuY3Rpb24gYXMgdGhlIGNhbGxlZSB0byBiZWdp
biB3aXRoIGluIHRoZSBQcm90b0NhbGxGcmFtZS4KKyAgICAvLyBUaGUgcmVhc29uIGZvciB0aGlz
IGlzIHRoYXQgY2FsbGluZyBpbnRvIHRoZSBsbGludCBtYXkgc3RhY2sgb3ZlcmZsb3csIGFuZCB0
aGUgc3RhY2sgb3ZlcmZsb3cKKyAgICAvLyBoYW5kbGVyIG1pZ2h0IHJlYWQgdGhlIGdsb2JhbCBv
YmplY3QgZnJvbSB0aGUgY2FsbGVlLiBUaGUgSlNXZWJBc3NlbWJseUNhbGxlZSBkb2Vzbid0IGhh
dmUgYQorICAgIC8vIGdsb2JhbCBvYmplY3QsIGJ1dCB0aGUgV2ViQXNzZW1ibHlGdW5jdGlvbiBk
b2VzLgorICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOworICAgIHByb3RvQ2FsbEZy
YW1lLmluaXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBmaXJzdEFyZ3VtZW50LCBhcmdDb3VudCwg
cmVtYWluaW5nQXJncyk7CisKKyAgICByZXR1cm4gd2FzbUZ1bmN0aW9uLT5jYWxsKHZtLCAmcHJv
dG9DYWxsRnJhbWUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBXZWJBc3NlbWJseUZ1bmN0aW9uOjpj
YWxsKFZNJiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvQ2FsbEZyYW1lKQorewogICAgIC8vIFNl
dHVwIHRoZSBtZW1vcnkgdGhhdCB0aGUgZW50cmFuY2UgbG9hZHMuCi0gICAgaWYgKEpTV2ViQXNz
ZW1ibHlNZW1vcnkqIG1lbW9yeSA9IHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKS0+bWVtb3J5KCkp
IHsKKyAgICBpZiAoSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5ID0gaW5zdGFuY2UoKS0+bWVt
b3J5KCkpIHsKICAgICAgICAgV2FzbTo6TWVtb3J5KiB3YXNtTWVtb3J5ID0gbWVtb3J5LT5tZW1v
cnkoKTsKICAgICAgICAgdm0udG9wV2FzbU1lbW9yeVBvaW50ZXIgPSB3YXNtTWVtb3J5LT5tZW1v
cnkoKTsKICAgICAgICAgdm0udG9wV2FzbU1lbW9yeVNpemUgPSB3YXNtTWVtb3J5LT5zaXplKCk7
CkBAIC0xMDIsMjAgKzExNCwxMyBAQCBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FM
TCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4ZWMpCiAgICAgICAgIHZtLnRv
cFdhc21NZW1vcnlTaXplID0gMDsKICAgICB9CiAKLSAgICAvLyBOb3RlOiB3ZSBzcGVjaWZpY2Fs
bHkgdXNlIHRoZSBXZWJBc3NlYmx5RnVuY3Rpb24gYXMgdGhlIGNhbGxlZSB0byBiZWdpbiB3aXRo
IGluIHRoZSBQcm90b0NhbGxGcmFtZS4KLSAgICAvLyBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRo
YXQgY2FsbGluZyBpbnRvIHRoZSBsbGludCBtYXkgc3RhY2sgb3ZlcmZsb3csIGFuZCB0aGUgc3Rh
Y2sgb3ZlcmZsb3cKLSAgICAvLyBoYW5kbGVyIG1pZ2h0IHJlYWQgdGhlIGdsb2JhbCBvYmplY3Qg
ZnJvbSB0aGUgY2FsbGVlLiBUaGUgSlNXZWJBc3NlbWJseUNhbGxlZSBkb2Vzbid0IGhhdmUgYQot
ICAgIC8vIGdsb2JhbCBvYmplY3QsIGJ1dCB0aGUgV2ViQXNzZW1ibHlGdW5jdGlvbiBkb2VzLgot
ICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAgIHByb3RvQ2FsbEZyYW1lLmlu
aXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBmaXJzdEFyZ3VtZW50LCBhcmdDb3VudCwgcmVtYWlu
aW5nQXJncyk7Ci0gICAgCiAgICAgSlNXZWJBc3NlbWJseUluc3RhbmNlKiBwcmV2SlNXZWJBc3Nl
bWJseUluc3RhbmNlID0gdm0udG9wSlNXZWJBc3NlbWJseUluc3RhbmNlOwotICAgIHZtLnRvcEpT
V2ViQXNzZW1ibHlJbnN0YW5jZSA9IHdhc21GdW5jdGlvbi0+aW5zdGFuY2UoKTsKLSAgICBFbmNv
ZGVkSlNWYWx1ZSByYXdSZXN1bHQgPSB2bUVudHJ5VG9XYXNtKHdhc21GdW5jdGlvbi0+d2ViQXNz
ZW1ibHlDYWxsZWUoKS0+anNUb1dhc21FbnRyeVBvaW50KCksICZ2bSwgJnByb3RvQ2FsbEZyYW1l
KTsKKyAgICB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBpbnN0YW5jZSgpOworICAgIEVu
Y29kZWRKU1ZhbHVlIHJhd1Jlc3VsdCA9IHZtRW50cnlUb1dhc20od2ViQXNzZW1ibHlDYWxsZWUo
KS0+anNUb1dhc21FbnRyeVBvaW50KCksICZ2bSwgcHJvdG9DYWxsRnJhbWUpOwogICAgIHZtLnRv
cEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHByZXZKU1dlYkFzc2VtYmx5SW5zdGFuY2U7CiAKICAg
ICAvLyBGSVhNRSBpcyB0aGlzIGNvcnJlY3Q/IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjQ4NzYKLSAgICBzd2l0Y2ggKHNpZ25hdHVyZS0+cmV0dXJuVHlwZSkgewor
ICAgIHN3aXRjaCAoc2lnbmF0dXJlKCktPnJldHVyblR5cGUpIHsKICAgICBjYXNlIFdhc206OlZv
aWQ6CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CiAgICAg
Y2FzZSBXYXNtOjpJMzI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9q
cy9XZWJBc3NlbWJseUZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9X
ZWJBc3NlbWJseUZ1bmN0aW9uLmgKaW5kZXggN2NjNTYyYy4uMmNiZjg1MiAxMDA2NDQKLS0tIGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5oCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaApAQCAt
MzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3MgSlNHbG9iYWxPYmplY3Q7CiBj
bGFzcyBKU1dlYkFzc2VtYmx5Q2FsbGVlOworc3RydWN0IFByb3RvQ2FsbEZyYW1lOwogY2xhc3Mg
V2ViQXNzZW1ibHlJbnN0YW5jZTsKIAogbmFtZXNwYWNlIEIzIHsKQEAgLTYyLDYgKzYzLDcgQEAg
cHVibGljOgogICAgICAgICBBU1NFUlQobV9zaWduYXR1cmUpOwogICAgICAgICByZXR1cm4gbV9z
aWduYXR1cmU7CiAgICAgfQorICAgIEVuY29kZWRKU1ZhbHVlIGNhbGwoVk0mLCBQcm90b0NhbGxG
cmFtZSopOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJlbihKU0Nl
bGwqLCBTbG90VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dh
c20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmluZGV4IDM0ODBhNTAuLjU2OWZi
YzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5
TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTM0LDggKzM0LDEwIEBACiAjaW5jbHVkZSAiSlNN
b2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlJbnN0YW5jZS5oIgog
I2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNsdWRlICJQcm90b0NhbGxGcmFt
ZS5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRlICJXZWJBc3NlbWJseUZ1bmN0
aW9uLmgiCisjaW5jbHVkZSA8bGltaXRzPgogCiBuYW1lc3BhY2UgSlNDIHsKIApAQCAtOTYsNiAr
OTgsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjp2aXNpdENoaWxkcmVuKEpTQ2Vs
bCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQqPihjZWxsKTsK
ICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZpc2l0b3IpOwogICAgIHZpc2l0
b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luc3RhbmNlKTsKKyAgICB2aXNpdG9yLmFwcGVuZCgm
dGhpc09iamVjdC0+bV9zdGFydEZ1bmN0aW9uKTsKIH0KIAogdm9pZCBXZWJBc3NlbWJseU1vZHVs
ZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIHN0YXRlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGlu
c3RhbmNlKQpAQCAtMTA3LDYgKzExMCwxMCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3Jk
OjpsaW5rKEV4ZWNTdGF0ZSogc3RhdGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdAogCiAg
ICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0gaW5zdGFuY2UtPm1vZHVsZSgpOwogICAg
IGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJbmZvcm1hdGlvbiA9IG1vZHVs
ZS0+bW9kdWxlSW5mb3JtYXRpb24oKTsKKworICAgIGJvb2wgaGFzU3RhcnQgPSAhIW1vZHVsZUlu
Zm9ybWF0aW9uLnN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlOworICAgIGF1dG8gc3RhcnRGdW5jdGlv
bkluZGV4U3BhY2UgPSBtb2R1bGVJbmZvcm1hdGlvbi5zdGFydEZ1bmN0aW9uSW5kZXhTcGFjZS52
YWx1ZV9vcigwKTsKKwogICAgIFN5bWJvbFRhYmxlKiBleHBvcnRTeW1ib2xUYWJsZSA9IG1vZHVs
ZS0+ZXhwb3J0U3ltYm9sVGFibGUoKTsKICAgICB1bnNpZ25lZCBpbXBvcnRDb3VudCA9IG1vZHVs
ZS0+aW1wb3J0Q291bnQoKTsKIApAQCAtMTMzLDYgKzE0MCw4IEBAIHZvaWQgV2ViQXNzZW1ibHlN
b2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBzdGF0ZSwgSlNXZWJBc3NlbWJseUluc3RhbmNl
KiBpbnN0CiAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1vZHVsZS0+
c2lnbmF0dXJlRm9yRnVuY3Rpb25JbmRleFNwYWNlKGV4cC5mdW5jdGlvbkluZGV4KTsKICAgICAg
ICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlv
bjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS0+YXJndW1lbnRzLnNpemUoKSwg
ZXhwLmZpZWxkLnN0cmluZygpLCBpbnN0YW5jZSwgd2FzbUNhbGxlZSwgc2lnbmF0dXJlKTsKICAg
ICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBmdW5jdGlvbjsKKyAgICAgICAgICAgIGlmIChoYXNT
dGFydCAmJiBzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSA9PSBleHAuZnVuY3Rpb25JbmRleCkKKyAg
ICAgICAgICAgICAgICBtX3N0YXJ0RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBmdW5jdGlvbik7CiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIFdhc206OkV4dGVybmFs
OjpUYWJsZTogewpAQCAtMTU3LDYgKzE2NiwyMCBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkOjpsaW5rKEV4ZWNTdGF0ZSogc3RhdGUsIEpTV2ViQXNzZW1ibHlJbnN0YW5jZSogaW5zdAog
ICAgICAgICBSRUxFQVNFX0FTU0VSVChwdXRSZXN1bHQpOwogICAgIH0KIAorICAgIGlmIChoYXNT
dGFydCkgeworICAgICAgICBXYXNtOjpTaWduYXR1cmUqIHNpZ25hdHVyZSA9IG1vZHVsZS0+c2ln
bmF0dXJlRm9yRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlKTsKKyAg
ICAgICAgLy8gVGhlIHN0YXJ0IGZ1bmN0aW9uIG11c3Qgbm90IHRha2UgYW55IGFyZ3VtZW50cyBv
ciByZXR1cm4gYW55dGhpbmcuIFRoaXMgaXMgZW5mb3JjZWQgYnkgdGhlIHBhcnNlci4KKyAgICAg
ICAgQVNTRVJUKCFzaWduYXR1cmUtPmFyZ3VtZW50cy5zaXplKCkpOworICAgICAgICBBU1NFUlQo
c2lnbmF0dXJlLT5yZXR1cm5UeXBlID09IFdhc206OlZvaWQpOworICAgICAgICAvLyBGSVhNRSBj
YW4gc3RhcnQgY2FsbCBpbXBvcnRzIC8gdGFibGVzPyBUaGlzIGFzc3VtZXMgbm90LiBodHRwczov
L2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2lzc3Vlcy84OTYKKyAgICAgICAgaWYgKCFt
X3N0YXJ0RnVuY3Rpb24uZ2V0KCkpIHsKKyAgICAgICAgICAgIC8vIFRoZSBzdGFydCBmdW5jdGlv
biB3YXNuJ3QgYWRkZWQgYWJvdmUuIEl0IG11c3QgYmUgYSBwdXJlbHkgaW50ZXJuYWwgZnVuY3Rp
b24uCisgICAgICAgICAgICBKU1dlYkFzc2VtYmx5Q2FsbGVlKiB3YXNtQ2FsbGVlID0gbW9kdWxl
LT5jYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlKTsK
KyAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0gV2ViQXNzZW1ibHlG
dW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS0+YXJndW1lbnRzLnNp
emUoKSwgInN0YXJ0IiwgaW5zdGFuY2UsIHdhc21DYWxsZWUsIHNpZ25hdHVyZSk7CisgICAgICAg
ICAgICBtX3N0YXJ0RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBmdW5jdGlvbik7CisgICAgICAgIH0K
KyAgICB9CisKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YW5jZSk7CiAgICAgbV9pbnN0YW5j
ZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKICAgICBtX21vZHVsZUVudmlyb25tZW50LnNldCh2
bSwgdGhpcywgbW9kdWxlRW52aXJvbm1lbnQpOwpAQCAtMTY0LDEwICsxODcsMTQgQEAgdm9pZCBX
ZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIHN0YXRlLCBKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2UqIGluc3QKIAogSlNWYWx1ZSBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6ZXZh
bHVhdGUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICAvLyBGSVhNRSB0aGlzIHNob3VsZCBjYWxs
IHRoZSBtb2R1bGUncyBgc3RhcnRgIGZ1bmN0aW9uLCBpZiBhbnkuIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUxNTAKLSAgICAvLyBodHRwczovL2dpdGh1Yi5jb20v
V2ViQXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL01vZHVsZXMubWQjbW9kdWxlLXN0YXJ0LWZ1
bmN0aW9uCi0gICAgLy8gVGhlIHN0YXJ0IGZ1bmN0aW9uIG11c3Qgbm90IHRha2UgYW55IGFyZ3Vt
ZW50cyBvciByZXR1cm4gYW55dGhpbmcKLSAgICBVTlVTRURfUEFSQU0oc3RhdGUpOworICAgIGlm
IChXZWJBc3NlbWJseUZ1bmN0aW9uKiBzdGFydEZ1bmN0aW9uID0gbV9zdGFydEZ1bmN0aW9uLmdl
dCgpKSB7CisgICAgICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOworICAgICAgICBhdXRvIHNjb3Bl
ID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIFByb3RvQ2FsbEZyYW1lIHByb3Rv
Q2FsbEZyYW1lOworICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0KG51bGxwdHIsIHN0YXJ0RnVu
Y3Rpb24sIEpTVmFsdWUoKSwgMSwgbnVsbHB0cik7CisgICAgICAgIHN0YXJ0RnVuY3Rpb24tPmNh
bGwodm0sICZwcm90b0NhbGxGcmFtZSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIHsgfSk7CisgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29y
ZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNv
cmQuaAppbmRleCBhMDJmOWVkLi40ZTcwZTc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmgKQEAgLTMzLDYgKzMz
LDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU1dlYkFzc2VtYmx5SW5zdGFuY2U7Citj
bGFzcyBXZWJBc3NlbWJseUZ1bmN0aW9uOwogCiAvLyBCYXNlZCBvbiB0aGUgV2ViQXNzZW1ibHku
SW5zdGFuY2Ugc3BlY2lmaWNhdGlvbgogLy8gaHR0cHM6Ly9naXRodWIuY29tL1dlYkFzc2VtYmx5
L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZCN3ZWJhc3NlbWJseWluc3RhbmNlLWNvbnN0cnVjdG9y
CkBAIC01OCw2ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGljIHZvaWQgdmlzaXRDaGlsZHJl
bihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgV3JpdGVCYXJyaWVyPEpTV2ViQXNzZW1i
bHlJbnN0YW5jZT4gbV9pbnN0YW5jZTsKKyAgICBXcml0ZUJhcnJpZXI8V2ViQXNzZW1ibHlGdW5j
dGlvbj4gbV9zdGFydEZ1bmN0aW9uOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSlNDCi0tIAoyLjEw
LjEKCg==
</data>
<flag name="commit-queue"
          id="319123"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>296731</attachid>
            <date>2016-12-09 16:06:31 -0800</date>
            <delta_ts>2016-12-09 18:34:33 -0800</delta_ts>
            <desc>patch</desc>
            <filename>0001-start.patch</filename>
            <type>text/plain</type>
            <size>21967</size>
            <attacher name="JF Bastien">jfbastien</attacher>
            
              <data encoding="base64">RnJvbSBkZjdhYzYxNjNkZDc0Mjg3NTljMDhmNWQ1N2RlZjhhNzVkNzdhNzI0IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBKRiBCYXN0aWVuIDxqZmJhc3RpZW5AYXBwbGUuY29tPgpEYXRl
OiBUaHUsIDggRGVjIDIwMTYgMjI6MTI6MDggLTA4MDAKU3ViamVjdDogW1BBVENIXSBzdGFydAoK
LS0tCiBKU1Rlc3RzL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8
IDEzICsrKysrKwogSlNUZXN0cy93YXNtL0J1aWxkZXIuanMgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgfCAyOSArKysrKysrKysrKy0KIEpTVGVzdHMvd2FzbS9CdWlsZGVyX1dlYkFzc2VtYmx5
QmluYXJ5LmpzICAgICAgICAgIHwgIDQgKy0KIEpTVGVzdHMvd2FzbS9qcy1hcGkvdGVzdF9TdGFy
dC5qcyAgICAgICAgICAgICAgICAgIHwgMzUgKysrKysrKysrKysrKysrCiBKU1Rlc3RzL3dhc20v
c2VsZi10ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMgICAgICAgICB8IDUxICsrKysrKysrKysrKysr
KysrKysrKysKIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgICAgICAgICAgICAgICAg
ICAgIHwgMjQgKysrKysrKysrKwogU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1h
dC5jcHAgICAgICAgICAgfCAgMiArCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9y
bWF0LmggICAgICAgICAgICB8ICA0ICsrCiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNt
TW9kdWxlUGFyc2VyLmNwcCAgICB8IDE2ICsrKysrKy0KIC4uLi9KYXZhU2NyaXB0Q29yZS93YXNt
L2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIHwgMjcgKysrKysrKy0tLS0tCiAuLi4vSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmggICB8ICAyICsKIC4uLi93YXNt
L2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcCAgICAgICAgICAgIHwgMzUgKysrKysrKysr
KysrKy0tCiAuLi4vd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5oICAgICAgICAgICAg
ICB8ICAyICsKIDEzIGZpbGVzIGNoYW5nZWQsIDIyNCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlv
bnMoLSkKIGNyZWF0ZSBtb2RlIDEwMDY0NCBKU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfU3RhcnQu
anMKCmRpZmYgLS1naXQgYS9KU1Rlc3RzL0NoYW5nZUxvZyBiL0pTVGVzdHMvQ2hhbmdlTG9nCmlu
ZGV4IDkwN2ExYTQuLjQyNjZkM2UgMTAwNjQ0Ci0tLSBhL0pTVGVzdHMvQ2hhbmdlTG9nCisrKyBi
L0pTVGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTYtMTItMDkgIEpGIEJhc3Rp
ZW4gIDxqZmJhc3RpZW5AYXBwbGUuY29tPgorCisgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTog
aW1wbGVtZW50IHN0YXJ0IGZ1bmN0aW9uCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjUxNTAKKworICAgICAgICBSZXZpZXdlZCBieSBTYWFtIEJhcmF0
aS4KKworICAgICAgICAqIHdhc20vQnVpbGRlci5qczogYWxsb3cgYnVpbGRpbmcgYSAuU3RhcnQo
KQorICAgICAgICAqIHdhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qczoKKyAgICAgICAg
KiB3YXNtL2pzLWFwaS90ZXN0X1N0YXJ0LmpzOiBBZGRlZC4KKyAgICAgICAgKGNvbnN0LmVtaXR0
ZXJzLlN0YXJ0KTogc2VyaWFsaXplIGEgc3RhcnQgc2VjdGlvbgorICAgICAgICAqIHdhc20vc2Vs
Zi10ZXN0L3Rlc3RfQnVpbGRlckpTT04uanM6IHZhbGlkYXRlIHRoZSBzdGFydCBzZWN0aW9uJ3Mg
Y29udGVudAorCiAyMDE2LTEyLTA5ICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgog
CiAgICAgICAgIFdlYkFzc2VtYmx5IEpTIEFQSTogaW1wbGVtZW50IGltcG9ydGluZyBhbmQgZGVm
aW5pbmcgTWVtb3J5CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vQnVpbGRlci5qcyBiL0pTVGVz
dHMvd2FzbS9CdWlsZGVyLmpzCmluZGV4IDI2ODRlOTMuLmExZjgwYjcgMTAwNjQ0Ci0tLSBhL0pT
VGVzdHMvd2FzbS9CdWlsZGVyLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9CdWlsZGVyLmpzCkBAIC00
MzcsOCArNDM3LDE2IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxkZXIgewogICAgICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICBjYXNlICJTdGFydCI6Ci0gICAgICAgICAgICAg
ICAgLy8gRklYTUUgaW1wbGVtZW50IHN0YXJ0IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNjE3MDkKLSAgICAgICAgICAgICAgICB0aGlzW3NlY3Rpb25dID0gKCkgPT4g
eyB0aHJvdyBuZXcgRXJyb3IoYFVuaW1wbGVtZW50ZWQ6IHNlY3Rpb24gdHlwZSAiJHtzZWN0aW9u
fSJgKTsgfTsKKyAgICAgICAgICAgICAgICB0aGlzW3NlY3Rpb25dID0gZnVuY3Rpb24oZnVuY3Rp
b25JbmRleE9yTmFtZSkgeworICAgICAgICAgICAgICAgICAgICBjb25zdCBzID0gdGhpcy5fYWRk
U2VjdGlvbihzZWN0aW9uKTsKKyAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RhcnRCdWlsZGVy
ID0geworICAgICAgICAgICAgICAgICAgICAgICAgRW5kOiAoKSA9PiB0aGlzLAorICAgICAgICAg
ICAgICAgICAgICB9OworICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mKGZ1bmN0aW9uSW5k
ZXhPck5hbWUpICE9PSAibnVtYmVyIiAmJiB0eXBlb2YoZnVuY3Rpb25JbmRleE9yTmFtZSkgIT09
ICJzdHJpbmciKQorICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKGBTdGFy
dCBzZWN0aW9uJ3MgZnVuY3Rpb24gaW5kZXggIG11c3QgZWl0aGVyIGJlIGEgbnVtYmVyIG9yIGEg
c3RyaW5nYCk7CisgICAgICAgICAgICAgICAgICAgIHMuZGF0YS5wdXNoKGZ1bmN0aW9uSW5kZXhP
ck5hbWUpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3RhcnRCdWlsZGVyOworICAgICAg
ICAgICAgICAgIH07CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2Ug
IkVsZW1lbnQiOgpAQCAtNDU2LDYgKzQ2NCw3IEBAIGV4cG9ydCBkZWZhdWx0IGNsYXNzIEJ1aWxk
ZXIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5cGVTZWN0aW9uID0gYnVp
bGRlci5fZ2V0U2VjdGlvbigiVHlwZSIpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IGltcG9ydFNlY3Rpb24gPSBidWlsZGVyLl9nZXRTZWN0aW9uKCJJbXBvcnQiKTsKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBleHBvcnRTZWN0aW9uID0gYnVpbGRlci5fZ2V0
U2VjdGlvbigiRXhwb3J0Iik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rh
cnRTZWN0aW9uID0gYnVpbGRlci5fZ2V0U2VjdGlvbigiU3RhcnQiKTsKICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBjb2RlU2VjdGlvbiA9IHM7CiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgaWYgKGV4cG9ydFNlY3Rpb24pIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZm9yIChjb25zdCBlIG9mIGV4cG9ydFNlY3Rpb24uZGF0YSkgewpAQCAtNDg4LDYgKzQ5
NywyMiBAQCBleHBvcnQgZGVmYXVsdCBjbGFzcyBCdWlsZGVyIHsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpZiAoc3RhcnRTZWN0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IHN0YXJ0ID0gc3RhcnRTZWN0aW9uLmRhdGFbMF07CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGxldCBtYXBwZWQgPSBidWlsZGVyLl9nZXRGdW5jdGlvbkZyb21JbmRleFNwYWNl
KHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCFidWlsZGVyLl9j
aGVja2VkKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9m
KG1hcHBlZCkgPT09ICJ1bmRlZmluZWQiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1hcHBlZCA9IHN0YXJ0OyAvLyBJbiB1bmNoZWNrZWQgbW9kZSwgc2ltcGx5IHVz
ZSB3aGF0IHdhcyBwcm92aWRlZCBpZiBpdCdzIG5vbnNlbnNpY2FsLgorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0LmlzQShzdGFydCwgIm51bWJlciIpOyAvLyBJdCBj
YW4ndCBiZSB0b28gbm9uc2Vuc2ljYWwsIG90aGVyd2lzZSB3ZSBjYW4ndCBjcmVhdGUgYSBiaW5h
cnkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydFNlY3Rpb24uZGF0
YVswXSA9IHN0YXJ0OworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZihtYXBwZWQpID09
PSAidW5kZWZpbmVkIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0
aHJvdyBuZXcgRXJyb3IoYFN0YXJ0IHNlY3Rpb24gcmVmZXJzIHRvIG5vbi1leGlzdGFudCBmdW5j
dGlvbiAnJHtzdGFydH0nYCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBp
ZiAodHlwZW9mKHN0YXJ0KSA9PT0gInN0cmluZyIgfHwgdHlwZW9mKHN0YXJ0KSA9PT0gIm9iamVj
dCIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnRTZWN0aW9u
LmRhdGFbMF0gPSBtYXBwZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAv
LyBGSVhNRSBpbiBjaGVja2VkIG1vZGUsIHRlc3QgdGhhdCB0aGUgdHlwZSBpcyBhY2NlcHRhYmxl
IGZvciBzdGFydCBmdW5jdGlvbi4gV2UgcHJvYmFibHkgd2FudCBfcmVnaXN0ZXJGdW5jdGlvblRv
SW5kZXhTcGFjZSB0byBhbHNvIHJlZ2lzdGVyIHR5cGVzIHBlciBpbmRleC4gaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTY1OAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBidWlsZGVyOwogICAgICAgICAgICAgICAgICAgICAgICAg
fSwKIApkaWZmIC0tZ2l0IGEvSlNUZXN0cy93YXNtL0J1aWxkZXJfV2ViQXNzZW1ibHlCaW5hcnku
anMgYi9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5qcwppbmRleCBiMTli
OGI2Li5hODU2YjRkIDEwMDY0NAotLS0gYS9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJs
eUJpbmFyeS5qcworKysgYi9KU1Rlc3RzL3dhc20vQnVpbGRlcl9XZWJBc3NlbWJseUJpbmFyeS5q
cwpAQCAtMTE1LDcgKzExNSw5IEBAIGNvbnN0IGVtaXR0ZXJzID0gewogICAgICAgICAgICAgfQog
ICAgICAgICB9CiAgICAgfSwKLSAgICBTdGFydDogKHNlY3Rpb24sIGJpbikgPT4geyB0aHJvdyBu
ZXcgRXJyb3IoYE5vdCB5ZXQgaW1wbGVtZW50ZWRgKTsgfSwKKyAgICBTdGFydDogKHNlY3Rpb24s
IGJpbikgPT4geworICAgICAgICBwdXQoYmluLCAidmFydWludDMyIiwgc2VjdGlvbi5kYXRhWzBd
KTsKKyAgICB9LAogICAgIEVsZW1lbnQ6IChzZWN0aW9uLCBiaW4pID0+IHsgdGhyb3cgbmV3IEVy
cm9yKGBOb3QgeWV0IGltcGxlbWVudGVkYCk7IH0sCiAKICAgICBDb2RlOiAoc2VjdGlvbiwgYmlu
KSA9PiB7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfU3RhcnQuanMgYi9K
U1Rlc3RzL3dhc20vanMtYXBpL3Rlc3RfU3RhcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMC4uMDVkNjE5ZAotLS0gL2Rldi9udWxsCisrKyBiL0pTVGVzdHMvd2FzbS9qcy1h
cGkvdGVzdF9TdGFydC5qcwpAQCAtMCwwICsxLDM1IEBACitpbXBvcnQgKiBhcyBhc3NlcnQgZnJv
bSAnLi4vYXNzZXJ0LmpzJzsKK2ltcG9ydCBCdWlsZGVyIGZyb20gJy4uL0J1aWxkZXIuanMnOwor
CisoZnVuY3Rpb24gU3RhcnROYW1lZEZ1bmN0aW9uKCkgeworICAgIGNvbnN0IGIgPSAobmV3IEJ1
aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuSW1wb3J0KCkKKyAgICAg
ICAgICAgIC5GdW5jdGlvbigiaW1wIiwgImZ1bmMiLCB7IHBhcmFtczogWyJpMzIiXSB9KQorICAg
ICAgICAuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJm
b28iKS5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rpb24oImZvbyIs
IHsgcGFyYW1zOiBbXSB9KQorICAgICAgICAgICAgICAgIC5JMzJDb25zdCg0MikKKyAgICAgICAg
ICAgICAgICAuQ2FsbCgwKSAvLyBDYWxscyBmdW5jKDQyKS4KKyAgICAgICAgICAgIC5FbmQoKQor
ICAgICAgICAuRW5kKCk7CisgICAgY29uc3QgYmluID0gYi5XZWJBc3NlbWJseSgpLmdldCgpOwor
ICAgIGNvbnN0IG1vZHVsZSA9IG5ldyBXZWJBc3NlbWJseS5Nb2R1bGUoYmluKTsKKyAgICBsZXQg
dmFsdWUgPSAwOworICAgIGNvbnN0IHNldHRlciA9IHYgPT4gdmFsdWUgPSB2OworICAgIGNvbnN0
IGluc3RhbmNlID0gbmV3IFdlYkFzc2VtYmx5Lkluc3RhbmNlKG1vZHVsZSwgeyBpbXA6IHsgZnVu
Yzogc2V0dGVyIH0gfSk7CisgICAgYXNzZXJ0LmVxKHZhbHVlLCA0Mik7Cit9KSgpOworCisoZnVu
Y3Rpb24gSW52YWxpZFN0YXJ0RnVuY3Rpb25JbmRleCgpIHsKKyAgICBjb25zdCBiID0gKG5ldyBC
dWlsZGVyKCkpCisgICAgICAgIC5zZXRDaGVja2VkKGZhbHNlKQorICAgICAgICAuVHlwZSgpLkVu
ZCgpCisgICAgICAgIC5GdW5jdGlvbigpLkVuZCgpCisgICAgICAgIC5TdGFydCgwKS5FbmQoKSAv
LyBJbnZhbGlkIGluZGV4LgorICAgICAgICAuQ29kZSgpLkVuZCgpOworICAgIGNvbnN0IGJpbiA9
IGIuV2ViQXNzZW1ibHkoKS5nZXQoKTsKKyAgICBhc3NlcnQudGhyb3dzKCgpID0+IG5ldyBXZWJB
c3NlbWJseS5Nb2R1bGUoYmluKSwgRXJyb3IsIGBjb3VsZG4ndCBwYXJzZSBzZWN0aW9uIFN0YXJ0
OiBTdGFydCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAoZXZhbHVhdGluZyAnbmV3IFdlYkFzc2VtYmx5
Lk1vZHVsZShiaW4pJylgKTsKK30pKCk7CmRpZmYgLS1naXQgYS9KU1Rlc3RzL3dhc20vc2VsZi10
ZXN0L3Rlc3RfQnVpbGRlckpTT04uanMgYi9KU1Rlc3RzL3dhc20vc2VsZi10ZXN0L3Rlc3RfQnVp
bGRlckpTT04uanMKaW5kZXggMDU1YWFmNi4uYjM5MjllYyAxMDA2NDQKLS0tIGEvSlNUZXN0cy93
YXNtL3NlbGYtdGVzdC90ZXN0X0J1aWxkZXJKU09OLmpzCisrKyBiL0pTVGVzdHMvd2FzbS9zZWxm
LXRlc3QvdGVzdF9CdWlsZGVySlNPTi5qcwpAQCAtMjQxLDYgKzI0MSw1NyBAQCBjb25zdCBhc3Nl
cnRPcFRocm93cyA9IChvcEZuLCBtZXNzYWdlKSA9PiB7CiAgICAgYXNzZXJ0LnRocm93cygoKSA9
PiBlLkZ1bmN0aW9uKCJmb28iLCAwLCB7IHBhcmFtczogWyJpMzIiXSB9KSwgRXJyb3IsIGBOb3Qg
dGhlIHNhbWU6ICIxIiBhbmQgIjAiOiBSZS1leHBvcnRpbmcgaW1wb3J0ICJiYXIiIGFzICJmb28i
IGhhcyBtaXNtYXRjaGluZyB0eXBlYCk7CiB9KSgpOwogCisoZnVuY3Rpb24gU3RhcnRJbnZhbGlk
TnVtYmVyZWRGdW5jdGlvbigpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAg
ICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0
YXJ0KDApLkVuZCgpCisgICAgYXNzZXJ0LnRocm93cygoKSA9PiBiLkNvZGUoKS5FbmQoKSwgRXJy
b3IsIGBTdGFydCBzZWN0aW9uIHJlZmVycyB0byBub24tZXhpc3RhbnQgZnVuY3Rpb24gJzAnYCk7
Cit9KSgpOworCisoZnVuY3Rpb24gU3RhcnRJbnZhbGlkTmFtZWRGdW5jdGlvbigpIHsKKyAgICBj
b25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAg
LkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJmb28iKS5FbmQoKTsKKyAgICBhc3Nl
cnQudGhyb3dzKCgpID0+IGIuQ29kZSgpLkVuZCgpLCBFcnJvciwgYFN0YXJ0IHNlY3Rpb24gcmVm
ZXJzIHRvIG5vbi1leGlzdGFudCBmdW5jdGlvbiAnZm9vJ2ApOworfSkoKTsKKworKGZ1bmN0aW9u
IFN0YXJ0TmFtZWRGdW5jdGlvbigpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisg
ICAgICAgIC5UeXBlKCkuRW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAg
LlN0YXJ0KCJmb28iKS5FbmQoKQorICAgICAgICAuQ29kZSgpCisgICAgICAgICAgICAuRnVuY3Rp
b24oImZvbyIsIHsgcGFyYW1zOiBbXSB9KS5FbmQoKQorICAgICAgICAuRW5kKCk7CisgICAgY29u
c3QgaiA9IEpTT04ucGFyc2UoYi5qc29uKCkpOworICAgIGFzc2VydC5lcShqLnNlY3Rpb24ubGVu
Z3RoLCA0KTsKKyAgICBhc3NlcnQuZXEoai5zZWN0aW9uWzJdLm5hbWUsICJTdGFydCIpOworICAg
IGFzc2VydC5lcShqLnNlY3Rpb25bMl0uZGF0YS5sZW5ndGgsIDEpOworICAgIGFzc2VydC5lcShq
LnNlY3Rpb25bMl0uZGF0YVswXSwgMCk7Cit9KSgpOworCisvKiBGSVhNRSBpbXBsZW1lbnQgY2hl
Y2tpbmcgb2Ygc2lnbmF0dXJlIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xNjU2NTgKKyhmdW5jdGlvbiBTdGFydEludmFsaWRUeXBlQXJnKCkgeworICAgIGNvbnN0IGIg
PSAobmV3IEJ1aWxkZXIoKSkKKyAgICAgICAgLlR5cGUoKS5FbmQoKQorICAgICAgICAuRnVuY3Rp
b24oKS5FbmQoKQorICAgICAgICAuU3RhcnQoImZvbyIpLkVuZCgpCisgICAgYXNzZXJ0LnRocm93
cygoKSA9PiBiLkNvZGUoKS5GdW5jdGlvbigiZm9vIiwgeyBwYXJhbXM6IFsiaTMyIl0gfSkuRW5k
KCksIEVycm9yLCBgPz8/YCk7Cit9KSgpOworCisoZnVuY3Rpb24gU3RhcnRJbnZhbGlkVHlwZVJl
dHVybigpIHsKKyAgICBjb25zdCBiID0gKG5ldyBCdWlsZGVyKCkpCisgICAgICAgIC5UeXBlKCku
RW5kKCkKKyAgICAgICAgLkZ1bmN0aW9uKCkuRW5kKCkKKyAgICAgICAgLlN0YXJ0KCJmb28iKS5F
bmQoKQorICAgIGFzc2VydC50aHJvd3MoKCkgPT4gYi5Db2RlKCkuRnVuY3Rpb24oImZvbyIsIHsg
cGFyYW1zOiBbXSwgcmV0OiAiaTMyIiB9KS5JMzJDb25zdCg0MikuUmV0KCkuRW5kKCksIEVycm9y
LCBgPz8/YCk7Cit9KSgpOworKi8KKworLy8gRklYTUUgdGVzdCBzdGFydCBvZiBpbXBvcnQgb3Ig
dGFibGUuIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU2NTgKKwog
KGZ1bmN0aW9uIEVtcHR5Q29kZVNlY3Rpb24oKSB7CiAgICAgY29uc3QgYiA9IG5ldyBCdWlsZGVy
KCk7CiAgICAgYi5Db2RlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hh
bmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAzY2IyZDg2Li42
MzVkYTc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCisrKyBi
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxNi0x
Mi0wOSAgSkYgQmFzdGllbiAgPGpmYmFzdGllbkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViQXNz
ZW1ibHkgSlMgQVBJOiBpbXBsZW1lbnQgc3RhcnQgZnVuY3Rpb24KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTE1MAorCisgICAgICAgIFJldmlld2Vk
IGJ5IFNhYW0gQmFyYXRpLgorCisgICAgICAgICogd2FzbS9XYXNtRm9ybWF0Lmg6IHBhc3MgdGhl
IHN0YXJ0IGZ1bmN0aW9uIGFyb3VuZAorICAgICAgICAqIHdhc20vV2FzbU1vZHVsZVBhcnNlci5j
cHA6CisgICAgICAgIChKU0M6Oldhc206Ok1vZHVsZVBhcnNlcjo6cGFyc2VUYWJsZSk6IG1hcmsg
dW5yZWFjaGFibGUgY29kZQorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNl
R2xvYmFsKTogbWFyayB1bnJlYWNoYWJsZSBjb2RlCisgICAgICAgIChKU0M6Oldhc206Ok1vZHVs
ZVBhcnNlcjo6cGFyc2VTdGFydCk6IG1hcmsgdW5yZWFjaGFibGUgY29kZQorICAgICAgICAoSlND
OjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlRWxlbWVudCk6IG1hcmsgdW5yZWFjaGFibGUgY29k
ZQorICAgICAgICAoSlNDOjpXYXNtOjpNb2R1bGVQYXJzZXI6OnBhcnNlRGF0YSk6IG1hcmsgdW5y
ZWFjaGFibGUgY29kZQorICAgICAgICAqIHdhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHA6
CisgICAgICAgIChKU0M6OmNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKTogTkZDOiBjYWxsIHRoZSBu
ZXcgZnVuY3Rpb24gYmVsb3cKKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlGdW5jdGlvbjo6Y2Fs
bCk6IHNlcGFyYXRlIHRoaXMgb3V0IHNvIHRoYXQgdGhlIHN0YXJ0IGZ1bmN0aW9uIGNhbiB1c2Ug
aXQKKyAgICAgICAgKiB3YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uaDoKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcDoKKyAgICAgICAgKEpTQzo6V2ViQXNz
ZW1ibHlNb2R1bGVSZWNvcmQ6OnZpc2l0Q2hpbGRyZW4pOiB2aXNpdCB0aGUgc3RhcnQgZnVuY3Rp
b24KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmspOiBoYW5kbGUg
c3RhcnQgZnVuY3Rpb24KKyAgICAgICAgKEpTQzo6V2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmV2
YWx1YXRlKTogY2FsbCB0aGUgc3RhcnQgZnVuY3Rpb24sIGlmIHByZXNlbnQKKyAgICAgICAgKiB3
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmg6CisKIDIwMTYtMTItMDkgIFNhYW0gQmFy
YXRpICA8c2JhcmF0aUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViQXNzZW1ibHkgSlMgQVBJOiBp
bXBsZW1lbnQgaW1wb3J0aW5nIGFuZCBkZWZpbmluZyBNZW1vcnkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL3dhc20vV2FzbUZvcm1hdC5jcHAKaW5kZXggNWUwYTYxYi4uZTQyMGI4MyAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5jcHAKKysrIGIvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5jcHAKQEAgLTMzLDYgKzMzLDggQEAKIAog
bmFtZXNwYWNlIEpTQyB7IG5hbWVzcGFjZSBXYXNtIHsKIAorSlNfRVhQT1JUX1BSSVZBVEUgTW9k
dWxlSW5mb3JtYXRpb246On5Nb2R1bGVJbmZvcm1hdGlvbigpIHsgfQorCiB9IH0gLy8gbmFtZXNw
YWNlIEpTQzo6V2FzbQogCiAjZW5kaWYgLy8gRU5BQkxFKFdFQkFTU0VNQkxZKQpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL3dhc20vV2FzbUZvcm1hdC5oCmluZGV4IDgzODNkNGMuLmYwNDM1MTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL1dhc21Gb3JtYXQuaAorKysgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvd2FzbS9XYXNtRm9ybWF0LmgKQEAgLTM1LDYgKzM1LDcgQEAKICNp
bmNsdWRlICJXYXNtTWVtb3J5SW5mb3JtYXRpb24uaCIKICNpbmNsdWRlICJXYXNtT3BzLmgiCiAj
aW5jbHVkZSAiV2FzbVBhZ2VDb3VudC5oIgorI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgogI2lu
Y2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIEpTQyB7CkBAIC0xMjMsNiArMTI0LDkg
QEAgc3RydWN0IE1vZHVsZUluZm9ybWF0aW9uIHsKICAgICBWZWN0b3I8U2lnbmF0dXJlKj4gaW50
ZXJuYWxGdW5jdGlvblNpZ25hdHVyZXM7CiAgICAgTWVtb3J5SW5mb3JtYXRpb24gbWVtb3J5Owog
ICAgIFZlY3RvcjxFeHBvcnQ+IGV4cG9ydHM7CisgICAgc3RkOjpvcHRpb25hbDx1aW50MzJfdD4g
c3RhcnRGdW5jdGlvbkluZGV4U3BhY2U7CisKKyAgICB+TW9kdWxlSW5mb3JtYXRpb24oKTsKIH07
CiAKIHN0cnVjdCBVbmxpbmtlZFdhc21Ub1dhc21DYWxsIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL1dhc21Nb2R1bGVQYXJzZXIuY3BwIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAKaW5kZXggMzcyOThmOC4uOWRiMDhjOCAx
MDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5j
cHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vV2FzbU1vZHVsZVBhcnNlci5jcHAK
QEAgLTMwMyw3ICszMDMsOCBAQCBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VGdW5jdGlvbigpCiAK
IGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZVRhYmxlKCkKIHsKLSAgICAvLyBGSVhNRQorICAgIC8v
IEZJWE1FIGltcGxlbWVudCB0YWJsZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTY0MTM1CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gdHJ1ZTsKIH0KIApAQCAtMzY1LDYgKzM2Niw3IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJz
ZU1lbW9yeSgpCiBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VHbG9iYWwoKQogewogICAgIC8vIEZJ
WE1FIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQxMzMKKyAgICBS
RUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC00
MTUsMTMgKzQxNywyMiBAQCBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VFeHBvcnQoKQogCiBib29s
IE1vZHVsZVBhcnNlcjo6cGFyc2VTdGFydCgpCiB7Ci0gICAgLy8gRklYTUUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTcwOQorICAgIHVpbnQzMl90IHN0YXJ0RnVu
Y3Rpb25JbmRleDsKKyAgICBpZiAoIXBhcnNlVmFyVUludDMyKHN0YXJ0RnVuY3Rpb25JbmRleCkK
KyAgICAgICAgfHwgc3RhcnRGdW5jdGlvbkluZGV4ID49IG1fZnVuY3Rpb25JbmRleFNwYWNlLnNp
emUoKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIFNpZ25hdHVyZSogc2lnbmF0dXJlID0g
bV9mdW5jdGlvbkluZGV4U3BhY2Vbc3RhcnRGdW5jdGlvbkluZGV4XS5zaWduYXR1cmU7CisgICAg
aWYgKHNpZ25hdHVyZS0+YXJndW1lbnRzLnNpemUoKSAhPSAwCisgICAgICAgIHx8IHNpZ25hdHVy
ZS0+cmV0dXJuVHlwZSAhPSBWb2lkKQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgbV9tb2R1
bGUtPnN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlID0gc3RhcnRGdW5jdGlvbkluZGV4OwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBib29sIE1vZHVsZVBhcnNlcjo6cGFyc2VFbGVtZW50KCkKIHsKICAg
ICAvLyBGSVhNRSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTYxNzA5
CisgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IApAQCAtNDUwLDYgKzQ2MSw3IEBAIGJvb2wgTW9kdWxlUGFyc2VyOjpwYXJzZUNvZGUoKQogYm9v
bCBNb2R1bGVQYXJzZXI6OnBhcnNlRGF0YSgpCiB7CiAgICAgLy8gRklYTUUgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MTcwOQorICAgIFJFTEVBU0VfQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5RnVuY3Rpb24uY3BwIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKaW5kZXggMTk0Nzcz
MS4uMTA2ODAxYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlGdW5jdGlvbi5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMv
V2ViQXNzZW1ibHlGdW5jdGlvbi5jcHAKQEAgLTkyLDggKzkyLDIwIEBAIHN0YXRpYyBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGNhbGxXZWJBc3NlbWJseUZ1bmN0aW9uKEV4ZWNTdGF0ZSog
ZXhlYykKICAgICAgICAgYXJnQ291bnQgPSBib3hlZEFyZ3Muc2l6ZSgpOwogICAgIH0KIAorICAg
IC8vIE5vdGU6IHdlIHNwZWNpZmljYWxseSB1c2UgdGhlIFdlYkFzc2VtYmx5RnVuY3Rpb24gYXMg
dGhlIGNhbGxlZSB0byBiZWdpbiB3aXRoIGluIHRoZSBQcm90b0NhbGxGcmFtZS4KKyAgICAvLyBU
aGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgY2FsbGluZyBpbnRvIHRoZSBsbGludCBtYXkgc3Rh
Y2sgb3ZlcmZsb3csIGFuZCB0aGUgc3RhY2sgb3ZlcmZsb3cKKyAgICAvLyBoYW5kbGVyIG1pZ2h0
IHJlYWQgdGhlIGdsb2JhbCBvYmplY3QgZnJvbSB0aGUgY2FsbGVlLiBUaGUgSlNXZWJBc3NlbWJs
eUNhbGxlZSBkb2Vzbid0IGhhdmUgYQorICAgIC8vIGdsb2JhbCBvYmplY3QsIGJ1dCB0aGUgV2Vi
QXNzZW1ibHlGdW5jdGlvbiBkb2VzLgorICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1l
OworICAgIHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBmaXJzdEFy
Z3VtZW50LCBhcmdDb3VudCwgcmVtYWluaW5nQXJncyk7CisKKyAgICByZXR1cm4gd2FzbUZ1bmN0
aW9uLT5jYWxsKHZtLCAmcHJvdG9DYWxsRnJhbWUpOworfQorCitFbmNvZGVkSlNWYWx1ZSBXZWJB
c3NlbWJseUZ1bmN0aW9uOjpjYWxsKFZNJiB2bSwgUHJvdG9DYWxsRnJhbWUqIHByb3RvQ2FsbEZy
YW1lKQorewogICAgIC8vIFNldHVwIHRoZSBtZW1vcnkgdGhhdCB0aGUgZW50cmFuY2UgbG9hZHMu
Ci0gICAgaWYgKEpTV2ViQXNzZW1ibHlNZW1vcnkqIG1lbW9yeSA9IHdhc21GdW5jdGlvbi0+aW5z
dGFuY2UoKS0+bWVtb3J5KCkpIHsKKyAgICBpZiAoSlNXZWJBc3NlbWJseU1lbW9yeSogbWVtb3J5
ID0gaW5zdGFuY2UoKS0+bWVtb3J5KCkpIHsKICAgICAgICAgV2FzbTo6TWVtb3J5KiB3YXNtTWVt
b3J5ID0gbWVtb3J5LT5tZW1vcnkoKTsKICAgICAgICAgdm0udG9wV2FzbU1lbW9yeVBvaW50ZXIg
PSB3YXNtTWVtb3J5LT5tZW1vcnkoKTsKICAgICAgICAgdm0udG9wV2FzbU1lbW9yeVNpemUgPSB3
YXNtTWVtb3J5LT5zaXplKCk7CkBAIC0xMDIsMjAgKzExNCwxMyBAQCBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBjYWxsV2ViQXNzZW1ibHlGdW5jdGlvbihFeGVjU3RhdGUqIGV4
ZWMpCiAgICAgICAgIHZtLnRvcFdhc21NZW1vcnlTaXplID0gMDsKICAgICB9CiAKLSAgICAvLyBO
b3RlOiB3ZSBzcGVjaWZpY2FsbHkgdXNlIHRoZSBXZWJBc3NlYmx5RnVuY3Rpb24gYXMgdGhlIGNh
bGxlZSB0byBiZWdpbiB3aXRoIGluIHRoZSBQcm90b0NhbGxGcmFtZS4KLSAgICAvLyBUaGUgcmVh
c29uIGZvciB0aGlzIGlzIHRoYXQgY2FsbGluZyBpbnRvIHRoZSBsbGludCBtYXkgc3RhY2sgb3Zl
cmZsb3csIGFuZCB0aGUgc3RhY2sgb3ZlcmZsb3cKLSAgICAvLyBoYW5kbGVyIG1pZ2h0IHJlYWQg
dGhlIGdsb2JhbCBvYmplY3QgZnJvbSB0aGUgY2FsbGVlLiBUaGUgSlNXZWJBc3NlbWJseUNhbGxl
ZSBkb2Vzbid0IGhhdmUgYQotICAgIC8vIGdsb2JhbCBvYmplY3QsIGJ1dCB0aGUgV2ViQXNzZW1i
bHlGdW5jdGlvbiBkb2VzLgotICAgIFByb3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOwotICAg
IHByb3RvQ2FsbEZyYW1lLmluaXQobnVsbHB0ciwgd2FzbUZ1bmN0aW9uLCBmaXJzdEFyZ3VtZW50
LCBhcmdDb3VudCwgcmVtYWluaW5nQXJncyk7Ci0gICAgCiAgICAgSlNXZWJBc3NlbWJseUluc3Rh
bmNlKiBwcmV2SlNXZWJBc3NlbWJseUluc3RhbmNlID0gdm0udG9wSlNXZWJBc3NlbWJseUluc3Rh
bmNlOwotICAgIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHdhc21GdW5jdGlvbi0+aW5z
dGFuY2UoKTsKLSAgICBFbmNvZGVkSlNWYWx1ZSByYXdSZXN1bHQgPSB2bUVudHJ5VG9XYXNtKHdh
c21GdW5jdGlvbi0+d2ViQXNzZW1ibHlDYWxsZWUoKS0+anNUb1dhc21FbnRyeVBvaW50KCksICZ2
bSwgJnByb3RvQ2FsbEZyYW1lKTsKKyAgICB2bS50b3BKU1dlYkFzc2VtYmx5SW5zdGFuY2UgPSBp
bnN0YW5jZSgpOworICAgIEVuY29kZWRKU1ZhbHVlIHJhd1Jlc3VsdCA9IHZtRW50cnlUb1dhc20o
d2ViQXNzZW1ibHlDYWxsZWUoKS0+anNUb1dhc21FbnRyeVBvaW50KCksICZ2bSwgcHJvdG9DYWxs
RnJhbWUpOwogICAgIHZtLnRvcEpTV2ViQXNzZW1ibHlJbnN0YW5jZSA9IHByZXZKU1dlYkFzc2Vt
Ymx5SW5zdGFuY2U7CiAKICAgICAvLyBGSVhNRSBpcyB0aGlzIGNvcnJlY3Q/IGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjQ4NzYKLSAgICBzd2l0Y2ggKHNpZ25hdHVy
ZS0+cmV0dXJuVHlwZSkgeworICAgIHN3aXRjaCAoc2lnbmF0dXJlKCktPnJldHVyblR5cGUpIHsK
ICAgICBjYXNlIFdhc206OlZvaWQ6CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNV
bmRlZmluZWQoKSk7CiAgICAgY2FzZSBXYXNtOjpJMzI6CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmggYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseUZ1bmN0aW9uLmgKaW5kZXggN2NjNTYyYy4uMmNi
Zjg1MiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1i
bHlGdW5jdGlvbi5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2Vt
Ymx5RnVuY3Rpb24uaApAQCAtMzQsNiArMzQsNyBAQCBuYW1lc3BhY2UgSlNDIHsKIAogY2xhc3Mg
SlNHbG9iYWxPYmplY3Q7CiBjbGFzcyBKU1dlYkFzc2VtYmx5Q2FsbGVlOworc3RydWN0IFByb3Rv
Q2FsbEZyYW1lOwogY2xhc3MgV2ViQXNzZW1ibHlJbnN0YW5jZTsKIAogbmFtZXNwYWNlIEIzIHsK
QEAgLTYyLDYgKzYzLDcgQEAgcHVibGljOgogICAgICAgICBBU1NFUlQobV9zaWduYXR1cmUpOwog
ICAgICAgICByZXR1cm4gbV9zaWduYXR1cmU7CiAgICAgfQorICAgIEVuY29kZWRKU1ZhbHVlIGNh
bGwoVk0mLCBQcm90b0NhbGxGcmFtZSopOwogCiBwcm90ZWN0ZWQ6CiAgICAgc3RhdGljIHZvaWQg
dmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQuY3BwCmlu
ZGV4IDM0ODBhNTAuLjU2OWZiYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93
YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVjb3JkLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5jcHAKQEAgLTM0LDggKzM0LDEw
IEBACiAjaW5jbHVkZSAiSlNNb2R1bGVFbnZpcm9ubWVudC5oIgogI2luY2x1ZGUgIkpTV2ViQXNz
ZW1ibHlJbnN0YW5jZS5oIgogI2luY2x1ZGUgIkpTV2ViQXNzZW1ibHlNb2R1bGUuaCIKKyNpbmNs
dWRlICJQcm90b0NhbGxGcmFtZS5oIgogI2luY2x1ZGUgIldhc21Gb3JtYXQuaCIKICNpbmNsdWRl
ICJXZWJBc3NlbWJseUZ1bmN0aW9uLmgiCisjaW5jbHVkZSA8bGltaXRzPgogCiBuYW1lc3BhY2Ug
SlNDIHsKIApAQCAtOTYsNiArOTgsNyBAQCB2b2lkIFdlYkFzc2VtYmx5TW9kdWxlUmVjb3JkOjp2
aXNpdENoaWxkcmVuKEpTQ2VsbCogY2VsbCwgU2xvdFZpc2l0b3ImIHZpc2l0b3IpCiAgICAgV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8V2ViQXNzZW1ibHlNb2R1
bGVSZWNvcmQqPihjZWxsKTsKICAgICBCYXNlOjp2aXNpdENoaWxkcmVuKHRoaXNPYmplY3QsIHZp
c2l0b3IpOwogICAgIHZpc2l0b3IuYXBwZW5kKCZ0aGlzT2JqZWN0LT5tX2luc3RhbmNlKTsKKyAg
ICB2aXNpdG9yLmFwcGVuZCgmdGhpc09iamVjdC0+bV9zdGFydEZ1bmN0aW9uKTsKIH0KIAogdm9p
ZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUqIHN0YXRlLCBKU1dlYkFz
c2VtYmx5SW5zdGFuY2UqIGluc3RhbmNlKQpAQCAtMTA3LDYgKzExMCwxMCBAQCB2b2lkIFdlYkFz
c2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogc3RhdGUsIEpTV2ViQXNzZW1ibHlJ
bnN0YW5jZSogaW5zdAogCiAgICAgSlNXZWJBc3NlbWJseU1vZHVsZSogbW9kdWxlID0gaW5zdGFu
Y2UtPm1vZHVsZSgpOwogICAgIGNvbnN0IFdhc206Ok1vZHVsZUluZm9ybWF0aW9uJiBtb2R1bGVJ
bmZvcm1hdGlvbiA9IG1vZHVsZS0+bW9kdWxlSW5mb3JtYXRpb24oKTsKKworICAgIGJvb2wgaGFz
U3RhcnQgPSAhIW1vZHVsZUluZm9ybWF0aW9uLnN0YXJ0RnVuY3Rpb25JbmRleFNwYWNlOworICAg
IGF1dG8gc3RhcnRGdW5jdGlvbkluZGV4U3BhY2UgPSBtb2R1bGVJbmZvcm1hdGlvbi5zdGFydEZ1
bmN0aW9uSW5kZXhTcGFjZS52YWx1ZV9vcigwKTsKKwogICAgIFN5bWJvbFRhYmxlKiBleHBvcnRT
eW1ib2xUYWJsZSA9IG1vZHVsZS0+ZXhwb3J0U3ltYm9sVGFibGUoKTsKICAgICB1bnNpZ25lZCBp
bXBvcnRDb3VudCA9IG1vZHVsZS0+aW1wb3J0Q291bnQoKTsKIApAQCAtMTMzLDYgKzE0MCw4IEBA
IHZvaWQgV2ViQXNzZW1ibHlNb2R1bGVSZWNvcmQ6OmxpbmsoRXhlY1N0YXRlKiBzdGF0ZSwgSlNX
ZWJBc3NlbWJseUluc3RhbmNlKiBpbnN0CiAgICAgICAgICAgICBXYXNtOjpTaWduYXR1cmUqIHNp
Z25hdHVyZSA9IG1vZHVsZS0+c2lnbmF0dXJlRm9yRnVuY3Rpb25JbmRleFNwYWNlKGV4cC5mdW5j
dGlvbkluZGV4KTsKICAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0aW9uID0g
V2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNpZ25hdHVyZS0+
YXJndW1lbnRzLnNpemUoKSwgZXhwLmZpZWxkLnN0cmluZygpLCBpbnN0YW5jZSwgd2FzbUNhbGxl
ZSwgc2lnbmF0dXJlKTsKICAgICAgICAgICAgIGV4cG9ydGVkVmFsdWUgPSBmdW5jdGlvbjsKKyAg
ICAgICAgICAgIGlmIChoYXNTdGFydCAmJiBzdGFydEZ1bmN0aW9uSW5kZXhTcGFjZSA9PSBleHAu
ZnVuY3Rpb25JbmRleCkKKyAgICAgICAgICAgICAgICBtX3N0YXJ0RnVuY3Rpb24uc2V0KHZtLCB0
aGlzLCBmdW5jdGlvbik7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBj
YXNlIFdhc206OkV4dGVybmFsOjpUYWJsZTogewpAQCAtMTU3LDYgKzE2NiwyMCBAQCB2b2lkIFdl
YkFzc2VtYmx5TW9kdWxlUmVjb3JkOjpsaW5rKEV4ZWNTdGF0ZSogc3RhdGUsIEpTV2ViQXNzZW1i
bHlJbnN0YW5jZSogaW5zdAogICAgICAgICBSRUxFQVNFX0FTU0VSVChwdXRSZXN1bHQpOwogICAg
IH0KIAorICAgIGlmIChoYXNTdGFydCkgeworICAgICAgICBXYXNtOjpTaWduYXR1cmUqIHNpZ25h
dHVyZSA9IG1vZHVsZS0+c2lnbmF0dXJlRm9yRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVuY3Rp
b25JbmRleFNwYWNlKTsKKyAgICAgICAgLy8gVGhlIHN0YXJ0IGZ1bmN0aW9uIG11c3Qgbm90IHRh
a2UgYW55IGFyZ3VtZW50cyBvciByZXR1cm4gYW55dGhpbmcuIFRoaXMgaXMgZW5mb3JjZWQgYnkg
dGhlIHBhcnNlci4KKyAgICAgICAgQVNTRVJUKCFzaWduYXR1cmUtPmFyZ3VtZW50cy5zaXplKCkp
OworICAgICAgICBBU1NFUlQoc2lnbmF0dXJlLT5yZXR1cm5UeXBlID09IFdhc206OlZvaWQpOwor
ICAgICAgICAvLyBGSVhNRSBjYW4gc3RhcnQgY2FsbCBpbXBvcnRzIC8gdGFibGVzPyBUaGlzIGFz
c3VtZXMgbm90LiBodHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2lzc3Vlcy84
OTYKKyAgICAgICAgaWYgKCFtX3N0YXJ0RnVuY3Rpb24uZ2V0KCkpIHsKKyAgICAgICAgICAgIC8v
IFRoZSBzdGFydCBmdW5jdGlvbiB3YXNuJ3QgYWRkZWQgYWJvdmUuIEl0IG11c3QgYmUgYSBwdXJl
bHkgaW50ZXJuYWwgZnVuY3Rpb24uCisgICAgICAgICAgICBKU1dlYkFzc2VtYmx5Q2FsbGVlKiB3
YXNtQ2FsbGVlID0gbW9kdWxlLT5jYWxsZWVGcm9tRnVuY3Rpb25JbmRleFNwYWNlKHN0YXJ0RnVu
Y3Rpb25JbmRleFNwYWNlKTsKKyAgICAgICAgICAgIFdlYkFzc2VtYmx5RnVuY3Rpb24qIGZ1bmN0
aW9uID0gV2ViQXNzZW1ibHlGdW5jdGlvbjo6Y3JlYXRlKHZtLCBnbG9iYWxPYmplY3QsIHNpZ25h
dHVyZS0+YXJndW1lbnRzLnNpemUoKSwgInN0YXJ0IiwgaW5zdGFuY2UsIHdhc21DYWxsZWUsIHNp
Z25hdHVyZSk7CisgICAgICAgICAgICBtX3N0YXJ0RnVuY3Rpb24uc2V0KHZtLCB0aGlzLCBmdW5j
dGlvbik7CisgICAgICAgIH0KKyAgICB9CisKICAgICBSRUxFQVNFX0FTU0VSVCghbV9pbnN0YW5j
ZSk7CiAgICAgbV9pbnN0YW5jZS5zZXQodm0sIHRoaXMsIGluc3RhbmNlKTsKICAgICBtX21vZHVs
ZUVudmlyb25tZW50LnNldCh2bSwgdGhpcywgbW9kdWxlRW52aXJvbm1lbnQpOwpAQCAtMTY0LDEw
ICsxODcsMTQgQEAgdm9pZCBXZWJBc3NlbWJseU1vZHVsZVJlY29yZDo6bGluayhFeGVjU3RhdGUq
IHN0YXRlLCBKU1dlYkFzc2VtYmx5SW5zdGFuY2UqIGluc3QKIAogSlNWYWx1ZSBXZWJBc3NlbWJs
eU1vZHVsZVJlY29yZDo6ZXZhbHVhdGUoRXhlY1N0YXRlKiBzdGF0ZSkKIHsKLSAgICAvLyBGSVhN
RSB0aGlzIHNob3VsZCBjYWxsIHRoZSBtb2R1bGUncyBgc3RhcnRgIGZ1bmN0aW9uLCBpZiBhbnku
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjUxNTAKLSAgICAvLyBo
dHRwczovL2dpdGh1Yi5jb20vV2ViQXNzZW1ibHkvZGVzaWduL2Jsb2IvbWFzdGVyL01vZHVsZXMu
bWQjbW9kdWxlLXN0YXJ0LWZ1bmN0aW9uCi0gICAgLy8gVGhlIHN0YXJ0IGZ1bmN0aW9uIG11c3Qg
bm90IHRha2UgYW55IGFyZ3VtZW50cyBvciByZXR1cm4gYW55dGhpbmcKLSAgICBVTlVTRURfUEFS
QU0oc3RhdGUpOworICAgIGlmIChXZWJBc3NlbWJseUZ1bmN0aW9uKiBzdGFydEZ1bmN0aW9uID0g
bV9zdGFydEZ1bmN0aW9uLmdldCgpKSB7CisgICAgICAgIFZNJiB2bSA9IHN0YXRlLT52bSgpOwor
ICAgICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisgICAgICAgIFBy
b3RvQ2FsbEZyYW1lIHByb3RvQ2FsbEZyYW1lOworICAgICAgICBwcm90b0NhbGxGcmFtZS5pbml0
KG51bGxwdHIsIHN0YXJ0RnVuY3Rpb24sIEpTVmFsdWUoKSwgMSwgbnVsbHB0cik7CisgICAgICAg
IHN0YXJ0RnVuY3Rpb24tPmNhbGwodm0sICZwcm90b0NhbGxGcmFtZSk7CisgICAgICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CisgICAgfQogICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJB
c3NlbWJseU1vZHVsZVJlY29yZC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3dhc20vanMvV2Vi
QXNzZW1ibHlNb2R1bGVSZWNvcmQuaAppbmRleCBhMDJmOWVkLi40ZTcwZTc5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvd2FzbS9qcy9XZWJBc3NlbWJseU1vZHVsZVJlY29yZC5o
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS93YXNtL2pzL1dlYkFzc2VtYmx5TW9kdWxlUmVj
b3JkLmgKQEAgLTMzLDYgKzMzLDcgQEAKIG5hbWVzcGFjZSBKU0MgewogCiBjbGFzcyBKU1dlYkFz
c2VtYmx5SW5zdGFuY2U7CitjbGFzcyBXZWJBc3NlbWJseUZ1bmN0aW9uOwogCiAvLyBCYXNlZCBv
biB0aGUgV2ViQXNzZW1ibHkuSW5zdGFuY2Ugc3BlY2lmaWNhdGlvbgogLy8gaHR0cHM6Ly9naXRo
dWIuY29tL1dlYkFzc2VtYmx5L2Rlc2lnbi9ibG9iL21hc3Rlci9KUy5tZCN3ZWJhc3NlbWJseWlu
c3RhbmNlLWNvbnN0cnVjdG9yCkBAIC01OCw2ICs1OSw3IEBAIHByaXZhdGU6CiAgICAgc3RhdGlj
IHZvaWQgdmlzaXRDaGlsZHJlbihKU0NlbGwqLCBTbG90VmlzaXRvciYpOwogCiAgICAgV3JpdGVC
YXJyaWVyPEpTV2ViQXNzZW1ibHlJbnN0YW5jZT4gbV9pbnN0YW5jZTsKKyAgICBXcml0ZUJhcnJp
ZXI8V2ViQXNzZW1ibHlGdW5jdGlvbj4gbV9zdGFydEZ1bmN0aW9uOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgSlNDCi0tIAoyLjEwLjEKCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>