<?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>153245</bug_id>
          
          <creation_ts>2016-01-19 12:03:11 -0800</creation_ts>
          <short_desc>[ES6] Fix various issues with TypedArrays.</short_desc>
          <delta_ts>2016-01-21 11:08:55 -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>New Bugs</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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>120112</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Miller">keith_miller</reporter>
          <assigned_to name="Keith Miller">keith_miller</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>sunny.open</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1156677</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-01-19 12:03:11 -0800</bug_when>
    <thetext>[ES6] Fix various issues with TypedArrays.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156713</commentid>
    <comment_count>1</comment_count>
      <attachid>269288</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-01-19 13:39:02 -0800</bug_when>
    <thetext>Created attachment 269288
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156784</commentid>
    <comment_count>2</comment_count>
      <attachid>269307</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-01-19 16:29:56 -0800</bug_when>
    <thetext>Created attachment 269307
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156802</commentid>
    <comment_count>3</comment_count>
      <attachid>269307</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2016-01-19 17:04:00 -0800</bug_when>
    <thetext>Comment on attachment 269307
Patch

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

r=me

Can you add a test for .byteOffset and .buffer?

&gt; Source/JavaScriptCore/runtime/JSArrayBufferView.h:162
&gt; +    bool isNeutered() { return hasArrayBuffer() &amp;&amp; !vector(); }

What prevents FastTypedArray and OversizeTypedArray from being neutered?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156804</commentid>
    <comment_count>4</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-01-19 17:07:35 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; Comment on attachment 269307 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=269307&amp;action=review
&gt; 
&gt; r=me
&gt; 
&gt; Can you add a test for .byteOffset and .buffer?

.byteOffset is covered by the test I added and I&apos;ll add a test for .buffer.

&gt; 
&gt; &gt; Source/JavaScriptCore/runtime/JSArrayBufferView.h:162
&gt; &gt; +    bool isNeutered() { return hasArrayBuffer() &amp;&amp; !vector(); }
&gt; 
&gt; What prevents FastTypedArray and OversizeTypedArray from being neutered?

JSArrayBufferViews can only be neutered from their underlying ArrayBuffer. Since
those modes don&apos;t have ArrayBuffers they cannot be neutered.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156986</commentid>
    <comment_count>5</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-01-20 11:28:25 -0800</bug_when>
    <thetext>I think .buffer still has some minor issues. I&apos;ll put the changes in a different patch: https://bugs.webkit.org/show_bug.cgi?id=153281</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1156993</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-01-20 11:32:43 -0800</bug_when>
    <thetext>Committed r195360: &lt;http://trac.webkit.org/changeset/195360&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157134</commentid>
    <comment_count>7</comment_count>
      <attachid>269307</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-01-20 17:24:44 -0800</bug_when>
    <thetext>Comment on attachment 269307
Patch

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

&gt; Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h:78
&gt; -        offset = exec-&gt;uncheckedArgument(1).toUInt32(exec);
&gt; +        double offsetNumber = exec-&gt;uncheckedArgument(1).toInteger(exec);
&gt;          if (exec-&gt;hadException())
&gt;              return JSValue::encode(jsUndefined());
&gt; +        if (offsetNumber &lt; 0)
&gt; +            return throwVMRangeError(exec, &quot;Offset should not be negative&quot;);
&gt; +        offset = offsetNumber;

This seems like a change in behavior. Will this do the right thing for numbers larger than 2^31? Do we have test cases covering that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157183</commentid>
    <comment_count>8</comment_count>
      <attachid>269307</attachid>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-01-20 20:34:22 -0800</bug_when>
    <thetext>Comment on attachment 269307
Patch

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

&gt;&gt; Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h:78
&gt;&gt; +        offset = offsetNumber;
&gt; 
&gt; This seems like a change in behavior. Will this do the right thing for numbers larger than 2^31? Do we have test cases covering that?

It does change behavior but that&apos;s intentional as the spec requires the change see: http://www.ecma-international.org/ecma-262/6.0/#sec-%typedarray%.prototype.set-array-offset. I&apos;m not sure if we have a test for numbers &gt;= 2^31, I will add one. Although, looking at this again, offset = offsetNumber will produce undefined behavior if offsetNumber &gt;= 2^32. I thought the assignment would just round down to the nearest unsigned number, which is not the case. It should be:

offset = static_cast&lt;unsigned&gt;(std::min(offsetNumber, static_cast&lt;double&gt;(std::numeric_limits&lt;unsigned&gt;::max())));</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1157340</commentid>
    <comment_count>9</comment_count>
    <who name="Keith Miller">keith_miller</who>
    <bug_when>2016-01-21 10:35:16 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; Comment on attachment 269307 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=269307&amp;action=review
&gt; 
&gt; &gt;&gt; Source/JavaScriptCore/runtime/JSGenericTypedArrayViewPrototypeFunctions.h:78
&gt; &gt;&gt; +        offset = offsetNumber;
&gt; &gt; 
&gt; &gt; This seems like a change in behavior. Will this do the right thing for numbers larger than 2^31? Do we have test cases covering that?
&gt; 
&gt; It does change behavior but that&apos;s intentional as the spec requires the
&gt; change see:
&gt; http://www.ecma-international.org/ecma-262/6.0/#sec-%typedarray%.prototype.
&gt; set-array-offset. I&apos;m not sure if we have a test for numbers &gt;= 2^31, I will
&gt; add one. Although, looking at this again, offset = offsetNumber will produce
&gt; undefined behavior if offsetNumber &gt;= 2^32. I thought the assignment would
&gt; just round down to the nearest unsigned number, which is not the case. It
&gt; should be:
&gt; 
&gt; offset = static_cast&lt;unsigned&gt;(std::min(offsetNumber,
&gt; static_cast&lt;double&gt;(std::numeric_limits&lt;unsigned&gt;::max())));

This should be fixed when https://bugs.webkit.org/show_bug.cgi?id=153309 lands.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269288</attachid>
            <date>2016-01-19 13:39:02 -0800</date>
            <delta_ts>2016-01-19 16:29:53 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153245-20160119133832.patch</filename>
            <type>text/plain</type>
            <size>17340</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZWM4YzkxOTExMjAxYmUzODQ3YjkwMjNmNmQ5ZjM3ZDI0Y2I4NmI1Li41N2U0NTczZDAwZTBmOWYx
YmFmNzY3M2Q3MDA1ODQ2YTk4YmMzNjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NiBAQAorMjAxNi0wMS0xOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBbRVM2XSBGaXggdmFyaW91cyBpc3N1ZXMgd2l0aCBUeXBlZEFycmF5
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzI0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggZml4ZXMgYSBjb3VwbGUgb2YgaXNzdWVzIHdpdGggVHlwZWRBcnJheXM6CisKKyAgICAg
ICAgMSkgV2Ugd2VyZSBub3QgY2hlY2tpbmcgaWYgYSB2aWV3IGhhZCBiZWVuIG5ldXRlcmVkIGFu
ZCB0aHJvd2luZyBhbiBlcnJvcgorICAgICAgICBpZiBpdCBoYWQgaW4gdGhlIG91ciBUeXBlZEFy
cmF5LnByb3RvdHlwZSBmdW5jdGlvbnMuCisKKyAgICAgICAgMikgVGhlIFR5cGVkQXJyYXkucHJv
dG90eXBlLnNldCBmdW5jdGlvbiBoYWQgYSBjb3VwbGUgb2YgbWlub3IgaXNzdWVzIHdpdGgKKyAg
ICAgICAgY2hlY2tpbmcgZm9yIHRoZSBvZmZzZXQgYmVpbmcgbmVnYXRpdmUuCisKKyAgICAgICAg
MykgVGhlIEpTQXJyYXlCdWZmZXJWaWV3IGNsYXNzIGRpZCBub3QgY2hlY2sgaWYgdGhlIGJhY2tp
bmcgc3RvcmUgaGFkIGJlZW4KKyAgICAgICAgbmV1dGVyZWQgd2hlbiBjb21wdXRpbmcgdGhlIG9m
ZnNldC4gVGhpcyBtZWFudCB0aGF0IHVuZGVyIHNvbWUgY29uZGl0aW9ucworICAgICAgICB3ZSBj
b3VsZCwgb2NjYXNpb25hbGx5LCByZXR1cm4gYSBnYXJiYWdlIG51bWJlciBhcyB0aGUgb2Zmc2V0
LiBOb3csIGlmIHRoZQorICAgICAgICBUeXBlZEFycmF5IGhhcyBiZWVuIG5ldXRlcmVkIHdlIHJl
dHVybiAwIGFzIHRoZSBvZmZzZXQuCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xv
YmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6CisgICAgICAgIChmdW5jdGlvbk5ldXRlclR5cGVk
QXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAg
KEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmlzTmV1dGVyZWQpOgorICAgICAgICAqIHJ1bnRpbWUv
SlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJW
aWV3OjpieXRlT2Zmc2V0KToKKyAgICAgICAgKiBydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG90eXBlRnVuY3Rpb25zLmg6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvRnVuY1NldCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1By
b3RvRnVuY0VudHJpZXMpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b0Z1bmNDb3B5V2l0aGluKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJv
dG9GdW5jRmlsbCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y0luZGV4T2YpOgorICAgICAgICAoSlNDOjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNK
b2luKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jS2V5cyk6
CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9m
KToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6
CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6Cisg
ICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NsaWNlKToKKyAgICAg
ICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU3ViYXJyYXkpOgorICAgICAg
ICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1ZhbHVlcyk6CisgICAgICAgICogcnVudGlt
ZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcDoKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJh
eVZpZXdQcml2YXRlRnVuY0xlbmd0aCk6CisgICAgICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJp
dmF0ZUZ1bmNTb3J0KTogRGVsZXRlZC4KKyAgICAgICAgKiB0ZXN0cy9zdHJlc3MvdHlwZWRhcnJh
eS1mdW5jdGlvbnMtd2l0aC1uZXV0ZXJlZC5qczogQWRkZWQuCisgICAgICAgIChnZXRHZXR0ZXIp
OgorICAgICAgICAodW5pdCk6CisgICAgICAgIChhcmdzLm5ldy5JbnQzMkFycmF5KToKKyAgICAg
ICAgKGFycmF5cy50eXBlZEFycmF5cy5tYXApOgorICAgICAgICAoY2hlY2tQcm90b0Z1bmMudGhy
b3dzQ29ycmVjdEVycm9yKToKKyAgICAgICAgKGNoZWNrUHJvdG9GdW5jKToKKyAgICAgICAgKHRl
c3QpOgorCiAyMDE2LTAxLTE1ICBGaWxpcCBQaXpsbyAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAg
ICAgICAgQWlyIG5lZWRzIGEgU2h1ZmZsZSBpbnN0cnVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL2pzYy5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApp
bmRleCBiNzI3OWYzNjY1M2M2ZmRjMzg4YTRjNDQ4M2Y4YWI0OGVkY2NiNzBkLi4wOTM2MjJlMTZm
ZDM2NDc0ODJmNWEwN2UzOTEyNjk3MjE5OTRlMmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvanNjLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcApAQCAt
NTQ5LDYgKzU0OSw3IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0
aW9uQmFzaWNCbG9ja0V4ZWN1dGlvbkNvdW50KEV4ZWNTdGF0ZSopCiBzdGF0aWMgRW5jb2RlZEpT
VmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkVuYWJsZUV4Y2VwdGlvbkZ1enooRXhlY1N0YXRl
Kik7CiBzdGF0aWMgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkRyYWluTWlj
cm90YXNrcyhFeGVjU3RhdGUqKTsKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEV4ZWNTdGF0ZSopOworc3RhdGljIEVuY29kZWRKU1Zh
bHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25OZXV0ZXJUeXBlZEFycmF5KEV4ZWNTdGF0ZSopOwog
I2lmIEVOQUJMRShXRUJBU1NFTUJMWSkKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9D
QUxMIGZ1bmN0aW9uTG9hZFdlYkFzc2VtYmx5KEV4ZWNTdGF0ZSopOwogI2VuZGlmCkBAIC03NTIs
NiArNzUzLDggQEAgcHJvdGVjdGVkOgogICAgICAgICBhZGRGdW5jdGlvbih2bSwgInNhbXBsaW5n
UHJvZmlsZXJTdGFja1RyYWNlcyIsIGZ1bmN0aW9uU2FtcGxpbmdQcm9maWxlclN0YWNrVHJhY2Vz
LCAwKTsKICNlbmRpZgogCisgICAgICAgIGFkZEZ1bmN0aW9uKHZtLCAibmV1dGVyVHlwZWRBcnJh
eSIsIGZ1bmN0aW9uTmV1dGVyVHlwZWRBcnJheSwgMCk7CisKICAgICAgICAgSlNBcnJheSogYXJy
YXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2JhbEV4ZWMoKSwgMCk7CiAgICAgICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgYXJndW1lbnRzLnNpemUoKTsgKytpKQogICAgICAgICAgICAgYXJy
YXktPnB1dERpcmVjdEluZGV4KGdsb2JhbEV4ZWMoKSwgaSwganNTdHJpbmcoZ2xvYmFsRXhlYygp
LCBhcmd1bWVudHNbaV0pKTsKQEAgLTE1NjEsNiArMTU2NCwxNiBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGZ1bmN0aW9uSXMzMkJpdFBsYXRmb3JtKEV4ZWNTdGF0ZSopCiAjZW5kaWYK
IH0KIAorRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbk5ldXRlclR5cGVkQXJy
YXkoRXhlY1N0YXRlKiBleGVjKQoreworICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihleGVjLT5hcmd1bWVudCgwKSkpIHsK
KyAgICAgICAgdmlldy0+YnVmZmVyKCk7CisgICAgICAgIHZpZXctPm5ldXRlcigpOworICAgICAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHZpZXcpOworICAgIH0KKyAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCAibmV1dGVyVHlwZWRBcnJheSBleHBlY3RzIHRoZSBmaXJzdCBhcmd1
bWVudCB0byBiZSBhIEpTQXJyYXlCdWZmZXJWaWV3Iik7Cit9CisKICNpZiBFTkFCTEUoV0VCQVNT
RU1CTFkpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hZFdlYkFzc2Vt
Ymx5KEV4ZWNTdGF0ZSogZXhlYykKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDNlZGJmY2ViMzUyNmI2M2NkYzE5Zjg1ZTU5
YjAzZDFkMGJjMTQ0NGIuLjZmNzdlZWM3OTZhZTE0YjVlMGJlNzJjZWM5ZDExZjk3N2Y5OTRiMmYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJW
aWV3LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZp
ZXcuaApAQCAtMTU5LDYgKzE1OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBBcnJheUJ1ZmZlciog
YnVmZmVyKCk7CiAgICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGltcGwoKTsKKyAgICBi
b29sIGlzTmV1dGVyZWQoKSB7IHJldHVybiAhdmVjdG9yKCk7IH0KICAgICB2b2lkIG5ldXRlcigp
OwogICAgIAogICAgIHZvaWQqIHZlY3RvcigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0FycmF5QnVmZmVyVmlld0lubGluZXMuaCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCmluZGV4IDNkMDBhNDFk
OTMzMTI2MjMwMjdhZWRiNTY3M2RiMmJhMjFiMWI3OTkuLmM2NjkyNDgzZGM0YzE1NDQ2NmU4YTMx
YjY0MzQ5MDQ0MWU4ZmMwYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5oCkBAIC02NCw3ICs2NCw3IEBAIGlu
bGluZSB2b2lkIEpTQXJyYXlCdWZmZXJWaWV3OjpuZXV0ZXIoKQogCiBpbmxpbmUgdW5zaWduZWQg
SlNBcnJheUJ1ZmZlclZpZXc6OmJ5dGVPZmZzZXQoKQogewotICAgIGlmICghaGFzQXJyYXlCdWZm
ZXIoKSkKKyAgICBpZiAoIWhhc0FycmF5QnVmZmVyKCkgfHwgIXZlY3RvcigpKQogICAgICAgICBy
ZXR1cm4gMDsKICAgICAKICAgICBwdHJkaWZmX3QgZGVsdGEgPQpkaWZmIC0tZ2l0IGEvU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b3R5cGVG
dW5jdGlvbnMuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKaW5kZXggZGM1MzZhZmFkNjk3MWJlOGY1ZmM3
OWFjY2I1ZmVmNzExNjFkZWI2Zi4uMjNiYjUzNjdkYmU3YWU1ZmZhNTY1NjBkMGI3MWU3OGZkMGUx
NDdjYiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmlj
VHlwZWRBcnJheVZpZXdQcm90b3R5cGVGdW5jdGlvbnMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5o
CkBAIC00Myw2ICs0Myw4IEBACiAKIG5hbWVzcGFjZSBKU0MgewogCitzdGF0aWMgY29uc3QgY2hh
ciogdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSA9ICJVbmRlcmx5
aW5nIEFycmF5QnVmZmVyIGhhcyBiZWVuIGRldGFjaGVkIGZyb20gdGhlIHZpZXciOworCiBpbmxp
bmUgdW5zaWduZWQgYXJndW1lbnRDbGFtcGVkSW5kZXhGcm9tU3RhcnRPckVuZChFeGVjU3RhdGUq
IGV4ZWMsIGludCBhcmd1bWVudCwgdW5zaWduZWQgbGVuZ3RoLCB1bnNpZ25lZCB1bmRlZmluZWRW
YWx1ZSA9IDApCiB7CiAgICAgSlNWYWx1ZSB2YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KGFyZ3VtZW50
KTsKQEAgLTY4LDIwICs3MCwzMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVy
aWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldChFeGVjU3RhdGUqIGV4ZWMpCiAKICAgICB1bnNp
Z25lZCBvZmZzZXQ7CiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA+PSAyKSB7Ci0gICAg
ICAgIG9mZnNldCA9IGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDEpLnRvVUludDMyKGV4ZWMpOwor
ICAgICAgICBkb3VibGUgb2Zmc2V0TnVtYmVyID0gZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMSku
dG9JbnRlZ2VyKGV4ZWMpOwogICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCiAgICAg
ICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpzVW5kZWZpbmVkKCkpOworICAgICAgICBp
ZiAob2Zmc2V0TnVtYmVyIDwgMCkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNUmFuZ2VFcnJv
cihleGVjLCAiT2Zmc2V0IHNob3VsZCBub3QgYmUgbmVnYXRpdmUiKTsKKyAgICAgICAgb2Zmc2V0
ID0gb2Zmc2V0TnVtYmVyOwogICAgIH0gZWxzZQogICAgICAgICBvZmZzZXQgPSAwOwogCisgICAg
aWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CisKICAgICBKU09iamVjdCogc291cmNlQXJyYXkgPSBqc0R5bmFtaWNDYXN0PEpTT2JqZWN0Kj4o
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoMCkpOwogICAgIGlmICghc291cmNlQXJyYXkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJGaXJz
dCBhcmd1bWVudCBzaG91bGQgYmUgYW4gb2JqZWN0IikpOwogCiAgICAgdW5zaWduZWQgbGVuZ3Ro
OwotICAgIGlmIChpc1R5cGVkVmlldyhzb3VyY2VBcnJheS0+Y2xhc3NJbmZvKCktPnR5cGVkQXJy
YXlTdG9yYWdlVHlwZSkpCi0gICAgICAgIGxlbmd0aCA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1
ZmZlclZpZXcqPihzb3VyY2VBcnJheSktPmxlbmd0aCgpOwotICAgIGVsc2UKKyAgICBpZiAoaXNU
eXBlZFZpZXcoc291cmNlQXJyYXktPmNsYXNzSW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUp
KSB7CisgICAgICAgIEpTQXJyYXlCdWZmZXJWaWV3KiBzb3VyY2VWaWV3ID0ganNDYXN0PEpTQXJy
YXlCdWZmZXJWaWV3Kj4oc291cmNlQXJyYXkpOworICAgICAgICBpZiAoc291cmNlVmlldy0+aXNO
ZXV0ZXJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlw
ZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisKKyAgICAgICAgbGVu
Z3RoID0ganNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oc291cmNlQXJyYXkpLT5sZW5ndGgoKTsK
KyAgICB9IGVsc2UKICAgICAgICAgbGVuZ3RoID0gc291cmNlQXJyYXktPmdldChleGVjLCBleGVj
LT52bSgpLnByb3BlcnR5TmFtZXMtPmxlbmd0aCkudG9VSW50MzIoZXhlYyk7CiAKICAgICBpZiAo
ZXhlYy0+aGFkRXhjZXB0aW9uKCkpCkBAIC05Niw2ICsxMDgsOCBAQCBFbmNvZGVkSlNWYWx1ZSBK
U0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0VudHJpZXMoRXhlY1N0
YXRlKiBleAogewogICAgIC8vIDIyLjIuMy42CiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0g
anNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAodGhpc09iamVj
dC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0
eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIHJldHVy
biBKU1ZhbHVlOjplbmNvZGUoSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+Y2Fs
bGVlKCktPmdsb2JhbE9iamVjdCgpLT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCksIEFycmF5SXRl
cmF0ZUtleVZhbHVlLCB0aGlzT2JqZWN0KSk7CiB9CkBAIC0xMDUsNiArMTE5LDggQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5
V2l0aGluKEV4ZWNTdGF0ZSoKIHsKICAgICAvLyAyMi4yLjMuNQogICAgIFZpZXdDbGFzcyogdGhp
c09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYg
KHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJy
b3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAK
ICAgICBpZiAoZXhlYy0+YXJndW1lbnRDb3VudCgpIDwgMikKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGF0IGxlYXN0IHR3
byBhcmd1bWVudHMiKSk7CkBAIC0xMzMsNiArMTQ5LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hP
U1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNGaWxsKEV4ZWNTdGF0ZSogZXhl
YykKIHsKICAgICAvLyAyMi4yLjMuOAogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPmlz
TmV1dGVyZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRB
cnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICBKU1ZhbHVlIHZh
bHVlVG9JbnNlcnQgPSBleGVjLT5hcmd1bWVudCgwKTsKICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0
aW9uKCkpCkBAIC0xNTYsNiArMTc0LDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBn
ZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNJbmRleE9mKEV4ZWNTdGF0ZSogZXgKIHsKICAg
ICAvLyAyMi4yLjMuMTMKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0Ns
YXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVk
KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dENvdW50KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CkBAIC0xODEsNiAr
MjAxLDEwIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jSW5kZXhPZihFeGVjU3RhdGUqIGV4CiB0ZW1wbGF0ZTx0eXBlbmFtZSBWaWV3
Q2xhc3M+CiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmll
d1Byb3RvRnVuY0pvaW4oRXhlY1N0YXRlKiBleGVjKQogeworICAgIFZpZXdDbGFzcyogdGhpc09i
amVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKHRo
aXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3Io
ZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CisKICAg
ICAvLyAyMi4yLjMuMTQKICAgICBhdXRvIGpvaW5XaXRoU2VwYXJhdG9yID0gWyZdIChTdHJpbmdW
aWV3IHNlcGFyYXRvcikgLT4gRW5jb2RlZEpTVmFsdWUgewogICAgICAgICBWaWV3Q2xhc3MqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOwpAQCAtMjE0
LDYgKzIzOCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG9GdW5jS2V5cyhFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjE1
CiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRo
aXNWYWx1ZSgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICBy
ZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFj
aGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNBcnJheUl0
ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhlYy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5hcnJh
eUl0ZXJhdG9yU3RydWN0dXJlKCksIEFycmF5SXRlcmF0ZUtleSwgdGhpc09iamVjdCkpOwogfQpA
QCAtMjIzLDYgKzI0OSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jTGFzdEluZGV4T2YoRXhlY1N0YXRlCiB7CiAgICAgLy8gMjIu
Mi4zLjE2CiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4
ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQorICAg
ICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVl
bkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIGlmICghZXhlYy0+YXJndW1lbnRDb3VudCgp
KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVj
LCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50IikpOwpAQCAtMjg5LDYgKzMxNyw4IEBA
IEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9G
dW5jUmV2ZXJzZShFeGVjU3RhdGUqIGV4CiB7CiAgICAgLy8gMjIuMi4zLjIxCiAgICAgVmlld0Ns
YXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsK
KyAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICByZXR1cm4gdGhyb3dW
TVR5cGVFcnJvcihleGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNz
YWdlKTsKIAogICAgIHR5cGVuYW1lIFZpZXdDbGFzczo6RWxlbWVudFR5cGUqIGFycmF5ID0gdGhp
c09iamVjdC0+dHlwZWRWZWN0b3IoKTsKICAgICBzdGQ6OnJldmVyc2UoYXJyYXksIGFycmF5ICsg
dGhpc09iamVjdC0+bGVuZ3RoKCkpOwpAQCAtMzAxLDYgKzMzMSw4IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KEV4ZWNT
dGF0ZSogZXhlCiB7CiAgICAgLy8gMjIuMi4zLjI1CiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0
ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPmFyZ3VtZW50KDApKTsKKyAgICBpZiAodGhpc09i
amVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIHRo
aXNPYmplY3QtPnNvcnQoKTsKIApAQCAtMzE0LDYgKzM0Niw4IEBAIEVuY29kZWRKU1ZhbHVlIEpT
Q19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU2xpY2UoRXhlY1N0YXRl
KiBleGVjCiAgICAgSlNGdW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVj
LT5jYWxsZWUoKSk7CiAKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0Ns
YXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVk
KCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZm
ZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgaWYgKCFleGVjLT5hcmd1bWVu
dENvdW50KCkpCiAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVy
cm9yKGV4ZWMsICJFeHBlY3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CkBAIC0zNDksNiAr
MzgzLDggQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZp
ZXdQcm90b0Z1bmNTdWJhcnJheShFeGVjU3RhdGUqIGUKICAgICBKU0Z1bmN0aW9uKiBjYWxsZWUg
PSBqc0Nhc3Q8SlNGdW5jdGlvbio+KGV4ZWMtPmNhbGxlZSgpKTsKIAogICAgIFZpZXdDbGFzcyog
dGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAg
aWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBl
RXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7
CiAKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGF0IGxlYXN0IG9u
ZSBhcmd1bWVudCIpKTsKQEAgLTM4NSw2ICs0MjEsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJvdG9GdW5jVmFsdWVzKEV4ZWNTdGF0ZSogZXhlYykKIHsK
ICAgICAvLyAyMi4yLjMuMjkKICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmll
d0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRl
cmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlC
dWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgcmV0dXJuIEpTVmFsdWU6
OmVuY29kZShKU0FycmF5SXRlcmF0b3I6OmNyZWF0ZShleGVjLCBleGVjLT5jYWxsZWUoKS0+Z2xv
YmFsT2JqZWN0KCktPmFycmF5SXRlcmF0b3JTdHJ1Y3R1cmUoKSwgQXJyYXlJdGVyYXRlVmFsdWUs
IHRoaXNPYmplY3QpKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKaW5kZXggZDQ3MDExYmMxMjc5
YzEwOGQyZDRhMDg4OGJmODA4YmEwMmYwZmRhYS4uYjQ2MzIyZTMzOWU4Njg5MDc1M2VkMTU5Njg2
MDFlNjQwYjQzMTU2NiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
SlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L3J1bnRpbWUvSlNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZS5jcHAKQEAgLTY4LDYgKzY4LDggQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jTGVu
Z3RoKEV4ZWNTdGF0ZSogZXhlYykKICAgICBKU0FycmF5QnVmZmVyVmlldyogdGhpc09iamVjdCA9
IGpzRHluYW1pY0Nhc3Q8SlNBcnJheUJ1ZmZlclZpZXcqPihleGVjLT5hcmd1bWVudCgwKSk7CiAg
ICAgaWYgKCF0aGlzT2JqZWN0KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNy
ZWF0ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmll
dyIpKTsKKyAgICBpZiAodGhpc09iamVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICByZXR1cm4g
dGhyb3dWTVR5cGVFcnJvcihleGVjLCAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBk
ZXRhY2hlZCBmcm9tIHRoZSB2aWV3Iik7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
TnVtYmVyKHRoaXNPYmplY3QtPmxlbmd0aCgpKSk7CiB9CkBAIC03NSw4ICs3Nyw2IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aChF
eGVjU3RhdGUqIGV4ZWMpCiBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlW
aWV3UHJpdmF0ZUZ1bmNTb3J0KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBKU1ZhbHVlIHRoaXNW
YWx1ZSA9IGV4ZWMtPmFyZ3VtZW50KDApOwotICAgIGlmICghdGhpc1ZhbHVlLmlzT2JqZWN0KCkp
Ci0gICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMs
ICJSZWNlaXZlciBzaG91bGQgYmUgYSB0eXBlZCBhcnJheSB2aWV3IGJ1dCB3YXMgbm90IGFuIG9i
amVjdCIpKTsKICAgICBDQUxMX0dFTkVSSUNfVFlQRURBUlJBWV9QUk9UT1RZUEVfRlVOQ1RJT04o
Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KTsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFycmF5LWZ1bmN0aW9ucy13
aXRoLW5ldXRlcmVkLmpzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBl
ZGFycmF5LWZ1bmN0aW9ucy13aXRoLW5ldXRlcmVkLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI3NzAzOTYzM2Nh
OGZlZjJlMDljMjBjZmM1OTBjMTBkYmUxYzllMzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvdGVzdHMvc3RyZXNzL3R5cGVkYXJyYXktZnVuY3Rpb25zLXdpdGgtbmV1
dGVyZWQuanMKQEAgLTAsMCArMSw3MCBAQAordHlwZWRBcnJheXMgPSBbSW50OEFycmF5LCBVaW50
OEFycmF5LCBVaW50OENsYW1wZWRBcnJheSwgSW50MTZBcnJheSwgVWludDE2QXJyYXksIEludDMy
QXJyYXksIFVpbnQzMkFycmF5LCBGbG9hdDMyQXJyYXksIEZsb2F0NjRBcnJheV07CisKK3Byb3Rv
ID0gSW50OEFycmF5LnByb3RvdHlwZS5fX3Byb3RvX187CisKK2Z1bmN0aW9uIGdldEdldHRlcihw
cm9wKSB7CisgICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eURlc2NyaXB0b3IocHJvdG8s
IHByb3ApLmdldDsKK30KKworZnVuY3Rpb24gdW5pdCgpIHsgfQorCitwcm90b3R5cGVGdW5jdGlv
bnNXaXRoUmVzdWx0ID0gWworICAgIHsgZnVuYzpnZXRHZXR0ZXIoImxlbmd0aCIpLCBhcmdzOltd
IH0sCisgICAgeyBmdW5jOmdldEdldHRlcigiYnl0ZUxlbmd0aCIpLCBhcmdzOltdIH0sCisgICAg
eyBmdW5jOmdldEdldHRlcigiYnl0ZU9mZnNldCIpLCBhcmdzOltdIH0sCitdOworCitwcm90b3R5
cGVGdW5jdGlvbnNXaXRoVmFsaWRhdGlvbiA9IFsKKyAgICB7IGZ1bmM6cHJvdG8uY29weVdpdGhp
biwgYXJnczpbMCwgMV0gfSwKKyAgICB7IGZ1bmM6cHJvdG8uZW50cmllcywgYXJnczpbXSB9LAor
ICAgIHsgZnVuYzpwcm90by5ldmVyeSwgYXJnczpbdW5pdF0gfSwKKyAgICB7IGZ1bmM6cHJvdG8u
ZXZlcnksIGFyZ3M6WzFdIH0sCisgICAgeyBmdW5jOnByb3RvLmZpbHRlciwgYXJnczpbdW5pdF0g
fSwKKyAgICB7IGZ1bmM6cHJvdG8uZmluZCwgYXJnczpbXSB9LAorICAgIHsgZnVuYzpwcm90by5m
aW5kSW5kZXgsIGFyZ3M6W10gfSwKKyAgICB7IGZ1bmM6cHJvdG8uZm9yRWFjaCwgYXJnczpbXSB9
LAorICAgIHsgZnVuYzpwcm90by5pbmRleE9mLCBhcmdzOltdIH0sCisgICAgeyBmdW5jOnByb3Rv
LmpvaW4sIGFyZ3M6W10gfSwKKyAgICB7IGZ1bmM6cHJvdG8ua2V5cywgYXJnczpbXSB9LAorICAg
IHsgZnVuYzpwcm90by5sYXN0SW5kZXhPZiwgYXJnczpbXSB9LAorICAgIHsgZnVuYzpwcm90by5t
YXAsIGFyZ3M6W10gfSwKKyAgICB7IGZ1bmM6cHJvdG8ucmVkdWNlLCBhcmdzOltdIH0sCisgICAg
eyBmdW5jOnByb3RvLnJlZHVjZVJpZ2h0LCBhcmdzOltdIH0sCisgICAgeyBmdW5jOnByb3RvLnJl
dmVyc2UsIGFyZ3M6W10gfSwKKyAgICB7IGZ1bmM6cHJvdG8uc2V0LCBhcmdzOltbXV0gfSwKKyAg
ICB7IGZ1bmM6cHJvdG8uc2V0LCBhcmdzOltuZXcgSW50MzJBcnJheSgxKV0gfSwKKyAgICB7IGZ1
bmM6cHJvdG8uc2V0LCBhcmdzOltuZXcgSW50MzJBcnJheSgxKV0gfSwKKyAgICB7IGZ1bmM6cHJv
dG8uc2V0LCBhcmdzOltuZXcgSW50MzJBcnJheSgxKSwgLTFdLCBlcnJvcjoiUmFuZ2VFcnJvcjog
T2Zmc2V0IHNob3VsZCBub3QgYmUgbmVnYXRpdmUiIH0sCisgICAgeyBmdW5jOnByb3RvLnNsaWNl
LCBhcmdzOltdIH0sCisgICAgeyBmdW5jOnByb3RvLnNvbWUsIGFyZ3M6W10gfSwKKyAgICB7IGZ1
bmM6cHJvdG8uc29ydCwgYXJnczpbXSB9LAorICAgIHsgZnVuYzpwcm90by5zdWJhcnJheSwgYXJn
czpbXSB9LAorICAgIHsgZnVuYzpwcm90by50b1N0cmluZywgYXJnczpbXSB9LAorICAgIHsgZnVu
Yzpwcm90by52YWx1ZXMsIGFyZ3M6W10gfSwKK107CisKK2FycmF5cyA9IHR5cGVkQXJyYXlzLm1h
cChmdW5jdGlvbihjb25zdHJ1Y3RvcikgeyByZXR1cm4gbmV1dGVyVHlwZWRBcnJheShuZXcgY29u
c3RydWN0b3IoMTApKSB9KTsKKworZnVuY3Rpb24gY2hlY2tQcm90b0Z1bmModGVzdEFyZ3MpIHsK
KyAgICBmdW5jdGlvbiB0aHJvd3NDb3JyZWN0RXJyb3IoZWxlbSkgeworICAgICAgICB0cnkgewor
ICAgICAgICAgICAgdGVzdEFyZ3MuZnVuYy5jYWxsKC4uLltlbGVtLCAuLi50ZXN0QXJncy5hcmdz
XSk7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGlmICh0ZXN0QXJncy5lcnJv
cikKKyAgICAgICAgICAgICAgICByZXR1cm4gZSA9PSB0ZXN0QXJncy5lcnJvcjsKKyAgICAgICAg
ICAgIHJldHVybiBlID09ICJUeXBlRXJyb3I6IFVuZGVybHlpbmcgQXJyYXlCdWZmZXIgaGFzIGJl
ZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyI7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGZh
bHNlOworICAgIH0KKworICAgIGlmICghYXJyYXlzLmV2ZXJ5KHRocm93c0NvcnJlY3RFcnJvcikp
CisgICAgICAgIHRocm93ICJiYWQiICsgdGVzdEFyZ3MuZnVuYy5uYW1lOworfQorCitmdW5jdGlv
biB0ZXN0KCkgeworICAgIHByb3RvdHlwZUZ1bmN0aW9uc1dpdGhWYWxpZGF0aW9uLmZvckVhY2go
Y2hlY2tQcm90b0Z1bmMpOworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykKKyAg
ICB0ZXN0KCk7CisK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>269307</attachid>
            <date>2016-01-19 16:29:56 -0800</date>
            <delta_ts>2016-01-19 17:04:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-153245-20160119162926.patch</filename>
            <type>text/plain</type>
            <size>16755</size>
            <attacher name="Keith Miller">keith_miller</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTk1MTQzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCAy
ZWM4YzkxOTExMjAxYmUzODQ3YjkwMjNmNmQ5ZjM3ZDI0Y2I4NmI1Li5hZmJmMTQ3MThiNzNmZWYz
ZjMwYjM3MzM2ODk3MmIwZTdiMTUyMzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NyBAQAorMjAxNi0wMS0xOSAgS2VpdGggTWlsbGVyICA8a2VpdGhfbWlsbGVyQGFwcGxl
LmNvbT4KKworICAgICAgICBbRVM2XSBGaXggdmFyaW91cyBpc3N1ZXMgd2l0aCBUeXBlZEFycmF5
cy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MzI0
NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoaXMg
cGF0Y2ggZml4ZXMgYSBjb3VwbGUgb2YgaXNzdWVzIHdpdGggVHlwZWRBcnJheXM6CisKKyAgICAg
ICAgMSkgV2Ugd2VyZSBub3QgY2hlY2tpbmcgaWYgYSB2aWV3IGhhZCBiZWVuIG5ldXRlcmVkIGFu
ZCB0aHJvd2luZyBhbiBlcnJvcgorICAgICAgICBpZiBpdCBoYWQgaW4gdGhlIG91ciBUeXBlZEFy
cmF5LnByb3RvdHlwZSBmdW5jdGlvbnMuCisKKyAgICAgICAgMikgVGhlIFR5cGVkQXJyYXkucHJv
dG90eXBlLnNldCBmdW5jdGlvbiBoYWQgYSBjb3VwbGUgb2YgbWlub3IgaXNzdWVzIHdpdGgKKyAg
ICAgICAgY2hlY2tpbmcgZm9yIHRoZSBvZmZzZXQgYmVpbmcgbmVnYXRpdmUuCisKKyAgICAgICAg
MykgVGhlIEpTQXJyYXlCdWZmZXJWaWV3IGNsYXNzIGRpZCBub3QgY2hlY2sgaWYgdGhlIGJhY2tp
bmcgc3RvcmUgaGFkCisgICAgICAgIGJlZW4gbmV1dGVyZWQgd2hlbiBjb21wdXRpbmcgdGhlIG9m
ZnNldCBldmVuIHRob3VnaCB0aGUgdmlldydzIHZlY3RvcgorICAgICAgICBwb2ludGVyIGhhZCBi
ZWVuIHNldCB0byBOVUxMLiBUaGlzIG1lYW50IHRoYXQgdW5kZXIgc29tZSBjb25kaXRpb25zIHdl
CisgICAgICAgIGNvdWxkLCBvY2Nhc2lvbmFsbHksIHJldHVybiBhIGdhcmJhZ2UgbnVtYmVyIGFz
IHRoZSBvZmZzZXQuIE5vdywgd2Ugb25seQorICAgICAgICBuZXV0ZXIgdmlld3MgaWYgdGhlIGJh
Y2tpbmcgQXJyYXlCdWZmZXIncyB2aWV3IGlzIGFjdHVhbGx5IHRyYW5zZmVyZWQuCisKKyAgICAg
ICAgKiBqc2MuY3BwOgorICAgICAgICAoR2xvYmFsT2JqZWN0OjpmaW5pc2hDcmVhdGlvbik6Cisg
ICAgICAgIChmdW5jdGlvbk5ldXRlclR5cGVkQXJyYXkpOgorICAgICAgICAqIHJ1bnRpbWUvSlNB
cnJheUJ1ZmZlclZpZXcuaDoKKyAgICAgICAgKEpTQzo6SlNBcnJheUJ1ZmZlclZpZXc6OmlzTmV1
dGVyZWQpOgorICAgICAgICAqIHJ1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmg6Cisg
ICAgICAgIChKU0M6OkpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zmc2V0KToKKyAgICAgICAgKiBy
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmg6CisgICAg
ICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY1NldCk6CisgICAgICAgIChK
U0M6OmdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0VudHJpZXMpOgorICAgICAgICAoSlND
OjpnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNDb3B5V2l0aGluKToKKyAgICAgICAgKEpT
Qzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jRmlsbCk6CisgICAgICAgIChKU0M6Omdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YpOgorICAgICAgICAoSlNDOjpnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5
cGVkQXJyYXlWaWV3UHJvdG9GdW5jS2V5cyk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVk
QXJyYXlWaWV3UHJvdG9GdW5jUmV2ZXJzZSk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFy
cmF5Vmlld1ByaXZhdGVGdW5jU29ydCk6CisgICAgICAgIChKU0M6OmdlbmVyaWNUeXBlZEFycmF5
Vmlld1Byb3RvRnVuY1NsaWNlKToKKyAgICAgICAgKEpTQzo6Z2VuZXJpY1R5cGVkQXJyYXlWaWV3
UHJvdG9GdW5jU3ViYXJyYXkpOgorICAgICAgICAoSlNDOjp0eXBlZEFycmF5Vmlld1Byb3RvRnVu
Y1ZhbHVlcyk6CisgICAgICAgICogcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNw
cDoKKyAgICAgICAgKEpTQzo6dHlwZWRBcnJheVZpZXdQcml2YXRlRnVuY0xlbmd0aCk6CisgICAg
ICAgIChKU0M6OnR5cGVkQXJyYXlWaWV3UHJpdmF0ZUZ1bmNTb3J0KTogRGVsZXRlZC4KKyAgICAg
ICAgKiB0ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1mdW5jdGlvbnMtd2l0aC1uZXV0ZXJlZC5qczog
QWRkZWQuCisgICAgICAgIChnZXRHZXR0ZXIpOgorICAgICAgICAodW5pdCk6CisgICAgICAgIChh
cmdzLm5ldy5JbnQzMkFycmF5KToKKyAgICAgICAgKGFycmF5cy50eXBlZEFycmF5cy5tYXApOgor
ICAgICAgICAoY2hlY2tQcm90b0Z1bmMudGhyb3dzQ29ycmVjdEVycm9yKToKKyAgICAgICAgKGNo
ZWNrUHJvdG9GdW5jKToKKyAgICAgICAgKHRlc3QpOgorCiAyMDE2LTAxLTE1ICBGaWxpcCBQaXps
byAgPGZwaXpsb0BhcHBsZS5jb20+CiAKICAgICAgICAgQWlyIG5lZWRzIGEgU2h1ZmZsZSBpbnN0
cnVjdGlvbgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlC
dWZmZXIuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvQXJyYXlCdWZmZXIuY3Bw
CmluZGV4IGY3OGEwYzBmMDA1MjBjMzg4ZDE1ZmU3MTI2NGM5ZDdkMmEwMmUyMTguLjVhN2FkMjY4
ZTFlMDYwOTk2NjBkMjJkNDNmNjFlOGI2OWMzOTRhMTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0FycmF5QnVmZmVyLmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9BcnJheUJ1ZmZlci5jcHAKQEAgLTQ0LDE0ICs0NCwxNCBAQCBib29sIEFy
cmF5QnVmZmVyOjp0cmFuc2ZlcihBcnJheUJ1ZmZlckNvbnRlbnRzJiByZXN1bHQpCiAKICAgICBi
b29sIGlzTmV1dGVyYWJsZSA9ICFtX3BpbkNvdW50OwogCi0gICAgaWYgKGlzTmV1dGVyYWJsZSkK
LSAgICAgICAgbV9jb250ZW50cy50cmFuc2ZlcihyZXN1bHQpOwotICAgIGVsc2UgeworICAgIGlm
ICghaXNOZXV0ZXJhYmxlKSB7CiAgICAgICAgIG1fY29udGVudHMuY29weVRvKHJlc3VsdCk7CiAg
ICAgICAgIGlmICghcmVzdWx0Lm1fZGF0YSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogCisgICAgbV9jb250ZW50cy50cmFuc2ZlcihyZXN1
bHQpOwogICAgIGZvciAoc2l6ZV90IGkgPSBudW1iZXJPZkluY29taW5nUmVmZXJlbmNlcygpOyBp
LS07KSB7CiAgICAgICAgIEpTQ2VsbCogY2VsbCA9IGluY29taW5nUmVmZXJlbmNlQXQoaSk7CiAg
ICAgICAgIGlmIChKU0FycmF5QnVmZmVyVmlldyogdmlldyA9IGpzRHluYW1pY0Nhc3Q8SlNBcnJh
eUJ1ZmZlclZpZXcqPihjZWxsKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0FycmF5QnVmZmVyVmlldy5oCmluZGV4IDNlZGJmY2ViMzUyNmI2M2NkYzE5Zjg1ZTU5YjAz
ZDFkMGJjMTQ0NGIuLjg1YjM0MDc1YjZhNmJlMjE3NjZiOTE4MGY5NjM0YWNkMzBkMDAzZTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3
LmgKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXcu
aApAQCAtMTU5LDYgKzE1OSw3IEBAIHB1YmxpYzoKICAgICAKICAgICBBcnJheUJ1ZmZlciogYnVm
ZmVyKCk7CiAgICAgUGFzc1JlZlB0cjxBcnJheUJ1ZmZlclZpZXc+IGltcGwoKTsKKyAgICBib29s
IGlzTmV1dGVyZWQoKSB7IHJldHVybiBoYXNBcnJheUJ1ZmZlcigpICYmICF2ZWN0b3IoKTsgfQog
ICAgIHZvaWQgbmV1dGVyKCk7CiAgICAgCiAgICAgdm9pZCogdmVjdG9yKCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQXJyYXlCdWZmZXJWaWV3SW5saW5lcy5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVz
LmgKaW5kZXggM2QwMGE0MWQ5MzMxMjYyMzAyN2FlZGI1NjczZGIyYmEyMWIxYjc5OS4uM2M0YjA1
NGJhZDZhNmEzYmIwNGFhYmM4NzRhM2QwZjI2NTk1ZmRiYSAxMDA2NDQKLS0tIGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgKQEAg
LTY2LDcgKzY2LDkgQEAgaW5saW5lIHVuc2lnbmVkIEpTQXJyYXlCdWZmZXJWaWV3OjpieXRlT2Zm
c2V0KCkKIHsKICAgICBpZiAoIWhhc0FycmF5QnVmZmVyKCkpCiAgICAgICAgIHJldHVybiAwOwot
ICAgIAorCisgICAgQVNTRVJUKCF2ZWN0b3IoKSA9PSAhYnVmZmVyKCktPmRhdGEoKSk7CisKICAg
ICBwdHJkaWZmX3QgZGVsdGEgPQogICAgICAgICBiaXR3aXNlX2Nhc3Q8dWludDhfdCo+KHZlY3Rv
cigpKSAtIHN0YXRpY19jYXN0PHVpbnQ4X3QqPihidWZmZXIoKS0+ZGF0YSgpKTsKICAgICAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTR2VuZXJpY1R5cGVkQXJy
YXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGlt
ZS9KU0dlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvdHlwZUZ1bmN0aW9ucy5oCmluZGV4IGRjNTM2
YWZhZDY5NzFiZThmNWZjNzlhY2NiNWZlZjcxMTYxZGViNmYuLjIzYmI1MzY3ZGJlN2FlNWZmYTU2
NTYwZDBiNzFlNzhmZDBlMTQ3Y2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTR2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlRnVuY3Rpb25zLmgKKysrIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHZW5lcmljVHlwZWRBcnJheVZpZXdQcm90
b3R5cGVGdW5jdGlvbnMuaApAQCAtNDMsNiArNDMsOCBAQAogCiBuYW1lc3BhY2UgSlNDIHsKIAor
c3RhdGljIGNvbnN0IGNoYXIqIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1l
c3NhZ2UgPSAiVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVlbiBkZXRhY2hlZCBmcm9tIHRo
ZSB2aWV3IjsKKwogaW5saW5lIHVuc2lnbmVkIGFyZ3VtZW50Q2xhbXBlZEluZGV4RnJvbVN0YXJ0
T3JFbmQoRXhlY1N0YXRlKiBleGVjLCBpbnQgYXJndW1lbnQsIHVuc2lnbmVkIGxlbmd0aCwgdW5z
aWduZWQgdW5kZWZpbmVkVmFsdWUgPSAwKQogewogICAgIEpTVmFsdWUgdmFsdWUgPSBleGVjLT5h
cmd1bWVudChhcmd1bWVudCk7CkBAIC02OCwyMCArNzAsMzAgQEAgRW5jb2RlZEpTVmFsdWUgSlND
X0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNTZXQoRXhlY1N0YXRlKiBl
eGVjKQogCiAgICAgdW5zaWduZWQgb2Zmc2V0OwogICAgIGlmIChleGVjLT5hcmd1bWVudENvdW50
KCkgPj0gMikgewotICAgICAgICBvZmZzZXQgPSBleGVjLT51bmNoZWNrZWRBcmd1bWVudCgxKS50
b1VJbnQzMihleGVjKTsKKyAgICAgICAgZG91YmxlIG9mZnNldE51bWJlciA9IGV4ZWMtPnVuY2hl
Y2tlZEFyZ3VtZW50KDEpLnRvSW50ZWdlcihleGVjKTsKICAgICAgICAgaWYgKGV4ZWMtPmhhZEV4
Y2VwdGlvbigpKQogICAgICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZShqc1VuZGVmaW5l
ZCgpKTsKKyAgICAgICAgaWYgKG9mZnNldE51bWJlciA8IDApCisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTVJhbmdlRXJyb3IoZXhlYywgIk9mZnNldCBzaG91bGQgbm90IGJlIG5lZ2F0aXZlIik7
CisgICAgICAgIG9mZnNldCA9IG9mZnNldE51bWJlcjsKICAgICB9IGVsc2UKICAgICAgICAgb2Zm
c2V0ID0gMDsKIAorICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNo
ZWRFcnJvck1lc3NhZ2UpOworCiAgICAgSlNPYmplY3QqIHNvdXJjZUFycmF5ID0ganNEeW5hbWlj
Q2FzdDxKU09iamVjdCo+KGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50KDApKTsKICAgICBpZiAoIXNv
dXJjZUFycmF5KQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVR5cGVF
cnJvcihleGVjLCAiRmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIGFuIG9iamVjdCIpKTsKIAogICAg
IHVuc2lnbmVkIGxlbmd0aDsKLSAgICBpZiAoaXNUeXBlZFZpZXcoc291cmNlQXJyYXktPmNsYXNz
SW5mbygpLT50eXBlZEFycmF5U3RvcmFnZVR5cGUpKQotICAgICAgICBsZW5ndGggPSBqc0R5bmFt
aWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oc291cmNlQXJyYXkpLT5sZW5ndGgoKTsKLSAgICBl
bHNlCisgICAgaWYgKGlzVHlwZWRWaWV3KHNvdXJjZUFycmF5LT5jbGFzc0luZm8oKS0+dHlwZWRB
cnJheVN0b3JhZ2VUeXBlKSkgeworICAgICAgICBKU0FycmF5QnVmZmVyVmlldyogc291cmNlVmll
dyA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHNvdXJjZUFycmF5KTsKKyAgICAgICAgaWYg
KHNvdXJjZVZpZXctPmlzTmV1dGVyZWQoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlw
ZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2Up
OworCisgICAgICAgIGxlbmd0aCA9IGpzQ2FzdDxKU0FycmF5QnVmZmVyVmlldyo+KHNvdXJjZUFy
cmF5KS0+bGVuZ3RoKCk7CisgICAgfSBlbHNlCiAgICAgICAgIGxlbmd0aCA9IHNvdXJjZUFycmF5
LT5nZXQoZXhlYywgZXhlYy0+dm0oKS5wcm9wZXJ0eU5hbWVzLT5sZW5ndGgpLnRvVUludDMyKGV4
ZWMpOwogCiAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtOTYsNiArMTA4LDggQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5lcmljVHlwZWRBcnJheVZpZXdQcm90b0Z1
bmNFbnRyaWVzKEV4ZWNTdGF0ZSogZXgKIHsKICAgICAvLyAyMi4yLjMuNgogICAgIFZpZXdDbGFz
cyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7Cisg
ICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1U
eXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2Fn
ZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKEpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRl
KGV4ZWMsIGV4ZWMtPmNhbGxlZSgpLT5nbG9iYWxPYmplY3QoKS0+YXJyYXlJdGVyYXRvclN0cnVj
dHVyZSgpLCBBcnJheUl0ZXJhdGVLZXlWYWx1ZSwgdGhpc09iamVjdCkpOwogfQpAQCAtMTA1LDYg
KzExOSw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlW
aWV3UHJvdG9GdW5jQ29weVdpdGhpbihFeGVjU3RhdGUqCiB7CiAgICAgLy8gMjIuMi4zLjUKICAg
ICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1Zh
bHVlKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCisgICAgICAgIHJldHVy
biB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRF
cnJvck1lc3NhZ2UpOwogCiAgICAgaWYgKGV4ZWMtPmFyZ3VtZW50Q291bnQoKSA8IDIpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBl
Y3RlZCBhdCBsZWFzdCB0d28gYXJndW1lbnRzIikpOwpAQCAtMTMzLDYgKzE0OSw4IEBAIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jRmls
bChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjgKICAgICBWaWV3Q2xhc3MqIHRo
aXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVlKCkpOworICAgIGlm
ICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCisgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJvck1lc3NhZ2UpOwog
CiAgICAgSlNWYWx1ZSB2YWx1ZVRvSW5zZXJ0ID0gZXhlYy0+YXJndW1lbnQoMCk7CiAgICAgaWYg
KGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQpAQCAtMTU2LDYgKzE3NCw4IEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZ2VuZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jSW5kZXhPZihFeGVj
U3RhdGUqIGV4CiB7CiAgICAgLy8gMjIuMi4zLjEzCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0
ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAodGhpc09i
amVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIGlm
ICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50
IikpOwpAQCAtMTgxLDYgKzIwMSwxMCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdl
bmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0luZGV4T2YoRXhlY1N0YXRlKiBleAogdGVtcGxh
dGU8dHlwZW5hbWUgVmlld0NsYXNzPgogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBnZW5l
cmljVHlwZWRBcnJheVZpZXdQcm90b0Z1bmNKb2luKEV4ZWNTdGF0ZSogZXhlYykKIHsKKyAgICBW
aWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhpc1ZhbHVl
KCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCisgICAgICAgIHJldHVybiB0
aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNoZWRFcnJv
ck1lc3NhZ2UpOworCiAgICAgLy8gMjIuMi4zLjE0CiAgICAgYXV0byBqb2luV2l0aFNlcGFyYXRv
ciA9IFsmXSAoU3RyaW5nVmlldyBzZXBhcmF0b3IpIC0+IEVuY29kZWRKU1ZhbHVlIHsKICAgICAg
ICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNW
YWx1ZSgpKTsKQEAgLTIxNCw2ICsyMzgsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxM
IGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0tleXMoRXhlY1N0YXRlKiBleGVjKQogewog
ICAgIC8vIDIyLjIuMy4xNQogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3
Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVy
ZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1
ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKEpTQXJyYXlJdGVyYXRvcjo6Y3JlYXRlKGV4ZWMsIGV4ZWMtPmNhbGxlZSgpLT5nbG9i
YWxPYmplY3QoKS0+YXJyYXlJdGVyYXRvclN0cnVjdHVyZSgpLCBBcnJheUl0ZXJhdGVLZXksIHRo
aXNPYmplY3QpKTsKIH0KQEAgLTIyMyw2ICsyNDksOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9T
VF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVuY0xhc3RJbmRleE9mKEV4ZWNTdGF0
ZQogewogICAgIC8vIDIyLjIuMy4xNgogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2Fz
dDxWaWV3Q2xhc3MqPihleGVjLT50aGlzVmFsdWUoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPmlz
TmV1dGVyZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRB
cnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICBpZiAoIWV4ZWMt
PmFyZ3VtZW50Q291bnQoKSkKICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVh
dGVUeXBlRXJyb3IoZXhlYywgIkV4cGVjdGVkIGF0IGxlYXN0IG9uZSBhcmd1bWVudCIpKTsKQEAg
LTI4OSw2ICszMTcsOCBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBl
ZEFycmF5Vmlld1Byb3RvRnVuY1JldmVyc2UoRXhlY1N0YXRlKiBleAogewogICAgIC8vIDIyLjIu
My4yMQogICAgIFZpZXdDbGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVj
LT50aGlzVmFsdWUoKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5E
ZXRhY2hlZEVycm9yTWVzc2FnZSk7CiAKICAgICB0eXBlbmFtZSBWaWV3Q2xhc3M6OkVsZW1lbnRU
eXBlKiBhcnJheSA9IHRoaXNPYmplY3QtPnR5cGVkVmVjdG9yKCk7CiAgICAgc3RkOjpyZXZlcnNl
KGFycmF5LCBhcnJheSArIHRoaXNPYmplY3QtPmxlbmd0aCgpKTsKQEAgLTMwMSw2ICszMzEsOCBA
QCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZh
dGVGdW5jU29ydChFeGVjU3RhdGUqIGV4ZQogewogICAgIC8vIDIyLjIuMy4yNQogICAgIFZpZXdD
bGFzcyogdGhpc09iamVjdCA9IGpzQ2FzdDxWaWV3Q2xhc3MqPihleGVjLT5hcmd1bWVudCgwKSk7
CisgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkKKyAgICAgICAgcmV0dXJuIHRocm93
Vk1UeXBlRXJyb3IoZXhlYywgdHlwZWRBcnJheUJ1ZmZlckhhc0JlZW5EZXRhY2hlZEVycm9yTWVz
c2FnZSk7CiAKICAgICB0aGlzT2JqZWN0LT5zb3J0KCk7CiAKQEAgLTMxNCw2ICszNDYsOCBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGdlbmVyaWNUeXBlZEFycmF5Vmlld1Byb3RvRnVu
Y1NsaWNlKEV4ZWNTdGF0ZSogZXhlYwogICAgIEpTRnVuY3Rpb24qIGNhbGxlZSA9IGpzQ2FzdDxK
U0Z1bmN0aW9uKj4oZXhlYy0+Y2FsbGVlKCkpOwogCiAgICAgVmlld0NsYXNzKiB0aGlzT2JqZWN0
ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAodGhpc09i
amVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVj
LCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAgIGlm
ICghZXhlYy0+YXJndW1lbnRDb3VudCgpKQogICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4
ZWMsIGNyZWF0ZVR5cGVFcnJvcihleGVjLCAiRXhwZWN0ZWQgYXQgbGVhc3Qgb25lIGFyZ3VtZW50
IikpOwpAQCAtMzQ5LDYgKzM4Myw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZ2Vu
ZXJpY1R5cGVkQXJyYXlWaWV3UHJvdG9GdW5jU3ViYXJyYXkoRXhlY1N0YXRlKiBlCiAgICAgSlNG
dW5jdGlvbiogY2FsbGVlID0ganNDYXN0PEpTRnVuY3Rpb24qPihleGVjLT5jYWxsZWUoKSk7CiAK
ICAgICBWaWV3Q2xhc3MqIHRoaXNPYmplY3QgPSBqc0Nhc3Q8Vmlld0NsYXNzKj4oZXhlYy0+dGhp
c1ZhbHVlKCkpOworICAgIGlmICh0aGlzT2JqZWN0LT5pc05ldXRlcmVkKCkpCisgICAgICAgIHJl
dHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHR5cGVkQXJyYXlCdWZmZXJIYXNCZWVuRGV0YWNo
ZWRFcnJvck1lc3NhZ2UpOwogCiAgICAgaWYgKCFleGVjLT5hcmd1bWVudENvdW50KCkpCiAgICAg
ICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlVHlwZUVycm9yKGV4ZWMsICJFeHBl
Y3RlZCBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKSk7CkBAIC0zODUsNiArNDIxLDggQEAgRW5jb2Rl
ZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCB0eXBlZEFycmF5Vmlld1Byb3RvRnVuY1ZhbHVlcyhFeGVj
U3RhdGUqIGV4ZWMpCiB7CiAgICAgLy8gMjIuMi4zLjI5CiAgICAgVmlld0NsYXNzKiB0aGlzT2Jq
ZWN0ID0ganNDYXN0PFZpZXdDbGFzcyo+KGV4ZWMtPnRoaXNWYWx1ZSgpKTsKKyAgICBpZiAodGhp
c09iamVjdC0+aXNOZXV0ZXJlZCgpKQorICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihl
eGVjLCB0eXBlZEFycmF5QnVmZmVySGFzQmVlbkRldGFjaGVkRXJyb3JNZXNzYWdlKTsKIAogICAg
IHJldHVybiBKU1ZhbHVlOjplbmNvZGUoSlNBcnJheUl0ZXJhdG9yOjpjcmVhdGUoZXhlYywgZXhl
Yy0+Y2FsbGVlKCktPmdsb2JhbE9iamVjdCgpLT5hcnJheUl0ZXJhdG9yU3RydWN0dXJlKCksIEFy
cmF5SXRlcmF0ZVZhbHVlLCB0aGlzT2JqZWN0KSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvcnVudGltZS9KU1R5cGVkQXJyYXlWaWV3UHJvdG90eXBlLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCmlu
ZGV4IGQ0NzAxMWJjMTI3OWMxMDhkMmQ0YTA4ODhiZjgwOGJhMDJmMGZkYWEuLmI0NjMyMmUzMzll
ODY4OTA3NTNlZDE1OTY4NjAxZTY0MGI0MzE1NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTVHlwZWRBcnJheVZpZXdQcm90b3R5cGUuY3BwCkBA
IC02OCw2ICs2OCw4IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgdHlwZWRBcnJheVZp
ZXdQcml2YXRlRnVuY0xlbmd0aChFeGVjU3RhdGUqIGV4ZWMpCiAgICAgSlNBcnJheUJ1ZmZlclZp
ZXcqIHRoaXNPYmplY3QgPSBqc0R5bmFtaWNDYXN0PEpTQXJyYXlCdWZmZXJWaWV3Kj4oZXhlYy0+
YXJndW1lbnQoMCkpOwogICAgIGlmICghdGhpc09iamVjdCkKICAgICAgICAgcmV0dXJuIHRocm93
Vk1FcnJvcihleGVjLCBjcmVhdGVUeXBlRXJyb3IoZXhlYywgIlJlY2VpdmVyIHNob3VsZCBiZSBh
IHR5cGVkIGFycmF5IHZpZXciKSk7CisgICAgaWYgKHRoaXNPYmplY3QtPmlzTmV1dGVyZWQoKSkK
KyAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgIlVuZGVybHlpbmcgQXJyYXlC
dWZmZXIgaGFzIGJlZW4gZGV0YWNoZWQgZnJvbSB0aGUgdmlldyIpOwogCiAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcih0aGlzT2JqZWN0LT5sZW5ndGgoKSkpOwogfQpAQCAtNzUs
OCArNzcsNiBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIHR5cGVkQXJyYXlWaWV3UHJp
dmF0ZUZ1bmNMZW5ndGgoRXhlY1N0YXRlKiBleGVjKQogRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCB0eXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydChFeGVjU3RhdGUqIGV4ZWMpCiB7CiAg
ICAgSlNWYWx1ZSB0aGlzVmFsdWUgPSBleGVjLT5hcmd1bWVudCgwKTsKLSAgICBpZiAoIXRoaXNW
YWx1ZS5pc09iamVjdCgpKQotICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVR5cGVFcnJvcihleGVjLCAiUmVjZWl2ZXIgc2hvdWxkIGJlIGEgdHlwZWQgYXJyYXkgdmlldyBi
dXQgd2FzIG5vdCBhbiBvYmplY3QiKSk7CiAgICAgQ0FMTF9HRU5FUklDX1RZUEVEQVJSQVlfUFJP
VE9UWVBFX0ZVTkNUSU9OKGdlbmVyaWNUeXBlZEFycmF5Vmlld1ByaXZhdGVGdW5jU29ydCk7CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90ZXN0cy9zdHJlc3MvdHlwZWRh
cnJheS1mdW5jdGlvbnMtd2l0aC1uZXV0ZXJlZC5qcyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS90
ZXN0cy9zdHJlc3MvdHlwZWRhcnJheS1mdW5jdGlvbnMtd2l0aC1uZXV0ZXJlZC5qcwpuZXcgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwLi4wOTEwYzBjYWE1ZGIyNTViODQ1NjM0YzkxYmY1OTdmZmM3YzRmODcyCi0tLSAvZGV2L251
bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL3Rlc3RzL3N0cmVzcy90eXBlZGFycmF5LWZ1
bmN0aW9ucy13aXRoLW5ldXRlcmVkLmpzCkBAIC0wLDAgKzEsNzUgQEAKK3R5cGVkQXJyYXlzID0g
W0ludDhBcnJheSwgVWludDhBcnJheSwgVWludDhDbGFtcGVkQXJyYXksIEludDE2QXJyYXksIFVp
bnQxNkFycmF5LCBJbnQzMkFycmF5LCBVaW50MzJBcnJheSwgRmxvYXQzMkFycmF5LCBGbG9hdDY0
QXJyYXldOworCitwcm90byA9IEludDhBcnJheS5wcm90b3R5cGUuX19wcm90b19fOworCitmdW5j
dGlvbiBnZXRHZXR0ZXIocHJvcCkgeworICAgIHJldHVybiBPYmplY3QuZ2V0T3duUHJvcGVydHlE
ZXNjcmlwdG9yKHByb3RvLCBwcm9wKS5nZXQ7Cit9CisKK2Z1bmN0aW9uIHVuaXQoKSB7IH0KKwor
Citwcm90b3R5cGVGdW5jdGlvbnMgPSBbCisgICAgeyBmdW5jOmdldEdldHRlcigibGVuZ3RoIiks
IGFyZ3M6W10sIHJlc3VsdDowIH0sCisgICAgeyBmdW5jOmdldEdldHRlcigiYnl0ZUxlbmd0aCIp
LCBhcmdzOltdLCByZXN1bHQ6MCB9LAorICAgIHsgZnVuYzpnZXRHZXR0ZXIoImJ5dGVPZmZzZXQi
KSwgYXJnczpbXSwgcmVzdWx0OjAgfSwKKyAgICB7IGZ1bmM6cHJvdG8uY29weVdpdGhpbiwgYXJn
czpbMCwgMV0gfSwKKyAgICB7IGZ1bmM6cHJvdG8uZW50cmllcywgYXJnczpbXSB9LAorICAgIHsg
ZnVuYzpwcm90by5ldmVyeSwgYXJnczpbdW5pdF0gfSwKKyAgICB7IGZ1bmM6cHJvdG8uZXZlcnks
IGFyZ3M6WzFdIH0sCisgICAgeyBmdW5jOnByb3RvLmZpbHRlciwgYXJnczpbdW5pdF0gfSwKKyAg
ICB7IGZ1bmM6cHJvdG8uZmluZCwgYXJnczpbXSB9LAorICAgIHsgZnVuYzpwcm90by5maW5kSW5k
ZXgsIGFyZ3M6W10gfSwKKyAgICB7IGZ1bmM6cHJvdG8uZm9yRWFjaCwgYXJnczpbXSB9LAorICAg
IHsgZnVuYzpwcm90by5pbmRleE9mLCBhcmdzOltdIH0sCisgICAgeyBmdW5jOnByb3RvLmpvaW4s
IGFyZ3M6W10gfSwKKyAgICB7IGZ1bmM6cHJvdG8ua2V5cywgYXJnczpbXSB9LAorICAgIHsgZnVu
Yzpwcm90by5sYXN0SW5kZXhPZiwgYXJnczpbXSB9LAorICAgIHsgZnVuYzpwcm90by5tYXAsIGFy
Z3M6W10gfSwKKyAgICB7IGZ1bmM6cHJvdG8ucmVkdWNlLCBhcmdzOltdIH0sCisgICAgeyBmdW5j
OnByb3RvLnJlZHVjZVJpZ2h0LCBhcmdzOltdIH0sCisgICAgeyBmdW5jOnByb3RvLnJldmVyc2Us
IGFyZ3M6W10gfSwKKyAgICB7IGZ1bmM6cHJvdG8uc2V0LCBhcmdzOltbXV0gfSwKKyAgICB7IGZ1
bmM6cHJvdG8uc2V0LCBhcmdzOltuZXcgSW50MzJBcnJheSgxKV0gfSwKKyAgICB7IGZ1bmM6cHJv
dG8uc2V0LCBhcmdzOltuZXcgSW50MzJBcnJheSgxKV0gfSwKKyAgICB7IGZ1bmM6cHJvdG8uc2V0
LCBhcmdzOltuZXcgSW50MzJBcnJheSgxKSwgLTFdLCBlcnJvcjoiUmFuZ2VFcnJvcjogT2Zmc2V0
IHNob3VsZCBub3QgYmUgbmVnYXRpdmUiIH0sCisgICAgeyBmdW5jOnByb3RvLnNsaWNlLCBhcmdz
OltdIH0sCisgICAgeyBmdW5jOnByb3RvLnNvbWUsIGFyZ3M6W10gfSwKKyAgICB7IGZ1bmM6cHJv
dG8uc29ydCwgYXJnczpbXSB9LAorICAgIHsgZnVuYzpwcm90by5zdWJhcnJheSwgYXJnczpbXSB9
LAorICAgIHsgZnVuYzpwcm90by50b1N0cmluZywgYXJnczpbXSB9LAorICAgIHsgZnVuYzpwcm90
by52YWx1ZXMsIGFyZ3M6W10gfSwKK107CisKK2FycmF5cyA9IHR5cGVkQXJyYXlzLm1hcChmdW5j
dGlvbihjb25zdHJ1Y3RvcikgeworICAgIGxldCB2aWV3ID0gbmV3IGNvbnN0cnVjdG9yKDEwKTsK
KyAgICB0cmFuc2ZlckFycmF5QnVmZmVyKHZpZXcuYnVmZmVyKTsKKyAgICByZXR1cm4gdmlldzsK
K30pOworCitmdW5jdGlvbiBjaGVja1Byb3RvRnVuYyh0ZXN0QXJncykgeworICAgIGZ1bmN0aW9u
IHRocm93c0NvcnJlY3RFcnJvcihlbGVtKSB7CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBy
ZXN1bHQgPSB0ZXN0QXJncy5mdW5jLmNhbGwoLi4uW2VsZW0sIC4uLnRlc3RBcmdzLmFyZ3NdKTsK
KyAgICAgICAgICAgIGlmICh0ZXN0QXJncy5yZXN1bHQgIT09IHVuZGVmaW5lZCkgeworICAgICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQgPT09IHRlc3RBcmdzLnJlc3VsdDsKKyAgICAgICAgICAg
IH0KKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgaWYgKHRlc3RBcmdzLmVycm9y
KQorICAgICAgICAgICAgICAgIHJldHVybiBlID09IHRlc3RBcmdzLmVycm9yOworICAgICAgICAg
ICAgcmV0dXJuIGUgPT0gIlR5cGVFcnJvcjogVW5kZXJseWluZyBBcnJheUJ1ZmZlciBoYXMgYmVl
biBkZXRhY2hlZCBmcm9tIHRoZSB2aWV3IjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgaWYgKCFhcnJheXMuZXZlcnkodGhyb3dzQ29ycmVjdEVycm9yKSkK
KyAgICAgICAgdGhyb3cgImJhZCIgKyB0ZXN0QXJncy5mdW5jLm5hbWU7Cit9CisKK2Z1bmN0aW9u
IHRlc3QoKSB7CisgICAgcHJvdG90eXBlRnVuY3Rpb25zLmZvckVhY2goY2hlY2tQcm90b0Z1bmMp
OworfQorCitmb3IgKHZhciBpID0gMDsgaSA8IDEwMDA7IGkrKykKKyAgICB0ZXN0KCk7CisK
</data>
<flag name="review"
          id="294257"
          type_id="1"
          status="+"
          setter="ggaren"
    />
          </attachment>
      

    </bug>

</bugzilla>