<?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>94460</bug_id>
          
          <creation_ts>2012-08-20 02:48:11 -0700</creation_ts>
          <short_desc>[V8] Move retrieve{Window,Frame,PerContextData}() from V8Proxy to V8Binding</short_desc>
          <delta_ts>2012-08-20 18:07:07 -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>WebCore JavaScript</component>
          <version>528+ (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>85330</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>dcarney</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>699359</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 02:48:11 -0700</bug_when>
    <thetext>To kill V8Proxy, we move retrieve{Window,Frame,PerContextData}() from V8Proxy to V8Binding.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699375</commentid>
    <comment_count>1</comment_count>
      <attachid>159386</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 03:26:13 -0700</bug_when>
    <thetext>Created attachment 159386
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699739</commentid>
    <comment_count>2</comment_count>
      <attachid>159386</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 11:35:42 -0700</bug_when>
    <thetext>Comment on attachment 159386
Patch

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

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:385
&gt; +DOMWindow* retrieveWindow(v8::Handle&lt;v8::Context&gt; context)

I might rename retrieveWindow to

DOMWindow* toDOMWindow(v8::Handle&lt;v8::Context&gt;)

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:394
&gt; +Frame* retrieveFrame(v8::Handle&lt;v8::Context&gt; context)

retrieveFrame -&gt; toFrameIfNotDetached ?

It would be nice if callers understood why the conversion might fail.

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:405
&gt; +V8PerContextData* retrievePerContextData(Frame* frame)

retrievePerContextData -&gt; perContextDataForCurrentWorld ?

Really this function should take a Frame and a DOMWrapperWorld, but that&apos;s something for dcarney.

&gt; Source/WebCore/bindings/v8/V8Binding.h:375
&gt; +    // Returns the frame object of the window object associated with
&gt; +    // a context.

... if the DOMWindow is currently being displayed in the Frame.

&gt; Source/WebCore/bindings/v8/V8Binding.h:378
&gt; +    // Returns the PerContextData associated with a frame.

... for the current isolated world.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699740</commentid>
    <comment_count>3</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 11:36:39 -0700</bug_when>
    <thetext>This patch might be of interest to dcanrey.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>699741</commentid>
    <comment_count>4</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 11:37:05 -0700</bug_when>
    <thetext>&gt; This patch might be of interest to dcanrey.

(sorry for typoing your name)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700239</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 17:31:35 -0700</bug_when>
    <thetext>Committed r126103: &lt;http://trac.webkit.org/changeset/126103&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700242</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 17:33:02 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 159386 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=159386&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Binding.cpp:385
&gt; &gt; +DOMWindow* retrieveWindow(v8::Handle&lt;v8::Context&gt; context)
&gt; 
&gt; I might rename retrieveWindow to
&gt; 
&gt; DOMWindow* toDOMWindow(v8::Handle&lt;v8::Context&gt;)
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Binding.cpp:394
&gt; &gt; +Frame* retrieveFrame(v8::Handle&lt;v8::Context&gt; context)
&gt; 
&gt; retrieveFrame -&gt; toFrameIfNotDetached ?
&gt; 
&gt; It would be nice if callers understood why the conversion might fail.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Binding.cpp:405
&gt; &gt; +V8PerContextData* retrievePerContextData(Frame* frame)
&gt; 
&gt; retrievePerContextData -&gt; perContextDataForCurrentWorld ?
&gt; 
&gt; Really this function should take a Frame and a DOMWrapperWorld, but that&apos;s something for dcarney.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Binding.h:375
&gt; &gt; +    // Returns the frame object of the window object associated with
&gt; &gt; +    // a context.
&gt; 
&gt; ... if the DOMWindow is currently being displayed in the Frame.
&gt; 
&gt; &gt; Source/WebCore/bindings/v8/V8Binding.h:378
&gt; &gt; +    // Returns the PerContextData associated with a frame.
&gt; 
&gt; ... for the current isolated world.

All done. Thanks for reviewing!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159386</attachid>
            <date>2012-08-20 03:26:13 -0700</date>
            <delta_ts>2012-08-20 18:07:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94460-20120820192533.patch</filename>
            <type>text/plain</type>
            <size>16876</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNjg3OTdiMWE5MjJkM2M3
M2ZhN2M0OGI2NGE0Mjg0MDU0OGQ5YzM2MC4uY2U3YjIwODgyZjllZjIwMGFiZTk1MmFhNWFjOTdh
ODZkOWNlZGUyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDEyLTA4LTIwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIE1vdmUgcmV0
cmlldmV7V2luZG93LEZyYW1lLFBlckNvbnRleHREYXRhfSgpIGZyb20gVjhQcm94eSB0byBWOEJp
bmRpbmcKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0
NDYwCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVG8g
a2lsbCBWOFByb3h5LCB3ZSBtb3ZlIHJldHJpZXZle1dpbmRvdyxGcmFtZSxQZXJDb250ZXh0RGF0
YX0oKQorICAgICAgICBmcm9tIFY4UHJveHkgdG8gVjhCaW5kaW5nLgorCisgICAgICAgIE5vIHRl
c3RzLiBObyBjaGFuZ2UgaW4gYmVoYXZpb3IuCisKKyAgICAgICAgKiBiaW5kaW5ncy92OC9CaW5k
aW5nU3RhdGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YWN0aXZlRE9NV2luZG93KToKKyAgICAg
ICAgKFdlYkNvcmU6OmZpcnN0RE9NV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OmFjdGl2ZUZy
YW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmZpcnN0RnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6
Y3VycmVudEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OmN1cnJlbnREb2N1bWVudCk6CisgICAg
ICAgICogYmluZGluZ3MvdjgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnJldHJpZXZlRnJhbWVXaXRoR2xvYmFsT2JqZWN0Q2hlY2spOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZVNjcmlwdERlYnVnU2VydmVyOjpnZXREZWJ1Z0xpc3RlbmVyRm9yQ29udGV4dCk6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bk1lc3NhZ2VMb29w
T25QYXVzZSk6CisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJldHJpZXZlV2luZG93KToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAo
V2ViQ29yZTo6cmV0cmlldmVGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpyZXRyaWV2ZVBlckNv
bnRleHREYXRhKToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAg
KFdlYkNvcmUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6OmNvbnN0cnVjdG9yRm9yVHlwZSk6CisgICAgICAg
ICogYmluZGluZ3MvdjgvVjhOUFV0aWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNvbnZlcnRW
OE9iamVjdFRvTlBWYXJpYW50KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlY4UHJveHk6OmhhbmRsZU91dE9mTWVtb3J5KToKKyAgICAgICAg
KFdlYkNvcmU6OlY4UHJveHk6OmNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6VjhQcm94eTo6
bWF0Y2hlc0N1cnJlbnRDb250ZXh0KToKKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOFByb3h5Lmg6
CisgICAgICAgIChWOFByb3h5KToKKwogMjAxMi0wOC0xOSAgS2VudGFybyBIYXJhICA8aGFyYWtl
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4XSBNb3ZlIGNvbnRleHREZWJ1Z0lkKCkgYW5k
IHNldENvbnRleHREZWJ1Z0lkKCkgZnJvbSBWOFByb3h5IHRvIFNjcmlwdENvbnRyb2xsZXIKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9DaGFuZ2VMb2cKaW5kZXggN2QzNmQ5ODRlMzZmZTljZDk5ZmU5Y2QxZGJkODU3
ZDYzN2ZkNTIzYi4uZjc1MDg5ZWExYmE2ZmJmNzdiN2VjNDUwNzZmMTk3NTQ2Zjk2MWFiYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMSBAQAorMjAxMi0wOC0yMCAgS2Vu
dGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW1Y4XSBNb3ZlIHJl
dHJpZXZle1dpbmRvdyxGcmFtZSxQZXJDb250ZXh0RGF0YX0oKSBmcm9tIFY4UHJveHkgdG8gVjhC
aW5kaW5nCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NDQ2MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRv
IGtpbGwgVjhQcm94eSwgd2UgbW92ZSByZXRyaWV2ZXtXaW5kb3csRnJhbWUsUGVyQ29udGV4dERh
dGF9KCkKKyAgICAgICAgZnJvbSBWOFByb3h5IHRvIFY4QmluZGluZy4KKworICAgICAgICBObyB0
ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisgICAgICAgICogc3JjL1dlYkJpbmRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6bWFrZUludEFycmF5SW1wbCk6CisgICAgICAgIChXZWJL
aXQ6Om1ha2VTdHJpbmdBcnJheUltcGwpOgorICAgICAgICAqIHNyYy9XZWJGcmFtZUltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6ZnJhbWVGb3JDb250ZXh0KToKKwogMjAxMi0w
OC0xOSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgW1Y4
XSBNb3ZlIGNvbnRleHREZWJ1Z0lkKCkgYW5kIHNldENvbnRleHREZWJ1Z0lkKCkgZnJvbSBWOFBy
b3h5IHRvIFNjcmlwdENvbnRyb2xsZXIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L0JpbmRpbmdTdGF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9CaW5k
aW5nU3RhdGUuY3BwCmluZGV4IDEyZWE0ODk5MmM0ZWY2YmIzZmM1MTY4YzkxNmExMmM0NDYwMThh
ZDguLjNkMGZhZjBkYTE2NzA0ODU0OTQ1MjIwZjU2Yzc2OTkwOTg2MDQ4MDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0JpbmRpbmdTdGF0ZS5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvQmluZGluZ1N0YXRlLmNwcApAQCAtMzQsNyArMzQsNyBAQAog
I2luY2x1ZGUgIkRPTVdpbmRvdy5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiU2Ny
aXB0Q29udHJvbGxlci5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKKyNpbmNsdWRlICJWOEJpbmRp
bmcuaCIKICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKQEAgLTU4LDEyICs1OCwxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gYWN0
aXZlQ29udGV4dCgpCiAKIERPTVdpbmRvdyogYWN0aXZlRE9NV2luZG93KEJpbmRpbmdTdGF0ZSop
CiB7Ci0gICAgcmV0dXJuIFY4UHJveHk6OnJldHJpZXZlV2luZG93KGFjdGl2ZUNvbnRleHQoKSk7
CisgICAgcmV0dXJuIHJldHJpZXZlV2luZG93KGFjdGl2ZUNvbnRleHQoKSk7CiB9CiAKIERPTVdp
bmRvdyogZmlyc3RET01XaW5kb3coQmluZGluZ1N0YXRlKikKIHsKLSAgICByZXR1cm4gVjhQcm94
eTo6cmV0cmlldmVXaW5kb3codjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKSk7CisgICAgcmV0dXJu
IHJldHJpZXZlV2luZG93KHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkpOwogfQogCiBGcmFtZSog
YWN0aXZlRnJhbWUoQmluZGluZ1N0YXRlKikKQEAgLTcxLDcgKzcxLDcgQEAgRnJhbWUqIGFjdGl2
ZUZyYW1lKEJpbmRpbmdTdGF0ZSopCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4
dCA9IGFjdGl2ZUNvbnRleHQoKTsKICAgICBpZiAoY29udGV4dC5Jc0VtcHR5KCkpCiAgICAgICAg
IHJldHVybiAwOwotICAgIHJldHVybiBWOFByb3h5OjpyZXRyaWV2ZUZyYW1lKGNvbnRleHQpOwor
ICAgIHJldHVybiByZXRyaWV2ZUZyYW1lKGNvbnRleHQpOwogfQogCiBGcmFtZSogZmlyc3RGcmFt
ZShCaW5kaW5nU3RhdGUqKQpAQCAtNzksNyArNzksNyBAQCBGcmFtZSogZmlyc3RGcmFtZShCaW5k
aW5nU3RhdGUqKQogICAgIHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQgPSB2ODo6Q29u
dGV4dDo6R2V0RW50ZXJlZCgpOwogICAgIGlmIChjb250ZXh0LklzRW1wdHkoKSkKICAgICAgICAg
cmV0dXJuIDA7Ci0gICAgcmV0dXJuIFY4UHJveHk6OnJldHJpZXZlRnJhbWUoY29udGV4dCk7Cisg
ICAgcmV0dXJuIHJldHJpZXZlRnJhbWUoY29udGV4dCk7CiB9CiAKIEZyYW1lKiBjdXJyZW50RnJh
bWUoQmluZGluZ1N0YXRlKikKQEAgLTg3LDEyICs4NywxMiBAQCBGcmFtZSogY3VycmVudEZyYW1l
KEJpbmRpbmdTdGF0ZSopCiAgICAgdjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCA9IHY4
OjpDb250ZXh0OjpHZXRDdXJyZW50KCk7CiAgICAgaWYgKGNvbnRleHQuSXNFbXB0eSgpKQogICAg
ICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gVjhQcm94eTo6cmV0cmlldmVGcmFtZShjb250ZXh0
KTsKKyAgICByZXR1cm4gcmV0cmlldmVGcmFtZShjb250ZXh0KTsKIH0KIAogRG9jdW1lbnQqIGN1
cnJlbnREb2N1bWVudChCaW5kaW5nU3RhdGUqKQogewotICAgIERPTVdpbmRvdyogY3VycmVudCA9
IFY4UHJveHk6OnJldHJpZXZlV2luZG93KHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpOworICAg
IERPTVdpbmRvdyogY3VycmVudCA9IHJldHJpZXZlV2luZG93KHY4OjpDb250ZXh0OjpHZXRDdXJy
ZW50KCkpOwogICAgIGlmICghY3VycmVudCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0dXJu
IGN1cnJlbnQtPmRvY3VtZW50KCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcAppbmRleCA2Y2NiMGYwYjIyMzY1Mzc2MTk2MmE2
NzZmZWM0NzM2NDlmZDc3NjgwLi5kZjg1ZGRjYjYxMTNkOGIxYjgyM2FiYTYxNzgzMTkzNGI3ZWMy
ZTBiIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9QYWdlU2NyaXB0RGVi
dWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1BhZ2VTY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKQEAgLTQ3LDcgKzQ3LDcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1zdGF0aWMgRnJhbWUqIHJldHJpZXZlRnJhbWUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29u
dGV4dCkKK3N0YXRpYyBGcmFtZSogcmV0cmlldmVGcmFtZVdpdGhHbG9iYWxPYmplY3RDaGVjayh2
ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIGlmIChjb250ZXh0LklzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC02MSw3ICs2MSw3IEBAIHN0YXRpYyBGcmFtZSog
cmV0cmlldmVGcmFtZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogICAgIGlmIChn
bG9iYWwuSXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBWOFByb3h5
OjpyZXRyaWV2ZUZyYW1lKGNvbnRleHQpOworICAgIHJldHVybiByZXRyaWV2ZUZyYW1lKGNvbnRl
eHQpOwogfQogCiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXImIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6
c2hhcmVkKCkKQEAgLTE2Nyw3ICsxNjcsNyBAQCB2b2lkIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjo6
cnVuU2NyaXB0KFNjcmlwdFN0YXRlKiBzdGF0ZSwgY29uc3QgU3RyaW5nJiBzY3JpcHRJZAogU2Ny
aXB0RGVidWdMaXN0ZW5lciogUGFnZVNjcmlwdERlYnVnU2VydmVyOjpnZXREZWJ1Z0xpc3RlbmVy
Rm9yQ29udGV4dCh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewogICAgIHY4OjpI
YW5kbGVTY29wZSBzY29wZTsKLSAgICBGcmFtZSogZnJhbWUgPSByZXRyaWV2ZUZyYW1lKGNvbnRl
eHQpOworICAgIEZyYW1lKiBmcmFtZSA9IHJldHJpZXZlRnJhbWVXaXRoR2xvYmFsT2JqZWN0Q2hl
Y2soY29udGV4dCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgcmV0
dXJuIG1fbGlzdGVuZXJzTWFwLmdldChmcmFtZS0+cGFnZSgpKTsKQEAgLTE3Niw3ICsxNzYsNyBA
QCBTY3JpcHREZWJ1Z0xpc3RlbmVyKiBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OmdldERlYnVnTGlz
dGVuZXJGb3JDb250ZXh0KHY4OjpIYW5kbAogdm9pZCBQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnJ1
bk1lc3NhZ2VMb29wT25QYXVzZSh2ODo6SGFuZGxlPHY4OjpDb250ZXh0PiBjb250ZXh0KQogewog
ICAgIHY4OjpIYW5kbGVTY29wZSBzY29wZTsKLSAgICBGcmFtZSogZnJhbWUgPSByZXRyaWV2ZUZy
YW1lKGNvbnRleHQpOworICAgIEZyYW1lKiBmcmFtZSA9IHJldHJpZXZlRnJhbWVXaXRoR2xvYmFs
T2JqZWN0Q2hlY2soY29udGV4dCk7CiAgICAgbV9wYXVzZWRQYWdlID0gZnJhbWUtPnBhZ2UoKTsK
IAogICAgIC8vIFdhaXQgZm9yIGNvbnRpbnVlIG9yIHN0ZXAgY29tbWFuZC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCmluZGV4IDU2NWY5ODkxYWQ0NzgxYzU4YmMxODJj
M2Q2ZDIzZThlY2YwZGEyZjQuLmQwNjBkYzhhODA0NDBmZTg5ZGIyNDIzZDA5OTg5YWI1ZDQyMjYw
YzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcApAQCAtMzQsMTMg
KzM0LDE0IEBACiAjaW5jbHVkZSAiQmluZGluZ1Zpc2l0b3JzLmgiCiAjaW5jbHVkZSAiRE9NU3Ry
aW5nTGlzdC5oIgogI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgogI2lu
Y2x1ZGUgIk1lbW9yeUluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIlBsYXRmb3JtU3RyaW5n
LmgiCiAjaW5jbHVkZSAiUXVhbGlmaWVkTmFtZS5oIgogI2luY2x1ZGUgIlY4RE9NU3RyaW5nTGlz
dC5oIgorI2luY2x1ZGUgIlY4RE9NV2luZG93LmgiCiAjaW5jbHVkZSAiVjhFbGVtZW50LmgiCiAj
aW5jbHVkZSAiVjhPYmplY3RDb25zdHJ1Y3Rvci5oIgotI2luY2x1ZGUgIlY4UHJveHkuaCIKIAog
I2luY2x1ZGUgPHd0Zi9NYXRoRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4K
QEAgLTM4MSw2ICszODIsMzQgQEAgUGFzc1JlZlB0cjxET01TdHJpbmdMaXN0PiB0b0RPTVN0cmlu
Z0xpc3Qodjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlKQogICAgIHJldHVybiByZXQucmVsZWFz
ZSgpOwogfQogCitET01XaW5kb3cqIHJldHJpZXZlV2luZG93KHY4OjpIYW5kbGU8djg6OkNvbnRl
eHQ+IGNvbnRleHQpCit7CisgICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiBnbG9iYWwgPSBjb250
ZXh0LT5HbG9iYWwoKTsKKyAgICBBU1NFUlQoIWdsb2JhbC5Jc0VtcHR5KCkpOworICAgIGdsb2Jh
bCA9IFY4RE9NV3JhcHBlcjo6bG9va3VwRE9NV3JhcHBlcihWOERPTVdpbmRvdzo6R2V0VGVtcGxh
dGUoKSwgZ2xvYmFsKTsKKyAgICBBU1NFUlQoIWdsb2JhbC5Jc0VtcHR5KCkpOworICAgIHJldHVy
biBWOERPTVdpbmRvdzo6dG9OYXRpdmUoZ2xvYmFsKTsKK30KKworRnJhbWUqIHJldHJpZXZlRnJh
bWUodjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKK3sKKyAgICBET01XaW5kb3cqIHdp
bmRvdyA9IHJldHJpZXZlV2luZG93KGNvbnRleHQpOworICAgIGlmICh3aW5kb3ctPmlzQ3VycmVu
dGx5RGlzcGxheWVkSW5GcmFtZSgpKQorICAgICAgICByZXR1cm4gd2luZG93LT5mcmFtZSgpOwor
ICAgIC8vIFdlIHJldHVybiAwIGhlcmUgYmVjYXVzZSB8Y29udGV4dHwgaXMgZGV0YWNoZWQgZnJv
bSB0aGUgRnJhbWUuIElmIHdlCisgICAgLy8gZGlkIHJldHVybiB8ZnJhbWV8IHdlIGNvdWxkIGdl
dCBpbiB0cm91YmxlIGJlY2F1c2UgdGhlIGZyYW1lIGNvdWxkIGJlCisgICAgLy8gbmF2aWdhdGVk
IHRvIGFub3RoZXIgc2VjdXJpdHkgb3JpZ2luLgorICAgIHJldHVybiAwOworfQorCitWOFBlckNv
bnRleHREYXRhKiByZXRyaWV2ZVBlckNvbnRleHREYXRhKEZyYW1lKiBmcmFtZSkKK3sKKyAgICBW
OElzb2xhdGVkQ29udGV4dCogaXNvbGF0ZWRDb250ZXh0OworICAgIGlmIChVTkxJS0VMWSghIShp
c29sYXRlZENvbnRleHQgPSBWOElzb2xhdGVkQ29udGV4dDo6Z2V0RW50ZXJlZCgpKSkpCisgICAg
ICAgIHJldHVybiBpc29sYXRlZENvbnRleHQtPnBlckNvbnRleHREYXRhKCk7CisgICAgcmV0dXJu
IGZyYW1lLT5zY3JpcHQoKS0+d2luZG93U2hlbGwoKS0+cGVyQ29udGV4dERhdGEoKTsKK30KKwog
dm9pZCBjcmFzaElmVjhJc0RlYWQoKQogewogICAgIGlmICh2ODo6Vjg6OklzRGVhZCgpKSB7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCmluZGV4IDNhM2UwMDI3OTNlODhiMDQ3
NzQwNDNiZTY1NGQxZTMwMWE1NjVmZjEuLjY5MzE1ODE0ZGUxZTI3NjdmOWNiZmEyNjI4YTc4N2Y4
NjQ0M2Q0ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGlu
Zy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5oCkBAIC0zNjgs
NiArMzY4LDE2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIFBhc3NSZWZQdHI8RE9NU3Ry
aW5nTGlzdD4gdG9ET01TdHJpbmdMaXN0KHY4OjpIYW5kbGU8djg6OlZhbHVlPik7CiAKKyAgICAv
LyBSZXR1cm5zIHRoZSB3aW5kb3cgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCBhIGNvbnRleHQuCisg
ICAgRE9NV2luZG93KiByZXRyaWV2ZVdpbmRvdyh2ODo6SGFuZGxlPHY4OjpDb250ZXh0Pik7CisK
KyAgICAvLyBSZXR1cm5zIHRoZSBmcmFtZSBvYmplY3Qgb2YgdGhlIHdpbmRvdyBvYmplY3QgYXNz
b2NpYXRlZCB3aXRoCisgICAgLy8gYSBjb250ZXh0LgorICAgIEZyYW1lKiByZXRyaWV2ZUZyYW1l
KHY4OjpIYW5kbGU8djg6OkNvbnRleHQ+KTsKKworICAgIC8vIFJldHVybnMgdGhlIFBlckNvbnRl
eHREYXRhIGFzc29jaWF0ZWQgd2l0aCBhIGZyYW1lLgorICAgIFY4UGVyQ29udGV4dERhdGEqIHJl
dHJpZXZlUGVyQ29udGV4dERhdGEoRnJhbWUqKTsKKwogICAgIHZvaWQgY3Jhc2hJZlY4SXNEZWFk
KCk7CiAKICAgICBjbGFzcyBWOFBhcmFtZXRlckJhc2UgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAKaW5kZXggMjdiMGZjY2M3NmYwMjBlZmRlNDU5NTU0YWE5
ZGYzODlkNmY3MDhlMC4uYTU5OTUyYThhNGFkNzY0MTY4NWFkYmEzOTZmMTY5YzY2NjFiZmRhMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCkBAIC05NSw3
ICs5NSw3IEBAIHY4OjpMb2NhbDx2ODo6RnVuY3Rpb24+IFY4RE9NV3JhcHBlcjo6Y29uc3RydWN0
b3JGb3JUeXBlKFdyYXBwZXJUeXBlSW5mbyogdHlwZSwKICAgICBpZiAoIWZyYW1lKQogICAgICAg
ICByZXR1cm4gdjg6OkxvY2FsPHY4OjpGdW5jdGlvbj4oKTsKIAotICAgIGlmIChWOFBlckNvbnRl
eHREYXRhKiBjb250ZXh0RGF0YSA9IFY4UHJveHk6OnJldHJpZXZlUGVyQ29udGV4dERhdGEoZnJh
bWUpKQorICAgIGlmIChWOFBlckNvbnRleHREYXRhKiBjb250ZXh0RGF0YSA9IHJldHJpZXZlUGVy
Q29udGV4dERhdGEoZnJhbWUpKQogICAgICAgICByZXR1cm4gY29udGV4dERhdGEtPmNvbnN0cnVj
dG9yRm9yVHlwZSh0eXBlKTsKIAogICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkZ1bmN0aW9uPigp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhOUFV0aWxzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4TlBVdGlscy5jcHAKaW5kZXggNWE2MjZkOWNl
NmFkMTQyYzVlMjdiMGM2ZTYzMWY3ZGFjMzcxODBlYi4uNDdmMjVmMDY4MGMxNDU5MzRhMzc4ZTMz
MjQzODE0ZGUxYTU3NjcwZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvdjgv
VjhOUFV0aWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOE5QVXRpbHMu
Y3BwCkBAIC02OSw3ICs2OSw3IEBAIHZvaWQgY29udmVydFY4T2JqZWN0VG9OUFZhcmlhbnQodjg6
OkxvY2FsPHY4OjpWYWx1ZT4gb2JqZWN0LCBOUE9iamVjdCogb3duZXIsIE5QCiAgICAgICAgIHN0
ci0+V3JpdGVVdGY4KHV0ZjhDaGFycywgbGVuZ3RoLCAwLCB2ODo6U3RyaW5nOjpISU5UX01BTllf
V1JJVEVTX0VYUEVDVEVEKTsKICAgICAgICAgU1RSSU5HTl9UT19OUFZBUklBTlQodXRmOENoYXJz
LCBsZW5ndGgtMSwgKnJlc3VsdCk7CiAgICAgfSBlbHNlIGlmIChvYmplY3QtPklzT2JqZWN0KCkp
IHsKLSAgICAgICAgRE9NV2luZG93KiB3aW5kb3cgPSBWOFByb3h5OjpyZXRyaWV2ZVdpbmRvdyh2
ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKTsKKyAgICAgICAgRE9NV2luZG93KiB3aW5kb3cgPSBy
ZXRyaWV2ZVdpbmRvdyh2ODo6Q29udGV4dDo6R2V0Q3VycmVudCgpKTsKICAgICAgICAgTlBPYmpl
Y3QqIG5wb2JqZWN0ID0gbnBDcmVhdGVWOFNjcmlwdE9iamVjdCgwLCB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+OjpDYXN0KG9iamVjdCksIHdpbmRvdyk7CiAgICAgICAgIGlmIChucG9iamVjdCkKICAg
ICAgICAgICAgIF9OUE5fUmVnaXN0ZXJPYmplY3QobnBvYmplY3QsIG93bmVyKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UHJveHkuY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKaW5kZXggMzhjN2JiNDI2NTY3ZTU3ZDZkZTY1ZTcw
ODRmZTJlMmM4Mjc0NDJjYi4uYjAzYzg0OWE4OTMyZmUyYTlkMmQ5YzAzNWJhODU5MTkwY2IxMmVm
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQcm94eS5jcHAKQEAgLTE0MSw3ICsxNDEs
NyBAQCBib29sIFY4UHJveHk6OmhhbmRsZU91dE9mTWVtb3J5KCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCiAgICAgLy8gV2FybmluZywgZXJyb3IsIGRpc2FibGUgSlMgZm9yIHRoaXMgZnJhbWU/
Ci0gICAgRnJhbWUqIGZyYW1lID0gVjhQcm94eTo6cmV0cmlldmVGcmFtZShjb250ZXh0KTsKKyAg
ICBGcmFtZSogZnJhbWUgPSByZXRyaWV2ZUZyYW1lKGNvbnRleHQpOwogICAgIGlmICghZnJhbWUp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0zMjAsMzQgKzMyMCw2IEBAIFY4RE9NV2luZG93
U2hlbGwqIFY4UHJveHk6OndpbmRvd1NoZWxsKCkgY29uc3QKICAgICByZXR1cm4gZnJhbWUoKS0+
c2NyaXB0KCktPndpbmRvd1NoZWxsKCk7CiB9CiAKLURPTVdpbmRvdyogVjhQcm94eTo6cmV0cmll
dmVXaW5kb3codjg6OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dCkKLXsKLSAgICB2ODo6SGFu
ZGxlPHY4OjpPYmplY3Q+IGdsb2JhbCA9IGNvbnRleHQtPkdsb2JhbCgpOwotICAgIEFTU0VSVCgh
Z2xvYmFsLklzRW1wdHkoKSk7Ci0gICAgZ2xvYmFsID0gVjhET01XcmFwcGVyOjpsb29rdXBET01X
cmFwcGVyKFY4RE9NV2luZG93OjpHZXRUZW1wbGF0ZSgpLCBnbG9iYWwpOwotICAgIEFTU0VSVCgh
Z2xvYmFsLklzRW1wdHkoKSk7Ci0gICAgcmV0dXJuIFY4RE9NV2luZG93Ojp0b05hdGl2ZShnbG9i
YWwpOwotfQotCi1GcmFtZSogVjhQcm94eTo6cmV0cmlldmVGcmFtZSh2ODo6SGFuZGxlPHY4OjpD
b250ZXh0PiBjb250ZXh0KQotewotICAgIERPTVdpbmRvdyogd2luZG93ID0gcmV0cmlldmVXaW5k
b3coY29udGV4dCk7Ci0gICAgaWYgKHdpbmRvdy0+aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1l
KCkpCi0gICAgICAgIHJldHVybiB3aW5kb3ctPmZyYW1lKCk7Ci0gICAgLy8gV2UgcmV0dXJuIDAg
aGVyZSBiZWNhdXNlIHxjb250ZXh0fCBpcyBkZXRhY2hlZCBmcm9tIHRoZSBGcmFtZS4gIElmIHdl
Ci0gICAgLy8gZGlkIHJldHVybiB8ZnJhbWV8IHdlIGNvdWxkIGdldCBpbiB0cm91YmxlIGJlY2F1
c2UgdGhlIGZyYW1lIGNvdWxkIGJlCi0gICAgLy8gbmF2aWdhdGVkIHRvIGFub3RoZXIgc2VjdXJp
dHkgb3JpZ2luLgotICAgIHJldHVybiAwOwotfQotCi1WOFBlckNvbnRleHREYXRhKiBWOFByb3h5
OjpyZXRyaWV2ZVBlckNvbnRleHREYXRhKEZyYW1lKiBmcmFtZSkKLXsKLSAgICBWOElzb2xhdGVk
Q29udGV4dCogaXNvbGF0ZWRDb250ZXh0OwotICAgIGlmIChVTkxJS0VMWSghIShpc29sYXRlZENv
bnRleHQgPSBWOElzb2xhdGVkQ29udGV4dDo6Z2V0RW50ZXJlZCgpKSkpCi0gICAgICAgIHJldHVy
biBpc29sYXRlZENvbnRleHQtPnBlckNvbnRleHREYXRhKCk7Ci0gICAgcmV0dXJuIGZyYW1lLT5z
Y3JpcHQoKS0+d2luZG93U2hlbGwoKS0+cGVyQ29udGV4dERhdGEoKTsKLX0KLQogdm9pZCBWOFBy
b3h5OjpyZXNldElzb2xhdGVkV29ybGRzKCkKIHsKICAgICBmb3IgKElzb2xhdGVkV29ybGRNYXA6
Oml0ZXJhdG9yIGl0ZXIgPSBtX2lzb2xhdGVkV29ybGRzLmJlZ2luKCk7CkBAIC0zODAsNyArMzUy
LDcgQEAgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBWOFByb3h5Ojpjb250ZXh0KEZyYW1lKiBmcmFt
ZSkKIAogICAgIGlmIChWOElzb2xhdGVkQ29udGV4dCogaXNvbGF0ZWRDb250ZXh0ID0gVjhJc29s
YXRlZENvbnRleHQ6OmdldEVudGVyZWQoKSkgewogICAgICAgICBjb250ZXh0ID0gdjg6OkxvY2Fs
PHY4OjpDb250ZXh0Pjo6TmV3KGlzb2xhdGVkQ29udGV4dC0+Y29udGV4dCgpKTsKLSAgICAgICAg
aWYgKGZyYW1lICE9IFY4UHJveHk6OnJldHJpZXZlRnJhbWUoY29udGV4dCkpCisgICAgICAgIGlm
IChmcmFtZSAhPSByZXRyaWV2ZUZyYW1lKGNvbnRleHQpKQogICAgICAgICAgICAgcmV0dXJuIHY4
OjpMb2NhbDx2ODo6Q29udGV4dD4oKTsKICAgICB9CiAKQEAgLTM5MSw3ICszNjMsNyBAQCB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+IFY4UHJveHk6OmNvbnRleHQoKQogewogICAgIGlmIChWOElzb2xh
dGVkQ29udGV4dCogaXNvbGF0ZWRDb250ZXh0ID0gVjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVy
ZWQoKSkgewogICAgICAgICBSZWZQdHI8U2hhcmVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD4gPiBj
b250ZXh0ID0gaXNvbGF0ZWRDb250ZXh0LT5zaGFyZWRDb250ZXh0KCk7Ci0gICAgICAgIGlmICht
X2ZyYW1lICE9IFY4UHJveHk6OnJldHJpZXZlRnJhbWUoY29udGV4dC0+Z2V0KCkpKQorICAgICAg
ICBpZiAobV9mcmFtZSAhPSByZXRyaWV2ZUZyYW1lKGNvbnRleHQtPmdldCgpKSkKICAgICAgICAg
ICAgIHJldHVybiB2ODo6TG9jYWw8djg6OkNvbnRleHQ+KCk7CiAgICAgICAgIHJldHVybiB2ODo6
TG9jYWw8djg6OkNvbnRleHQ+OjpOZXcoY29udGV4dC0+Z2V0KCkpOwogICAgIH0KQEAgLTQxNyw3
ICszODksNyBAQCBib29sIFY4UHJveHk6Om1hdGNoZXNDdXJyZW50Q29udGV4dCgpCiAgICAgdjg6
OkhhbmRsZTx2ODo6Q29udGV4dD4gY29udGV4dDsKICAgICBpZiAoVjhJc29sYXRlZENvbnRleHQq
IGlzb2xhdGVkQ29udGV4dCA9IFY4SXNvbGF0ZWRDb250ZXh0OjpnZXRFbnRlcmVkKCkpIHsKICAg
ICAgICAgY29udGV4dCA9IGlzb2xhdGVkQ29udGV4dC0+c2hhcmVkQ29udGV4dCgpLT5nZXQoKTsK
LSAgICAgICAgaWYgKG1fZnJhbWUgIT0gVjhQcm94eTo6cmV0cmlldmVGcmFtZShjb250ZXh0KSkK
KyAgICAgICAgaWYgKG1fZnJhbWUgIT0gcmV0cmlldmVGcmFtZShjb250ZXh0KSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9IGVsc2UgewogICAgICAgICB3aW5kb3dTaGVsbCgpLT5p
bml0Q29udGV4dElmTmVlZGVkKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9WOFByb3h5LmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFByb3h5LmgKaW5k
ZXggNDI1ODg4ZWQ3NDcwMmUwODNiZmQwMzFmMTUxYTk3YjU5NDgxMzI5Zi4uMzE5NzVkNTJjOGRm
ZmMzYTdiOTBiMjNmYmRkODQ1YTFmYTI4YmRmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
UHJveHkuaApAQCAtMTA2LDE1ICsxMDYsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IC8vIENhbGwgdGhlIGZ1bmN0aW9uIGFzIGNvbnN0cnVjdG9yIHdpdGggdGhlIGdpdmVuIGFyZ3Vt
ZW50cy4KICAgICAgICAgdjg6OkxvY2FsPHY4OjpWYWx1ZT4gbmV3SW5zdGFuY2Uodjg6OkhhbmRs
ZTx2ODo6RnVuY3Rpb24+LCBpbnQgYXJnYywgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGFyZ3ZbXSk7
CiAKLSAgICAgICAgLy8gUmV0dXJucyB0aGUgd2luZG93IG9iamVjdCBhc3NvY2lhdGVkIHdpdGgg
YSBjb250ZXh0LgotICAgICAgICBzdGF0aWMgRE9NV2luZG93KiByZXRyaWV2ZVdpbmRvdyh2ODo6
SGFuZGxlPHY4OjpDb250ZXh0Pik7Ci0KLSAgICAgICAgLy8gUmV0dXJucyB0aGUgZnJhbWUgb2Jq
ZWN0IG9mIHRoZSB3aW5kb3cgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aAotICAgICAgICAvLyBhIGNv
bnRleHQuCi0gICAgICAgIHN0YXRpYyBGcmFtZSogcmV0cmlldmVGcmFtZSh2ODo6SGFuZGxlPHY4
OjpDb250ZXh0Pik7Ci0KLSAgICAgICAgc3RhdGljIFY4UGVyQ29udGV4dERhdGEqIHJldHJpZXZl
UGVyQ29udGV4dERhdGEoRnJhbWUqKTsKLQogICAgICAgICAvLyBSZXR1cm5zIFY4IENvbnRleHQg
b2YgYSBmcmFtZS4gSWYgbm9uZSBleGlzdHMsIGNyZWF0ZXMKICAgICAgICAgLy8gYSBuZXcgY29u
dGV4dC4gSXQgaXMgcG90ZW50aWFsbHkgc2xvdyBhbmQgY29uc3VtZXMgbWVtb3J5LgogICAgICAg
ICBzdGF0aWMgdjg6OkxvY2FsPHY4OjpDb250ZXh0PiBjb250ZXh0KEZyYW1lKik7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAgYi9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL3NyYy9XZWJCaW5kaW5ncy5jcHAKaW5kZXggNzg2YTQxNzViOGJhMjU1
ZjlmM2E1MDgxNzE0MWVkZGU0MTg3YWI4NC4uODU3YjY0NjI1MmY4NzUzZWYyM2QwYTVkZWIxMjQx
MjExN2EzMjhmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViQmlu
ZGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYkJpbmRpbmdzLmNw
cApAQCAtMjkwLDcgKzI5MCw3IEBAIHN0YXRpYyBOUE9iamVjdCogbWFrZUludEFycmF5SW1wbChj
b25zdCBXZWJWZWN0b3I8aW50PiYgZGF0YSkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGRh
dGEuc2l6ZSgpOyArK2kpCiAgICAgICAgIHJlc3VsdC0+U2V0KGksIHY4OjpOdW1iZXI6Ok5ldyhk
YXRhW2ldKSk7CiAKLSAgICBET01XaW5kb3cqIHdpbmRvdyA9IFY4UHJveHk6OnJldHJpZXZlV2lu
ZG93KHY4OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpOworICAgIERPTVdpbmRvdyogd2luZG93ID0g
cmV0cmlldmVXaW5kb3codjg6OkNvbnRleHQ6OkdldEN1cnJlbnQoKSk7CiAgICAgcmV0dXJuIG5w
Q3JlYXRlVjhTY3JpcHRPYmplY3QoMCwgcmVzdWx0LCB3aW5kb3cpOwogfQogCkBAIC0zMDEsNyAr
MzAxLDcgQEAgc3RhdGljIE5QT2JqZWN0KiBtYWtlU3RyaW5nQXJyYXlJbXBsKGNvbnN0IFdlYlZl
Y3RvcjxXZWJTdHJpbmc+JiBkYXRhKQogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgZGF0YS5z
aXplKCk7ICsraSkKICAgICAgICAgcmVzdWx0LT5TZXQoaSwgZGF0YVtpXS5kYXRhKCkgPyB2ODo6
U3RyaW5nOjpOZXcocmVpbnRlcnByZXRfY2FzdDxjb25zdCB1aW50MTZfdCo+KChkYXRhW2ldLmRh
dGEoKSkpLCBkYXRhW2ldLmxlbmd0aCgpKSA6IHY4OjpTdHJpbmc6Ok5ldygiIikpOwogCi0gICAg
RE9NV2luZG93KiB3aW5kb3cgPSBWOFByb3h5OjpyZXRyaWV2ZVdpbmRvdyh2ODo6Q29udGV4dDo6
R2V0Q3VycmVudCgpKTsKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IHJldHJpZXZlV2luZG93KHY4
OjpDb250ZXh0OjpHZXRDdXJyZW50KCkpOwogICAgIHJldHVybiBucENyZWF0ZVY4U2NyaXB0T2Jq
ZWN0KDAsIHJlc3VsdCwgd2luZG93KTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggYTk4YTMzM2MxMzdmY2I1ZWVmM2FjZDRkODZlNzllZDZm
MjI0YjdhNy4uOWVhNzI2NDdkODRhZTgyNWVkYmQ4M2FjMjQyMjY5YzY5YjgxZmViYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC01ODMsNyArNTgz
LDcgQEAgV2ViRnJhbWUqIFdlYkZyYW1lOjpmcmFtZUZvckN1cnJlbnRDb250ZXh0KCkKICNpZiBX
RUJLSVRfVVNJTkdfVjgKIFdlYkZyYW1lKiBXZWJGcmFtZTo6ZnJhbWVGb3JDb250ZXh0KHY4OjpI
YW5kbGU8djg6OkNvbnRleHQ+IGNvbnRleHQpCiB7Ci0gICAgcmV0dXJuIFdlYkZyYW1lSW1wbDo6
ZnJvbUZyYW1lKFY4UHJveHk6OnJldHJpZXZlRnJhbWUoY29udGV4dCkpOworICAgIHJldHVybiBX
ZWJGcmFtZUltcGw6OmZyb21GcmFtZShyZXRyaWV2ZUZyYW1lKGNvbnRleHQpKTsKIH0KICNlbmRp
ZgogCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>