<?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>155922</bug_id>
          
          <creation_ts>2016-03-25 22:44:39 -0700</creation_ts>
          <short_desc>Update treatment of invoking RegExp.prototype methods on RegExp.prototype.</short_desc>
          <delta_ts>2016-04-14 11:17:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>benjamin</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>keith_miller</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>1178258</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-25 22:44:39 -0700</bug_when>
    <thetext>In r198698, for the purpose of enabling feature testing, I changed the RegExp.prototype flag property getters to always return undefined instead of throwing when &quot;this&quot; is not a RegExp object.  However, for the purpose of feature testing, we only need to apply this change for the cases where the getters are called on the RegExp.prototype itself.  If called with any other &quot;this&quot; values that is not a RegExp object, they should throw a TypeError as the ES6 spec expects.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178259</commentid>
    <comment_count>1</comment_count>
      <attachid>274977</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-25 22:48:18 -0700</bug_when>
    <thetext>Created attachment 274977
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178280</commentid>
    <comment_count>2</comment_count>
      <attachid>274977</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-26 09:21:14 -0700</bug_when>
    <thetext>Comment on attachment 274977
proposed patch.

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178281</commentid>
    <comment_count>3</comment_count>
      <attachid>274977</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-03-26 09:22:37 -0700</bug_when>
    <thetext>Comment on attachment 274977
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/RegExpPrototype.cpp:249
&gt; +        if (thisValue == exec-&gt;lexicalGlobalObject()-&gt;regExpPrototype())
&gt; +            return JSValue::encode(jsUndefined());

Actually, you should check inherits(RegExpPrototype::info()) instead. There&apos;s no reason to tie this to a global object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178557</commentid>
    <comment_count>4</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-28 15:09:02 -0700</bug_when>
    <thetext>I&apos;m going to hold off on implementing this for now.  This issue is being discussed at https://github.com/tc39/ecma262/issues/262?, and there doesn&apos;t appear to be an agreed on solution yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1178795</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-03-29 14:08:31 -0700</bug_when>
    <thetext>For the record, Chrome is only special casing RegExp.prototype and returning undefined for it (see https://github.com/v8/v8/blob/master/src/js/regexp.js#L1091).  For everything else, it throws the ES6 spec&apos;ed TypeError.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183597</commentid>
    <comment_count>6</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-13 17:50:43 -0700</bug_when>
    <thetext>From a recent TC39 meeting, we were told that &quot;the committee also agreed to Daniel Ehrenberg’s pull request #262 (https://github.com/tc39/ecma262/issues/262), slides.  Daniel will write up the details.  The end result is that we will no longer throw for “RegExp like” accesses to RegExp.prototype, e.g. RegExp.prototype.sticky.  In the case of individual flags, we return undefined.  For .flags, .source and .toString(), we return what we do now, “”, &quot;(?:)&quot; and /(?:)/“ respectively.  RegExp.prototype however IS NOT an instance of RegExp.&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183601</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2016-04-13 17:54:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/25717387&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183748</commentid>
    <comment_count>8</comment_count>
      <attachid>276403</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-14 10:47:01 -0700</bug_when>
    <thetext>Created attachment 276403
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183750</commentid>
    <comment_count>9</comment_count>
      <attachid>276404</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-14 10:52:59 -0700</bug_when>
    <thetext>Created attachment 276404
proposed patch: rebased to ToT.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183755</commentid>
    <comment_count>10</comment_count>
      <attachid>276404</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-14 10:59:25 -0700</bug_when>
    <thetext>Comment on attachment 276404
proposed patch: rebased to ToT.

r=me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183756</commentid>
    <comment_count>11</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-14 10:59:49 -0700</bug_when>
    <thetext>Did you run benchmarks on this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183763</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-14 11:08:55 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; Did you run benchmarks on this?

No.  But the only changes in this patch are on error paths.  If these results in a perf regression, then we have a serious problem with code cache lines.

If it&apos;s ok with you, I&apos;ll put UNLIKELY() on the &quot;if (!thisValue.inherits(RegExpObject::info()))&quot; checks, and just monitor the perf bots for regressions.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183764</commentid>
    <comment_count>13</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-04-14 11:10:11 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (In reply to comment #11)
&gt; &gt; Did you run benchmarks on this?
&gt; 
&gt; No.  But the only changes in this patch are on error paths.  If these
&gt; results in a perf regression, then we have a serious problem with code cache
&gt; lines.
&gt; 
&gt; If it&apos;s ok with you, I&apos;ll put UNLIKELY() on the &quot;if
&gt; (!thisValue.inherits(RegExpObject::info()))&quot; checks, and just monitor the
&gt; perf bots for regressions.

Seems reasonable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1183765</commentid>
    <comment_count>14</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-04-14 11:17:02 -0700</bug_when>
    <thetext>Thanks.  Landed in r199545: &lt;http://trac.webkit.org/r199545&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>274977</attachid>
            <date>2016-03-25 22:48:18 -0700</date>
            <delta_ts>2016-04-14 10:47:01 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-155922.patch</filename>
            <type>text/plain</type>
            <size>9446</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk4NzEwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBA
CisyMDE2LTAzLTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBB
IGJldHRlciB3b3JrYXJvdW5kIGZvciB3ZWJraXQub3JnL2IvMTU1OTA0LgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1OTIyCisKKyAgICAgICAgUmV2
aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgSW4gcjE5ODY5OCwgZm9yIHRoZSBw
dXJwb3NlIG9mIGVuYWJsaW5nIGZlYXR1cmUgdGVzdGluZywgSSBjaGFuZ2VkIHRoZQorICAgICAg
ICBSZWdFeHAucHJvdG90eXBlIGZsYWcgcHJvcGVydHkgZ2V0dGVycyB0byBhbHdheXMgcmV0dXJu
IHVuZGVmaW5lZCBpbnN0ZWFkIG9mCisgICAgICAgIHRocm93aW5nIHdoZW4gInRoaXMiIGlzIG5v
dCBhIFJlZ0V4cCBvYmplY3QuICBIb3dldmVyLCBmb3IgdGhlIHB1cnBvc2Ugb2YgZmVhdHVyZQor
ICAgICAgICB0ZXN0aW5nLCB3ZSBvbmx5IG5lZWQgdG8gYXBwbHkgdGhpcyBjaGFuZ2UgZm9yIHRo
ZSBjYXNlcyB3aGVyZSB0aGUgZ2V0dGVycyBhcmUKKyAgICAgICAgY2FsbGVkIG9uIHRoZSBSZWdF
eHAucHJvdG90eXBlIGl0c2VsZi4gIElmIGNhbGxlZCB3aXRoIGFueSBvdGhlciAidGhpcyIgdmFs
dWVzCisgICAgICAgIHRoYXQgaXMgbm90IGEgUmVnRXhwIG9iamVjdCwgdGhleSBzaG91bGQgdGhy
b3cgYSBUeXBlRXJyb3IgYXMgdGhlIEVTNiBzcGVjCisgICAgICAgIGV4cGVjdHMuCisKKyAgICAg
ICAgKiBydW50aW1lL1JlZ0V4cFByb3RvdHlwZS5jcHA6CisgICAgICAgIChKU0M6OnJlZ0V4cFBy
b3RvR2V0dGVyR2xvYmFsKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJJZ25vcmVD
YXNlKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJNdWx0aWxpbmUpOgorICAgICAg
ICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclN0aWNreSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFBy
b3RvR2V0dGVyVW5pY29kZSk6CisKIDIwMTYtMDMtMjUgIEJlbmphbWluIFBvdWxhaW4gIDxicG91
bGFpbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0pTQ10gUHV0IHRoZSB4ODYgQXNzZW1ibGVyIG9u
IGEgYmluYXJ5IGRpZXQKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL1JlZ0V4
cFByb3RvdHlwZS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvUmVnRXhwUHJvdG90eXBlLmNwcAkocmV2aXNpb24gMTk4NzEwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJvdG90eXBlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjQ0LDggKzI0NCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3Rv
CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyR2xvYmFsKEV4
ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1
ZSgpOwotICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkK
LSAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBpZiAo
IXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpIHsKKyAgICAgICAgaWYg
KHRoaXNWYWx1ZSA9PSBleGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFByb3RvdHlw
ZSgpKQorICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUg
UmVnRXhwLnByb3RvdHlwZS5nbG9iYWwgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBSZWdF
eHAgb2JqZWN0cyIpKTsKKyAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9v
bGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+Z2xvYmFsKCkpKTsKIH0K
QEAgLTI1Myw4ICsyNTYsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQ
cm90bwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlcklnbm9y
ZUNhc2UoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+
dGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0Ojpp
bmZvKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOwor
ICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkgeworICAg
ICAgICBpZiAodGhpc1ZhbHVlID09IGV4ZWMtPmxleGljYWxHbG9iYWxPYmplY3QoKS0+cmVnRXhw
UHJvdG90eXBlKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZp
bmVkKCkpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVy
YWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLmlnbm9yZUNhc2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNh
bGxlZCBvbiBSZWdFeHAgb2JqZWN0cyIpKTsKKyAgICB9CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzQm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+aWdu
b3JlQ2FzZSgpKSk7CiB9CkBAIC0yNjIsOCArMjY4LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19I
T1NUX0NBTEwgcmVnRXhwUHJvdG8KIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhw
UHJvdG9HZXR0ZXJNdWx0aWxpbmUoRXhlY1N0YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhp
c1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMo
UmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6
aW5mbygpKSkgeworICAgICAgICBpZiAodGhpc1ZhbHVlID09IGV4ZWMtPmxleGljYWxHbG9iYWxP
YmplY3QoKS0+cmVnRXhwUHJvdG90eXBlKCkpCisgICAgICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLm11bHRpbGluZSBnZXR0ZXIg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uIFJlZ0V4cCBvYmplY3RzIikpOworICAgIH0KIAogICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRoaXNWYWx1ZSkt
PnJlZ0V4cCgpLT5tdWx0aWxpbmUoKSkpOwogfQpAQCAtMjcxLDggKzI4MCwxMSBAQCBFbmNvZGVk
SlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVyU3RpY2t5KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBK
U1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwotICAgIGlmICghdGhpc1ZhbHVl
LmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdF
eHBPYmplY3Q6OmluZm8oKSkpIHsKKyAgICAgICAgaWYgKHRoaXNWYWx1ZSA9PSBleGVjLT5sZXhp
Y2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFByb3RvdHlwZSgpKQorICAgICAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5zdGlja3kg
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBSZWdFeHAgb2JqZWN0cyIpKTsKKyAgICB9CiAg
ICAgCiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3Qo
dGhpc1ZhbHVlKS0+cmVnRXhwKCktPnN0aWNreSgpKSk7CiB9CkBAIC0yODAsOCArMjkyLDExIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJVbmljb2RlKEV4ZWNTdGF0ZSogZXhlYykK
IHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9IGV4ZWMtPnRoaXNWYWx1ZSgpOwotICAgIGlmICgh
dGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkKLSAgICAgICAgcmV0dXJu
IEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICBpZiAoIXRoaXNWYWx1ZS5pbmhl
cml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpIHsKKyAgICAgICAgaWYgKHRoaXNWYWx1ZSA9PSBl
eGVjLT5sZXhpY2FsR2xvYmFsT2JqZWN0KCktPnJlZ0V4cFByb3RvdHlwZSgpKQorICAgICAgICAg
ICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlw
ZS51bmljb2RlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gUmVnRXhwIG9iamVjdHMiKSk7
CisgICAgfQogICAgIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVn
RXhwT2JqZWN0KHRoaXNWYWx1ZSktPnJlZ0V4cCgpLT51bmljb2RlKCkpKTsKIH0KSW5kZXg6IExh
eW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJ
KHJldmlzaW9uIDE5ODcxMCkKKysrIExheW91dFRlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE3IEBACisyMDE2LTAzLTI1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxl
LmNvbT4KKworICAgICAgICBBIGJldHRlciB3b3JrYXJvdW5kIGZvciB3ZWJraXQub3JnL2IvMTU1
OTA0LgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1
OTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBq
cy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtZmxhZy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dDog
QWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLWZsYWctcHJvcGVy
dGllcy5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBqcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdl
eHAtcHJvdG90eXBlLWZsYWctcHJvcGVydGllcy5qczogQWRkZWQuCisgICAgICAgIChzaG91bGRC
ZSk6CisgICAgICAgIChzaG91bGRUaHJvdyk6CisgICAgICAgICh0ZXN0KToKKwogMjAxNi0wMy0y
NSAgSmVyIE5vYmxlICA8amVyLm5vYmxlQGFwcGxlLmNvbT4KIAogICAgICAgICBbTWFjXSBBdWRp
byB0cmFja3MgaW4gYWx0ZXJuYXRlIGdyb3VwcyBhcmUgbm90IHJlcHJlc2VudGVkIGNvcnJlY3Rs
eSBhcyBBdWRpb1RyYWNrcwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJv
dG90eXBlLWZsYWctcHJvcGVydGllcy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLWZsYWctcHJvcGVydGllcy1leHBlY3Rl
ZC50eHQJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90
b3R5cGUtZmxhZy1wcm9wZXJ0aWVzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDkgQEAKK0pTUmVncmVzcy9yZWdleHAtcHJvdG90eXBlLWZsYWctcHJvcGVydGllcworCitP
biBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xs
b3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJv
dG90eXBlLWZsYWctcHJvcGVydGllcy5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pz
L3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1mbGFnLXByb3BlcnRpZXMuaHRtbAkocmV2aXNpb24g
MCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1mbGFnLXByb3Bl
cnRpZXMuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDEyIEBACis8IURPQ1RZUEUgSFRN
TCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPHNjcmlw
dCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8L2hlYWQ+
Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMvcmVncmVzcy1wcmUuanMiPjwv
c2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLWZsYWct
cHJvcGVydGllcy5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL3Jl
Z3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pz
LXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8L2h0bWw+CkluZGV4OiBMYXlvdXRU
ZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLWZsYWctcHJvcGVy
dGllcy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0
cy9yZWdleHAtcHJvdG90eXBlLWZsYWctcHJvcGVydGllcy5qcwkocmV2aXNpb24gMCkKKysrIExh
eW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtZmxhZy1w
cm9wZXJ0aWVzLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsNDMgQEAKK2Z1bmN0aW9uIHNo
b3VsZEJlKHRlc3ROdW0sIHRlc3ROYW1lLCBhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFj
dHVhbCAhPT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IEVycm9yKCJ0ZXN0ICIgKyB0ZXN0TnVt
ICsgIiBvbiAnIiArIHRlc3ROYW1lICsgIic6IGV4cGVjdGVkOiAiICsgZXhwZWN0ZWQgKyAiLCBh
Y3R1YWw6ICIgKyBhY3R1YWwpOworfQorCitmdW5jdGlvbiBzaG91bGRUaHJvdyh0ZXN0TnVtLCB0
ZXN0TmFtZSwgZnVuYywgZXJyb3JNc2cpIHsKKyAgICB0cnkgeworICAgICAgICBmdW5jKCk7Cisg
ICAgICAgIHRocm93IEVycm9yKCJ0ZXN0ICIgKyB0ZXN0TnVtICsgIiBvbiAnIiArIHRlc3ROYW1l
ICsgIic6IGV4cGVjdGVkIHRvIHRocm93IGJ1dCBkaWQgbm90LiIpOworICAgIH0gY2F0Y2ggKGUp
IHsKKyAgICAgICAgc2hvdWxkQmUodGVzdE51bSwgdGVzdE5hbWUsIGUudG9TdHJpbmcoKSwgZXJy
b3JNc2cpOworICAgIH0KK30KKworbGV0IHByb3BOYW1lID0gWworICAgIHsgcmVnZXhwOiAvYS9n
LCBuYW1lOiAiZ2xvYmFsIiwgZmxhZ3M6ICJnIiwgZXJyb3JNc2c6ICJUeXBlRXJyb3I6IFRoZSBS
ZWdFeHAucHJvdG90eXBlLmdsb2JhbCBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIFJlZ0V4
cCBvYmplY3RzIiB9LAorICAgIHsgcmVnZXhwOiAvYS9pLCBuYW1lOiAiaWdub3JlQ2FzZSIsIGZs
YWdzOiAiaSIsIGVycm9yTXNnOiAiVHlwZUVycm9yOiBUaGUgUmVnRXhwLnByb3RvdHlwZS5pZ25v
cmVDYXNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gUmVnRXhwIG9iamVjdHMiIH0sCisg
ICAgeyByZWdleHA6IC9hL20sIG5hbWU6ICJtdWx0aWxpbmUiLCBmbGFnczogIm0iLCBlcnJvck1z
ZzogIlR5cGVFcnJvcjogVGhlIFJlZ0V4cC5wcm90b3R5cGUubXVsdGlsaW5lIGdldHRlciBjYW4g
b25seSBiZSBjYWxsZWQgb24gUmVnRXhwIG9iamVjdHMiIH0sCisgICAgeyByZWdleHA6IC9hL3Us
IG5hbWU6ICJ1bmljb2RlIiwgZmxhZ3M6ICJ1IiwgZXJyb3JNc2c6ICJUeXBlRXJyb3I6IFRoZSBS
ZWdFeHAucHJvdG90eXBlLnVuaWNvZGUgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBSZWdF
eHAgb2JqZWN0cyIgfSwKKyAgICB7IHJlZ2V4cDogL2EveSwgbmFtZTogInN0aWNreSIsIGZsYWdz
OiAieSIsIGVycm9yTXNnOiAiVHlwZUVycm9yOiBUaGUgUmVnRXhwLnByb3RvdHlwZS5zdGlja3kg
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBSZWdFeHAgb2JqZWN0cyIgfSwKK107CisKK2Z1
bmN0aW9uIHRlc3QocmVnZXhwLCBuYW1lLCBmbGFncywgZXJyb3JNc2cpIHsKKyAgICBsZXQgZGVz
YyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgbmFt
ZSk7CisgICAgZm9yIChsZXQgaSA9IDA7IGkgPCAxMDAwOyBpKyspIHsKKyAgICAgICAgc2hvdWxk
QmUoMSwgbmFtZSwgcmVnZXhwLmZsYWdzLCBmbGFncyk7CisgICAgICAgIHNob3VsZEJlKDIsIG5h
bWUsIHJlZ2V4cFtuYW1lXSwgdHJ1ZSk7CisKKyAgICAgICAgbGV0IHJlZ0V4cFdpdGhvdXRGbGFn
cyA9IC9hYmMvOworICAgICAgICBzaG91bGRCZSgzLCBuYW1lLCByZWdFeHBXaXRob3V0RmxhZ3Mu
ZmxhZ3MsICIiKTsKKyAgICAgICAgc2hvdWxkQmUoNCwgbmFtZSwgcmVnRXhwV2l0aG91dEZsYWdz
W25hbWVdLCBmYWxzZSk7CisKKyAgICAgICAgc2hvdWxkQmUoNSwgbmFtZSwgUmVnRXhwLnByb3Rv
dHlwZS5mbGFncywgIiIpOworICAgICAgICBzaG91bGRCZSg2LCBuYW1lLCBSZWdFeHAucHJvdG90
eXBlW25hbWVdLCB2b2lkIDApOworCisgICAgICAgIHNob3VsZFRocm93KDcsIG5hbWUsICgpID0+
IHsgZGVzYy5nZXQuY2FsbCh7fSkgfSwgZXJyb3JNc2cpOworICAgIH0KK30KKworZm9yIChsZXQg
eCBvZiBwcm9wTmFtZSkKKyAgICB0ZXN0KHgucmVnZXhwLCB4Lm5hbWUsIHguZmxhZ3MsIHguZXJy
b3JNc2cpOworCisgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQo=
</data>
<flag name="review"
          id="299375"
          type_id="1"
          status="-"
          setter="ggaren"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276403</attachid>
            <date>2016-04-14 10:47:01 -0700</date>
            <delta_ts>2016-04-14 10:52:59 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-155922.patch</filename>
            <type>text/plain</type>
            <size>20454</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5NTM5KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE2LTA0LTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
cGRhdGUgdHJlYXRtZW50IG9mIGludm9raW5nIFJlZ0V4cC5wcm90b3R5cGUgbWV0aG9kcyBvbiBS
ZWdFeHAucHJvdG90eXBlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU1OTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBUQzM5IGNvbW1pdHRlZSwgd2hlbiBpbnZva2luZyB0
aGUgZm9sbG93aW5nIFJlZ0V4cC5wcm90b3R5cGUKKyAgICAgICAgbWV0aG9kcyBvbiB0aGUgUmVn
RXhwLnByb3RvdHlwZToKKyAgICAgICAgMS4gUmVnRXhwLnByb3RvdHlwZS5mbGFncyB5aWVsZHMg
IiIKKyAgICAgICAgMi4gUmVnRXhwLnByb3RvdHlwZS5nbG9iYWwgeWllbGRzIHVuZGVmaW5lZAor
ICAgICAgICAzLiBSZWdFeHAucHJvdG90eXBlLmlnbm9yZUNhc2UgeWllbGRzIHVuZGVmaW5lZAor
ICAgICAgICA0LiBSZWdFeHAucHJvdG90eXBlLm11bHRpbGluZSB5aWVsZHMgdW5kZWZpbmVkCisg
ICAgICAgIDUuIFJlZ0V4cC5wcm90b3R5cGUudW5pY29kZSB5aWVsZHMgdW5kZWZpbmVkCisgICAg
ICAgIDYuIFJlZ0V4cC5wcm90b3R5cGUuc291cmNlIHlpZWxkcyAiKD86KSIKKyAgICAgICAgNy4g
UmVnRXhwLnByb3RvdHlwZS5zdGlja3kgeWllbGRzIHVuZGVmaW5lZAorICAgICAgICA4LiBSZWdF
eHAucHJvdG90eXBlLnRvU3RyaW5nKCkgeWllbGRzICIvKD86KS8iCisKKyAgICAgICAgYW5kIFJl
Z0V4cC5wcm90b3R5cGUgaXMgc3RpbGwgTk9UIGFuIGluc3RhbmNlIG9mIFJlZ0V4cC4gIFRoZSBh
Ym92ZSBiZWhhdmlvcgorICAgICAgICBjaGFuZ2VzIGlzIGEgc3BlY2lhbCBkaXNwZW5zYXRpb24g
YXBwbGljYWJsZSBvbmx5IHRvIFJlZ0V4cC5wcm90b3R5cGUuICBUaGUgRVM2CisgICAgICAgIHNw
ZWMgb2YgdGhyb3dpbmcgZXJyb3JzIHN0aWxsIGFwcGxpZXMgaWYgdGhvc2UgbWV0aG9kcyBhcmUg
YXBwbGllZCB0byBhbnl0aGluZyA9CisgICAgICAgIGVsc2UgdGhhdCBpcyBub3QgYSBSZWdFeHAg
b2JqZWN0LgorCisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpyZWdFeHBQcm90b0dldHRlckdsb2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFBy
b3RvR2V0dGVySWdub3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVyTXVs
dGlsaW5lKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTdGlja3kpOgorICAgICAg
ICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclVuaWNvZGUpOgorICAgICAgICAoSlNDOjpyZWdFeHBQ
cm90b0dldHRlckZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2Up
OgorICAgICAgICAtIEltcGxlbWVudGVkIG5ldyBiZWhhdmlvci4KKworICAgICAgICAqIHRlc3Rz
L2VzNi9taXNjZWxsYW5lb3VzX2J1aWx0LWluX3Byb3RvdHlwZXNfYXJlX25vdF9pbnN0YW5jZXMu
anM6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgLSBVcGRhdGVkIHRvIG1hdGNoIGN1cnJlbnQg
a2FuZ2F4IHRlc3QuCisKIDIwMTYtMDQtMTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDTWFrZSBNaW5pQnJvd3NlciBzaG91bGQgYmUgYW4g
YXBwIGJ1bmRsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTk1MTIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDUs
OCArMjQ1LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
Ci0gICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlmICghdGhp
c1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkgeworICAgICAgICBpZiAodGhp
c1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5mbygpKSkKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xv
YmFsIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAg
IH0KIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0
KHRoaXNWYWx1ZSktPnJlZ0V4cCgpLT5nbG9iYWwoKSkpOwogfQpAQCAtMjU0LDggKzI1NywxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZShFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgaWYgKCF0aGlzVmFsdWUu
aW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKSB7CisgICAgICAgIGlmICh0aGlzVmFsdWUu
aW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5pZ25vcmVDYXNl
IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgIH0K
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRo
aXNWYWx1ZSktPnJlZ0V4cCgpLT5pZ25vcmVDYXNlKCkpKTsKIH0KQEAgLTI2Myw4ICsyNjksMTEg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlck11bHRpbGluZShFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgaWYgKCF0aGlzVmFsdWUu
aW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKSB7CisgICAgICAgIGlmICh0aGlzVmFsdWUu
aW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUg
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CisgICAgfQog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3QodGhp
c1ZhbHVlKS0+cmVnRXhwKCktPm11bHRpbGluZSgpKSk7CiB9CkBAIC0yNzIsOCArMjgxLDExIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTdGlja3koRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0
aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkgeworICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVy
aXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5mbygpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc3RpY2t5IGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgIH0KICAgICAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFs
dWUpLT5yZWdFeHAoKS0+c3RpY2t5KCkpKTsKIH0KQEAgLTI4MSw4ICsyOTMsMTEgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclVuaWNvZGUoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFs
dWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKFJl
Z0V4cE9iamVjdDo6aW5mbygpKSkgeworICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJl
Z0V4cFByb3RvdHlwZTo6aW5mbygpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUudW5pY29kZSBnZXR0ZXIgY2FuIG9u
bHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+
cmVnRXhwKCktPnVuaWNvZGUoKSkpOwogfQpAQCAtMjkxLDcgKzMwNiw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLmZsYWdz
IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYW4gb2JqZWN0IikpOwogCiAgICAgYXV0byBm
bGFncyA9IGZsYWdzU3RyaW5nKGV4ZWMsIGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTQwOSw4ICs0MjQsMTEgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIHJlZ0V4cFByb3RvR2V0dGVyUwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0dldHRlclNvdXJjZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygp
KSkgeworICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5m
bygpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywg
QVNDSUlMaXRlcmFsKCIoPzopIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0dGVyIGNh
biBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CisgICAgfQogCiAgICAgU3Ry
aW5nIHBhdHRlcm4gPSBhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+cGF0dGVy
bigpOwogICAgIGlmIChwYXR0ZXJuLmlzOEJpdCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi9taXNjZWxsYW5lb3VzX2J1aWx0LWluX3Byb3RvdHlwZXNfYXJlX25vdF9p
bnN0YW5jZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni9taXNjZWxsYW5lb3VzX2J1aWx0LWluX3Byb3RvdHlwZXNfYXJlX25vdF9pbnN0YW5jZXMuanMJ
KHJldmlzaW9uIDE5OTUxMikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvbWlz
Y2VsbGFuZW91c19idWlsdC1pbl9wcm90b3R5cGVzX2FyZV9ub3RfaW5zdGFuY2VzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogZnVuY3Rpb24gdGVzdCgpIHsKIAogdHJ5IHsKLSAg
UmVnRXhwLnByb3RvdHlwZS5zb3VyY2U7IHJldHVybiBmYWxzZTsKKyAgUmVnRXhwLnByb3RvdHlw
ZS5leGVjKCk7IHJldHVybiBmYWxzZTsKIH0gY2F0Y2goZSkge30KIHRyeSB7CiAgIERhdGUucHJv
dG90eXBlLnZhbHVlT2YoKTsgcmV0dXJuIGZhbHNlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5NTEy
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTYtMDQtMTQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAg
IFVwZGF0ZSB0cmVhdG1lbnQgb2YgaW52b2tpbmcgUmVnRXhwLnByb3RvdHlwZSBtZXRob2RzIG9u
IFJlZ0V4cC5wcm90b3R5cGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTU5MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGZhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL3RvU3RyaW5nLmpzOgorICAgICAg
ICAqIGZhc3QvcmVnZXgvdG9TdHJpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGlldGVzdGNl
bnRlci9KYXZhc2NyaXB0LzE1LjEwLjcuMS0xLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpZXRl
c3RjZW50ZXIvSmF2YXNjcmlwdC9UZXN0Q2FzZXMvMTUuMTAuNy4xLTEuanM6CisgICAgICAgIChF
UzVIYXJuZXNzLnJlZ2lzdGVyVGVzdC50ZXN0KToKKyAgICAgICAgKiBqcy9rZGUvUmVnRXhwLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9rZGUvc2NyaXB0LXRlc3RzL1JlZ0V4cC5qczoKKyAg
ICAgICAgKiBqcy9waWMvY2FjaGVkLW5hbWVkLXByb3BlcnR5LWdldHRlci5odG1sOgorICAgICAg
ICAqIGpzL3JlZ2V4cC1mbGFncy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRl
c3RzL3JlZ2V4cC1mbGFncy5qczoKKyAgICAgICAgLSB1cGRhdGVkIHRlc3QgYmVoYXZpb3JzIGlu
IHNvbWUgY2FzZXMsIGFuZCByZWJhc2VkIHJlc3VsdHMgYXMgbmVlZGVkLgorCisgICAgICAgICog
anMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLWlzLW5vdC1pbnN0YW5jZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5z
dGFuY2UuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVn
ZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5zdGFuY2UuanM6IEFkZGVkLgorICAgICAgICAtIFRlc3Rz
IG5ldyBSZWdFeHAucHJvdG90eXBlIG1ldGhvZCBiZWhhdmlvcnMuCisKKwogMjAxNi0wNC0xMyAg
QW50b25pbyBHb21lcyAgPHRvbmlraXRvb0B3ZWJraXQub3JnPgogCiAgICAgICAgIE5vbi1yZXNp
emFibGUgdGV4dCBmaWVsZCBsb29rcyByZXNpemFibGUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3Qv
cmVnZXgvdG9TdHJpbmctZXhwZWN0ZWQudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zh
c3QvcmVnZXgvdG9TdHJpbmctZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTk1MTIpCisrKyBMYXlv
dXRUZXN0cy9mYXN0L3JlZ2V4L3RvU3RyaW5nLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNSwxMCArNSwxMCBAQCBPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
CiAKIFBBU1MgUmVnRXhwKCcvJykuc291cmNlIGlzICJcXC8iCiBQQVNTIFJlZ0V4cCgnJykuc291
cmNlIGlzICIoPzopIgotUEFTUyBSZWdFeHAucHJvdG90eXBlLnNvdXJjZSB0aHJldyBleGNlcHRp
b24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBSZWdFeHAucHJvdG90eXBlLnNvdXJjZSBp
cyAiKD86KSIKIFBBU1MgUmVnRXhwKCcvJykudG9TdHJpbmcoKSBpcyAiL1xcLy8iCiBQQVNTIFJl
Z0V4cCgnJykudG9TdHJpbmcoKSBpcyAiLyg/OikvIgotUEFTUyBSZWdFeHAucHJvdG90eXBlLnRv
U3RyaW5nKCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgUmVn
RXhwLnByb3RvdHlwZS50b1N0cmluZygpIGlzICIvKD86KS8iCiBQQVNTIHRlc3RGb3J3YXJkU2xh
c2goIl4vJCIsICIvIik7IGlzIHRydWUKIFBBU1MgdGVzdEZvcndhcmRTbGFzaCgiXi8kIiwgIi8i
KTsgaXMgdHJ1ZQogUEFTUyB0ZXN0Rm9yd2FyZFNsYXNoKCJeXC8kIiwgIi8iKTsgaXMgdHJ1ZQpJ
bmRleDogTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9zY3JpcHQtdGVzdHMvdG9TdHJpbmcuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9yZWdleC9zY3JpcHQtdGVzdHMvdG9TdHJpbmcu
anMJKHJldmlzaW9uIDE5OTUxMikKKysrIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvc2NyaXB0LXRl
c3RzL3RvU3RyaW5nLmpzCSh3b3JraW5nIGNvcHkpCkBAIC0xOSwxMSArMTksMTEgQEAgZnVuY3Rp
b24gdGVzdExpbmVUZXJtaW5hdG9yKHBhdHRlcm4pCiAKIHNob3VsZEJlKCJSZWdFeHAoJy8nKS5z
b3VyY2UiLCAnIlxcXFwvIicpOwogc2hvdWxkQmUoIlJlZ0V4cCgnJykuc291cmNlIiwgJyIoPzop
IicpOwotc2hvdWxkVGhyb3coIlJlZ0V4cC5wcm90b3R5cGUuc291cmNlIiwgJyJUeXBlRXJyb3I6
IFR5cGUgZXJyb3IiJyk7CitzaG91bGRCZSgiUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UiLCAnIig/
OikiJyk7CiAKIHNob3VsZEJlKCJSZWdFeHAoJy8nKS50b1N0cmluZygpIiwgJyIvXFxcXC8vIicp
Owogc2hvdWxkQmUoIlJlZ0V4cCgnJykudG9TdHJpbmcoKSIsICciLyg/OikvIicpOwotc2hvdWxk
VGhyb3coIlJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcoKSIsICciVHlwZUVycm9yOiBUeXBlIGVy
cm9yIicpOworc2hvdWxkQmUoIlJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcoKSIsICciLyg/Oikv
IicpOwogCiAvLyBUaGVzZSBzdHJpbmdzIGFyZSBlcXVpdmFsZW50LCBzaW5jZSB0aGUgJ1wnIGlz
IGlkZW50aXR5IGVzY2FwaW5nIHRoZSAnLycgYXQgdGhlIHN0cmluZyBsZXZlbC4KIHNob3VsZEJl
VHJ1ZSgndGVzdEZvcndhcmRTbGFzaCgiXi8kIiwgIi8iKTsnKTsKSW5kZXg6IExheW91dFRlc3Rz
L2lldGVzdGNlbnRlci9KYXZhc2NyaXB0LzE1LjEwLjcuMS0xLWV4cGVjdGVkLnR4dAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBMYXlvdXRUZXN0cy9pZXRlc3RjZW50ZXIvSmF2YXNjcmlwdC8xNS4xMC43LjEtMS1l
eHBlY3RlZC50eHQJKHJldmlzaW9uIDE5OTUxMikKKysrIExheW91dFRlc3RzL2lldGVzdGNlbnRl
ci9KYXZhc2NyaXB0LzE1LjEwLjcuMS0xLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAt
MSw0ICsxLDQgQEAKLTE1LjEwLjcuMS0xIChUZXN0Q2FzZXMvY2hhcHRlcjE1LzE1LjEwLzE1LjEw
LjcvMTUuMTAuNy4xLzE1LjEwLjcuMS0xLmpzKSBSZWdFeHAucHJvdG90eXBlLnNvdXJjZSBzaG91
bGQgdGhyb3cgYmVjYXVzZSBSZWdFeHAucHJvdG90eXBlIGlzIG5vdCBhIFJlZ0V4cAorMTUuMTAu
Ny4xLTEgKFRlc3RDYXNlcy9jaGFwdGVyMTUvMTUuMTAvMTUuMTAuNy8xNS4xMC43LjEvMTUuMTAu
Ny4xLTEuanMpIFJlZ0V4cC5wcm90b3R5cGUuc291cmNlIHNob3VsZCBiZSAnKD86KScKIAogT24g
c3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93
ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgogCkluZGV4OiBMYXlvdXRUZXN0cy9pZXRlc3RjZW50ZXIv
SmF2YXNjcmlwdC9UZXN0Q2FzZXMvMTUuMTAuNy4xLTEuanMKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvaWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQvVGVzdENhc2VzLzE1LjEwLjcuMS0xLmpzCShy
ZXZpc2lvbiAxOTk1MTIpCisrKyBMYXlvdXRUZXN0cy9pZXRlc3RjZW50ZXIvSmF2YXNjcmlwdC9U
ZXN0Q2FzZXMvMTUuMTAuNy4xLTEuanMJKHdvcmtpbmcgY29weSkKQEAgLTI0LDE0ICsyNCw5IEBA
IGlkOiAiMTUuMTAuNy4xLTEiLA0KIA0KIHBhdGg6ICJUZXN0Q2FzZXMvY2hhcHRlcjE1LzE1LjEw
LzE1LjEwLjcvMTUuMTAuNy4xLzE1LjEwLjcuMS0xLmpzIiwNCiANCi1kZXNjcmlwdGlvbjogIlJl
Z0V4cC5wcm90b3R5cGUuc291cmNlIHNob3VsZCB0aHJvdyBiZWNhdXNlIFJlZ0V4cC5wcm90b3R5
cGUgaXMgbm90IGEgUmVnRXhwIiwNCitkZXNjcmlwdGlvbjogIlJlZ0V4cC5wcm90b3R5cGUuc291
cmNlIHNob3VsZCBiZSAnKD86KSciLA0KIA0KIHRlc3Q6IGZ1bmN0aW9uIHRlc3RjYXNlKCkgew0K
LSAgICB0cnkgew0KLSAgICAgICAgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2U7DQotICAgICAgICBy
ZXR1cm4gZmFsc2U7DQotICAgIH0gY2F0Y2ggKGUpIHsNCi0gICAgICAgIHJldHVybiB0cnVlOw0K
LSAgICB9DQorICAgIHJldHVybiBSZWdFeHAucHJvdG90eXBlLnNvdXJjZSA9PT0gJyg/OiknOw0K
ICB9DQogfSk7DQpJbmRleDogTGF5b3V0VGVzdHMvanMvcmVnZXhwLWZsYWdzLWV4cGVjdGVkLnR4
dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdleHAtZmxhZ3MtZXhwZWN0ZWQudHh0
CShyZXZpc2lvbiAxOTk1MTIpCisrKyBMYXlvdXRUZXN0cy9qcy9yZWdleHAtZmxhZ3MtZXhwZWN0
ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0xNCwxMCArMTQsMTAgQEAgUEFTUyAvYS9nbWkuZmxh
Z3MgaXMgJ2dpbScKIFBBU1MgbmV3IFJlZ0V4cCgnYScsICdnbWknKS5mbGFncyBpcyAnZ2ltJwog
UEFTUyBmbGFncy5jYWxsKC9hL2lnKSBpcyAnZ2knCiBub24tb2JqZWN0IHJlY2VpdmVycwotUEFT
UyBmbGFncy5jYWxsKHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBl
cnJvci4KLVBBU1MgZmxhZ3MuY2FsbChudWxsKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBU
eXBlIGVycm9yLgotUEFTUyBmbGFncy5jYWxsKGZhbHNlKSB0aHJldyBleGNlcHRpb24gVHlwZUVy
cm9yOiBUeXBlIGVycm9yLgotUEFTUyBmbGFncy5jYWxsKHRydWUpIHRocmV3IGV4Y2VwdGlvbiBU
eXBlRXJyb3I6IFR5cGUgZXJyb3IuCitQQVNTIGZsYWdzLmNhbGwodW5kZWZpbmVkKSB0aHJldyBl
eGNlcHRpb24gVHlwZUVycm9yOiBUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0ZXIgY2Fu
IG9ubHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdC4KK1BBU1MgZmxhZ3MuY2FsbChudWxsKSB0aHJl
dyBleGNlcHRpb24gVHlwZUVycm9yOiBUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0ZXIg
Y2FuIG9ubHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdC4KK1BBU1MgZmxhZ3MuY2FsbChmYWxzZSkg
dGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MgZ2V0
dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QuCitQQVNTIGZsYWdzLmNhbGwodHJ1
ZSkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3Mg
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QuCiBub24tcmVnZXggb2JqZWN0
cwogUEFTUyBmbGFncy5jYWxsKHt9KSBpcyAnJwogUEFTUyBmbGFncy5jYWxsKHtnbG9iYWw6IHRy
dWUsIG11bHRpbGluZTogdHJ1ZSwgaWdub3JlQ2FzZTogdHJ1ZX0pIGlzICdnaW0nCkluZGV4OiBM
YXlvdXRUZXN0cy9qcy9rZGUvUmVnRXhwLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9qcy9rZGUvUmVnRXhwLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk5NTEyKQorKysg
TGF5b3V0VGVzdHMvanMva2RlL1JlZ0V4cC1leHBlY3RlZC50eHQJKHdvcmtpbmcgY29weSkKQEAg
LTkxLDcgKzkxLDcgQEAgUEFTUyBzdHIubWF0Y2goL2QvZ2kpLnRvU3RyaW5nKCkgaXMgJ0QsZAog
UEFTUyAvXHUwMDYxLy5zb3VyY2UgaXMgJ1xcdTAwNjEnCiBQQVNTICdhYmMnLm1hdGNoKC9cdTAw
NjIvKS50b1N0cmluZygpIGlzICdiJwogUEFTUyBPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFw
cGx5KFJlZ0V4cC5wcm90b3R5cGUpIGlzICdbb2JqZWN0IE9iamVjdF0nCi1QQVNTIFJlZ0V4cC5w
cm90b3R5cGUudG9TdHJpbmcoKSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9y
LgorUEFTUyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nKCkgaXMgJy8oPzopLycKIFBBU1MgbmV3
IFJlZ0V4cCgpLnRvU3RyaW5nKCkgaXMgJy8oPzopLycKIFBBU1MgKG5ldyBSZWdFeHAoJyg/Oikn
KSkuc291cmNlIGlzICcoPzopJwogUEFTUyAvKD86KS8udG9TdHJpbmcoKSBpcyAnLyg/OikvJwpJ
bmRleDogTGF5b3V0VGVzdHMvanMva2RlL3NjcmlwdC10ZXN0cy9SZWdFeHAuanMKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gTGF5b3V0VGVzdHMvanMva2RlL3NjcmlwdC10ZXN0cy9SZWdFeHAuanMJKHJldmlzaW9u
IDE5OTUxMikKKysrIExheW91dFRlc3RzL2pzL2tkZS9zY3JpcHQtdGVzdHMvUmVnRXhwLmpzCSh3
b3JraW5nIGNvcHkpCkBAIC0xNDcsNyArMTQ3LDcgQEAgc2hvdWxkQmUoIk9iamVjdC5wcm90b3R5
cGUudG9TdHJpbmcuYXBwbAogCiAvLyBub3Qgc3VyZSB3aGF0IHRoaXMgc2hvdWxkIHJldHVybi4g
bW9zdCBpbXBvcnRhbnRseQogLy8gaXQgZG9lc24ndCB0aHJvdyBhbiBleGNlcHRpb24KLXNob3Vs
ZFRocm93KCJSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nKCkiLCAiJ1R5cGVFcnJvcjogVHlwZSBl
cnJvciciKTsKK3Nob3VsZEJlKCJSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nKCkiLCAiJy8oPzop
LyciKTsKIAogLy8gRW1wdHkgcmVndWxhciBleHByZXNzaW9ucyBoYXZlIHN0cmluZyByZXByZXNl
bnRhdGlvbiAvKD86KS8KIHNob3VsZEJlKCJuZXcgUmVnRXhwKCkudG9TdHJpbmcoKSIsICInLyg/
OikvJyIpOwpJbmRleDogTGF5b3V0VGVzdHMvanMvcGljL2NhY2hlZC1uYW1lZC1wcm9wZXJ0eS1n
ZXR0ZXIuaHRtbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9waWMvY2FjaGVkLW5hbWVk
LXByb3BlcnR5LWdldHRlci5odG1sCShyZXZpc2lvbiAxOTk1MTIpCisrKyBMYXlvdXRUZXN0cy9q
cy9waWMvY2FjaGVkLW5hbWVkLXByb3BlcnR5LWdldHRlci5odG1sCSh3b3JraW5nIGNvcHkpCkBA
IC05Miw5ICs5Miw5IEBAIHlvdSdsbCBzZWUgYSBzZXJpZXMgb2YgUEFTUyBtZXNzYWdlcyBiZWwK
IAogICAgIHNob3VsZFRocm93KGZ1bmN0aW9uICgpIHsKICAgICAgICAgdGVzdEN1c3RvbUdldHRl
cih7X19wcm90b19fOiByfSk7Ci0gICAgfSwgIlR5cGVFcnJvcjogVHlwZSBlcnJvciIpOworICAg
IH0sICJUeXBlRXJyb3I6IFRoZSBSZWdFeHAucHJvdG90eXBlLnNvdXJjZSBnZXR0ZXIgY2FuIG9u
bHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpOwogICAgIHNob3VsZFRocm93KGZ1bmN0
aW9uICgpIHsKICAgICAgICAgdGVzdEN1c3RvbUdldHRlcih7X19wcm90b19fOiB7X19wcm90b19f
OiByfX0pOwotICAgIH0sICJUeXBlRXJyb3I6IFR5cGUgZXJyb3IiKTsKKyAgICB9LCAiVHlwZUVy
cm9yOiBUaGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxl
ZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKIH0pKCk7CiA8L3NjcmlwdD4KSW5kZXg6IExheW91dFRl
c3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5zdGFuY2UtZXhwZWN0ZWQu
dHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlw
ZS1pcy1ub3QtaW5zdGFuY2UtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVz
dHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLWlzLW5vdC1pbnN0YW5jZS1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTAsMCArMSwxMCBAQAorSlNSZWdyZXNzL3JlZ2V4cC1wcm90
b3R5cGUtaXMtbm90LWluc3RhbmNlCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmll
cyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQ
QVNTIG5vIGV4Y2VwdGlvbiB0aHJvd24KK1BBU1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUK
KworVEVTVCBDT01QTEVURQorCkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1w
cm90b3R5cGUtaXMtbm90LWluc3RhbmNlLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLWlzLW5vdC1pbnN0YW5jZS5odG1sCShyZXZpc2lv
biAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLWlzLW5vdC1p
bnN0YW5jZS5odG1sCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTMgQEAKKzwhRE9DVFlQRSBI
VE1MIFBVQkxJQyAiLS8vSUVURi8vRFREIEhUTUwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8c2Ny
aXB0IHNyYz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3NjcmlwdD4KKzwvaGVh
ZD4KKzxib2R5PgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9yZWdyZXNzLXByZS5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtaXMt
bm90LWluc3RhbmNlLmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
cmVncmVzcy1wb3N0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJjZXMv
anMtdGVzdC1wb3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KKwpJbmRleDogTGF5
b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVnZXhwLXByb3RvdHlwZS1pcy1ub3Qt
aW5zdGFuY2UuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQt
dGVzdHMvcmVnZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5zdGFuY2UuanMJKHJldmlzaW9uIDApCisr
KyBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3NjcmlwdC10ZXN0cy9yZWdleHAtcHJvdG90eXBlLWlz
LW5vdC1pbnN0YW5jZS5qcwkod29ya2luZyBjb3B5KQpAQCAtMCwwICsxLDcxIEBACisvL0AgcnVu
RGVmYXVsdAorCitmdW5jdGlvbiBzdHJpbmdpZnkoeCkgeworICAgIGlmICh0eXBlb2YgeCA9PSAi
c3RyaW5nIikKKyAgICAgICAgcmV0dXJuICciJyArIHggKyAnIic7CisgICAgcmV0dXJuIHg7Cit9
CisKK2Z1bmN0aW9uIGFzc2VydChhY3R1YWwsIGV4cGVjdGVkKSB7CisgICAgaWYgKGFjdHVhbCAh
PT0gZXhwZWN0ZWQpCisgICAgICAgIHRocm93IEVycm9yKCJGQUlMOiBleHBlY3RlZCAiICsgc3Ry
aW5naWZ5KGV4cGVjdGVkKSArICIsIGFjdHVhbCAiICsgc3RyaW5naWZ5KGFjdHVhbCkpOworfQor
CitmdW5jdGlvbiBhc3NlcnRUaHJvd3MoZnVuYywgZXhwZWN0ZWRFcnJNc2cpIHsKKyAgICBsZXQg
YWN0dWFsRXJyTXNnOworICAgIHRyeSB7CisgICAgICAgIGZ1bmMoKTsKKyAgICAgICAgdGhyb3co
IkZBSUw6IGRpZCBub3QgdGhyb3ciKTsKKyAgICB9IGNhdGNoKGUpIHsKKyAgICAgICAgYWN0dWFs
RXJyTXNnID0gZS50b1N0cmluZygpOworICAgIH0KKyAgICBhc3NlcnQoYWN0dWFsRXJyTXNnLCBl
eHBlY3RlZEVyck1zZyk7Cit9CisKK2Fzc2VydChSZWdFeHAucHJvdG90eXBlIGluc3RhbmNlb2Yg
UmVnRXhwLCBmYWxzZSk7CisKK2Fzc2VydChSZWdFeHAucHJvdG90eXBlLmZsYWdzLCAiIik7Cith
c3NlcnQoUmVnRXhwLnByb3RvdHlwZS5nbG9iYWwsIHZvaWQgMCk7Cithc3NlcnQoUmVnRXhwLnBy
b3RvdHlwZS5pZ25vcmVDYXNlLCB2b2lkIDApOworYXNzZXJ0KFJlZ0V4cC5wcm90b3R5cGUubXVs
dGlsaW5lLCB2b2lkIDApOworYXNzZXJ0KFJlZ0V4cC5wcm90b3R5cGUudW5pY29kZSwgdm9pZCAw
KTsKK2Fzc2VydChSZWdFeHAucHJvdG90eXBlLnN0aWNreSwgdm9pZCAwKTsKK2Fzc2VydChSZWdF
eHAucHJvdG90eXBlLnNvdXJjZSwgIig/OikiKTsKK2Fzc2VydChSZWdFeHAucHJvdG90eXBlLnRv
U3RyaW5nKCksICIvKD86KS8iKTsKKworYXNzZXJ0KE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgJ2ZsYWdzJykuZ2V0LmNhbGwoe30pLCAiIik7CisKK2Fz
c2VydFRocm93cygoKSA9PiB7CisgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0
b3IoUmVnRXhwLnByb3RvdHlwZSwgJ2ZsYWdzJykuZ2V0LmNhbGwoMSk7CisgICAgfSwgCisgICAg
IlR5cGVFcnJvcjogVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJl
IGNhbGxlZCBvbiBhbiBvYmplY3QiKTsKKworYXNzZXJ0VGhyb3dzKCgpID0+IHsKKyAgICAgICAg
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCAnaWdub3Jl
Q2FzZScpLmdldC5jYWxsKHt9KTsKKyAgICB9LAorICAgICJUeXBlRXJyb3I6IFRoZSBSZWdFeHAu
cHJvdG90eXBlLmlnbm9yZUNhc2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4
cCBvYmplY3QiKTsKKworYXNzZXJ0VGhyb3dzKCgpID0+IHsKKyAgICAgICAgT2JqZWN0LmdldE93
blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCAnbXVsdGlsaW5lJykuZ2V0LmNh
bGwoe30pOworICAgIH0sCisgICAgIlR5cGVFcnJvcjogVGhlIFJlZ0V4cC5wcm90b3R5cGUubXVs
dGlsaW5lIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iik7CisK
K2Fzc2VydFRocm93cygoKSA9PiB7CisgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2Ny
aXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgJ3VuaWNvZGUnKS5nZXQuY2FsbCh7fSk7CisgICAgfSwK
KyAgICAiVHlwZUVycm9yOiBUaGUgUmVnRXhwLnByb3RvdHlwZS51bmljb2RlIGdldHRlciBjYW4g
b25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iik7CisKK2Fzc2VydFRocm93cygoKSA9
PiB7CisgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3Rv
dHlwZSwgJ3N0aWNreScpLmdldC5jYWxsKHt9KTsKKyAgICB9LAorICAgICJUeXBlRXJyb3I6IFRo
ZSBSZWdFeHAucHJvdG90eXBlLnN0aWNreSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEg
UmVnRXhwIG9iamVjdCIpOworCithc3NlcnRUaHJvd3MoKCkgPT4geworICAgICAgICBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsICdzb3VyY2UnKS5nZXQu
Y2FsbCh7fSk7CisgICAgfSwKKyAgICAiVHlwZUVycm9yOiBUaGUgUmVnRXhwLnByb3RvdHlwZS5z
b3VyY2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKKwor
YXNzZXJ0VGhyb3dzKCgpID0+IHsKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3Jp
cHRvcihSZWdFeHAucHJvdG90eXBlLCAndG9TdHJpbmcnKS5nZXQuY2FsbCh7fSk7CisgICAgfSwK
KyAgICAiVHlwZUVycm9yOiB1bmRlZmluZWQgaXMgbm90IGFuIG9iamVjdCAoZXZhbHVhdGluZyAn
T2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90eXBlLCAndG9TdHJp
bmcnKS5nZXQuY2FsbCcpIik7CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVn
ZXhwLWZsYWdzLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL3NjcmlwdC10ZXN0cy9y
ZWdleHAtZmxhZ3MuanMJKHJldmlzaW9uIDE5OTUxMikKKysrIExheW91dFRlc3RzL2pzL3Njcmlw
dC10ZXN0cy9yZWdleHAtZmxhZ3MuanMJKHdvcmtpbmcgY29weSkKQEAgLTE2LDEwICsxNiwxMCBA
QCBzaG91bGRCZSgibmV3IFJlZ0V4cCgnYScsICdnbWknKS5mbGFncyIsCiBzaG91bGRCZSgiZmxh
Z3MuY2FsbCgvYS9pZykiLCAiJ2dpJyIpOwogCiBkZWJ1Zygibm9uLW9iamVjdCByZWNlaXZlcnMi
KTsKLXNob3VsZFRocm93KCJmbGFncy5jYWxsKHVuZGVmaW5lZCkiLCAiJ1R5cGVFcnJvcjogVHlw
ZSBlcnJvciciKTsKLXNob3VsZFRocm93KCJmbGFncy5jYWxsKG51bGwpIiwgIidUeXBlRXJyb3I6
IFR5cGUgZXJyb3InIik7Ci1zaG91bGRUaHJvdygiZmxhZ3MuY2FsbChmYWxzZSkiLCAiJ1R5cGVF
cnJvcjogVHlwZSBlcnJvciciKTsKLXNob3VsZFRocm93KCJmbGFncy5jYWxsKHRydWUpIiwgIidU
eXBlRXJyb3I6IFR5cGUgZXJyb3InIik7CitzaG91bGRUaHJvdygiZmxhZ3MuY2FsbCh1bmRlZmlu
ZWQpIiwgIidUeXBlRXJyb3I6IFRoZSBSZWdFeHAucHJvdG90eXBlLmZsYWdzIGdldHRlciBjYW4g
b25seSBiZSBjYWxsZWQgb24gYW4gb2JqZWN0JyIpOworc2hvdWxkVGhyb3coImZsYWdzLmNhbGwo
bnVsbCkiLCAiJ1R5cGVFcnJvcjogVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNh
biBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QnIik7CitzaG91bGRUaHJvdygiZmxhZ3MuY2Fs
bChmYWxzZSkiLCAiJ1R5cGVFcnJvcjogVGhlIFJlZ0V4cC5wcm90b3R5cGUuZmxhZ3MgZ2V0dGVy
IGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QnIik7CitzaG91bGRUaHJvdygiZmxhZ3Mu
Y2FsbCh0cnVlKSIsICInVHlwZUVycm9yOiBUaGUgUmVnRXhwLnByb3RvdHlwZS5mbGFncyBnZXR0
ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdCciKTsKIAogZGVidWcoIm5vbi1yZWdl
eCBvYmplY3RzIik7CiBzaG91bGRCZSgiZmxhZ3MuY2FsbCh7fSkiLCAiJyciKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>276404</attachid>
            <date>2016-04-14 10:52:59 -0700</date>
            <delta_ts>2016-04-14 10:59:25 -0700</delta_ts>
            <desc>proposed patch: rebased to ToT.</desc>
            <filename>bug-155922.patch</filename>
            <type>text/plain</type>
            <size>20473</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5NTQyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDQwIEBA
CisyMDE2LTA0LTE0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBV
cGRhdGUgdHJlYXRtZW50IG9mIGludm9raW5nIFJlZ0V4cC5wcm90b3R5cGUgbWV0aG9kcyBvbiBS
ZWdFeHAucHJvdG90eXBlLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTU1OTIyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQWNjb3JkaW5nIHRvIHRoZSBUQzM5IGNvbW1pdHRlZSwgd2hlbiBpbnZva2luZyB0
aGUgZm9sbG93aW5nIFJlZ0V4cC5wcm90b3R5cGUKKyAgICAgICAgbWV0aG9kcyBvbiB0aGUgUmVn
RXhwLnByb3RvdHlwZToKKyAgICAgICAgMS4gUmVnRXhwLnByb3RvdHlwZS5mbGFncyB5aWVsZHMg
IiIKKyAgICAgICAgMi4gUmVnRXhwLnByb3RvdHlwZS5nbG9iYWwgeWllbGRzIHVuZGVmaW5lZAor
ICAgICAgICAzLiBSZWdFeHAucHJvdG90eXBlLmlnbm9yZUNhc2UgeWllbGRzIHVuZGVmaW5lZAor
ICAgICAgICA0LiBSZWdFeHAucHJvdG90eXBlLm11bHRpbGluZSB5aWVsZHMgdW5kZWZpbmVkCisg
ICAgICAgIDUuIFJlZ0V4cC5wcm90b3R5cGUudW5pY29kZSB5aWVsZHMgdW5kZWZpbmVkCisgICAg
ICAgIDYuIFJlZ0V4cC5wcm90b3R5cGUuc291cmNlIHlpZWxkcyAiKD86KSIKKyAgICAgICAgNy4g
UmVnRXhwLnByb3RvdHlwZS5zdGlja3kgeWllbGRzIHVuZGVmaW5lZAorICAgICAgICA4LiBSZWdF
eHAucHJvdG90eXBlLnRvU3RyaW5nKCkgeWllbGRzICIvKD86KS8iCisKKyAgICAgICAgYW5kIFJl
Z0V4cC5wcm90b3R5cGUgaXMgc3RpbGwgTk9UIGFuIGluc3RhbmNlIG9mIFJlZ0V4cC4gIFRoZSBh
Ym92ZSBiZWhhdmlvcgorICAgICAgICBjaGFuZ2VzIGlzIGEgc3BlY2lhbCBkaXNwZW5zYXRpb24g
YXBwbGljYWJsZSBvbmx5IHRvIFJlZ0V4cC5wcm90b3R5cGUuICBUaGUgRVM2CisgICAgICAgIHNw
ZWMgb2YgdGhyb3dpbmcgZXJyb3JzIHN0aWxsIGFwcGxpZXMgaWYgdGhvc2UgbWV0aG9kcyBhcmUg
YXBwbGllZCB0byBhbnl0aGluZyA9CisgICAgICAgIGVsc2UgdGhhdCBpcyBub3QgYSBSZWdFeHAg
b2JqZWN0LgorCisgICAgICAgICogcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwOgorICAgICAg
ICAoSlNDOjpyZWdFeHBQcm90b0dldHRlckdsb2JhbCk6CisgICAgICAgIChKU0M6OnJlZ0V4cFBy
b3RvR2V0dGVySWdub3JlQ2FzZSk6CisgICAgICAgIChKU0M6OnJlZ0V4cFByb3RvR2V0dGVyTXVs
dGlsaW5lKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTdGlja3kpOgorICAgICAg
ICAoSlNDOjpyZWdFeHBQcm90b0dldHRlclVuaWNvZGUpOgorICAgICAgICAoSlNDOjpyZWdFeHBQ
cm90b0dldHRlckZsYWdzKToKKyAgICAgICAgKEpTQzo6cmVnRXhwUHJvdG9HZXR0ZXJTb3VyY2Up
OgorICAgICAgICAtIEltcGxlbWVudGVkIG5ldyBiZWhhdmlvci4KKworICAgICAgICAqIHRlc3Rz
L2VzNi9taXNjZWxsYW5lb3VzX2J1aWx0LWluX3Byb3RvdHlwZXNfYXJlX25vdF9pbnN0YW5jZXMu
anM6CisgICAgICAgICh0ZXN0KToKKyAgICAgICAgLSBVcGRhdGVkIHRvIG1hdGNoIGN1cnJlbnQg
a2FuZ2F4IHRlc3QuCisKIDIwMTYtMDQtMTMgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5z
ZW5Ad2Via2l0Lm9yZz4KIAogICAgICAgICBDTWFrZSBNaW5pQnJvd3NlciBzaG91bGQgYmUgYW4g
YXBwIGJ1bmRsZQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvUmVnRXhwUHJv
dG90eXBlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9S
ZWdFeHBQcm90b3R5cGUuY3BwCShyZXZpc2lvbiAxOTk1NDIpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9SZWdFeHBQcm90b3R5cGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yNDQs
OCArMjQ0LDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJHbG9iYWwoRXhlY1N0
YXRlKiBleGVjKQogewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7
Ci0gICAgaWYgKCF0aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAg
ICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlmICghdGhp
c1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkgeworICAgICAgICBpZiAodGhp
c1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5mbygpKSkKKyAgICAgICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuZ2xv
YmFsIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAg
IH0KIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0
KHRoaXNWYWx1ZSktPnJlZ0V4cCgpLT5nbG9iYWwoKSkpOwogfQpAQCAtMjUzLDggKzI1NiwxMSBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvCiBFbmNvZGVkSlNWYWx1
ZSBKU0NfSE9TVF9DQUxMIHJlZ0V4cFByb3RvR2V0dGVySWdub3JlQ2FzZShFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgaWYgKCF0aGlzVmFsdWUu
aW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKSB7CisgICAgICAgIGlmICh0aGlzVmFsdWUu
aW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5pZ25vcmVDYXNl
IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgIH0K
IAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNCb29sZWFuKGFzUmVnRXhwT2JqZWN0KHRo
aXNWYWx1ZSktPnJlZ0V4cCgpLT5pZ25vcmVDYXNlKCkpKTsKIH0KQEAgLTI2Miw4ICsyNjgsMTEg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogRW5jb2RlZEpTVmFs
dWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90b0dldHRlck11bHRpbGluZShFeGVjU3RhdGUqIGV4
ZWMpCiB7CiAgICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICBp
ZiAoIXRoaXNWYWx1ZS5pbmhlcml0cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJl
dHVybiBKU1ZhbHVlOjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgaWYgKCF0aGlzVmFsdWUu
aW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKSB7CisgICAgICAgIGlmICh0aGlzVmFsdWUu
aW5oZXJpdHMoUmVnRXhwUHJvdG90eXBlOjppbmZvKCkpKQorICAgICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc1VuZGVmaW5lZCgpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5tdWx0aWxpbmUg
Z2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CisgICAgfQog
CiAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3QodGhp
c1ZhbHVlKS0+cmVnRXhwKCktPm11bHRpbGluZSgpKSk7CiB9CkBAIC0yNzEsOCArMjgwLDExIEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG9HZXR0ZXJTdGlja3koRXhlY1N0YXRlKiBleGVjKQog
ewogICAgIEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0
aGlzVmFsdWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4g
SlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVy
aXRzKFJlZ0V4cE9iamVjdDo6aW5mbygpKSkgeworICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVy
aXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5mbygpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMsIEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUuc3RpY2t5IGdldHRlciBj
YW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0IikpOworICAgIH0KICAgICAKICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzQm9vbGVhbihhc1JlZ0V4cE9iamVjdCh0aGlzVmFs
dWUpLT5yZWdFeHAoKS0+c3RpY2t5KCkpKTsKIH0KQEAgLTI4MCw4ICsyOTIsMTEgQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCByZWdFeHBQcm90bwogRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCByZWdFeHBQcm90b0dldHRlclVuaWNvZGUoRXhlY1N0YXRlKiBleGVjKQogewogICAg
IEpTVmFsdWUgdGhpc1ZhbHVlID0gZXhlYy0+dGhpc1ZhbHVlKCk7Ci0gICAgaWYgKCF0aGlzVmFs
dWUuaW5oZXJpdHMoUmVnRXhwT2JqZWN0OjppbmZvKCkpKQotICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKFJl
Z0V4cE9iamVjdDo6aW5mbygpKSkgeworICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJl
Z0V4cFByb3RvdHlwZTo6aW5mbygpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNVbmRlZmluZWQoKSk7CisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IEFTQ0lJTGl0ZXJhbCgiVGhlIFJlZ0V4cC5wcm90b3R5cGUudW5pY29kZSBnZXR0ZXIgY2FuIG9u
bHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpKTsKKyAgICB9CiAgICAgCiAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZShqc0Jvb2xlYW4oYXNSZWdFeHBPYmplY3QodGhpc1ZhbHVlKS0+
cmVnRXhwKCktPnVuaWNvZGUoKSkpOwogfQpAQCAtMjkwLDcgKzMwNSw3IEBAIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgcmVnRXhwUHJvdG8KIHsKICAgICBKU1ZhbHVlIHRoaXNWYWx1ZSA9
IGV4ZWMtPnRoaXNWYWx1ZSgpOwogICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkpCi0gICAg
ICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMpOworICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCBBU0NJSUxpdGVyYWwoIlRoZSBSZWdFeHAucHJvdG90eXBlLmZsYWdz
IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYW4gb2JqZWN0IikpOwogCiAgICAgYXV0byBm
bGFncyA9IGZsYWdzU3RyaW5nKGV4ZWMsIGFzT2JqZWN0KHRoaXNWYWx1ZSkpOwogICAgIGlmIChl
eGVjLT5oYWRFeGNlcHRpb24oKSkKQEAgLTQwOCw4ICs0MjMsMTEgQEAgc3RhdGljIGlubGluZSBK
U1ZhbHVlIHJlZ0V4cFByb3RvR2V0dGVyUwogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBy
ZWdFeHBQcm90b0dldHRlclNvdXJjZShFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgSlNWYWx1ZSB0
aGlzVmFsdWUgPSBleGVjLT50aGlzVmFsdWUoKTsKLSAgICBpZiAoIXRoaXNWYWx1ZS5pbmhlcml0
cyhSZWdFeHBPYmplY3Q6OmluZm8oKSkpCi0gICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9y
KGV4ZWMpOworICAgIGlmICghdGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cE9iamVjdDo6aW5mbygp
KSkgeworICAgICAgICBpZiAodGhpc1ZhbHVlLmluaGVyaXRzKFJlZ0V4cFByb3RvdHlwZTo6aW5m
bygpKSkKKyAgICAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoanNTdHJpbmcoZXhlYywg
QVNDSUlMaXRlcmFsKCIoPzopIikpKTsKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgQVNDSUlMaXRlcmFsKCJUaGUgUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UgZ2V0dGVyIGNh
biBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKSk7CisgICAgfQogCiAgICAgU3Ry
aW5nIHBhdHRlcm4gPSBhc1JlZ0V4cE9iamVjdCh0aGlzVmFsdWUpLT5yZWdFeHAoKS0+cGF0dGVy
bigpOwogICAgIGlmIChwYXR0ZXJuLmlzOEJpdCgpKQpJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL3Rlc3RzL2VzNi9taXNjZWxsYW5lb3VzX2J1aWx0LWluX3Byb3RvdHlwZXNfYXJlX25vdF9p
bnN0YW5jZXMuanMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL2Vz
Ni9taXNjZWxsYW5lb3VzX2J1aWx0LWluX3Byb3RvdHlwZXNfYXJlX25vdF9pbnN0YW5jZXMuanMJ
KHJldmlzaW9uIDE5OTU0MikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9lczYvbWlz
Y2VsbGFuZW91c19idWlsdC1pbl9wcm90b3R5cGVzX2FyZV9ub3RfaW5zdGFuY2VzLmpzCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDcgKzEsNyBAQAogZnVuY3Rpb24gdGVzdCgpIHsKIAogdHJ5IHsKLSAg
UmVnRXhwLnByb3RvdHlwZS5zb3VyY2U7IHJldHVybiBmYWxzZTsKKyAgUmVnRXhwLnByb3RvdHlw
ZS5leGVjKCk7IHJldHVybiBmYWxzZTsKIH0gY2F0Y2goZSkge30KIHRyeSB7CiAgIERhdGUucHJv
dG90eXBlLnZhbHVlT2YoKTsgcmV0dXJuIGZhbHNlOwpJbmRleDogTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL0NoYW5nZUxvZwkocmV2aXNpb24gMTk5NTQy
KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMjgg
QEAKKzIwMTYtMDQtMTQgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAg
IFVwZGF0ZSB0cmVhdG1lbnQgb2YgaW52b2tpbmcgUmVnRXhwLnByb3RvdHlwZSBtZXRob2RzIG9u
IFJlZ0V4cC5wcm90b3R5cGUuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNTU5MjIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4K
KworICAgICAgICAqIGZhc3QvcmVnZXgvc2NyaXB0LXRlc3RzL3RvU3RyaW5nLmpzOgorICAgICAg
ICAqIGZhc3QvcmVnZXgvdG9TdHJpbmctZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGlldGVzdGNl
bnRlci9KYXZhc2NyaXB0LzE1LjEwLjcuMS0xLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpZXRl
c3RjZW50ZXIvSmF2YXNjcmlwdC9UZXN0Q2FzZXMvMTUuMTAuNy4xLTEuanM6CisgICAgICAgIChF
UzVIYXJuZXNzLnJlZ2lzdGVyVGVzdC50ZXN0KToKKyAgICAgICAgKiBqcy9rZGUvUmVnRXhwLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBqcy9rZGUvc2NyaXB0LXRlc3RzL1JlZ0V4cC5qczoKKyAg
ICAgICAgKiBqcy9waWMvY2FjaGVkLW5hbWVkLXByb3BlcnR5LWdldHRlci5odG1sOgorICAgICAg
ICAqIGpzL3JlZ2V4cC1mbGFncy1leHBlY3RlZC50eHQ6CisgICAgICAgICoganMvc2NyaXB0LXRl
c3RzL3JlZ2V4cC1mbGFncy5qczoKKyAgICAgICAgLSB1cGRhdGVkIHRlc3QgYmVoYXZpb3JzIGlu
IHNvbWUgY2FzZXMsIGFuZCByZWJhc2VkIHJlc3VsdHMgYXMgbmVlZGVkLgorCisgICAgICAgICog
anMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLWlzLW5vdC1pbnN0YW5jZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIGpzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5z
dGFuY2UuaHRtbDogQWRkZWQuCisgICAgICAgICoganMvcmVncmVzcy9zY3JpcHQtdGVzdHMvcmVn
ZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5zdGFuY2UuanM6IEFkZGVkLgorICAgICAgICAtIFRlc3Rz
IG5ldyBSZWdFeHAucHJvdG90eXBlIG1ldGhvZCBiZWhhdmlvcnMuCisKKwogMjAxNi0wNC0xNCAg
RGFyaW4gQWRsZXIgIDxkYXJpbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmVtb3ZlIFVzZVBvaW50
ZXJzRXZlbkZvck5vbk51bGxhYmxlT2JqZWN0QXJndW1lbnRzIGZyb20gSW50ZXJuYWxzCkluZGV4
OiBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3RvU3RyaW5nLWV4cGVjdGVkLnR4dAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L3JlZ2V4L3RvU3RyaW5nLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMTk5NTQyKQorKysgTGF5b3V0VGVzdHMvZmFzdC9yZWdleC90b1N0cmluZy1leHBlY3RlZC50
eHQJKHdvcmtpbmcgY29weSkKQEAgLTUsMTAgKzUsMTAgQEAgT24gc3VjY2VzcywgeW91IHdpbGwg
c2VlIGEgc2VyaWVzIG9mICJQQQogCiBQQVNTIFJlZ0V4cCgnLycpLnNvdXJjZSBpcyAiXFwvIgog
UEFTUyBSZWdFeHAoJycpLnNvdXJjZSBpcyAiKD86KSIKLVBBU1MgUmVnRXhwLnByb3RvdHlwZS5z
b3VyY2UgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgUmVnRXhw
LnByb3RvdHlwZS5zb3VyY2UgaXMgIig/OikiCiBQQVNTIFJlZ0V4cCgnLycpLnRvU3RyaW5nKCkg
aXMgIi9cXC8vIgogUEFTUyBSZWdFeHAoJycpLnRvU3RyaW5nKCkgaXMgIi8oPzopLyIKLVBBU1Mg
UmVnRXhwLnByb3RvdHlwZS50b1N0cmluZygpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFR5
cGUgZXJyb3IuCitQQVNTIFJlZ0V4cC5wcm90b3R5cGUudG9TdHJpbmcoKSBpcyAiLyg/OikvIgog
UEFTUyB0ZXN0Rm9yd2FyZFNsYXNoKCJeLyQiLCAiLyIpOyBpcyB0cnVlCiBQQVNTIHRlc3RGb3J3
YXJkU2xhc2goIl4vJCIsICIvIik7IGlzIHRydWUKIFBBU1MgdGVzdEZvcndhcmRTbGFzaCgiXlwv
JCIsICIvIik7IGlzIHRydWUKSW5kZXg6IExheW91dFRlc3RzL2Zhc3QvcmVnZXgvc2NyaXB0LXRl
c3RzL3RvU3RyaW5nLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2Zhc3QvcmVnZXgvc2Ny
aXB0LXRlc3RzL3RvU3RyaW5nLmpzCShyZXZpc2lvbiAxOTk1NDIpCisrKyBMYXlvdXRUZXN0cy9m
YXN0L3JlZ2V4L3NjcmlwdC10ZXN0cy90b1N0cmluZy5qcwkod29ya2luZyBjb3B5KQpAQCAtMTks
MTEgKzE5LDExIEBAIGZ1bmN0aW9uIHRlc3RMaW5lVGVybWluYXRvcihwYXR0ZXJuKQogCiBzaG91
bGRCZSgiUmVnRXhwKCcvJykuc291cmNlIiwgJyJcXFxcLyInKTsKIHNob3VsZEJlKCJSZWdFeHAo
JycpLnNvdXJjZSIsICciKD86KSInKTsKLXNob3VsZFRocm93KCJSZWdFeHAucHJvdG90eXBlLnNv
dXJjZSIsICciVHlwZUVycm9yOiBUeXBlIGVycm9yIicpOworc2hvdWxkQmUoIlJlZ0V4cC5wcm90
b3R5cGUuc291cmNlIiwgJyIoPzopIicpOwogCiBzaG91bGRCZSgiUmVnRXhwKCcvJykudG9TdHJp
bmcoKSIsICciL1xcXFwvLyInKTsKIHNob3VsZEJlKCJSZWdFeHAoJycpLnRvU3RyaW5nKCkiLCAn
Ii8oPzopLyInKTsKLXNob3VsZFRocm93KCJSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nKCkiLCAn
IlR5cGVFcnJvcjogVHlwZSBlcnJvciInKTsKK3Nob3VsZEJlKCJSZWdFeHAucHJvdG90eXBlLnRv
U3RyaW5nKCkiLCAnIi8oPzopLyInKTsKIAogLy8gVGhlc2Ugc3RyaW5ncyBhcmUgZXF1aXZhbGVu
dCwgc2luY2UgdGhlICdcJyBpcyBpZGVudGl0eSBlc2NhcGluZyB0aGUgJy8nIGF0IHRoZSBzdHJp
bmcgbGV2ZWwuCiBzaG91bGRCZVRydWUoJ3Rlc3RGb3J3YXJkU2xhc2goIl4vJCIsICIvIik7Jyk7
CkluZGV4OiBMYXlvdXRUZXN0cy9pZXRlc3RjZW50ZXIvSmF2YXNjcmlwdC8xNS4xMC43LjEtMS1l
eHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvaWV0ZXN0Y2VudGVyL0phdmFz
Y3JpcHQvMTUuMTAuNy4xLTEtZXhwZWN0ZWQudHh0CShyZXZpc2lvbiAxOTk1NDIpCisrKyBMYXlv
dXRUZXN0cy9pZXRlc3RjZW50ZXIvSmF2YXNjcmlwdC8xNS4xMC43LjEtMS1leHBlY3RlZC50eHQJ
KHdvcmtpbmcgY29weSkKQEAgLTEsNCArMSw0IEBACi0xNS4xMC43LjEtMSAoVGVzdENhc2VzL2No
YXB0ZXIxNS8xNS4xMC8xNS4xMC43LzE1LjEwLjcuMS8xNS4xMC43LjEtMS5qcykgUmVnRXhwLnBy
b3RvdHlwZS5zb3VyY2Ugc2hvdWxkIHRocm93IGJlY2F1c2UgUmVnRXhwLnByb3RvdHlwZSBpcyBu
b3QgYSBSZWdFeHAKKzE1LjEwLjcuMS0xIChUZXN0Q2FzZXMvY2hhcHRlcjE1LzE1LjEwLzE1LjEw
LjcvMTUuMTAuNy4xLzE1LjEwLjcuMS0xLmpzKSBSZWdFeHAucHJvdG90eXBlLnNvdXJjZSBzaG91
bGQgYmUgJyg/OiknCiAKIE9uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFT
UyIgbWVzc2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KIApJbmRleDogTGF5b3V0
VGVzdHMvaWV0ZXN0Y2VudGVyL0phdmFzY3JpcHQvVGVzdENhc2VzLzE1LjEwLjcuMS0xLmpzCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIExheW91dFRlc3RzL2lldGVzdGNlbnRlci9KYXZhc2NyaXB0L1Rlc3RDYXNl
cy8xNS4xMC43LjEtMS5qcwkocmV2aXNpb24gMTk5NTQyKQorKysgTGF5b3V0VGVzdHMvaWV0ZXN0
Y2VudGVyL0phdmFzY3JpcHQvVGVzdENhc2VzLzE1LjEwLjcuMS0xLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0yNCwxNCArMjQsOSBAQCBpZDogIjE1LjEwLjcuMS0xIiwNCiANCiBwYXRoOiAiVGVzdENh
c2VzL2NoYXB0ZXIxNS8xNS4xMC8xNS4xMC43LzE1LjEwLjcuMS8xNS4xMC43LjEtMS5qcyIsDQog
DQotZGVzY3JpcHRpb246ICJSZWdFeHAucHJvdG90eXBlLnNvdXJjZSBzaG91bGQgdGhyb3cgYmVj
YXVzZSBSZWdFeHAucHJvdG90eXBlIGlzIG5vdCBhIFJlZ0V4cCIsDQorZGVzY3JpcHRpb246ICJS
ZWdFeHAucHJvdG90eXBlLnNvdXJjZSBzaG91bGQgYmUgJyg/OiknIiwNCiANCiB0ZXN0OiBmdW5j
dGlvbiB0ZXN0Y2FzZSgpIHsNCi0gICAgdHJ5IHsNCi0gICAgICAgIFJlZ0V4cC5wcm90b3R5cGUu
c291cmNlOw0KLSAgICAgICAgcmV0dXJuIGZhbHNlOw0KLSAgICB9IGNhdGNoIChlKSB7DQotICAg
ICAgICByZXR1cm4gdHJ1ZTsNCi0gICAgfQ0KKyAgICByZXR1cm4gUmVnRXhwLnByb3RvdHlwZS5z
b3VyY2UgPT09ICcoPzopJzsNCiAgfQ0KIH0pOw0KSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ2V4
cC1mbGFncy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMvcmVnZXhw
LWZsYWdzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMTk5NTQyKQorKysgTGF5b3V0VGVzdHMvanMv
cmVnZXhwLWZsYWdzLWV4cGVjdGVkLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMTQsMTAgKzE0LDEw
IEBAIFBBU1MgL2EvZ21pLmZsYWdzIGlzICdnaW0nCiBQQVNTIG5ldyBSZWdFeHAoJ2EnLCAnZ21p
JykuZmxhZ3MgaXMgJ2dpbScKIFBBU1MgZmxhZ3MuY2FsbCgvYS9pZykgaXMgJ2dpJwogbm9uLW9i
amVjdCByZWNlaXZlcnMKLVBBU1MgZmxhZ3MuY2FsbCh1bmRlZmluZWQpIHRocmV3IGV4Y2VwdGlv
biBUeXBlRXJyb3I6IFR5cGUgZXJyb3IuCi1QQVNTIGZsYWdzLmNhbGwobnVsbCkgdGhyZXcgZXhj
ZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgZmxhZ3MuY2FsbChmYWxzZSkgdGhy
ZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVHlwZSBlcnJvci4KLVBBU1MgZmxhZ3MuY2FsbCh0cnVl
KSB0aHJldyBleGNlcHRpb24gVHlwZUVycm9yOiBUeXBlIGVycm9yLgorUEFTUyBmbGFncy5jYWxs
KHVuZGVmaW5lZCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIFJlZ0V4cC5wcm90b3R5
cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QuCitQQVNTIGZs
YWdzLmNhbGwobnVsbCkgdGhyZXcgZXhjZXB0aW9uIFR5cGVFcnJvcjogVGhlIFJlZ0V4cC5wcm90
b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QuCitQQVNT
IGZsYWdzLmNhbGwoZmFsc2UpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRoZSBSZWdFeHAu
cHJvdG90eXBlLmZsYWdzIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYW4gb2JqZWN0Lgor
UEFTUyBmbGFncy5jYWxsKHRydWUpIHRocmV3IGV4Y2VwdGlvbiBUeXBlRXJyb3I6IFRoZSBSZWdF
eHAucHJvdG90eXBlLmZsYWdzIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYW4gb2JqZWN0
Lgogbm9uLXJlZ2V4IG9iamVjdHMKIFBBU1MgZmxhZ3MuY2FsbCh7fSkgaXMgJycKIFBBU1MgZmxh
Z3MuY2FsbCh7Z2xvYmFsOiB0cnVlLCBtdWx0aWxpbmU6IHRydWUsIGlnbm9yZUNhc2U6IHRydWV9
KSBpcyAnZ2ltJwpJbmRleDogTGF5b3V0VGVzdHMvanMva2RlL1JlZ0V4cC1leHBlY3RlZC50eHQK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvanMva2RlL1JlZ0V4cC1leHBlY3RlZC50eHQJKHJl
dmlzaW9uIDE5OTU0MikKKysrIExheW91dFRlc3RzL2pzL2tkZS9SZWdFeHAtZXhwZWN0ZWQudHh0
CSh3b3JraW5nIGNvcHkpCkBAIC05MSw3ICs5MSw3IEBAIFBBU1Mgc3RyLm1hdGNoKC9kL2dpKS50
b1N0cmluZygpIGlzICdELGQKIFBBU1MgL1x1MDA2MS8uc291cmNlIGlzICdcXHUwMDYxJwogUEFT
UyAnYWJjJy5tYXRjaCgvXHUwMDYyLykudG9TdHJpbmcoKSBpcyAnYicKIFBBU1MgT2JqZWN0LnBy
b3RvdHlwZS50b1N0cmluZy5hcHBseShSZWdFeHAucHJvdG90eXBlKSBpcyAnW29iamVjdCBPYmpl
Y3RdJwotUEFTUyBSZWdFeHAucHJvdG90eXBlLnRvU3RyaW5nKCkgdGhyZXcgZXhjZXB0aW9uIFR5
cGVFcnJvcjogVHlwZSBlcnJvci4KK1BBU1MgUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZygpIGlz
ICcvKD86KS8nCiBQQVNTIG5ldyBSZWdFeHAoKS50b1N0cmluZygpIGlzICcvKD86KS8nCiBQQVNT
IChuZXcgUmVnRXhwKCcoPzopJykpLnNvdXJjZSBpcyAnKD86KScKIFBBU1MgLyg/OikvLnRvU3Ry
aW5nKCkgaXMgJy8oPzopLycKSW5kZXg6IExheW91dFRlc3RzL2pzL2tkZS9zY3JpcHQtdGVzdHMv
UmVnRXhwLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3RzL2pzL2tkZS9zY3JpcHQtdGVzdHMv
UmVnRXhwLmpzCShyZXZpc2lvbiAxOTk1NDIpCisrKyBMYXlvdXRUZXN0cy9qcy9rZGUvc2NyaXB0
LXRlc3RzL1JlZ0V4cC5qcwkod29ya2luZyBjb3B5KQpAQCAtMTQ3LDcgKzE0Nyw3IEBAIHNob3Vs
ZEJlKCJPYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLmFwcGwKIAogLy8gbm90IHN1cmUgd2hhdCB0
aGlzIHNob3VsZCByZXR1cm4uIG1vc3QgaW1wb3J0YW50bHkKIC8vIGl0IGRvZXNuJ3QgdGhyb3cg
YW4gZXhjZXB0aW9uCi1zaG91bGRUaHJvdygiUmVnRXhwLnByb3RvdHlwZS50b1N0cmluZygpIiwg
IidUeXBlRXJyb3I6IFR5cGUgZXJyb3InIik7CitzaG91bGRCZSgiUmVnRXhwLnByb3RvdHlwZS50
b1N0cmluZygpIiwgIicvKD86KS8nIik7CiAKIC8vIEVtcHR5IHJlZ3VsYXIgZXhwcmVzc2lvbnMg
aGF2ZSBzdHJpbmcgcmVwcmVzZW50YXRpb24gLyg/OikvCiBzaG91bGRCZSgibmV3IFJlZ0V4cCgp
LnRvU3RyaW5nKCkiLCAiJy8oPzopLyciKTsKSW5kZXg6IExheW91dFRlc3RzL2pzL3BpYy9jYWNo
ZWQtbmFtZWQtcHJvcGVydHktZ2V0dGVyLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
anMvcGljL2NhY2hlZC1uYW1lZC1wcm9wZXJ0eS1nZXR0ZXIuaHRtbAkocmV2aXNpb24gMTk5NTQy
KQorKysgTGF5b3V0VGVzdHMvanMvcGljL2NhY2hlZC1uYW1lZC1wcm9wZXJ0eS1nZXR0ZXIuaHRt
bAkod29ya2luZyBjb3B5KQpAQCAtOTIsOSArOTIsOSBAQCB5b3UnbGwgc2VlIGEgc2VyaWVzIG9m
IFBBU1MgbWVzc2FnZXMgYmVsCiAKICAgICBzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CiAgICAg
ICAgIHRlc3RDdXN0b21HZXR0ZXIoe19fcHJvdG9fXzogcn0pOwotICAgIH0sICJUeXBlRXJyb3I6
IFR5cGUgZXJyb3IiKTsKKyAgICB9LCAiVHlwZUVycm9yOiBUaGUgUmVnRXhwLnByb3RvdHlwZS5z
b3VyY2UgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKICAg
ICBzaG91bGRUaHJvdyhmdW5jdGlvbiAoKSB7CiAgICAgICAgIHRlc3RDdXN0b21HZXR0ZXIoe19f
cHJvdG9fXzoge19fcHJvdG9fXzogcn19KTsKLSAgICB9LCAiVHlwZUVycm9yOiBUeXBlIGVycm9y
Iik7CisgICAgfSwgIlR5cGVFcnJvcjogVGhlIFJlZ0V4cC5wcm90b3R5cGUuc291cmNlIGdldHRl
ciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iik7CiB9KSgpOwogPC9zY3Jp
cHQ+CkluZGV4OiBMYXlvdXRUZXN0cy9qcy9yZWdyZXNzL3JlZ2V4cC1wcm90b3R5cGUtaXMtbm90
LWluc3RhbmNlLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9qcy9yZWdy
ZXNzL3JlZ2V4cC1wcm90b3R5cGUtaXMtbm90LWluc3RhbmNlLWV4cGVjdGVkLnR4dAkocmV2aXNp
b24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1pcy1ub3Qt
aW5zdGFuY2UtZXhwZWN0ZWQudHh0CSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAgQEAKK0pT
UmVncmVzcy9yZWdleHAtcHJvdG90eXBlLWlzLW5vdC1pbnN0YW5jZQorCitPbiBzdWNjZXNzLCB5
b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVT
VCBDT01QTEVURSIuCisKKworUEFTUyBubyBleGNlcHRpb24gdGhyb3duCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMv
anMvcmVncmVzcy9yZWdleHAtcHJvdG90eXBlLWlzLW5vdC1pbnN0YW5jZS5odG1sCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5z
dGFuY2UuaHRtbAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2pzL3JlZ3Jlc3MvcmVnZXhw
LXByb3RvdHlwZS1pcy1ub3QtaW5zdGFuY2UuaHRtbAkod29ya2luZyBjb3B5KQpAQCAtMCwwICsx
LDEzIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8
aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxzY3JpcHQgc3JjPSIuLi8uLi9yZXNvdXJj
ZXMvcmVncmVzcy1wcmUuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9y
ZWdleHAtcHJvdG90eXBlLWlzLW5vdC1pbnN0YW5jZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL3JlZ3Jlc3MtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNy
Yz0iLi4vLi4vcmVzb3VyY2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+Cis8L2JvZHk+Cis8
L2h0bWw+CisKSW5kZXg6IExheW91dFRlc3RzL2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4
cC1wcm90b3R5cGUtaXMtbm90LWluc3RhbmNlLmpzCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIExheW91dFRlc3Rz
L2pzL3JlZ3Jlc3Mvc2NyaXB0LXRlc3RzL3JlZ2V4cC1wcm90b3R5cGUtaXMtbm90LWluc3RhbmNl
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvanMvcmVncmVzcy9zY3JpcHQtdGVzdHMv
cmVnZXhwLXByb3RvdHlwZS1pcy1ub3QtaW5zdGFuY2UuanMJKHdvcmtpbmcgY29weSkKQEAgLTAs
MCArMSw3MSBAQAorLy9AIHJ1bkRlZmF1bHQKKworZnVuY3Rpb24gc3RyaW5naWZ5KHgpIHsKKyAg
ICBpZiAodHlwZW9mIHggPT0gInN0cmluZyIpCisgICAgICAgIHJldHVybiAnIicgKyB4ICsgJyIn
OworICAgIHJldHVybiB4OworfQorCitmdW5jdGlvbiBhc3NlcnQoYWN0dWFsLCBleHBlY3RlZCkg
eworICAgIGlmIChhY3R1YWwgIT09IGV4cGVjdGVkKQorICAgICAgICB0aHJvdyBFcnJvcigiRkFJ
TDogZXhwZWN0ZWQgIiArIHN0cmluZ2lmeShleHBlY3RlZCkgKyAiLCBhY3R1YWwgIiArIHN0cmlu
Z2lmeShhY3R1YWwpKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0VGhyb3dzKGZ1bmMsIGV4cGVjdGVk
RXJyTXNnKSB7CisgICAgbGV0IGFjdHVhbEVyck1zZzsKKyAgICB0cnkgeworICAgICAgICBmdW5j
KCk7CisgICAgICAgIHRocm93KCJGQUlMOiBkaWQgbm90IHRocm93Iik7CisgICAgfSBjYXRjaChl
KSB7CisgICAgICAgIGFjdHVhbEVyck1zZyA9IGUudG9TdHJpbmcoKTsKKyAgICB9CisgICAgYXNz
ZXJ0KGFjdHVhbEVyck1zZywgZXhwZWN0ZWRFcnJNc2cpOworfQorCithc3NlcnQoUmVnRXhwLnBy
b3RvdHlwZSBpbnN0YW5jZW9mIFJlZ0V4cCwgZmFsc2UpOworCithc3NlcnQoUmVnRXhwLnByb3Rv
dHlwZS5mbGFncywgIiIpOworYXNzZXJ0KFJlZ0V4cC5wcm90b3R5cGUuZ2xvYmFsLCB2b2lkIDAp
OworYXNzZXJ0KFJlZ0V4cC5wcm90b3R5cGUuaWdub3JlQ2FzZSwgdm9pZCAwKTsKK2Fzc2VydChS
ZWdFeHAucHJvdG90eXBlLm11bHRpbGluZSwgdm9pZCAwKTsKK2Fzc2VydChSZWdFeHAucHJvdG90
eXBlLnVuaWNvZGUsIHZvaWQgMCk7Cithc3NlcnQoUmVnRXhwLnByb3RvdHlwZS5zdGlja3ksIHZv
aWQgMCk7Cithc3NlcnQoUmVnRXhwLnByb3RvdHlwZS5zb3VyY2UsICIoPzopIik7Cithc3NlcnQo
UmVnRXhwLnByb3RvdHlwZS50b1N0cmluZygpLCAiLyg/OikvIik7CisKK2Fzc2VydChPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsICdmbGFncycpLmdldC5j
YWxsKHt9KSwgIiIpOworCithc3NlcnRUaHJvd3MoKCkgPT4geworICAgICAgICBPYmplY3QuZ2V0
T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsICdmbGFncycpLmdldC5jYWxs
KDEpOworICAgIH0sIAorICAgICJUeXBlRXJyb3I6IFRoZSBSZWdFeHAucHJvdG90eXBlLmZsYWdz
IGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYW4gb2JqZWN0Iik7CisKK2Fzc2VydFRocm93
cygoKSA9PiB7CisgICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhw
LnByb3RvdHlwZSwgJ2lnbm9yZUNhc2UnKS5nZXQuY2FsbCh7fSk7CisgICAgfSwKKyAgICAiVHlw
ZUVycm9yOiBUaGUgUmVnRXhwLnByb3RvdHlwZS5pZ25vcmVDYXNlIGdldHRlciBjYW4gb25seSBi
ZSBjYWxsZWQgb24gYSBSZWdFeHAgb2JqZWN0Iik7CisKK2Fzc2VydFRocm93cygoKSA9PiB7Cisg
ICAgICAgIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwg
J211bHRpbGluZScpLmdldC5jYWxsKHt9KTsKKyAgICB9LAorICAgICJUeXBlRXJyb3I6IFRoZSBS
ZWdFeHAucHJvdG90eXBlLm11bHRpbGluZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEg
UmVnRXhwIG9iamVjdCIpOworCithc3NlcnRUaHJvd3MoKCkgPT4geworICAgICAgICBPYmplY3Qu
Z2V0T3duUHJvcGVydHlEZXNjcmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsICd1bmljb2RlJykuZ2V0
LmNhbGwoe30pOworICAgIH0sCisgICAgIlR5cGVFcnJvcjogVGhlIFJlZ0V4cC5wcm90b3R5cGUu
dW5pY29kZSBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGEgUmVnRXhwIG9iamVjdCIpOwor
Cithc3NlcnRUaHJvd3MoKCkgPT4geworICAgICAgICBPYmplY3QuZ2V0T3duUHJvcGVydHlEZXNj
cmlwdG9yKFJlZ0V4cC5wcm90b3R5cGUsICdzdGlja3knKS5nZXQuY2FsbCh7fSk7CisgICAgfSwK
KyAgICAiVHlwZUVycm9yOiBUaGUgUmVnRXhwLnByb3RvdHlwZS5zdGlja3kgZ2V0dGVyIGNhbiBv
bmx5IGJlIGNhbGxlZCBvbiBhIFJlZ0V4cCBvYmplY3QiKTsKKworYXNzZXJ0VGhyb3dzKCgpID0+
IHsKKyAgICAgICAgT2JqZWN0LmdldE93blByb3BlcnR5RGVzY3JpcHRvcihSZWdFeHAucHJvdG90
eXBlLCAnc291cmNlJykuZ2V0LmNhbGwoe30pOworICAgIH0sCisgICAgIlR5cGVFcnJvcjogVGhl
IFJlZ0V4cC5wcm90b3R5cGUuc291cmNlIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYSBS
ZWdFeHAgb2JqZWN0Iik7CisKK2Fzc2VydFRocm93cygoKSA9PiB7CisgICAgICAgIE9iamVjdC5n
ZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhwLnByb3RvdHlwZSwgJ3RvU3RyaW5nJykuZ2V0
LmNhbGwoe30pOworICAgIH0sCisgICAgIlR5cGVFcnJvcjogdW5kZWZpbmVkIGlzIG5vdCBhbiBv
YmplY3QgKGV2YWx1YXRpbmcgJ09iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IoUmVnRXhw
LnByb3RvdHlwZSwgJ3RvU3RyaW5nJykuZ2V0LmNhbGwnKSIpOwpJbmRleDogTGF5b3V0VGVzdHMv
anMvc2NyaXB0LXRlc3RzL3JlZ2V4cC1mbGFncy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9qcy9zY3JpcHQtdGVzdHMvcmVnZXhwLWZsYWdzLmpzCShyZXZpc2lvbiAxOTk1NDIpCisrKyBM
YXlvdXRUZXN0cy9qcy9zY3JpcHQtdGVzdHMvcmVnZXhwLWZsYWdzLmpzCSh3b3JraW5nIGNvcHkp
CkBAIC0xNiwxMCArMTYsMTAgQEAgc2hvdWxkQmUoIm5ldyBSZWdFeHAoJ2EnLCAnZ21pJykuZmxh
Z3MiLAogc2hvdWxkQmUoImZsYWdzLmNhbGwoL2EvaWcpIiwgIidnaSciKTsKIAogZGVidWcoIm5v
bi1vYmplY3QgcmVjZWl2ZXJzIik7Ci1zaG91bGRUaHJvdygiZmxhZ3MuY2FsbCh1bmRlZmluZWQp
IiwgIidUeXBlRXJyb3I6IFR5cGUgZXJyb3InIik7Ci1zaG91bGRUaHJvdygiZmxhZ3MuY2FsbChu
dWxsKSIsICInVHlwZUVycm9yOiBUeXBlIGVycm9yJyIpOwotc2hvdWxkVGhyb3coImZsYWdzLmNh
bGwoZmFsc2UpIiwgIidUeXBlRXJyb3I6IFR5cGUgZXJyb3InIik7Ci1zaG91bGRUaHJvdygiZmxh
Z3MuY2FsbCh0cnVlKSIsICInVHlwZUVycm9yOiBUeXBlIGVycm9yJyIpOworc2hvdWxkVGhyb3co
ImZsYWdzLmNhbGwodW5kZWZpbmVkKSIsICInVHlwZUVycm9yOiBUaGUgUmVnRXhwLnByb3RvdHlw
ZS5mbGFncyBnZXR0ZXIgY2FuIG9ubHkgYmUgY2FsbGVkIG9uIGFuIG9iamVjdCciKTsKK3Nob3Vs
ZFRocm93KCJmbGFncy5jYWxsKG51bGwpIiwgIidUeXBlRXJyb3I6IFRoZSBSZWdFeHAucHJvdG90
eXBlLmZsYWdzIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYW4gb2JqZWN0JyIpOworc2hv
dWxkVGhyb3coImZsYWdzLmNhbGwoZmFsc2UpIiwgIidUeXBlRXJyb3I6IFRoZSBSZWdFeHAucHJv
dG90eXBlLmZsYWdzIGdldHRlciBjYW4gb25seSBiZSBjYWxsZWQgb24gYW4gb2JqZWN0JyIpOwor
c2hvdWxkVGhyb3coImZsYWdzLmNhbGwodHJ1ZSkiLCAiJ1R5cGVFcnJvcjogVGhlIFJlZ0V4cC5w
cm90b3R5cGUuZmxhZ3MgZ2V0dGVyIGNhbiBvbmx5IGJlIGNhbGxlZCBvbiBhbiBvYmplY3QnIik7
CiAKIGRlYnVnKCJub24tcmVnZXggb2JqZWN0cyIpOwogc2hvdWxkQmUoImZsYWdzLmNhbGwoe30p
IiwgIicnIik7Cg==
</data>
<flag name="review"
          id="300700"
          type_id="1"
          status="+"
          setter="keith_miller"
    />
          </attachment>
      

    </bug>

</bugzilla>