<?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>80841</bug_id>
          
          <creation_ts>2012-03-12 08:23:44 -0700</creation_ts>
          <short_desc>[V8] Refactor V8 wrapping methods</short_desc>
          <delta_ts>2012-03-12 19:27:05 -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>
          <dependson>80913</dependson>
    
    <dependson>80916</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Kentaro Hara">haraken</reporter>
          <assigned_to name="Kentaro Hara">haraken</assigned_to>
          <cc>abarth</cc>
    
    <cc>arv</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>576135</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-12 08:23:44 -0700</bug_when>
    <thetext>V8DOMWrapper.{h,cpp} has getWrapper(), getWrapperSlow(), getExistingWrapper(), getExistingWrapperSlow() and getExistingWrapperInline(), which are confusing to track call-paths. We can refactor them and unify them into getWrapper().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576138</commentid>
    <comment_count>1</comment_count>
      <attachid>131327</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-12 08:32:16 -0700</bug_when>
    <thetext>Created attachment 131327
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576144</commentid>
    <comment_count>2</comment_count>
      <attachid>131327</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-12 08:35:45 -0700</bug_when>
    <thetext>Comment on attachment 131327
Patch

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

&gt; Source/WebCore/bindings/v8/V8IsolatedContext.h:-89
&gt; -        return reinterpret_cast&lt;V8IsolatedContext*&gt;(getGlobalObject(v8::Context::GetEntered())-&gt;GetPointerFromInternalField(V8DOMWindow::enteredIsolatedWorldIndex));

Actually I didn&apos;t intend to make getEntered() non-inline. I had to made it non-inline because V8IsolatedContext.h cannot include &quot;V8DOMWindow.h&quot; to avoid recursive header including and thus cannot use V8DOMWindow::enteredIsolatedWorldIndex. Is there any solution to keep getEntered() inline?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576240</commentid>
    <comment_count>3</comment_count>
      <attachid>131327</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2012-03-12 10:25:42 -0700</bug_when>
    <thetext>Comment on attachment 131327
Patch

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

&gt;&gt; Source/WebCore/bindings/v8/V8IsolatedContext.h:-89
&gt;&gt; -        return reinterpret_cast&lt;V8IsolatedContext*&gt;(getGlobalObject(v8::Context::GetEntered())-&gt;GetPointerFromInternalField(V8DOMWindow::enteredIsolatedWorldIndex));
&gt; 
&gt; Actually I didn&apos;t intend to make getEntered() non-inline. I had to made it non-inline because V8IsolatedContext.h cannot include &quot;V8DOMWindow.h&quot; to avoid recursive header including and thus cannot use V8DOMWindow::enteredIsolatedWorldIndex. Is there any solution to keep getEntered() inline?

You could split it into 2 parts so that at least the common case is inlined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576521</commentid>
    <comment_count>4</comment_count>
      <attachid>131327</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-03-12 14:26:13 -0700</bug_when>
    <thetext>Comment on attachment 131327
Patch

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

&gt; Source/WebCore/ChangeLog:13
&gt; +        No tests. No change in behavior.

Have you run the performance tests?

I need to read this carefully, but I&apos;m distracted by gardening.  Other folks should feel free to review if they like.

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:438
&gt;  ALWAYS_INLINE v8::Handle&lt;v8::Object&gt; ${className}::existingWrapper(${nativeType}* impl)
&gt;  {
&gt;  END
&gt; -    my $getWrapper = IsNodeSubType($dataNode) ? &quot;V8DOMWrapper::getExistingWrapper(impl)&quot; : &quot;${domMapFunction}.get(impl)&quot;;
&gt; +    my $getWrapper = IsNodeSubType($dataNode) ? &quot;V8DOMWrapper::getWrapper(impl)&quot; : &quot;${domMapFunction}.get(impl)&quot;;

Doesn&apos;t this change semantics?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576786</commentid>
    <comment_count>5</comment_count>
      <attachid>131470</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-12 17:32:18 -0700</bug_when>
    <thetext>Created attachment 131470
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576791</commentid>
    <comment_count>6</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-12 17:35:20 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; &gt; Source/WebCore/ChangeLog:13
&gt; &gt; +        No tests. No change in behavior.
&gt; 
&gt; Have you run the performance tests?

I confirmed no performance regression on DOM core tests in DROMAEO.

&gt; &gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:438
&gt; &gt;  ALWAYS_INLINE v8::Handle&lt;v8::Object&gt; ${className}::existingWrapper(${nativeType}* impl)
&gt; &gt;  {
&gt; &gt;  END
&gt; &gt; -    my $getWrapper = IsNodeSubType($dataNode) ? &quot;V8DOMWrapper::getExistingWrapper(impl)&quot; : &quot;${domMapFunction}.get(impl)&quot;;
&gt; &gt; +    my $getWrapper = IsNodeSubType($dataNode) ? &quot;V8DOMWrapper::getWrapper(impl)&quot; : &quot;${domMapFunction}.get(impl)&quot;;
&gt; 
&gt; Doesn&apos;t this change semantics?

No. This patch just refactors code so that it does not change any call path.

&gt; I need to read this carefully, but I&apos;m distracted by gardening.  Other folks should feel free to review if they like.

Maybe this patch is doing too many things at a breath, and it is not clear if the patch does not change the semantics. Let me land this patch step by step.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>576917</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-03-12 19:27:05 -0700</bug_when>
    <thetext>All intended refactoring has been completed.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131327</attachid>
            <date>2012-03-12 08:32:16 -0700</date>
            <delta_ts>2012-03-12 17:32:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-80841-20120313003214.patch</filename>
            <type>text/plain</type>
            <size>12560</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmIyZThkNmFlMGQ5ZDVl
YjUwMDExMDE2OWU2OTE4ZjY5YTg2YTAyNy4uOWU4OGVlZDRmZGIwN2FkOGY5OTA4ZTRiNTNkOWE0
MjAzMzM3OTI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAzLTEyICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlZmFjdG9y
IFY4IHdyYXBwaW5nIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgwODQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUHJldmlvdXNseSBWOERPTVdyYXBwZXIue2gsY3BwfSBoYWQgZ2V0V3JhcHBl
cigpLCBnZXRXcmFwcGVyU2xvdygpLAorICAgICAgICBnZXRFeGlzdGluZ1dyYXBwZXIoKSwgZ2V0
RXhpc3RpbmdXcmFwcGVyU2xvdygpIGFuZCBnZXRFeGlzdGluZ1dyYXBwZXJJbmxpbmUoKSwKKyAg
ICAgICAgd2hpY2ggbWFrZXMgaXQgZGlmZmljdWx0IHRvIHRyYWNrIGNhbGwtcGF0aHMuIFRoaXMg
cGF0Y2ggcmVmYWN0b3JzIHRoZW0KKyAgICAgICAgYW5kIHVuaWZpZXMgdGhlbSBpbnRvIGdldFdy
YXBwZXIoKS4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDogTW9kaWZpZWQgYXMgZGVzY3Jp
YmVkIGFib3ZlLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Z2V0V3JhcHBlcik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06IERpdHRvLgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20u
Y3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvVjhTbG93KToKKworICAgICAgICAqIGJp
bmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oOiBSZXBsYWNlZCBoZWFkZXIgaW5jbHVkZXMgd2l0aCBm
b3J3YXJkIGRlY2xhcmF0aW9ucworICAgICAgICBpbiBvcmRlciB0byBhdm9pZCByZWN1cnNpdmUg
aGVhZGVyIGluY2x1ZGluZy4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTU1hcC5oOiBEaXR0
by4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHA6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6VjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0Lmg6IERpdHRvLgorICAgICAgICAoVjhJ
c29sYXRlZENvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRs
ZS5jcHA6IERpdHRvLgorCiAyMDEyLTAzLTExICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHI5MzYxNCk6IHNjcm9sbGluZyBkaXYg
ZG9lcyBub3QgcmVwYWludApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBhNWRhYmRmZDU5YzlmNGU1OGU2Y2UzOThjYmFiZGUy
NGU0M2JjYjVmLi41MzI4YWQ4MDViZmRiNzM4ZWE0ZDUzZTEyNDhhNmYzMWVlYWY5MjFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQpAQCAtNDM1LDcgKzQzNSw3IEBAIEVORAogQUxXQVlTX0lOTElORSB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+ICR7Y2xhc3NOYW1lfTo6ZXhpc3RpbmdXcmFwcGVyKCR7bmF0aXZlVHlwZX0qIGltcGwp
CiB7CiBFTkQKLSAgICBteSAkZ2V0V3JhcHBlciA9IElzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSA/
ICJWOERPTVdyYXBwZXI6OmdldEV4aXN0aW5nV3JhcHBlcihpbXBsKSIgOiAiJHtkb21NYXBGdW5j
dGlvbn0uZ2V0KGltcGwpIjsKKyAgICBteSAkZ2V0V3JhcHBlciA9IElzTm9kZVN1YlR5cGUoJGRh
dGFOb2RlKSA/ICJWOERPTVdyYXBwZXI6OmdldFdyYXBwZXIoaW1wbCkiIDogIiR7ZG9tTWFwRnVu
Y3Rpb259LmdldChpbXBsKSI7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAg
IHJldHVybiAke2dldFdyYXBwZXJ9OwogfQpAQCAtNDgzLDcgKzQ4MywxMCBAQCBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoTm9kZSogaW1wbCwgYm9vbCBmb3JjZU5ld09iamVjdCA9
IGZhbHNlKQogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZm9y
Y2VOZXdPYmplY3QpKQogICAgICAgICByZXR1cm4gdG9WOFNsb3coaW1wbCwgZm9yY2VOZXdPYmpl
Y3QpOwotICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmdldFdyYXBwZXIoaW1wbCk7CisgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmdldFdyYXBwZXIoaW1w
bCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7
CisgICAgcmV0dXJuIHRvVjhTbG93KGltcGwsIGZhbHNlKTsKIH0KIEVORAogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggYzU3ZjhiNzI5OGZjYzVl
YmEyYjJmMjI4MWQwNTQ5MzNhYTlkNGQ2Yi4uN2FlYWYwMDgxY2RjYTQ2MWYyYzg4MzU2ZWI3YTM1
NzlkYmZiNjcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgK
QEAgLTMyLDcgKzMyLDYgQEAKICNkZWZpbmUgRE9NRGF0YVN0b3JlX2gKIAogI2luY2x1ZGUgIlY4
RE9NTWFwLmgiCi0jaW5jbHVkZSAiVjhOb2RlLmgiCiAKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTU1hcC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaAppbmRl
eCA0ZmE0OGU0NWU0M2FjNzcwYjQ3ODg0YWJkNzcyZDFiM2EzYzAxNzk1Li4xMzYzYTc5NzUwNDg2
ZWE1OTFjZTAxOTk4NjliM2Q3NDllMjE5ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NTWFwLmgKQEAgLTE0MSw5ICsxNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IERPTVdyYXBwZXJNYXAodjg6OldlYWtSZWZlcmVuY2VDYWxsYmFjayBjYWxsYmFjaykgOiBXZWFr
UmVmZXJlbmNlTWFwPEtleVR5cGUsIHY4OjpPYmplY3Q+KGNhbGxiYWNrKSB7IH0KICAgICB9Owog
Ci0gICAgLy8gQW4gb3BhcXVlIGNsYXNzIHRoYXQgcmVwcmVzZW50cyBhIHNldCBvZiBET00gd3Jh
cHBlcnMuCi0gICAgY2xhc3MgRE9NRGF0YVN0b3JlOwotCiAgICAgLy8gQSB1dGlsaXR5IGNsYXNz
IHRvIG1hbmFnZSB0aGUgbGlmZXRpbWUgb2Ygc2V0IG9mIERPTSB3cmFwcGVycy4KICAgICBjbGFz
cyBET01EYXRhU3RvcmVIYW5kbGUgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDRjZjNjOWE0NmNhNmUwM2MzYTg5MmQ1Y2Y2
NmRkZDAwNDI2ZGI2M2UuLmM5OTUyNzRjYjRiZjFkZTI3NzM1MjQyZmJkZGMyMTAyZGY3YTU5ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtMzIs
NyArMzIsNiBAQAogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogCiAjaW5jbHVkZSAiQXJyYXlC
dWZmZXJWaWV3LmgiCi0jaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldEhlYWRlcnMuaCIKICNpbmNsdWRlICJF
dmVudFRhcmdldEludGVyZmFjZXMuaCIKQEAgLTQxLDEzICs0MCwxMSBAQAogI2luY2x1ZGUgIlY4
QWJzdHJhY3RFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiVjhDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOEV2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJWOEV2ZW50TGlzdGVuZXJMaXN0LmgiCiAjaW5jbHVk
ZSAiVjhIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4SFRNTERvY3VtZW50LmgiCiAjaW5j
bHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKLSNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4
dC5oIgogI2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKICNpbmNsdWRlICJWOE5hbWVkTm9kZU1hcC5o
IgogI2luY2x1ZGUgIlY4Tm9kZUZpbHRlckNvbmRpdGlvbi5oIgpAQCAtNjksMjMgKzY2LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hNYXA8Tm9kZSosIHY4OjpPYmpl
Y3QqPiBET01Ob2RlTWFwOwotdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCB2ODo6T2JqZWN0Kj4gRE9N
T2JqZWN0TWFwOwotCi1zdGF0aWMgQUxXQVlTX0lOTElORSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGdldEV4aXN0aW5nV3JhcHBlcklubGluZShOb2RlKiBub2RlKQotewotICAgIFY4SXNvbGF0ZWRD
b250ZXh0KiBjb250ZXh0ID0gVjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQoKTsKLSAgICBp
ZiAoTElLRUxZKCFjb250ZXh0KSkgewotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
Piogd3JhcHBlciA9IG5vZGUtPndyYXBwZXIoKTsKLSAgICAgICAgaWYgKCF3cmFwcGVyKQotICAg
ICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAgICAgICAgcmV0dXJu
ICp3cmFwcGVyOwotICAgIH0KLSAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gY29udGV4dC0+d29y
bGQoKS0+ZG9tRGF0YVN0b3JlKCk7Ci0gICAgRE9NTm9kZU1hcHBpbmcmIGRvbU5vZGVNYXAgPSBu
b2RlLT5pc0FjdGl2ZU5vZGUoKSA/IHN0b3JlLT5hY3RpdmVEb21Ob2RlTWFwKCkgOiBzdG9yZS0+
ZG9tTm9kZU1hcCgpOwotICAgIHJldHVybiBkb21Ob2RlTWFwLmdldChub2RlKTsKLX0KLQogLy8g
VGhlIGNhbGxlciBtdXN0IGhhdmUgaW5jcmVhc2VkIG9iaidzIHJlZiBjb3VudC4KIHZvaWQgVjhE
T01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3Qodm9pZCogb2JqZWN0LCB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQogewpAQCAtMzA2LDE5ICsyODYsNiBAQCBib29s
IFY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZSwgV3JhcHBlclR5cGVJbmZvKgogICAgIHJldHVybiB0eXBlSW5mbyA9PSB0eXBlOwogfQogCi12
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6Z2V0RXhpc3RpbmdXcmFwcGVyU2xv
dyhOb2RlKiBub2RlKQotewotICAgIHJldHVybiBnZXRFeGlzdGluZ1dyYXBwZXJJbmxpbmUobm9k
ZSk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdyYXBwZXI6OmdldFdyYXBwZXJT
bG93KE5vZGUqIG5vZGUpCi17Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
Z2V0RXhpc3RpbmdXcmFwcGVySW5saW5lKG5vZGUpOwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIHJldHVybiB0b1Y4U2xvdyhub2RlLCBm
YWxzZSk7Ci19Ci0KICNkZWZpbmUgVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UoaW50ZXJmYWNl
TmFtZSkgXAogICAgIGlmIChldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yIyNpbnRlcmZhY2VOYW1l
ID09IGRlc2lyZWRJbnRlcmZhY2UpIFwKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
aW50ZXJmYWNlTmFtZSo+KHRhcmdldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuaAppbmRleCBkM2NhNTFlMDY5YzIwNzVmNGRiMjM5YmJiNTczOTU0ZmE3MjFjZDg2
Li4yNDYyYWFmZmUyOTE4OTAxNzk2ZmIwNmVjMjhkM2UxNjMxODc5OGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRl
ZiBWOERPTVdyYXBwZXJfaAogI2RlZmluZSBWOERPTVdyYXBwZXJfaAogCisjaW5jbHVkZSAiRE9N
RGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJJc29sYXRlZFdvcmxk
LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCIKICNpbmNs
dWRlICJWOEV2ZW50LmgiCisjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRl
ICJWOFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlY4WFBhdGhOU1Jlc29sdmVyLmgiCiAjaW5jbHVk
ZSAiV3JhcHBlclR5cGVJbmZvLmgiCkBAIC0xMjQsNyArMTI2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9iamVjdD4gaW5zdGFudGlhdGVW
OE9iamVjdChWOFByb3h5KiBwcm94eSwgV3JhcHBlclR5cGVJbmZvKiwgdm9pZCogaW1wbCk7CiAK
LSAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0RXhpc3RpbmdXcmFwcGVy
KE5vZGUqIG5vZGUpCisgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldFdy
YXBwZXIoTm9kZSogbm9kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIUlzb2xhdGVkV29ybGQ6OmNvdW50KCkp
KSB7CkBAIC0xMzIsMjMgKzEzNCwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAg
ICAgICAgaWYgKExJS0VMWSghIXdyYXBwZXIpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KndyYXBwZXI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZ2V0RXhpc3RpbmdX
cmFwcGVyU2xvdyhub2RlKTsKLSAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gZ2V0V3JhcHBlcihOb2RlKiBub2RlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICAgICAgaWYgKExJS0VMWSghSXNvbGF0
ZWRXb3JsZDo6Y291bnQoKSkpIHsKKyAgICAgICAgICAgIFY4SXNvbGF0ZWRDb250ZXh0KiBjb250
ZXh0ID0gVjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQoKTsKKyAgICAgICAgICAgIGlmIChM
SUtFTFkoIWNvbnRleHQpKSB7CiAgICAgICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4qIHdyYXBwZXIgPSBub2RlLT53cmFwcGVyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKExJ
S0VMWSghIXdyYXBwZXIpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gKndyYXBwZXI7Cisg
ICAgICAgICAgICAgICAgaWYgKCF3cmFwcGVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOworICAgICAgICAgICAgICAgIHJldHVybiAqd3JhcHBl
cjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBnZXRXcmFwcGVyU2xvdyhub2Rl
KTsKKyAgICAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBjb250ZXh0LT53b3JsZCgpLT5k
b21EYXRhU3RvcmUoKTsKKyAgICAgICAgICAgIERPTU5vZGVNYXBwaW5nJiBkb21Ob2RlTWFwID0g
bm9kZS0+aXNBY3RpdmVOb2RlKCkgPyBzdG9yZS0+YWN0aXZlRG9tTm9kZU1hcCgpIDogc3RvcmUt
PmRvbU5vZGVNYXAoKTsKKyAgICAgICAgICAgIHJldHVybiBkb21Ob2RlTWFwLmdldChub2RlKTsK
ICAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gZ2V0RXhpc3RpbmdXcmFwcGVyU2xvdyhOb2RlKik7Ci0gICAgICAgIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0V3JhcHBlclNsb3coTm9kZSopOwogICAgIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcApp
bmRleCBiYTc1MDVjZjlhNThkM2QzZGM4NDMxZGQ3ZjM0N2U1MmQyZTExY2Y1Li5kYzk5NGRlYjgz
MjMxZDdmN2U0ZTBiNzJjZWVjOGI2MDUyNGM2NDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwCkBAIC0zNyw5ICszNywyMyBAQAogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKICNpbmNs
dWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitWOElzb2xhdGVkQ29udGV4dCogVjhJc29sYXRlZENvbnRleHQ6
OmdldEVudGVyZWQoKQoreworICAgIC8vIFRoaXMgaXMgYSB0ZW1wb3JhcnkgcGVyZm9ybWFuY2Ug
b3B0aW1pemF0aW9uLiBFc3NlbnRpYWxseSwKKyAgICAvLyBHZXRIaWRkZW5WYWx1ZSBpcyB0b28g
c2xvdyBmb3IgdGhpcyBjb2RlIHBhdGguIFdlIG5lZWQgdG8gZ2V0IHRoZQorICAgIC8vIFY4IHRl
YW0gdG8gYWRkIGEgcmVhbCBwcm9wZXJ0eSB0byB2ODo6Q29udGV4dCBmb3IgaXNvbGF0ZWQgd29y
bGRzLgorICAgIC8vIFVudGlsIHRoZW4sIHdlIG9wdGltaXplIHRoZSBjb21tb24gY2FzZSBvZiBu
b3QgaGF2aW5nIGFueSBpc29sYXRlZAorICAgIC8vIHdvcmxkcyBhdCBhbGwuCisgICAgaWYgKCFJ
c29sYXRlZFdvcmxkOjpjb3VudCgpKQorICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoIXY4OjpD
b250ZXh0OjpJbkNvbnRleHQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHJlaW50
ZXJwcmV0X2Nhc3Q8VjhJc29sYXRlZENvbnRleHQqPihnZXRHbG9iYWxPYmplY3Qodjg6OkNvbnRl
eHQ6OkdldEVudGVyZWQoKSktPkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZChWOERPTVdpbmRv
dzo6ZW50ZXJlZElzb2xhdGVkV29ybGRJbmRleCkpOworfQogCiB2b2lkIFY4SXNvbGF0ZWRDb250
ZXh0Ojpjb250ZXh0V2Vha1JlZmVyZW5jZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1
ZT4gb2JqZWN0LCB2b2lkKiBpc29sYXRlZENvbnRleHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuaAppbmRleCBhYzZjY2Q0NGFhNTk3YjZiMjRk
NTc1Y2JiZWViOWM5NDE4ZmM2NTUyLi5jNTVlMjhhYTc1YzJiNzI4ZDE0NDM0YTFhODQzOTEyZGFm
Y2EyYmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVk
Q29udGV4dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250
ZXh0LmgKQEAgLTMzLDggKzMzLDcgQEAKIAogI2luY2x1ZGUgIklzb2xhdGVkV29ybGQuaCIKICNp
bmNsdWRlICJTY3JpcHRTb3VyY2VDb2RlLmgiIC8vIGZvciBXZWJDb3JlOjpTY3JpcHRTb3VyY2VD
b2RlCi0jaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5j
bHVkZSAiU2hhcmVkUGVyc2lzdGVudC5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5j
bHVkZSA8djguaD4KIApAQCAtNzUsMTkgKzc0LDcgQEAgcHVibGljOgogICAgIC8vIEZJWE1FOiBD
b25zaWRlciBlZGdlIGNhc2VzIHdpdGggRE9NIG11dGF0aW9uIGV2ZW50cyB0aGF0IG1pZ2h0CiAg
ICAgLy8gdmlvbGF0ZSB0aGlzIGludmFyaWFudC4KICAgICAvLwotICAgIHN0YXRpYyBWOElzb2xh
dGVkQ29udGV4dCogZ2V0RW50ZXJlZCgpCi0gICAgewotICAgICAgICAvLyBUaGlzIGlzIGEgdGVt
cG9yYXJ5IHBlcmZvcm1hbmNlIG9wdGltaXphdGlvbi4gICBFc3NlbnRpYWxseSwKLSAgICAgICAg
Ly8gR2V0SGlkZGVuVmFsdWUgaXMgdG9vIHNsb3cgZm9yIHRoaXMgY29kZSBwYXRoLiAgV2UgbmVl
ZCB0byBnZXQgdGhlCi0gICAgICAgIC8vIFY4IHRlYW0gdG8gYWRkIGEgcmVhbCBwcm9wZXJ0eSB0
byB2ODo6Q29udGV4dCBmb3IgaXNvbGF0ZWQgd29ybGRzLgotICAgICAgICAvLyBVbnRpbCB0aGVu
LCB3ZSBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2Ugb2Ygbm90IGhhdmluZyBhbnkgaXNvbGF0ZWQK
LSAgICAgICAgLy8gd29ybGRzIGF0IGFsbC4KLSAgICAgICAgaWYgKCFJc29sYXRlZFdvcmxkOjpj
b3VudCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmICghdjg6OkNvbnRleHQ6
OkluQ29udGV4dCgpKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIHJldHVybiByZWlu
dGVycHJldF9jYXN0PFY4SXNvbGF0ZWRDb250ZXh0Kj4oZ2V0R2xvYmFsT2JqZWN0KHY4OjpDb250
ZXh0OjpHZXRFbnRlcmVkKCkpLT5HZXRQb2ludGVyRnJvbUludGVybmFsRmllbGQoVjhET01XaW5k
b3c6OmVudGVyZWRJc29sYXRlZFdvcmxkSW5kZXgpKTsKLSAgICB9CisgICAgc3RhdGljIFY4SXNv
bGF0ZWRDb250ZXh0KiBnZXRFbnRlcmVkKCk7CiAKICAgICB2ODo6SGFuZGxlPHY4OjpDb250ZXh0
PiBjb250ZXh0KCkgeyByZXR1cm4gbV9jb250ZXh0LT5nZXQoKTsgfQogICAgIFBhc3NSZWZQdHI8
U2hhcmVkUGVyc2lzdGVudDx2ODo6Q29udGV4dD4gPiBzaGFyZWRDb250ZXh0KCkgeyByZXR1cm4g
bV9jb250ZXh0OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3Js
ZENvbnRleHRIYW5kbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvV29ybGRDb250
ZXh0SGFuZGxlLmNwcAppbmRleCAyNGY0NjFmZmVlMDdiNWQ0YWEwYjQ5MDMzMjQ3YmI4NDE1M2U2
YjE4Li44NDU2YTNlNWY4ZjA3MDAwODQyNGEwNTQ2NzM5MDkwMjBlOTFiYmU5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAKQEAgLTMy
LDYgKzMyLDcgQEAKICNpbmNsdWRlICJXb3JsZENvbnRleHRIYW5kbGUuaCIKIAogI2luY2x1ZGUg
IlY4SXNvbGF0ZWRDb250ZXh0LmgiCisjaW5jbHVkZSAiVjhQcm94eS5oIgogCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3Rv
bS9WOE5vZGVDdXN0b20uY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4
Tm9kZUN1c3RvbS5jcHAKaW5kZXggMjQyNzExMzQ0NzdmYjAxMjY3MWY1YjY5MWUwZWM0ZjA2ZWEy
YmZhMi4uM2MxMGZhODE5NTBjN2I2NTRhZmIyZGY4MTNhMmUzNjkzMjA0ODljMyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAKQEAg
LTE0Miw3ICsxNDIsNyBAQCB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdG9WOFNsb3coTm9kZSogaW1w
bCwgYm9vbCBmb3JjZU5ld09iamVjdCkKICAgICAgICAgcmV0dXJuIHY4OjpOdWxsKCk7CiAKICAg
ICBpZiAoIWZvcmNlTmV3T2JqZWN0KSB7Ci0gICAgICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3
cmFwcGVyID0gVjhET01XcmFwcGVyOjpnZXRFeGlzdGluZ1dyYXBwZXIoaW1wbCk7CisgICAgICAg
IHY4OjpIYW5kbGU8djg6OlZhbHVlPiB3cmFwcGVyID0gVjhET01XcmFwcGVyOjpnZXRXcmFwcGVy
KGltcGwpOwogICAgICAgICBpZiAoIXdyYXBwZXIuSXNFbXB0eSgpKQogICAgICAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CiAgICAgfQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>131470</attachid>
            <date>2012-03-12 17:32:18 -0700</date>
            <delta_ts>2012-03-12 17:32:18 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-80841-20120313093217.patch</filename>
            <type>text/plain</type>
            <size>12478</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEwNDAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNmIyZThkNmFlMGQ5ZDVl
YjUwMDExMDE2OWU2OTE4ZjY5YTg2YTAyNy4uOWU4OGVlZDRmZGIwN2FkOGY5OTA4ZTRiNTNkOWE0
MjAzMzM3OTI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDM0IEBACisyMDEyLTAzLTEyICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlZmFjdG9y
IFY4IHdyYXBwaW5nIG1ldGhvZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTgwODQxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISku
CisKKyAgICAgICAgUHJldmlvdXNseSBWOERPTVdyYXBwZXIue2gsY3BwfSBoYWQgZ2V0V3JhcHBl
cigpLCBnZXRXcmFwcGVyU2xvdygpLAorICAgICAgICBnZXRFeGlzdGluZ1dyYXBwZXIoKSwgZ2V0
RXhpc3RpbmdXcmFwcGVyU2xvdygpIGFuZCBnZXRFeGlzdGluZ1dyYXBwZXJJbmxpbmUoKSwKKyAg
ICAgICAgd2hpY2ggbWFrZXMgaXQgZGlmZmljdWx0IHRvIHRyYWNrIGNhbGwtcGF0aHMuIFRoaXMg
cGF0Y2ggcmVmYWN0b3JzIHRoZW0KKyAgICAgICAgYW5kIHVuaWZpZXMgdGhlbSBpbnRvIGdldFdy
YXBwZXIoKS4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJlaGF2aW9yLgorCisg
ICAgICAgICogYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcDogTW9kaWZpZWQgYXMgZGVzY3Jp
YmVkIGFib3ZlLgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5oOiBEaXR0by4K
KyAgICAgICAgKFdlYkNvcmU6OlY4RE9NV3JhcHBlcjo6Z2V0V3JhcHBlcik6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG06IERpdHRvLgorICAgICAgICAoR2Vu
ZXJhdGVIZWFkZXIpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOE5vZGVDdXN0b20u
Y3BwOiBEaXR0by4KKyAgICAgICAgKFdlYkNvcmU6OnRvVjhTbG93KToKKworICAgICAgICAqIGJp
bmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oOiBSZXBsYWNlZCBoZWFkZXIgaW5jbHVkZXMgd2l0aCBm
b3J3YXJkIGRlY2xhcmF0aW9ucworICAgICAgICBpbiBvcmRlciB0byBhdm9pZCByZWN1cnNpdmUg
aGVhZGVyIGluY2x1ZGluZy4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOERPTU1hcC5oOiBEaXR0
by4KKyAgICAgICAgKiBiaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHA6IERpdHRvLgor
ICAgICAgICAoV2ViQ29yZTo6VjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQpOgorICAgICAg
ICAqIGJpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0Lmg6IERpdHRvLgorICAgICAgICAoVjhJ
c29sYXRlZENvbnRleHQpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRs
ZS5jcHA6IERpdHRvLgorCiAyMDEyLTAzLTExICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hy
b21pdW0ub3JnPgogCiAgICAgICAgIFJFR1JFU1NJT04gKHI5MzYxNCk6IHNjcm9sbGluZyBkaXYg
ZG9lcyBub3QgcmVwYWludApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRz
L0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBhNWRhYmRmZDU5YzlmNGU1OGU2Y2UzOThjYmFiZGUy
NGU0M2JjYjVmLi41MzI4YWQ4MDViZmRiNzM4ZWE0ZDUzZTEyNDhhNmYzMWVlYWY5MjFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5w
bQpAQCAtNDM1LDcgKzQzNSw3IEBAIEVORAogQUxXQVlTX0lOTElORSB2ODo6SGFuZGxlPHY4OjpP
YmplY3Q+ICR7Y2xhc3NOYW1lfTo6ZXhpc3RpbmdXcmFwcGVyKCR7bmF0aXZlVHlwZX0qIGltcGwp
CiB7CiBFTkQKLSAgICBteSAkZ2V0V3JhcHBlciA9IElzTm9kZVN1YlR5cGUoJGRhdGFOb2RlKSA/
ICJWOERPTVdyYXBwZXI6OmdldEV4aXN0aW5nV3JhcHBlcihpbXBsKSIgOiAiJHtkb21NYXBGdW5j
dGlvbn0uZ2V0KGltcGwpIjsKKyAgICBteSAkZ2V0V3JhcHBlciA9IElzTm9kZVN1YlR5cGUoJGRh
dGFOb2RlKSA/ICJWOERPTVdyYXBwZXI6OmdldFdyYXBwZXIoaW1wbCkiIDogIiR7ZG9tTWFwRnVu
Y3Rpb259LmdldChpbXBsKSI7CiAgICAgcHVzaChAaGVhZGVyQ29udGVudCwgPDxFTkQpOwogICAg
IHJldHVybiAke2dldFdyYXBwZXJ9OwogfQpAQCAtNDgzLDcgKzQ4MywxMCBAQCBpbmxpbmUgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHRvVjgoTm9kZSogaW1wbCwgYm9vbCBmb3JjZU5ld09iamVjdCA9
IGZhbHNlKQogICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKICAgICBpZiAoVU5MSUtFTFkoZm9y
Y2VOZXdPYmplY3QpKQogICAgICAgICByZXR1cm4gdG9WOFNsb3coaW1wbCwgZm9yY2VOZXdPYmpl
Y3QpOwotICAgIHJldHVybiBWOERPTVdyYXBwZXI6OmdldFdyYXBwZXIoaW1wbCk7CisgICAgdjg6
OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6OmdldFdyYXBwZXIoaW1w
bCk7CisgICAgaWYgKCF3cmFwcGVyLklzRW1wdHkoKSkKKyAgICAgICAgcmV0dXJuIHdyYXBwZXI7
CisgICAgcmV0dXJuIHRvVjhTbG93KGltcGwsIGZhbHNlKTsKIH0KIEVORAogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L0RPTURhdGFTdG9yZS5oIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgKaW5kZXggYzU3ZjhiNzI5OGZjYzVl
YmEyYjJmMjI4MWQwNTQ5MzNhYTlkNGQ2Yi4uN2FlYWYwMDgxY2RjYTQ2MWYyYzg4MzU2ZWI3YTM1
NzlkYmZiNjcxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0
YVN0b3JlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvRE9NRGF0YVN0b3JlLmgK
QEAgLTMyLDcgKzMyLDYgQEAKICNkZWZpbmUgRE9NRGF0YVN0b3JlX2gKIAogI2luY2x1ZGUgIlY4
RE9NTWFwLmgiCi0jaW5jbHVkZSAiVjhOb2RlLmgiCiAKICNpbmNsdWRlIDx2OC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOERPTU1hcC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01NYXAuaAppbmRl
eCA0ZmE0OGU0NWU0M2FjNzcwYjQ3ODg0YWJkNzcyZDFiM2EzYzAxNzk1Li4xMzYzYTc5NzUwNDg2
ZWE1OTFjZTAxOTk4NjliM2Q3NDllMjE5ZWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTU1hcC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
RE9NTWFwLmgKQEAgLTE0MSw5ICsxNDEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAg
IERPTVdyYXBwZXJNYXAodjg6OldlYWtSZWZlcmVuY2VDYWxsYmFjayBjYWxsYmFjaykgOiBXZWFr
UmVmZXJlbmNlTWFwPEtleVR5cGUsIHY4OjpPYmplY3Q+KGNhbGxiYWNrKSB7IH0KICAgICB9Owog
Ci0gICAgLy8gQW4gb3BhcXVlIGNsYXNzIHRoYXQgcmVwcmVzZW50cyBhIHNldCBvZiBET00gd3Jh
cHBlcnMuCi0gICAgY2xhc3MgRE9NRGF0YVN0b3JlOwotCiAgICAgLy8gQSB1dGlsaXR5IGNsYXNz
IHRvIG1hbmFnZSB0aGUgbGlmZXRpbWUgb2Ygc2V0IG9mIERPTSB3cmFwcGVycy4KICAgICBjbGFz
cyBET01EYXRhU3RvcmVIYW5kbGUgewogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IDRjZjNjOWE0NmNhNmUwM2MzYTg5MmQ1Y2Y2
NmRkZDAwNDI2ZGI2M2UuLmM5OTUyNzRjYjRiZjFkZTI3NzM1MjQyZmJkZGMyMTAyZGY3YTU5ZmEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAtMzIs
NyArMzIsNiBAQAogI2luY2x1ZGUgIlY4RE9NV3JhcHBlci5oIgogCiAjaW5jbHVkZSAiQXJyYXlC
dWZmZXJWaWV3LmgiCi0jaW5jbHVkZSAiRE9NRGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiRG9jdW1l
bnRMb2FkZXIuaCIKICNpbmNsdWRlICJFdmVudFRhcmdldEhlYWRlcnMuaCIKICNpbmNsdWRlICJF
dmVudFRhcmdldEludGVyZmFjZXMuaCIKQEAgLTQxLDEzICs0MCwxMSBAQAogI2luY2x1ZGUgIlY4
QWJzdHJhY3RFdmVudExpc3RlbmVyLmgiCiAjaW5jbHVkZSAiVjhCaW5kaW5nLmgiCiAjaW5jbHVk
ZSAiVjhDb2xsZWN0aW9uLmgiCi0jaW5jbHVkZSAiVjhET01NYXAuaCIKICNpbmNsdWRlICJWOEV2
ZW50TGlzdGVuZXIuaCIKICNpbmNsdWRlICJWOEV2ZW50TGlzdGVuZXJMaXN0LmgiCiAjaW5jbHVk
ZSAiVjhIVE1MQ29sbGVjdGlvbi5oIgogI2luY2x1ZGUgIlY4SFRNTERvY3VtZW50LmgiCiAjaW5j
bHVkZSAiVjhIaWRkZW5Qcm9wZXJ0eU5hbWUuaCIKLSNpbmNsdWRlICJWOElzb2xhdGVkQ29udGV4
dC5oIgogI2luY2x1ZGUgIlY4TG9jYXRpb24uaCIKICNpbmNsdWRlICJWOE5hbWVkTm9kZU1hcC5o
IgogI2luY2x1ZGUgIlY4Tm9kZUZpbHRlckNvbmRpdGlvbi5oIgpAQCAtNjksMjMgKzY2LDYgQEAK
IAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi10eXBlZGVmIEhhc2hNYXA8Tm9kZSosIHY4OjpPYmpl
Y3QqPiBET01Ob2RlTWFwOwotdHlwZWRlZiBIYXNoTWFwPHZvaWQqLCB2ODo6T2JqZWN0Kj4gRE9N
T2JqZWN0TWFwOwotCi1zdGF0aWMgQUxXQVlTX0lOTElORSB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+
IGdldEV4aXN0aW5nV3JhcHBlcklubGluZShOb2RlKiBub2RlKQotewotICAgIFY4SXNvbGF0ZWRD
b250ZXh0KiBjb250ZXh0ID0gVjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQoKTsKLSAgICBp
ZiAoTElLRUxZKCFjb250ZXh0KSkgewotICAgICAgICB2ODo6UGVyc2lzdGVudDx2ODo6T2JqZWN0
Piogd3JhcHBlciA9IG5vZGUtPndyYXBwZXIoKTsKLSAgICAgICAgaWYgKCF3cmFwcGVyKQotICAg
ICAgICAgICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4oKTsKLSAgICAgICAgcmV0dXJu
ICp3cmFwcGVyOwotICAgIH0KLSAgICBET01EYXRhU3RvcmUqIHN0b3JlID0gY29udGV4dC0+d29y
bGQoKS0+ZG9tRGF0YVN0b3JlKCk7Ci0gICAgRE9NTm9kZU1hcHBpbmcmIGRvbU5vZGVNYXAgPSBu
b2RlLT5pc0FjdGl2ZU5vZGUoKSA/IHN0b3JlLT5hY3RpdmVEb21Ob2RlTWFwKCkgOiBzdG9yZS0+
ZG9tTm9kZU1hcCgpOwotICAgIHJldHVybiBkb21Ob2RlTWFwLmdldChub2RlKTsKLX0KLQogLy8g
VGhlIGNhbGxlciBtdXN0IGhhdmUgaW5jcmVhc2VkIG9iaidzIHJlZiBjb3VudC4KIHZvaWQgVjhE
T01XcmFwcGVyOjpzZXRKU1dyYXBwZXJGb3JET01PYmplY3Qodm9pZCogb2JqZWN0LCB2ODo6UGVy
c2lzdGVudDx2ODo6T2JqZWN0PiB3cmFwcGVyKQogewpAQCAtMzA2LDE5ICsyODYsNiBAQCBib29s
IFY4RE9NV3JhcHBlcjo6aXNXcmFwcGVyT2ZUeXBlKHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1
ZSwgV3JhcHBlclR5cGVJbmZvKgogICAgIHJldHVybiB0eXBlSW5mbyA9PSB0eXBlOwogfQogCi12
ODo6SGFuZGxlPHY4OjpPYmplY3Q+IFY4RE9NV3JhcHBlcjo6Z2V0RXhpc3RpbmdXcmFwcGVyU2xv
dyhOb2RlKiBub2RlKQotewotICAgIHJldHVybiBnZXRFeGlzdGluZ1dyYXBwZXJJbmxpbmUobm9k
ZSk7Ci19Ci0KLXY4OjpIYW5kbGU8djg6OlZhbHVlPiBWOERPTVdyYXBwZXI6OmdldFdyYXBwZXJT
bG93KE5vZGUqIG5vZGUpCi17Ci0gICAgdjg6OkhhbmRsZTx2ODo6T2JqZWN0PiB3cmFwcGVyID0g
Z2V0RXhpc3RpbmdXcmFwcGVySW5saW5lKG5vZGUpOwotICAgIGlmICghd3JhcHBlci5Jc0VtcHR5
KCkpCi0gICAgICAgIHJldHVybiB3cmFwcGVyOwotICAgIHJldHVybiB0b1Y4U2xvdyhub2RlLCBm
YWxzZSk7Ci19Ci0KICNkZWZpbmUgVFJZX1RPX1dSQVBfV0lUSF9JTlRFUkZBQ0UoaW50ZXJmYWNl
TmFtZSkgXAogICAgIGlmIChldmVudE5hbWVzKCkuaW50ZXJmYWNlRm9yIyNpbnRlcmZhY2VOYW1l
ID09IGRlc2lyZWRJbnRlcmZhY2UpIFwKICAgICAgICAgcmV0dXJuIHRvVjgoc3RhdGljX2Nhc3Q8
aW50ZXJmYWNlTmFtZSo+KHRhcmdldCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhET01XcmFwcGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERP
TVdyYXBwZXIuaAppbmRleCBkM2NhNTFlMDY5YzIwNzVmNGRiMjM5YmJiNTczOTU0ZmE3MjFjZDg2
Li4yNDYyYWFmZmUyOTE4OTAxNzk2ZmIwNmVjMjhkM2UxNjMxODc5OGM2IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy92OC9WOERPTVdyYXBwZXIuaApAQCAtMzEsNiArMzEsNyBAQAogI2lmbmRl
ZiBWOERPTVdyYXBwZXJfaAogI2RlZmluZSBWOERPTVdyYXBwZXJfaAogCisjaW5jbHVkZSAiRE9N
RGF0YVN0b3JlLmgiCiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJJc29sYXRlZFdvcmxk
LmgiCiAjaW5jbHVkZSAiTm9kZS5oIgpAQCAtMzgsNiArMzksNyBAQAogI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCiAjaW5jbHVkZSAiVjhDdXN0b21YUGF0aE5TUmVzb2x2ZXIuaCIKICNpbmNs
dWRlICJWOEV2ZW50LmgiCisjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKICNpbmNsdWRl
ICJWOFV0aWxpdGllcy5oIgogI2luY2x1ZGUgIlY4WFBhdGhOU1Jlc29sdmVyLmgiCiAjaW5jbHVk
ZSAiV3JhcHBlclR5cGVJbmZvLmgiCkBAIC0xMjQsNyArMTI2LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiAgICAgICAgIHN0YXRpYyB2ODo6TG9jYWw8djg6Ok9iamVjdD4gaW5zdGFudGlhdGVW
OE9iamVjdChWOFByb3h5KiBwcm94eSwgV3JhcHBlclR5cGVJbmZvKiwgdm9pZCogaW1wbCk7CiAK
LSAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6Ok9iamVjdD4gZ2V0RXhpc3RpbmdXcmFwcGVy
KE5vZGUqIG5vZGUpCisgICAgICAgIHN0YXRpYyB2ODo6SGFuZGxlPHY4OjpPYmplY3Q+IGdldFdy
YXBwZXIoTm9kZSogbm9kZSkKICAgICAgICAgewogICAgICAgICAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKICAgICAgICAgICAgIGlmIChMSUtFTFkoIUlzb2xhdGVkV29ybGQ6OmNvdW50KCkp
KSB7CkBAIC0xMzIsMjMgKzEzNCwxOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAg
ICAgICAgaWYgKExJS0VMWSghIXdyYXBwZXIpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4g
KndyYXBwZXI7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gZ2V0RXhpc3RpbmdX
cmFwcGVyU2xvdyhub2RlKTsKLSAgICAgICAgfQogCi0gICAgICAgIHN0YXRpYyB2ODo6SGFuZGxl
PHY4OjpWYWx1ZT4gZ2V0V3JhcHBlcihOb2RlKiBub2RlKQotICAgICAgICB7Ci0gICAgICAgICAg
ICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICAgICAgaWYgKExJS0VMWSghSXNvbGF0
ZWRXb3JsZDo6Y291bnQoKSkpIHsKKyAgICAgICAgICAgIFY4SXNvbGF0ZWRDb250ZXh0KiBjb250
ZXh0ID0gVjhJc29sYXRlZENvbnRleHQ6OmdldEVudGVyZWQoKTsKKyAgICAgICAgICAgIGlmIChM
SUtFTFkoIWNvbnRleHQpKSB7CiAgICAgICAgICAgICAgICAgdjg6OlBlcnNpc3RlbnQ8djg6Ok9i
amVjdD4qIHdyYXBwZXIgPSBub2RlLT53cmFwcGVyKCk7Ci0gICAgICAgICAgICAgICAgaWYgKExJ
S0VMWSghIXdyYXBwZXIpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gKndyYXBwZXI7Cisg
ICAgICAgICAgICAgICAgaWYgKCF3cmFwcGVyKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4g
djg6OkhhbmRsZTx2ODo6T2JqZWN0PigpOworICAgICAgICAgICAgICAgIHJldHVybiAqd3JhcHBl
cjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBnZXRXcmFwcGVyU2xvdyhub2Rl
KTsKKyAgICAgICAgICAgIERPTURhdGFTdG9yZSogc3RvcmUgPSBjb250ZXh0LT53b3JsZCgpLT5k
b21EYXRhU3RvcmUoKTsKKyAgICAgICAgICAgIERPTU5vZGVNYXBwaW5nJiBkb21Ob2RlTWFwID0g
bm9kZS0+aXNBY3RpdmVOb2RlKCkgPyBzdG9yZS0+YWN0aXZlRG9tTm9kZU1hcCgpIDogc3RvcmUt
PmRvbU5vZGVNYXAoKTsKKyAgICAgICAgICAgIHJldHVybiBkb21Ob2RlTWFwLmdldChub2RlKTsK
ICAgICAgICAgfQotCi0gICAgcHJpdmF0ZToKLSAgICAgICAgc3RhdGljIHY4OjpIYW5kbGU8djg6
Ok9iamVjdD4gZ2V0RXhpc3RpbmdXcmFwcGVyU2xvdyhOb2RlKik7Ci0gICAgICAgIHN0YXRpYyB2
ODo6SGFuZGxlPHY4OjpWYWx1ZT4gZ2V0V3JhcHBlclNsb3coTm9kZSopOwogICAgIH07CiAKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmNwcApp
bmRleCBiYTc1MDVjZjlhNThkM2QzZGM4NDMxZGQ3ZjM0N2U1MmQyZTExY2Y1Li4zNGMxNzAzODQ0
OGI5YTYxOTU3YTBlNWNjZTM2ZWE0MjU3NTlhZGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
YmluZGluZ3MvdjgvVjhJc29sYXRlZENvbnRleHQuY3BwCkBAIC0zNyw5ICszNywxNCBAQAogI2lu
Y2x1ZGUgIlNlY3VyaXR5T3JpZ2luLmgiCiAjaW5jbHVkZSAiVjhET01XaW5kb3cuaCIKICNpbmNs
dWRlICJWOEhpZGRlblByb3BlcnR5TmFtZS5oIgorI2luY2x1ZGUgIlY4UHJveHkuaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCitWOElzb2xhdGVkQ29udGV4dCogVjhJc29sYXRlZENvbnRleHQ6
Omlzb2xhdGVkQ29udGV4dCgpCit7CisgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8VjhJc29s
YXRlZENvbnRleHQqPihnZXRHbG9iYWxPYmplY3Qodjg6OkNvbnRleHQ6OkdldEVudGVyZWQoKSkt
PkdldFBvaW50ZXJGcm9tSW50ZXJuYWxGaWVsZChWOERPTVdpbmRvdzo6ZW50ZXJlZElzb2xhdGVk
V29ybGRJbmRleCkpOworfQogCiB2b2lkIFY4SXNvbGF0ZWRDb250ZXh0Ojpjb250ZXh0V2Vha1Jl
ZmVyZW5jZUNhbGxiYWNrKHY4OjpQZXJzaXN0ZW50PHY4OjpWYWx1ZT4gb2JqZWN0LCB2b2lkKiBp
c29sYXRlZENvbnRleHQpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92
OC9WOElzb2xhdGVkQ29udGV4dC5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhJc29s
YXRlZENvbnRleHQuaAppbmRleCBhYzZjY2Q0NGFhNTk3YjZiMjRkNTc1Y2JiZWViOWM5NDE4ZmM2
NTUyLi4yMjdhNzNkOTNlNzZkZmQzYjM0MjdmZDMxZTBmYjk3OTFlNmFmMGUyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOElzb2xhdGVkQ29udGV4dC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4SXNvbGF0ZWRDb250ZXh0LmgKQEAgLTMzLDggKzMz
LDcgQEAKIAogI2luY2x1ZGUgIklzb2xhdGVkV29ybGQuaCIKICNpbmNsdWRlICJTY3JpcHRTb3Vy
Y2VDb2RlLmgiIC8vIGZvciBXZWJDb3JlOjpTY3JpcHRTb3VyY2VDb2RlCi0jaW5jbHVkZSAiVjhE
T01XaW5kb3cuaCIKLSNpbmNsdWRlICJWOFByb3h5LmgiCisjaW5jbHVkZSAiU2hhcmVkUGVyc2lz
dGVudC5oIgogI2luY2x1ZGUgIlY4VXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8djguaD4KIApAQCAt
NzcsOCArNzYsOCBAQCBwdWJsaWM6CiAgICAgLy8KICAgICBzdGF0aWMgVjhJc29sYXRlZENvbnRl
eHQqIGdldEVudGVyZWQoKQogICAgIHsKLSAgICAgICAgLy8gVGhpcyBpcyBhIHRlbXBvcmFyeSBw
ZXJmb3JtYW5jZSBvcHRpbWl6YXRpb24uICAgRXNzZW50aWFsbHksCi0gICAgICAgIC8vIEdldEhp
ZGRlblZhbHVlIGlzIHRvbyBzbG93IGZvciB0aGlzIGNvZGUgcGF0aC4gIFdlIG5lZWQgdG8gZ2V0
IHRoZQorICAgICAgICAvLyBUaGlzIGlzIGEgdGVtcG9yYXJ5IHBlcmZvcm1hbmNlIG9wdGltaXph
dGlvbi4gRXNzZW50aWFsbHksCisgICAgICAgIC8vIEdldEhpZGRlblZhbHVlIGlzIHRvbyBzbG93
IGZvciB0aGlzIGNvZGUgcGF0aC4gV2UgbmVlZCB0byBnZXQgdGhlCiAgICAgICAgIC8vIFY4IHRl
YW0gdG8gYWRkIGEgcmVhbCBwcm9wZXJ0eSB0byB2ODo6Q29udGV4dCBmb3IgaXNvbGF0ZWQgd29y
bGRzLgogICAgICAgICAvLyBVbnRpbCB0aGVuLCB3ZSBvcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2Ug
b2Ygbm90IGhhdmluZyBhbnkgaXNvbGF0ZWQKICAgICAgICAgLy8gd29ybGRzIGF0IGFsbC4KQEAg
LTg2LDcgKzg1LDcgQEAgcHVibGljOgogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlm
ICghdjg6OkNvbnRleHQ6OkluQ29udGV4dCgpKQogICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAg
ICAgIHJldHVybiByZWludGVycHJldF9jYXN0PFY4SXNvbGF0ZWRDb250ZXh0Kj4oZ2V0R2xvYmFs
T2JqZWN0KHY4OjpDb250ZXh0OjpHZXRFbnRlcmVkKCkpLT5HZXRQb2ludGVyRnJvbUludGVybmFs
RmllbGQoVjhET01XaW5kb3c6OmVudGVyZWRJc29sYXRlZFdvcmxkSW5kZXgpKTsKKyAgICAgICAg
cmV0dXJuIGlzb2xhdGVkQ29udGV4dCgpOwogICAgIH0KIAogICAgIHY4OjpIYW5kbGU8djg6OkNv
bnRleHQ+IGNvbnRleHQoKSB7IHJldHVybiBtX2NvbnRleHQtPmdldCgpOyB9CkBAIC0xMDcsNiAr
MTA2LDggQEAgcHJpdmF0ZToKICAgICAvLyB0byBiZSBkZXN0cm95ZWQuCiAgICAgc3RhdGljIHZv
aWQgY29udGV4dFdlYWtSZWZlcmVuY2VDYWxsYmFjayh2ODo6UGVyc2lzdGVudDx2ODo6VmFsdWU+
IG9iamVjdCwgdm9pZCogaXNvbGF0ZWRDb250ZXh0KTsKIAorICAgIHN0YXRpYyBWOElzb2xhdGVk
Q29udGV4dCogaXNvbGF0ZWRDb250ZXh0KCk7CisKICAgICAvLyBUaGUgdW5kZXJseWluZyB2ODo6
Q29udGV4dC4gVGhpcyBvYmplY3QgaXMga2VlcCBvbiB0aGUgaGVhcCBhcwogICAgIC8vIGxvbmcg
YXMgfG1fY29udGV4dHwgaGFzIG5vdCBiZWVuIGdhcmJhZ2UgY29sbGVjdGVkLgogICAgIFJlZlB0
cjxTaGFyZWRQZXJzaXN0ZW50PHY4OjpDb250ZXh0PiA+IG1fY29udGV4dDsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9Xb3JsZENvbnRleHRIYW5kbGUuY3BwCmluZGV4IDI0ZjQ2
MWZmZWUwN2I1ZDRhYTBiNDkwMzMyNDdiYjg0MTUzZTZiMTguLjg0NTZhM2U1ZjhmMDcwMDA4NDI0
YTA1NDY3MzkwOTAyMGU5MWJiZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3Y4L1dvcmxkQ29udGV4dEhhbmRsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvV29ybGRDb250ZXh0SGFuZGxlLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIldv
cmxkQ29udGV4dEhhbmRsZS5oIgogCiAjaW5jbHVkZSAiVjhJc29sYXRlZENvbnRleHQuaCIKKyNp
bmNsdWRlICJWOFByb3h5LmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4Tm9kZUN1c3RvbS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAppbmRleCAyNDI3
MTEzNDQ3N2ZiMDEyNjcxZjViNjkxZTBlYzRmMDZlYTJiZmEyLi4zYzEwZmE4MTk1MGM3YjY1NGFm
YjJkZjgxM2EyZTM2OTMyMDQ4OWMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy92OC9jdXN0b20vVjhOb2RlQ3VzdG9tLmNwcApAQCAtMTQyLDcgKzE0Miw3IEBAIHY4OjpIYW5k
bGU8djg6OlZhbHVlPiB0b1Y4U2xvdyhOb2RlKiBpbXBsLCBib29sIGZvcmNlTmV3T2JqZWN0KQog
ICAgICAgICByZXR1cm4gdjg6Ok51bGwoKTsKIAogICAgIGlmICghZm9yY2VOZXdPYmplY3QpIHsK
LSAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdyYXBwZXIgPSBWOERPTVdyYXBwZXI6Omdl
dEV4aXN0aW5nV3JhcHBlcihpbXBsKTsKKyAgICAgICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHdy
YXBwZXIgPSBWOERPTVdyYXBwZXI6OmdldFdyYXBwZXIoaW1wbCk7CiAgICAgICAgIGlmICghd3Jh
cHBlci5Jc0VtcHR5KCkpCiAgICAgICAgICAgICByZXR1cm4gd3JhcHBlcjsKICAgICB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>