<?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>213254</bug_id>
          
          <creation_ts>2020-06-16 09:42:53 -0700</creation_ts>
          <short_desc>Rename TextEncoding::encode() to TextEncoding::encodeWithNormalization()</short_desc>
          <delta_ts>2020-06-19 15:26:01 -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>DOM</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=212725</see_also>
          <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>213253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>galpeter</cc>
    
    <cc>glenn</cc>
    
    <cc>hi</cc>
    
    <cc>jer.noble</cc>
    
    <cc>jlhwung</cc>
    
    <cc>joepeck</cc>
    
    <cc>mkwst</cc>
    
    <cc>philipj</cc>
    
    <cc>sergio</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1663126</commentid>
    <comment_count>0</comment_count>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-06-16 09:42:53 -0700</bug_when>
    <thetext>I&apos;m planning to add variants of TextEncoding::encode() which does not normalize in bug 213253.
To prepare it, I rename the exist implementation to TextEncoding::encodeWithNormalization() to clarify what it do and separate a impact range because TextEncoding::encode()  is marked as `WEBCORE_EXPORT`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663127</commentid>
    <comment_count>1</comment_count>
      <attachid>402015</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-06-16 09:46:37 -0700</bug_when>
    <thetext>Created attachment 402015
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663737</commentid>
    <comment_count>2</comment_count>
      <attachid>402015</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-06-17 18:14:10 -0700</bug_when>
    <thetext>Comment on attachment 402015
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        I&apos;m planning to add a variant of `TextEncoding::encode()` which does not
&gt; +        normalize to fix bug 213253.

I don&apos;t think that this is necessary. Once we perform normalization on ingress (macOS file names, keyboard input etc.), TextEncoding::encode() won&apos;t need to normalize ever. There isn&apos;t a need for a separate code path.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663747</commentid>
    <comment_count>3</comment_count>
      <attachid>402015</attachid>
    <who name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</who>
    <bug_when>2020-06-17 18:36:41 -0700</bug_when>
    <thetext>Comment on attachment 402015
Patch

(In reply to Alexey Proskuryakov from comment #2)
&gt; Comment on attachment 402015 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=402015&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:9
&gt; &gt; +        I&apos;m planning to add a variant of `TextEncoding::encode()` which does not
&gt; &gt; +        normalize to fix bug 213253.
&gt; 
&gt; I don&apos;t think that this is necessary. Once we perform normalization on
&gt; ingress (macOS file names, keyboard input etc.), TextEncoding::encode()
&gt; won&apos;t need to normalize ever. There isn&apos;t a need for a separate code path.

The exist `TextEncoding::encode()` do normalization in it and it is widely used in evenrywhere in WebKit.
https://trac.webkit.org/browser/webkit/trunk/Source/WebCore/platform/text/TextEncoding.cpp#L77

To fix bug 213253, we need construcing `Blob` object on JavaScript without unicode normalization. I also had a plan to add the function which does not do unicode nomalization as `TextEncoding::encodeWithoutNormalization()` but I thought it&apos;s better to rename the exist implementation and I create this separated patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1663891</commentid>
    <comment_count>4</comment_count>
      <attachid>402015</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2020-06-18 09:25:42 -0700</bug_when>
    <thetext>Comment on attachment 402015
Patch

Blobs are not an exception here, they can&apos;t have normalization disabled before we disable it in TextEncoding::encode() entirely.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1664564</commentid>
    <comment_count>5</comment_count>
    <who name="Huáng Jùnliàng">jlhwung</who>
    <bug_when>2020-06-19 15:26:01 -0700</bug_when>
    <thetext>I want to add some real world cases here.

Babel REPL wraps babel sources into a blob and send it to the WebWorker. This issue causes semantic changes to the sources and error is thrown. https://github.com/babel/website/issues/2254

The blob wrapping is done in a WebPack plugin called worker-loader 

https://github.com/webpack-contrib/worker-loader/blob/3500f14083b5ca2bb953b2919ec1ffc7bc373b2b/src/workers/InlineWorker.js#L28

so besides Babel REPL, users of worker-loader is also affected by this issue.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402015</attachid>
            <date>2020-06-16 09:46:37 -0700</date>
            <delta_ts>2020-06-18 09:25:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213254-20200617014635.patch</filename>
            <type>text/plain</type>
            <size>18615</size>
            <attacher name="Tetsuharu Ohzeki [UTC+9]">tetsuharu.ohzeki</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjYzMDg1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGFlYmQ0NzdmYjJiMTcy
ZWQwODI0YjFlMTBhZTBiMTQ2NTg3NGVkNS4uY2RiZmM2M2Y1ZjdkYWUxNzY0MGNlYzMyM2E5ZDY4
YWE4NjJmOTc0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ4IEBACisyMDIwLTA2LTE2ICBUZXRz
dWhhcnUgT2h6ZWtpICA8dGV0c3VoYXJ1Lm9oemVraUBnbWFpbC5jb20+CisKKyAgICAgICAgUmVu
YW1lIFRleHRFbmNvZGluZzo6ZW5jb2RlKCkgdG8gVGV4dEVuY29kaW5nOjplbmNvZGVXaXRoTm9y
bWFsaXphdGlvbigpCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMTMyNTQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJJ20gcGxhbm5pbmcgdG8gYWRkIGEgdmFyaWFudCBvZiBgVGV4dEVuY29kaW5nOjplbmNv
ZGUoKWAgd2hpY2ggZG9lcyBub3QKKyAgICAgICAgbm9ybWFsaXplIHRvIGZpeCBidWcgMjEzMjUz
LgorCisgICAgICAgIFRvIHByZXBhcmUgaXQsIEkgcmVuYW1lIHRoZSBleGlzdCBpbXBsZW1lbnRh
dGlvbiB0byAKKyAgICAgICAgYFRleHRFbmNvZGluZzo6ZW5jb2RlV2l0aE5vcm1hbGl6YXRpb24o
KWAgdG8gY2xhcmlmeQorICAgICAgICB3aGF0IGl0IGRvIGFuZCBzZXBhcmF0ZSBhIGltcGFjdCBy
YW5nZS4KKworICAgICAgICAqIE1vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZldGNoQm9keTo6Y29uc3VtZUFzU3RyZWFtKToKKyAgICAgICAgKFdlYkNvcmU6
OkZldGNoQm9keTo6Y29uc3VtZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6RmV0Y2hCb2R5Ojpi
b2R5QXNGb3JtRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGZXRjaEJvZHk6OnRha2Up
OgorICAgICAgICAqIGZpbGVhcGkvQmxvYkJ1aWxkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QmxvYkJ1aWxkZXI6OmFwcGVuZCk6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlQ29udGVudFNlY3VyaXR5
UG9saWN5U0hBMjU2SGFzaCk6CisgICAgICAgICogcGFnZS9QYWdlU2VyaWFsaXplci5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplRnJhbWUpOgorICAgICAg
ICAoV2ViQ29yZTo6UGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUNTU1N0eWxlU2hlZXQpOgorICAg
ICAgICAqIHBhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpDb250ZW50U2VjdXJpdHlQb2xpY3k6OmZpbmRIYXNoT2ZDb250ZW50SW5Qb2xpY2llcyBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1l
ZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZS
ZXNvdXJjZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpub3JtYWxpemVTdHJpbmdEYXRhKToKKyAgICAgICAgKiBwbGF0Zm9ybS9u
ZXR3b3JrL0Zvcm1EYXRhQnVpbGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb3JtRGF0YUJ1
aWxkZXI6OmFkZEZpbGVuYW1lVG9NdWx0aVBhcnRIZWFkZXIpOgorICAgICAgICAqIHBsYXRmb3Jt
L25ldHdvcmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VIYW5kbGU6OmhhbmRsZURhdGFVUkwpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQv
RGVjb2RlRXNjYXBlU2VxdWVuY2VzLmg6CisgICAgICAgIChXZWJDb3JlOjpkZWNvZGVVUkxFc2Nh
cGVTZXF1ZW5jZXNBc0RhdGEpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5n
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlRleHRFbmNvZGluZzo6ZW5jb2RlV2l0aE5vcm1hbGl6
YXRpb24gY29uc3QpOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmg6Cisg
ICAgICAgICogcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5oOgorICAgICAgICAq
IHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dDo6c2VuZCk6CisKIDIwMjAtMDYtMTYgIHlvdWVubiBmYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29t
PgogCiAgICAgICAgIE1ha2Ugc3VyZSBNZWRpYVJlY29yZGVyLnJlcXVlc3REYXRhIHJldHVybnMg
ZGF0YSB3aXRoIHRoZSBuZXcgd3JpdGVyIGJhY2tlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL01vZHVsZXMvZmV0Y2gvRmV0Y2hCb2R5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
ZmV0Y2gvRmV0Y2hCb2R5LmNwcAppbmRleCA4MzljODFhMDEyODAwM2Q3NWYyNzBkYzAzNmQ4ZmMz
MTBjNTIwNmJkLi4yODEzMzQzZTRlOTk0YTkxZDc3NTg5NGYxYjRhODdjY2YyMmQyMDcwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2ZldGNoL0ZldGNoQm9keS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvTW9kdWxlcy9mZXRjaC9GZXRjaEJvZHkuY3BwCkBAIC0xODYsMTEgKzE4
NiwxMSBAQCB2b2lkIEZldGNoQm9keTo6Y29uc3VtZUFzU3RyZWFtKEZldGNoQm9keU93bmVyJiBv
d25lciwgRmV0Y2hCb2R5U291cmNlJiBzb3VyY2UpCiAgICAgICAgIGNsb3NlU3RyZWFtID0gc291
cmNlLmVucXVldWUoQXJyYXlCdWZmZXI6OnRyeUNyZWF0ZShhcnJheUJ1ZmZlclZpZXdCb2R5KCku
YmFzZUFkZHJlc3MoKSwgYXJyYXlCdWZmZXJWaWV3Qm9keSgpLmJ5dGVMZW5ndGgoKSkpOwogICAg
ICAgICBtX2RhdGEgPSBudWxscHRyOwogICAgIH0gZWxzZSBpZiAoaXNUZXh0KCkpIHsKLSAgICAg
ICAgYXV0byBkYXRhID0gVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVuZW5jb2Rh
YmxlSGFuZGxpbmc6OkVudGl0aWVzKTsKKyAgICAgICAgYXV0byBkYXRhID0gVVRGOEVuY29kaW5n
KCkuZW5jb2RlV2l0aE5vcm1hbGl6YXRpb24odGV4dEJvZHkoKSwgVW5lbmNvZGFibGVIYW5kbGlu
Zzo6RW50aXRpZXMpOwogICAgICAgICBjbG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKEFycmF5
QnVmZmVyOjp0cnlDcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7CiAgICAgICAgIG1f
ZGF0YSA9IG51bGxwdHI7CiAgICAgfSBlbHNlIGlmIChpc1VSTFNlYXJjaFBhcmFtcygpKSB7Ci0g
ICAgICAgIGF1dG8gZGF0YSA9IFVURjhFbmNvZGluZygpLmVuY29kZSh1cmxTZWFyY2hQYXJhbXNC
b2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpOworICAgICAg
ICBhdXRvIGRhdGEgPSBVVEY4RW5jb2RpbmcoKS5lbmNvZGVXaXRoTm9ybWFsaXphdGlvbih1cmxT
ZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRp
ZXMpOwogICAgICAgICBjbG9zZVN0cmVhbSA9IHNvdXJjZS5lbnF1ZXVlKEFycmF5QnVmZmVyOjp0
cnlDcmVhdGUoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKSk7CiAgICAgICAgIG1fZGF0YSA9IG51
bGxwdHI7CiAgICAgfSBlbHNlIGlmIChpc0Jsb2IoKSkgewpAQCAtMjIzLDcgKzIyMyw3IEBAIHZv
aWQgRmV0Y2hCb2R5Ojpjb25zdW1lQXJyYXlCdWZmZXJWaWV3KFJlZjxEZWZlcnJlZFByb21pc2U+
JiYgcHJvbWlzZSkKIAogdm9pZCBGZXRjaEJvZHk6OmNvbnN1bWVUZXh0KFJlZjxEZWZlcnJlZFBy
b21pc2U+JiYgcHJvbWlzZSwgY29uc3QgU3RyaW5nJiB0ZXh0KQogewotICAgIGF1dG8gZGF0YSA9
IFVURjhFbmNvZGluZygpLmVuY29kZSh0ZXh0LCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRpdGll
cyk7CisgICAgYXV0byBkYXRhID0gVVRGOEVuY29kaW5nKCkuZW5jb2RlV2l0aE5vcm1hbGl6YXRp
b24odGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpOwogICAgIG1fY29uc3VtZXIu
cmVzb2x2ZVdpdGhEYXRhKFdURk1vdmUocHJvbWlzZSksIGRhdGEuZGF0YSgpLCBkYXRhLnNpemUo
KSk7CiAgICAgbV9kYXRhID0gbnVsbHB0cjsKIH0KQEAgLTI0OCw5ICsyNDgsOSBAQCB2b2lkIEZl
dGNoQm9keTo6bG9hZGluZ1N1Y2NlZWRlZCgpCiBSZWZQdHI8Rm9ybURhdGE+IEZldGNoQm9keTo6
Ym9keUFzRm9ybURhdGEoKSBjb25zdAogewogICAgIGlmIChpc1RleHQoKSkKLSAgICAgICAgcmV0
dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5jb2RlKHRleHRCb2R5KCksIFVu
ZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBGb3JtRGF0YTo6
Y3JlYXRlKFVURjhFbmNvZGluZygpLmVuY29kZVdpdGhOb3JtYWxpemF0aW9uKHRleHRCb2R5KCks
IFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFy
YW1zKCkpCi0gICAgICAgIHJldHVybiBGb3JtRGF0YTo6Y3JlYXRlKFVURjhFbmNvZGluZygpLmVu
Y29kZSh1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGlu
Zzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29k
aW5nKCkuZW5jb2RlV2l0aE5vcm1hbGl6YXRpb24odXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3Ry
aW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzQmxvYigp
KSB7CiAgICAgICAgIGF1dG8gYm9keSA9IEZvcm1EYXRhOjpjcmVhdGUoKTsKICAgICAgICAgYm9k
eS0+YXBwZW5kQmxvYihibG9iQm9keSgpLnVybCgpKTsKQEAgLTI5MCw5ICsyOTAsOSBAQCBGZXRj
aEJvZHk6OlRha2VuRGF0YSBGZXRjaEJvZHk6OnRha2UoKQogICAgICAgICByZXR1cm4gZm9ybURh
dGFCb2R5KCk7CiAKICAgICBpZiAoaXNUZXh0KCkpCi0gICAgICAgIHJldHVybiBTaGFyZWRCdWZm
ZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNvZGUodGV4dEJvZHkoKSwgVW5lbmNvZGFibGVI
YW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KFVURjhFbmNvZGluZygpLmVuY29kZVdpdGhOb3JtYWxpemF0aW9uKHRleHRCb2R5KCksIFVuZW5j
b2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgaWYgKGlzVVJMU2VhcmNoUGFyYW1zKCkp
Ci0gICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5jb2RpbmcoKS5lbmNv
ZGUodXJsU2VhcmNoUGFyYW1zQm9keSgpLnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6
OkVudGl0aWVzKSk7CisgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShVVEY4RW5j
b2RpbmcoKS5lbmNvZGVXaXRoTm9ybWFsaXphdGlvbih1cmxTZWFyY2hQYXJhbXNCb2R5KCkudG9T
dHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKIAogICAgIGlmIChpc0Fy
cmF5QnVmZmVyKCkpCiAgICAgICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShyZWludGVy
cHJldF9jYXN0PGNvbnN0IGNoYXIqPihhcnJheUJ1ZmZlckJvZHkoKS5kYXRhKCkpLCBhcnJheUJ1
ZmZlckJvZHkoKS5ieXRlTGVuZ3RoKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZmls
ZWFwaS9CbG9iQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9maWxlYXBpL0Jsb2JCdWlsZGVy
LmNwcAppbmRleCBlMjJlNzk5YWJlN2I3ZGIwYTFmZmIwMWEyZGIwNjI3ZjY4MGYyOTE0Li44ODBm
MDk5OGU4N2QxZWVlMDNmZWZjMjc3NjQxN2Q4ZTZkMjcxMTBjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9maWxlYXBpL0Jsb2JCdWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9maWxl
YXBpL0Jsb2JCdWlsZGVyLmNwcApAQCAtNzEsNyArNzEsNyBAQCB2b2lkIEJsb2JCdWlsZGVyOjph
cHBlbmQoUmVmUHRyPEJsb2I+JiYgYmxvYikKIAogdm9pZCBCbG9iQnVpbGRlcjo6YXBwZW5kKGNv
bnN0IFN0cmluZyYgdGV4dCkKIHsKLSAgICBhdXRvIGJ5dGVzID0gVVRGOEVuY29kaW5nKCkuZW5j
b2RlKHRleHQsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKTsKKyAgICBhdXRvIGJ5dGVz
ID0gVVRGOEVuY29kaW5nKCkuZW5jb2RlV2l0aE5vcm1hbGl6YXRpb24odGV4dCwgVW5lbmNvZGFi
bGVIYW5kbGluZzo6RW50aXRpZXMpOwogCiAgICAgaWYgKG1fZW5kaW5ncyA9PSBFbmRpbmdUeXBl
OjpOYXRpdmUpCiAgICAgICAgIGJ5dGVzID0gbm9ybWFsaXplTGluZUVuZGluZ3NUb05hdGl2ZShX
VEZNb3ZlKGJ5dGVzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCmluZGV4IDhhY2MxZjZkYmE3MWE3ZDM0MjFmMTM1MTEy
YmNmOGJiYzcwYzQxMjguLmIxZTVhNTA2MTdiNzE1OWE4NjYwYzExMGE0ZjYwOGFkY2I3MTM3YTQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRE9N
QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RE9NQWdlbnQuY3BwCkBAIC0xNTg0LDcgKzE1ODQsNyBAQCBzdGF0aWMgU3RyaW5nIGNvbXB1dGVD
b250ZW50U2VjdXJpdHlQb2xpY3lTSEEyNTZIYXNoKGNvbnN0IEVsZW1lbnQmIGVsZW1lbnQpCiAg
ICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTg0
Pi4KICAgICBUZXh0RW5jb2RpbmcgZG9jdW1lbnRFbmNvZGluZyA9IGVsZW1lbnQuZG9jdW1lbnQo
KS50ZXh0RW5jb2RpbmcoKTsKICAgICBjb25zdCBUZXh0RW5jb2RpbmcmIGVuY29kaW5nVG9Vc2Ug
PSBkb2N1bWVudEVuY29kaW5nLmlzVmFsaWQoKSA/IGRvY3VtZW50RW5jb2RpbmcgOiBVVEY4RW5j
b2RpbmcoKTsKLSAgICBhdXRvIGNvbnRlbnQgPSBlbmNvZGluZ1RvVXNlLmVuY29kZShUZXh0Tm9k
ZVRyYXZlcnNhbDo6Y29udGVudHNBc1N0cmluZyhlbGVtZW50KSwgVW5lbmNvZGFibGVIYW5kbGlu
Zzo6RW50aXRpZXMpOworICAgIGF1dG8gY29udGVudCA9IGVuY29kaW5nVG9Vc2UuZW5jb2RlV2l0
aE5vcm1hbGl6YXRpb24oVGV4dE5vZGVUcmF2ZXJzYWw6OmNvbnRlbnRzQXNTdHJpbmcoZWxlbWVu
dCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKTsKICAgICBhdXRvIGNyeXB0b0RpZ2Vz
dCA9IFBBTDo6Q3J5cHRvRGlnZXN0OjpjcmVhdGUoUEFMOjpDcnlwdG9EaWdlc3Q6OkFsZ29yaXRo
bTo6U0hBXzI1Nik7CiAgICAgY3J5cHRvRGlnZXN0LT5hZGRCeXRlcyhjb250ZW50LmRhdGEoKSwg
Y29udGVudC5zaXplKCkpOwogICAgIGF1dG8gZGlnZXN0ID0gY3J5cHRvRGlnZXN0LT5jb21wdXRl
SGFzaCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAppbmRleCAzZjZlZDg0
ZDA2ZDQ1YzNjNzAwNzhkNzc3ODA3NjU2ZGQ0NThkYWE5Li5jNDVkZjlmZmI0MWZmM2FmMWYzNjlh
Y2JjZDYzY2Q1ZWM4YjIzYjhmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNw
cApAQCAtMTk5LDcgKzE5OSw3IEBAIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1l
KEZyYW1lKiBmcmFtZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICBTdHJpbmcgdGV4dCA9
IGFjY3VtdWxhdG9yLnNlcmlhbGl6ZU5vZGVzKCpkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50KCks
IFNlcmlhbGl6ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpOwotICAgIG1fcmVzb3VyY2Vz
LmFwcGVuZCh7IHVybCwgZG9jdW1lbnQtPnN1Z2dlc3RlZE1JTUVUeXBlKCksIFNoYXJlZEJ1ZmZl
cjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGUodGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6
RW50aXRpZXMpKSB9KTsKKyAgICBtX3Jlc291cmNlcy5hcHBlbmQoeyB1cmwsIGRvY3VtZW50LT5z
dWdnZXN0ZWRNSU1FVHlwZSgpLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0ZXh0RW5jb2RpbmcuZW5j
b2RlV2l0aE5vcm1hbGl6YXRpb24odGV4dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMp
KSB9KTsKICAgICBtX3Jlc291cmNlVVJMcy5hZGQodXJsKTsKIAogICAgIGZvciAoYXV0byYgbm9k
ZSA6IG5vZGVzKSB7CkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2Vy
aWFsaXplQ1NTU3R5bGVTaGVldChDU1NTdHlsZVNoZWV0KiBzdHlsZVNoZWV0LCBjb25zdCBVUkwK
ICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBjaGVjayB3aGV0aGVyIGEgY2hhcnNldCBoYXMg
YmVlbiBzcGVjaWZpZWQgYW5kIGlmIG5vbmUgd2FzIGZvdW5kIGFkZCBvbmUuCiAgICAgICAgIFRl
eHRFbmNvZGluZyB0ZXh0RW5jb2Rpbmcoc3R5bGVTaGVldC0+Y29udGVudHMoKS5jaGFyc2V0KCkp
OwogICAgICAgICBBU1NFUlQodGV4dEVuY29kaW5nLmlzVmFsaWQoKSk7Ci0gICAgICAgIG1fcmVz
b3VyY2VzLmFwcGVuZCh7IHVybCwgInRleHQvY3NzIl9zLCBTaGFyZWRCdWZmZXI6OmNyZWF0ZSh0
ZXh0RW5jb2RpbmcuZW5jb2RlKGNzc1RleHQudG9TdHJpbmcoKSwgVW5lbmNvZGFibGVIYW5kbGlu
Zzo6RW50aXRpZXMpKSB9KTsKKyAgICAgICAgbV9yZXNvdXJjZXMuYXBwZW5kKHsgdXJsLCAidGV4
dC9jc3MiX3MsIFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHRleHRFbmNvZGluZy5lbmNvZGVXaXRoTm9y
bWFsaXphdGlvbihjc3NUZXh0LnRvU3RyaW5nKCksIFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0
aWVzKSkgfSk7CiAgICAgICAgIG1fcmVzb3VyY2VVUkxzLmFkZCh1cmwpOwogICAgIH0KIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2NzcC9Db250ZW50U2VjdXJpdHlQb2xpY3kuY3BwCmlu
ZGV4IDY2NGJlNjE4ZWViOTk4OWEzZTZjZDZiMGMxNmVlYTg3ODJhNmIyN2YuLmRjYTE5MjM3N2Fi
ZmZmZTViNjJjNzU1MTcwZTU2YTdlNTE2NzBkNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2UvY3NwL0NvbnRlbnRTZWN1cml0eVBvbGljeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9jc3AvQ29udGVudFNlY3VyaXR5UG9saWN5LmNwcApAQCAtMzUxLDcgKzM1MSw3IEBAIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6SGFzaEluRW5mb3JjZWRBbmRSZXBvcnRPbmx5UG9saWNpZXNQ
YWlyIENvbnRlbnRTZWN1cml0eVBvCiAKICAgICAvLyBGSVhNRTogQ29tcHV0ZSB0aGUgZGlnZXN0
IHdpdGggcmVzcGVjdCB0byB0aGUgcmF3IGJ5dGVzIHJlY2VpdmVkIGZyb20gdGhlIHBhZ2UuCiAg
ICAgLy8gU2VlIDxodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTU1MTg0
Pi4KLSAgICBhdXRvIGVuY29kZWRDb250ZW50ID0gZW5jb2RpbmdUb1VzZS5lbmNvZGUoY29udGVu
dCwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpOworICAgIGF1dG8gZW5jb2RlZENvbnRl
bnQgPSBlbmNvZGluZ1RvVXNlLmVuY29kZVdpdGhOb3JtYWxpemF0aW9uKGNvbnRlbnQsIFVuZW5j
b2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKTsKICAgICBib29sIGZvdW5kSGFzaEluRW5mb3JjZWRQ
b2xpY2llcyA9IGZhbHNlOwogICAgIGJvb2wgZm91bmRIYXNoSW5SZXBvcnRPbmx5UG9saWNpZXMg
PSBmYWxzZTsKICAgICBmb3IgKGF1dG8gYWxnb3JpdGhtIDogYWxnb3JpdGhtcykgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMv
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbSBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbk9iakMubW0KaW5kZXggMGUxOGZmZjgxODk5NmQzMWY0NGJjZDBjZTI1YmZjM2VmMDVk
YjAwMi4uM2RmMjgwNmRkZGUwZDNkMjkwYWRlNjdkYjNhYTIxNmE2ZGYwN2Q1OSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVk
aWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZv
dW5kYXRpb25PYmpDLm1tCkBAIC0xNzA1LDcgKzE3MDUsNyBAQCBib29sIE1lZGlhUGxheWVyUHJp
dmF0ZUFWRm91bmRhdGlvbk9iakM6OnNob3VsZFdhaXRGb3JMb2FkaW5nT2ZSZXNvdXJjZShBVkFz
c2V0UgogI2lmIEVOQUJMRShMRUdBQ1lfRU5DUllQVEVEX01FRElBKQogICAgIGlmIChzY2hlbWUg
PT0gImNsZWFya2V5IikgewogICAgICAgICBTdHJpbmcga2V5SUQgPSBbW1thdlJlcXVlc3QgcmVx
dWVzdF0gVVJMXSByZXNvdXJjZVNwZWNpZmllcl07Ci0gICAgICAgIGF1dG8gZW5jb2RlZEtleUlk
ID0gVVRGOEVuY29kaW5nKCkuZW5jb2RlKGtleUlELCBVbmVuY29kYWJsZUhhbmRsaW5nOjpVUkxF
bmNvZGVkRW50aXRpZXMpOworICAgICAgICBhdXRvIGVuY29kZWRLZXlJZCA9IFVURjhFbmNvZGlu
ZygpLmVuY29kZVdpdGhOb3JtYWxpemF0aW9uKGtleUlELCBVbmVuY29kYWJsZUhhbmRsaW5nOjpV
UkxFbmNvZGVkRW50aXRpZXMpOwogCiAgICAgICAgIGF1dG8gaW5pdERhdGEgPSBVaW50OEFycmF5
OjpjcmVhdGUoZW5jb2RlZEtleUlkLnNpemUoKSk7CiAgICAgICAgIGluaXREYXRhLT5zZXRSYW5n
ZShlbmNvZGVkS2V5SWQuZGF0YSgpLCBlbmNvZGVkS2V5SWQuc2l6ZSgpLCAwKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGEuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3JtRGF0YS5jcHAKaW5kZXggMWNjMmRiNGVhZjE1
ZGJiMzQ1MWJjZjRkNGRjY2Q5Nzk3NzNlZWQxZC4uNWRkMjI1MmI4NzY2NTdlN2ZlMWNmYjI5MWMw
MDUxZjQ3M2M0OWIxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9Gb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9Gb3Jt
RGF0YS5jcHAKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIEZvcm1EYXRhOjphcHBlbmRCbG9iKGNv
bnN0IFVSTCYgYmxvYlVSTCkKIAogc3RhdGljIFZlY3Rvcjx1aW50OF90PiBub3JtYWxpemVTdHJp
bmdEYXRhKFRleHRFbmNvZGluZyYgZW5jb2RpbmcsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0g
ICAgcmV0dXJuIG5vcm1hbGl6ZUxpbmVFbmRpbmdzVG9DUkxGKGVuY29kaW5nLmVuY29kZSh2YWx1
ZSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICByZXR1cm4gbm9ybWFsaXpl
TGluZUVuZGluZ3NUb0NSTEYoZW5jb2RpbmcuZW5jb2RlV2l0aE5vcm1hbGl6YXRpb24odmFsdWUs
IFVuZW5jb2RhYmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiB9CiAKIHZvaWQgRm9ybURhdGE6OmFw
cGVuZE11bHRpUGFydEZpbGVWYWx1ZShjb25zdCBGaWxlJiBmaWxlLCBWZWN0b3I8Y2hhcj4mIGhl
YWRlciwgVGV4dEVuY29kaW5nJiBlbmNvZGluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL25ldHdvcmsvRm9ybURhdGFCdWlsZGVyLmNwcAppbmRleCA1NmI5YTVjZGNkYWUwYzUw
M2ZiMjA5MDZhMTcyNWYwNTdhZTM3OTNlLi44NWUwMDU3MzlkMmUwYjI2M2ZjM2Y1MDc4OGRjYzli
ZTFjMDNmNGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0Zv
cm1EYXRhQnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9G
b3JtRGF0YUJ1aWxkZXIuY3BwCkBAIC0xNzgsNyArMTc4LDcgQEAgdm9pZCBhZGRGaWxlbmFtZVRv
TXVsdGlQYXJ0SGVhZGVyKFZlY3RvcjxjaGFyPiYgYnVmZmVyLCBjb25zdCBUZXh0RW5jb2Rpbmcm
IGVuY28KICAgICAvLyBGSVhNRTogVGhpcyBsb3NlcyBkYXRhIGlycmV2ZXJzaWJseSBpZiB0aGUg
ZmlsZW5hbWUgaW5jbHVkZXMgY2hhcmFjdGVycyB5b3UgY2FuJ3QgZW5jb2RlCiAgICAgLy8gaW4g
dGhlIHdlYnNpdGUncyBjaGFyYWN0ZXIgc2V0LgogICAgIGFwcGVuZChidWZmZXIsICI7IGZpbGVu
YW1lPVwiIik7Ci0gICAgYXBwZW5kUXVvdGVkKGJ1ZmZlciwgZW5jb2RpbmcuZW5jb2RlKGZpbGVu
YW1lLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpRdWVzdGlvbk1hcmtzKSk7CisgICAgYXBwZW5kUXVv
dGVkKGJ1ZmZlciwgZW5jb2RpbmcuZW5jb2RlV2l0aE5vcm1hbGl6YXRpb24oZmlsZW5hbWUsIFVu
ZW5jb2RhYmxlSGFuZGxpbmc6OlF1ZXN0aW9uTWFya3MpKTsKICAgICBhcHBlbmQoYnVmZmVyLCAn
IicpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2N1
cmwvUmVzb3VyY2VIYW5kbGVDdXJsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCmluZGV4IDhmMTc1YjY1NDJlYTJmMGM4Njhm
NzAxZDU2MjgwNGJmN2UyZmQ1OTcuLmM3ZWY2M2ZlZjJkOWE3MGEyNjRmZmY2MGU2YTgzYTBiMWRi
NGE2ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY3VybC9S
ZXNvdXJjZUhhbmRsZUN1cmwuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY3VybC9SZXNvdXJjZUhhbmRsZUN1cmwuY3BwCkBAIC01NzUsNyArNTc1LDcgQEAgdm9pZCBS
ZXNvdXJjZUhhbmRsZTo6aGFuZGxlRGF0YVVSTCgpCiAKICAgICAgICAgLy8gZGlkUmVjZWl2ZVJl
c3BvbnNlIG1pZ2h0IGNhdXNlIHRoZSBjbGllbnQgdG8gYmUgZGVsZXRlZC4KICAgICAgICAgaWYg
KGNsaWVudCgpKSB7Ci0gICAgICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gZW5jb2RpbmcuZW5j
b2RlKGRhdGEsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OlVSTEVuY29kZWRFbnRpdGllcyk7CisgICAg
ICAgICAgICBhdXRvIGVuY29kZWREYXRhID0gZW5jb2RpbmcuZW5jb2RlV2l0aE5vcm1hbGl6YXRp
b24oZGF0YSwgVW5lbmNvZGFibGVIYW5kbGluZzo6VVJMRW5jb2RlZEVudGl0aWVzKTsKICAgICAg
ICAgICAgIGlmIChlbmNvZGVkRGF0YS5zaXplKCkpCiAgICAgICAgICAgICAgICAgY2xpZW50KCkt
PmRpZFJlY2VpdmVCdWZmZXIodGhpcywgU2hhcmVkQnVmZmVyOjpjcmVhdGUoV1RGTW92ZShlbmNv
ZGVkRGF0YSkpLCBvcmlnaW5hbFNpemUpOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNlcy5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9EZWNvZGVFc2NhcGVTZXF1ZW5jZXMuaAppbmRleCAxNGNmNDE1
MzZmMzBlZDY3NmNhMmU4YzM2OTk3MWRmMTJlMDM4ZmY3Li41YWFhYTM1OWYzNDU3ZDM1ZGIyZTRj
ZDZmM2FjYTM4Mjk1NTM3MGQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0RlY29kZUVzY2FwZVNlcXVlbmNlcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvRGVjb2RlRXNjYXBlU2VxdWVuY2VzLmgKQEAgLTE3NCw3ICsxNzQsNyBAQCBpbmxpbmUg
VmVjdG9yPHVpbnQ4X3Q+IGRlY29kZVVSTEVzY2FwZVNlcXVlbmNlc0FzRGF0YShTdHJpbmdWaWV3
IHN0cmluZywgY29uc3QgVAogICAgICAgICB9CiAKICAgICAgICAgLy8gU3RyaW5ncyBhcmUgZW5j
b2RlZCBhcyByZXF1ZXN0ZWQuCi0gICAgICAgIHJlc3VsdC5hcHBlbmRWZWN0b3IoZW5jb2Rpbmcu
ZW5jb2RlKHN0cmluZy5zdWJzdHJpbmcoZGVjb2RlZFBvc2l0aW9uLCBlbmNvZGVkUnVuUG9zaXRp
b24gLSBkZWNvZGVkUG9zaXRpb24pLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpVUkxFbmNvZGVkRW50
aXRpZXMpKTsKKyAgICAgICAgcmVzdWx0LmFwcGVuZFZlY3RvcihlbmNvZGluZy5lbmNvZGVXaXRo
Tm9ybWFsaXphdGlvbihzdHJpbmcuc3Vic3RyaW5nKGRlY29kZWRQb3NpdGlvbiwgZW5jb2RlZFJ1
blBvc2l0aW9uIC0gZGVjb2RlZFBvc2l0aW9uKSwgVW5lbmNvZGFibGVIYW5kbGluZzo6VVJMRW5j
b2RlZEVudGl0aWVzKSk7CiAKICAgICAgICAgaWYgKGVuY29kZWRSdW5Qb3NpdGlvbiA9PSBub3RG
b3VuZCkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L1RleHRFbmNvZGluZy5jcHAKaW5kZXggZDkzZGI0YzRlZGFkYTI4ODU5YWRkYmM0
ZTFjY2EwMjBiMGVkYjdmZS4uNjEwNjg5NjU1OTI4MjczMzFjZGQzM2EwM2Q1YTNlMjI5NmU2ODY1
MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2Rpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmNwcApA
QCAtNjksNyArNjksNyBAQCBTdHJpbmcgVGV4dEVuY29kaW5nOjpkZWNvZGUoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgYm9vbCBzdG9wT25FcnJvciwgYgogICAgIHJldHVybiBuZXdU
ZXh0Q29kZWMoKnRoaXMpLT5kZWNvZGUoZGF0YSwgbGVuZ3RoLCB0cnVlLCBzdG9wT25FcnJvciwg
c2F3RXJyb3IpOwogfQogCi1WZWN0b3I8dWludDhfdD4gVGV4dEVuY29kaW5nOjplbmNvZGUoU3Ry
aW5nVmlldyBzdHJpbmcsIFVuZW5jb2RhYmxlSGFuZGxpbmcgaGFuZGxpbmcpIGNvbnN0CitWZWN0
b3I8dWludDhfdD4gVGV4dEVuY29kaW5nOjplbmNvZGVXaXRoTm9ybWFsaXphdGlvbihTdHJpbmdW
aWV3IHN0cmluZywgVW5lbmNvZGFibGVIYW5kbGluZyBoYW5kbGluZykgY29uc3QKIHsKICAgICBp
ZiAoIW1fbmFtZSB8fCBzdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm4geyB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmcuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nLmgKaW5kZXggNzAyOWE2Yjkz
ODVhYzk0YWEyYmU1YmYxZmE0NjNiM2VjMzgxYTkwYy4uYzAzMDEyN2ZlNTdhYTBkOGNkNzcxZjk4
M2UzYjQyMGIwNTZlZTE4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4
dC9UZXh0RW5jb2RpbmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRF
bmNvZGluZy5oCkBAIC00OCw4ICs0OCw4IEBAIHB1YmxpYzoKIAogICAgIFdFQkNPUkVfRVhQT1JU
IFN0cmluZyBkZWNvZGUoY29uc3QgY2hhciosIHNpemVfdCBsZW5ndGgsIGJvb2wgc3RvcE9uRXJy
b3IsIGJvb2wmIHNhd0Vycm9yKSBjb25zdDsKICAgICBTdHJpbmcgZGVjb2RlKGNvbnN0IGNoYXIq
LCBzaXplX3QgbGVuZ3RoKSBjb25zdDsKLSAgICBXRUJDT1JFX0VYUE9SVCBWZWN0b3I8dWludDhf
dD4gZW5jb2RlKFN0cmluZ1ZpZXcsIFVuZW5jb2RhYmxlSGFuZGxpbmcpIGNvbnN0OwotICAgIFZl
Y3Rvcjx1aW50OF90PiBlbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcgc3RyaW5nKSBjb25z
dCBmaW5hbCB7IHJldHVybiBlbmNvZGUoc3RyaW5nLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpVUkxF
bmNvZGVkRW50aXRpZXMpOyB9CisgICAgV0VCQ09SRV9FWFBPUlQgVmVjdG9yPHVpbnQ4X3Q+IGVu
Y29kZVdpdGhOb3JtYWxpemF0aW9uKFN0cmluZ1ZpZXcsIFVuZW5jb2RhYmxlSGFuZGxpbmcpIGNv
bnN0OworICAgIFZlY3Rvcjx1aW50OF90PiBlbmNvZGVGb3JVUkxQYXJzaW5nKFN0cmluZ1ZpZXcg
c3RyaW5nKSBjb25zdCBmaW5hbCB7IHJldHVybiBlbmNvZGVXaXRoTm9ybWFsaXphdGlvbihzdHJp
bmcsIFVuZW5jb2RhYmxlSGFuZGxpbmc6OlVSTEVuY29kZWRFbnRpdGllcyk7IH0KIAogICAgIFVD
aGFyIGJhY2tzbGFzaEFzQ3VycmVuY3lTeW1ib2woKSBjb25zdDsKICAgICBib29sIGlzQnl0ZUJh
c2VkRW5jb2RpbmcoKSBjb25zdCB7IHJldHVybiAhaXNOb25CeXRlQmFzZWRFbmNvZGluZygpOyB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1Jl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L1RleHRFbmNvZGluZ1JlZ2lz
dHJ5LmgKaW5kZXggNDBmYWVmYzNhNzY0N2Q0MDU0YTYwYTk3MTI3N2IxMjY5YWU0NTNkOC4uZmFk
NTBiMGY5MzgzYTM1MjRhY2RjMWI2YTE1Mjk1OTdhOTBjOTI2MCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9UZXh0RW5jb2RpbmdSZWdpc3RyeS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvVGV4dEVuY29kaW5nUmVnaXN0cnkuaApAQCAtMzQsNyAr
MzQsNyBAQCBjbGFzcyBUZXh0Q29kZWM7CiBjbGFzcyBUZXh0RW5jb2Rpbmc7CiAKIC8vIFVzZSBU
ZXh0UmVzb3VyY2VEZWNvZGVyOjpkZWNvZGUgdG8gZGVjb2RlIHJlc291cmNlcywgc2luY2UgaXQg
aGFuZGxlcyBCT01zLgotLy8gVXNlIFRleHRFbmNvZGluZzo6ZW5jb2RlIHRvIGVuY29kZSwgc2lu
Y2UgaXQgdGFrZXMgY2FyZSBvZiBub3JtYWxpemF0aW9uLgorLy8gVXNlIFRleHRFbmNvZGluZzo6
ZW5jb2RlV2l0aE5vcm1hbGl6YXRpb24gdG8gZW5jb2RlLCBzaW5jZSBpdCB0YWtlcyBjYXJlIG9m
IG5vcm1hbGl6YXRpb24uCiBXRUJDT1JFX0VYUE9SVCBzdGQ6OnVuaXF1ZV9wdHI8VGV4dENvZGVj
PiBuZXdUZXh0Q29kZWMoY29uc3QgVGV4dEVuY29kaW5nJik7CiAKIC8vIE9ubHkgVGV4dEVuY29k
aW5nIHNob3VsZCB1c2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgZGlyZWN0bHkuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNv
cmUveG1sL1hNTEh0dHBSZXF1ZXN0LmNwcAppbmRleCBjNmZhNDhiODhmYjVmYzYyNzcwMTY5NzU4
ODY4ZTMyZjEzODk3NDA5Li4yYjM3YmY0OTI4ZmNlNDg1YmFkY2JiMjkxZGMzODcwYWU0YmYzNzA4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS94bWwvWE1MSHR0cFJlcXVlc3QuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3htbC9YTUxIdHRwUmVxdWVzdC5jcHAKQEAgLTQ4MCw3ICs0ODAsNyBA
QCBFeGNlcHRpb25Pcjx2b2lkPiBYTUxIdHRwUmVxdWVzdDo6c2VuZChEb2N1bWVudCYgZG9jdW1l
bnQpCiAKICAgICAgICAgLy8gRklYTUU6IEFjY29yZGluZyB0byBYTUxIdHRwUmVxdWVzdCBMZXZl
bCAyLCB0aGlzIHNob3VsZCB1c2UgdGhlIERvY3VtZW50LmlubmVySFRNTCBhbGdvcml0aG0KICAg
ICAgICAgLy8gZnJvbSB0aGUgSFRNTDUgc3BlY2lmaWNhdGlvbiB0byBzZXJpYWxpemUgdGhlIGRv
Y3VtZW50LgotICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZShV
VEY4RW5jb2RpbmcoKS5lbmNvZGUoc2VyaWFsaXplRnJhZ21lbnQoZG9jdW1lbnQsIFNlcmlhbGl6
ZWROb2Rlczo6U3VidHJlZUluY2x1ZGluZ05vZGUpLCBVbmVuY29kYWJsZUhhbmRsaW5nOjpFbnRp
dGllcykpOworICAgICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZShV
VEY4RW5jb2RpbmcoKS5lbmNvZGVXaXRoTm9ybWFsaXphdGlvbihzZXJpYWxpemVGcmFnbWVudChk
b2N1bWVudCwgU2VyaWFsaXplZE5vZGVzOjpTdWJ0cmVlSW5jbHVkaW5nTm9kZSksIFVuZW5jb2Rh
YmxlSGFuZGxpbmc6OkVudGl0aWVzKSk7CiAgICAgICAgIGlmIChtX3VwbG9hZCkKICAgICAgICAg
ICAgIG1fcmVxdWVzdEVudGl0eUJvZHktPnNldEFsd2F5c1N0cmVhbSh0cnVlKTsKICAgICB9CkBA
IC01MDIsNyArNTAyLDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gWE1MSHR0cFJlcXVlc3Q6OnNlbmQo
Y29uc3QgU3RyaW5nJiBib2R5KQogICAgICAgICAgICAgbV9yZXF1ZXN0SGVhZGVycy5zZXQoSFRU
UEhlYWRlck5hbWU6OkNvbnRlbnRUeXBlLCBjb250ZW50VHlwZSk7CiAgICAgICAgIH0KIAotICAg
ICAgICBtX3JlcXVlc3RFbnRpdHlCb2R5ID0gRm9ybURhdGE6OmNyZWF0ZShVVEY4RW5jb2Rpbmco
KS5lbmNvZGUoYm9keSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMpKTsKKyAgICAgICAg
bV9yZXF1ZXN0RW50aXR5Qm9keSA9IEZvcm1EYXRhOjpjcmVhdGUoVVRGOEVuY29kaW5nKCkuZW5j
b2RlV2l0aE5vcm1hbGl6YXRpb24oYm9keSwgVW5lbmNvZGFibGVIYW5kbGluZzo6RW50aXRpZXMp
KTsKICAgICAgICAgaWYgKG1fdXBsb2FkKQogICAgICAgICAgICAgbV9yZXF1ZXN0RW50aXR5Qm9k
eS0+c2V0QWx3YXlzU3RyZWFtKHRydWUpOwogICAgIH0K
</data>
<flag name="review"
          id="417447"
          type_id="1"
          status="-"
          setter="ap"
    />
          </attachment>
      

    </bug>

</bugzilla>