<?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>94573</bug_id>
          
          <creation_ts>2012-08-20 22:25:08 -0700</creation_ts>
          <short_desc>[V8] Remove getToStringName() and getToStringTemplate() from V8PerIsolateData</short_desc>
          <delta_ts>2012-08-21 17:32:28 -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>93095</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>eric.carlson</cc>
    
    <cc>feature-media-reviews</cc>
    
    <cc>japhet</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>700479</commentid>
    <comment_count>0</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 22:25:08 -0700</bug_when>
    <thetext>V8PerIsolateData::getToStringName() and V8PerIsolateData::getToStringTemplate() are not used at all. We can remove it and refactor the code around them.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700480</commentid>
    <comment_count>1</comment_count>
      <attachid>159621</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 22:30:41 -0700</bug_when>
    <thetext>Created attachment 159621
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700498</commentid>
    <comment_count>2</comment_count>
      <attachid>159621</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-20 23:18:29 -0700</bug_when>
    <thetext>Comment on attachment 159621
Patch

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

&gt; Source/WebCore/bindings/scripts/CodeGeneratorV8.pm:2964
&gt; -    desc-&gt;Set(getToStringName(), getToStringTemplate());
&gt; +    desc-&gt;Set(v8::String::NewSymbol(&quot;toString&quot;), v8::Persistent&lt;v8::FunctionTemplate&gt;::New(v8::FunctionTemplate::New(constructorToString)));

This doesn&apos;t leak the persistent handle?  m_toStringTemplate used to make us reuse the handle.  I guess we only do this when configuration the template, so it&apos;s bounded in any case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700500</commentid>
    <comment_count>3</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-20 23:27:06 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; &gt; +    desc-&gt;Set(v8::String::NewSymbol(&quot;toString&quot;), v8::Persistent&lt;v8::FunctionTemplate&gt;::New(v8::FunctionTemplate::New(constructorToString)));
&gt; 
&gt; This doesn&apos;t leak the persistent handle?  m_toStringTemplate used to make us reuse the handle.  I guess we only do this when configuration the template, so it&apos;s bounded in any case.

Good point. Maybe the real problem is that the current code fails to store the created persistent handle to V8PerIsolateData? In the current code (and in the uploaded patch), every time getToStringTemplate() is called, a new persistent handle is created. We should cache the persistent handle to V8PerIsolateData.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700583</commentid>
    <comment_count>4</comment_count>
      <attachid>159645</attachid>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-21 03:37:33 -0700</bug_when>
    <thetext>Created attachment 159645
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700590</commentid>
    <comment_count>5</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-21 03:47:57 -0700</bug_when>
    <thetext>(In reply to comment #3)
&gt; Good point. Maybe the real problem is that the current code fails to store the created persistent handle to V8PerIsolateData? In the current code (and in the uploaded patch), every time getToStringTemplate() is called, a new persistent handle is created. We should cache the persistent handle to V8PerIsolateData.

Uploaded the patch to fix the issue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>700753</commentid>
    <comment_count>6</comment_count>
      <attachid>159645</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2012-08-21 07:50:22 -0700</bug_when>
    <thetext>Comment on attachment 159645
Patch

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

&gt; Source/WebCore/bindings/v8/V8Binding.cpp:-354
&gt; -    v8::Persistent&lt;v8::FunctionTemplate&gt;&amp; toStringTemplate = V8PerIsolateData::current()-&gt;toStringTemplate();
&gt; -    if (toStringTemplate.IsEmpty())
&gt; -        toStringTemplate = v8::Persistent&lt;v8::FunctionTemplate&gt;::New(v8::FunctionTemplate::New(constructorToString));

I mean, this used to store the persistent handle because toStringTemplate is a non-const reference.  However, it&apos;s not very clear code!  :)

&gt; Source/WebCore/bindings/v8/V8PerIsolateData.h:55
&gt; +v8::Handle&lt;v8::Value&gt; constructorOfToString(const v8::Arguments&amp;);

Should we make this a static function in V8PerIsolateData?  That way we could make it private.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701369</commentid>
    <comment_count>7</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-21 17:32:09 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; &gt; Source/WebCore/bindings/v8/V8PerIsolateData.h:55
&gt; &gt; +v8::Handle&lt;v8::Value&gt; constructorOfToString(const v8::Arguments&amp;);
&gt; 
&gt; Should we make this a static function in V8PerIsolateData?  That way we could make it private.

Fixed and landed. Thanks.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>701370</commentid>
    <comment_count>8</comment_count>
    <who name="Kentaro Hara">haraken</who>
    <bug_when>2012-08-21 17:32:28 -0700</bug_when>
    <thetext>Committed r126237: &lt;http://trac.webkit.org/changeset/126237&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159621</attachid>
            <date>2012-08-20 22:30:41 -0700</date>
            <delta_ts>2012-08-21 03:37:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94573-20120821143000.patch</filename>
            <type>text/plain</type>
            <size>17205</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTgzNDUzMGFhYWZjZjNm
YjMyNTk0YmI3YTVmNGVmOTAzNDJlMjk2Ny4uNjkzNThlZjdhZGE1YTI3Y2ZmY2NmMWFhYWJkNGZh
NjU2NzM1YThlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUyIEBACisyMDEyLTA4LTIwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlbW92ZSBn
ZXRUb1N0cmluZ05hbWUoKSBhbmQgZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpIGZyb20gVjhQZXJJc29s
YXRlRGF0YQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTQ1NzMKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBW
OFBlcklzb2xhdGVEYXRhOjpnZXRUb1N0cmluZ05hbWUoKSBhbmQgVjhQZXJJc29sYXRlRGF0YTo6
Z2V0VG9TdHJpbmdUZW1wbGF0ZSgpCisgICAgICAgIGFyZSBub3QgdXNlZCBhdCBhbGwuIFdlIGNh
biByZW1vdmUgdGhlbSBhbmQgcmVmYWN0b3IgdGhlIGNvZGUgYXJvdW5kIHRoZW0uCisKKyAgICAg
ICAgTm8gdGVzdHMuIE5vIGNoYW5nZSBpbiBiZWhhdmlvci4KKworICAgICAgICAqIGJpbmRpbmdz
L3Y4L1Y4QmluZGluZy5jcHA6CisgICAgICAgICAgICAtIFdlIGNhbiByZW1vdmUgZ2V0VG9TdHJp
bmdOYW1lKCkgYW5kIGdldFRvU3RyaW5nVGVtcGxhdGUoKQorICAgICAgICAgICAgICBiZWNhdXNl
IENvZGVHZW5lcmF0b3JWOC5wbSBpcyB0aGUgb25seSB1c2VyIG9mIHRoZW0uCisgICAgICAgICAg
ICAtICJ0b1N0cmluZyIgZG9lcyBub3QgbmVlZCB0byBiZSBhIFBlcnNpc3RlbnQgaGFuZGxlLgor
ICAgICAgICAgICAgICBJdCBzaG91bGQgYmUgY3JlYXRlZCBieSB2ODo6U3RyaW5nOjpOZXdTeW1i
b2woInRvU3RyaW5nIikuCisgICAgICAgIChXZWJDb3JlOjpjb25zdHJ1Y3RvclRvU3RyaW5nKToK
KyAgICAgICAgKiBiaW5kaW5ncy92OC9WOEJpbmRpbmcuaDoKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAo
R2VuZXJhdGVJbXBsZW1lbnRhdGlvbik6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4Rmxv
YXQ2NEFycmF5VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9W
OFRlc3RBY3RpdmVET01PYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhU
ZXN0QWN0aXZlRE9NT2JqZWN0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
b25maWd1cmVWOFRlc3RDdXN0b21OYW1lZEdldHRlclRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGxhdGUpOgorICAg
ICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RFdmVudFRhcmdldFRlbXBsYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEV4Y2VwdGlvblRlbXBsYXRlKToKKyAgICAg
ICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKToKKyAgICAgICAg
KiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3Rl
bmVyVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RO
YW1lZENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE5h
bWVkQ29uc3RydWN0b3JUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5vZGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0Tm9k
ZVRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2Jq
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKToKKyAg
ICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZh
bHVlSW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdFNlcmlh
bGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZVRlbXBsYXRlKToKKyAgICAgICAgKiBiaW5kaW5ncy92
OC9WOFBlcklzb2xhdGVEYXRhLmg6CisgICAgICAgIChWOFBlcklzb2xhdGVEYXRhKToKKwogMjAx
Mi0wOC0yMCAgU2hpbnlhIEthd2FuYWthICA8c2hpbnlha0BjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgU2hhZG93Um9vdC5jbG9uZU5vZGUoKSBtdXN0IGFsd2F5cyB0aHJvdyBhIERBVEFfQ0xPTkVf
RVJSIGV4Y2VwdGlvbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvQ29kZUdlbmVyYXRvclY4LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9D
b2RlR2VuZXJhdG9yVjgucG0KaW5kZXggYmY2MzY3ODRhMjgxY2RhMmQwNDNhYzRlOGY0ZGFlNzkz
NzQ5NTlkNi4uN2MyNGQ1MmUwMWU3MGI0ZjJmODc3MWIxMGJiOTFmMzljZTFjZGFlZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
QEAgLTI5NjEsNyArMjk2MSw3IEBAIEVORAogICAgIHB1c2goQGltcGxDb250ZW50LCA8PEVORCk7
CiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKLSAgICBkZXNjLT5TZXQoZ2V0VG9T
dHJpbmdOYW1lKCksIGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgZGVzYy0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhjb25zdHJ1Y3RvclRvU3Ry
aW5nKSkpOwogICAgIHJldHVybiBkZXNjOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcAppbmRleCA2
NDU0YTk2ZmU4NzQ4OWIzMTBkNTE4MTJlZmVjMDg3NWExYmMzNjlhLi44Zjk0ZmRmNDE2ZGE1YTIy
MzdkZjZhMDM3ZjUyM2VjMzk0YTNjMWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKQEAgLTExMCw3
ICsxMTAsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4RmxvYXQ2NEFycmF5VGVtcGxhdGUodjg6OgogICAgIHByb3RvLT5TZXQodjg6OlN0
cmluZzo6TmV3KCJmb28iKSwgdjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhGbG9hdDY0QXJyYXlW
OEludGVybmFsOjpmb29DYWxsYmFjaywgdjhVbmRlZmluZWQoKSwgZm9vU2lnbmF0dXJlKSk7CiAK
ICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKLSAgICBkZXNjLT5TZXQoZ2V0VG9TdHJp
bmdOYW1lKCksIGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgZGVzYy0+U2V0KHY4OjpTdHJp
bmc6Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhjb25zdHJ1Y3RvclRvU3RyaW5n
KSkpOwogICAgIHJldHVybiBkZXNjOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0QWN0aXZlRE9NT2JqZWN0LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3Qu
Y3BwCmluZGV4IDg4Njc5ODQxZWY4NzI1Y2NmNDk1MWFjZDRlNjg0YmNiMmVhOWUzZjcuLjc1M2U4
YjRjOTYxY2Y4NmUwMTA0Y2RjNjNlOTU5NjA1ZjNmYTE5MzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3Rp
dmVET01PYmplY3QuY3BwCkBAIC0xNDAsNyArMTQwLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1w
bGEKICAgICBwcm90by0+U2V0QWNjZXNzb3Iodjg6OlN0cmluZzo6TmV3KCJwb3N0TWVzc2FnZSIp
LCBUZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6cG9zdE1lc3NhZ2VBdHRyR2V0dGVyLCBU
ZXN0QWN0aXZlRE9NT2JqZWN0VjhJbnRlcm5hbDo6VGVzdEFjdGl2ZURPTU9iamVjdERvbWFpblNh
ZmVGdW5jdGlvblNldHRlciwgdjhVbmRlZmluZWQoKSwgdjg6OkFMTF9DQU5fUkVBRCwgc3RhdGlj
X2Nhc3Q8djg6OlByb3BlcnR5QXR0cmlidXRlPih2ODo6RG9udERlbGV0ZSkpOwogCiAgICAgLy8g
Q3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCi0gICAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFtZSgp
LCBnZXRUb1N0cmluZ1RlbXBsYXRlKCkpOworICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdT
eW1ib2woInRvU3RyaW5nIiksIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6
TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoY29uc3RydWN0b3JUb1N0cmluZykpKTsKICAg
ICByZXR1cm4gZGVzYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAK
aW5kZXggODg4Y2FlODMyZGJjMDE2OGVhYWQzNjZlNTI0YjU3MmE2ODlmM2Q4ZS4uNDNhYjYxZTQz
NDNkOTI1YTNiNTQ4MDBhNmQyMDM4NjY0N2YxY2Q4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVkR2V0dGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9t
TmFtZWRHZXR0ZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2
ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0Q3VzdG9tTmFtZWRHZXR0ZXJUZW1w
CiAgICAgZGVzYy0+SW5zdGFuY2VUZW1wbGF0ZSgpLT5TZXROYW1lZFByb3BlcnR5SGFuZGxlcihW
OFRlc3RDdXN0b21OYW1lZEdldHRlcjo6bmFtZWRQcm9wZXJ0eUdldHRlciwgMCwgMCwgMCwgMCk7
CiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKLSAgICBkZXNjLT5TZXQoZ2V0VG9T
dHJpbmdOYW1lKCksIGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgZGVzYy0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhjb25zdHJ1Y3RvclRvU3Ry
aW5nKSkpOwogICAgIHJldHVybiBkZXNjOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1
Y3Rvci5jcHAKaW5kZXggMjM3NjkxM2E5YTE0ZjkxZGU1Yzc4Mjc3YWRiNTdlZTdmZTEzZTRkNi4u
NzQ2Yzg4OTk3YmYyNjc2YzYyMWYzYmY1NmUzNjYyZTE0MDE3NDhmNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0
b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudENvbnN0cnVjdG9yLmNwcApAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRDb25zdHJ1
Y3RvclRlbXBsCiAgICAgCiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKLSAgICBk
ZXNjLT5TZXQoZ2V0VG9TdHJpbmdOYW1lKCksIGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAg
ZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhj
b25zdHJ1Y3RvclRvU3RyaW5nKSkpOwogICAgIHJldHVybiBkZXNjOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2
ZW50VGFyZ2V0LmNwcAppbmRleCBiN2YxYTQ5Zjg5YjBiMzkxZWU4ZTkxYzRmZTgzNTgyZWZlOGIx
Njg5Li5jN2M1ZmVkMjU3MTE2NjEyNWJkMjQwMDJhYTE1NDQ1YjY2ZjdmZmQ1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudFRhcmdldC5jcHAKQEAgLTEzNCw3ICsxMzQsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3Rl
bnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxh
dGUodgogICAgIHByb3RvLT5TZXQodjg6OlN0cmluZzo6TmV3KCJkaXNwYXRjaEV2ZW50IiksIHY4
OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoVGVzdEV2ZW50VGFyZ2V0VjhJbnRlcm5hbDo6ZGlzcGF0
Y2hFdmVudENhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBkaXNwYXRjaEV2ZW50U2lnbmF0dXJlKSk7
CiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKLSAgICBkZXNjLT5TZXQoZ2V0VG9T
dHJpbmdOYW1lKCksIGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgZGVzYy0+U2V0KHY4OjpT
dHJpbmc6Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhjb25zdHJ1Y3RvclRvU3Ry
aW5nKSkpOwogICAgIHJldHVybiBkZXNjOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXhjZXB0aW9uLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCmluZGV4
IDliYjk5YWMzZTc5NjNhZDkzNmFlZWZhZDk2ZmFmNjdhMmUwYjc5ZWUuLjMxNDE5YTYzZjY0NTE3
YzljOTE1MTA5ZmU4MzI4ZjMxMGIwOThhMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwCkBAIC02
NCw3ICs2NCw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
Q29uZmlndXJlVjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUodjg6CiAgICAgCiAKICAgICAvLyBDdXN0
b20gdG9TdHJpbmcgdGVtcGxhdGUKLSAgICBkZXNjLT5TZXQoZ2V0VG9TdHJpbmdOYW1lKCksIGdl
dFRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJv
bCgidG9TdHJpbmciKSwgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXco
djg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhjb25zdHJ1Y3RvclRvU3RyaW5nKSkpOwogICAgIHJl
dHVybiBkZXNjOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3Jp
cHRzL3Rlc3QvVjgvVjhUZXN0SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCmluZGV4IGM2OTM0ZDdjNGEzNTAy
MDEzMjgwZmVjNzczZDUzNWZjMTM0YmE3ZWYuLjA1YjVlNDU2NWZmZTU0MzdhZTJkNTBiNDk4M2Y4
YjAzMTc3YjQ0ZDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwCkBAIC0zMDMsNyArMzAzLDcgQEAg
c3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRl
c3RJbnRlcmZhY2VUZW1wbGF0ZSh2ODoKICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29u
ZmlndXJlQ29uc3RhbnRzKGRlc2MsIHByb3RvLCBUZXN0SW50ZXJmYWNlQ29uc3RzLCBXVEZfQVJS
QVlfTEVOR1RIKFRlc3RJbnRlcmZhY2VDb25zdHMpKTsKIAogICAgIC8vIEN1c3RvbSB0b1N0cmlu
ZyB0ZW1wbGF0ZQotICAgIGRlc2MtPlNldChnZXRUb1N0cmluZ05hbWUoKSwgZ2V0VG9TdHJpbmdU
ZW1wbGF0ZSgpKTsKKyAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmlu
ZyIpLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rp
b25UZW1wbGF0ZTo6TmV3KGNvbnN0cnVjdG9yVG9TdHJpbmcpKSk7CiAgICAgcmV0dXJuIGRlc2M7
CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRp
bmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAppbmRl
eCA0ZDNkOTViZTBiNzAyNjk0M2UyOTZjNDE0MGZkODgxZmQxNTBiZmM5Li5iODY2ZTI0Zjg3ZjU3
NjMzZWFiNmZkNjEzNmJlMzE2MDgwYmY5ODdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlh
UXVlcnlMaXN0TGlzdGVuZXIuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0TWVkaWFRdWVyeUxpc3RM
aXN0ZW5lCiAgICAgCiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKLSAgICBkZXNj
LT5TZXQoZ2V0VG9TdHJpbmdOYW1lKCksIGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgZGVz
Yy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgdjg6OlBlcnNpc3RlbnQ8
djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVtcGxhdGU6Ok5ldyhjb25z
dHJ1Y3RvclRvU3RyaW5nKSkpOwogICAgIHJldHVybiBkZXNjOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRDb25zdHJ1
Y3Rvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
TmFtZWRDb25zdHJ1Y3Rvci5jcHAKaW5kZXggNmY4ZDM1NjRiYTYxNmE0ZTA5NDBkODkzOTIzZDIy
ZTk1YzgwMjI5ZS4uNWQ0YTY4MmFlODE2MmRkYzJlMzRmYzlhNTFlMjk4NTNkZWVjZTY0MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5h
bWVkQ29uc3RydWN0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9yLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIHN0
YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0
TmFtZWRDb25zdHJ1Y3RvclRlbXBsCiAgICAgCiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVt
cGxhdGUKLSAgICBkZXNjLT5TZXQoZ2V0VG9TdHJpbmdOYW1lKCksIGdldFRvU3RyaW5nVGVtcGxh
dGUoKSk7CisgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwg
djg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1bmN0aW9uVGVt
cGxhdGU6Ok5ldyhjb25zdHJ1Y3RvclRvU3RyaW5nKSkpOwogICAgIHJldHVybiBkZXNjOwogfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Tm9kZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0Tm9kZS5jcHAKaW5kZXggN2IzODBhMDBhNzA5MTk2MDAwMmFhYzhhOTYyOWY4M2I0NDNjZmU5
Yi4uYzA0YWZlYjQzMzRiNGI1ZmI5ZDViM2I5ZjE0M2YzOWRlMzExZTZmYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5vZGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROb2RlLmNw
cApAQCAtNzMsNyArNzMsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+IENvbmZpZ3VyZVY4VGVzdE5vZGVUZW1wbGF0ZSh2ODo6UGVycwogICAgIAogCiAgICAg
Ly8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCi0gICAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFt
ZSgpLCBnZXRUb1N0cmluZ1RlbXBsYXRlKCkpOworICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpO
ZXdTeW1ib2woInRvU3RyaW5nIiksIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRl
Pjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoY29uc3RydWN0b3JUb1N0cmluZykpKTsK
ICAgICByZXR1cm4gZGVzYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE9iai5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5n
cy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNwcAppbmRleCA4MWYzNGEwNDU0YzA0ODgxZTM5
ZmU2NDkwMjI1ZWRhN2I0OTFkODYwLi45Y2Q5YWUwZjczM2VlYzE2YzAxMzcxZTFkZGNmNTQzNTZi
MTJjNmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3Qv
VjgvVjhUZXN0T2JqLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rl
c3QvVjgvVjhUZXN0T2JqLmNwcApAQCAtMjI1NCw3ICsyMjU0LDcgQEAgc3RhdGljIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RPYmpUZW1wbGF0ZSh2
ODo6UGVyc2kKICAgICBWOERPTUNvbmZpZ3VyYXRpb246OmJhdGNoQ29uZmlndXJlQ29uc3RhbnRz
KGRlc2MsIHByb3RvLCBUZXN0T2JqQ29uc3RzLCBXVEZfQVJSQVlfTEVOR1RIKFRlc3RPYmpDb25z
dHMpKTsKIAogICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQotICAgIGRlc2MtPlNldChn
ZXRUb1N0cmluZ05hbWUoKSwgZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpKTsKKyAgICBkZXNjLT5TZXQo
djg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KGNvbnN0cnVjdG9y
VG9TdHJpbmcpKSk7CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFs
dWVJbnRlcmZhY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKaW5kZXggNzFmMGEzNzhi
MTNjY2FkYTU3NzY4Yzg2NjI1ODhkMzQ3OGMyYzQ1OS4uNGVjNDFkZWZhMWM3M2JmMjk1ZTYwMmZm
Y2QxNDVkMzg3MGE4NmM2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2Ny
aXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAKQEAgLTI1Niw3ICsyNTYsNyBAQCBzdGF0aWMgdjg6
OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdFNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZQogICAgIAogCiAgICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCi0g
ICAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFtZSgpLCBnZXRUb1N0cmluZ1RlbXBsYXRlKCkpOwor
ICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInRvU3RyaW5nIiksIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpO
ZXcoY29uc3RydWN0b3JUb1N0cmluZykpKTsKICAgICByZXR1cm4gZGVzYzsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKaW5kZXggOWU3OWYzOWI3NDAzMDEyYzEw
ZWM2OTY2ODQ5YjBlNzA4N2NjZTg3Yi4uMjhmNzA3NTVjMTcwM2NiZWFhMDY5ZWE3ZGQ1ZmYyOGM2
M2UwYjM3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5n
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwCkBAIC0z
MjIsMTYgKzMyMiw3IEBAIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBjcmVh
dGVSYXdUZW1wbGF0ZSgpCiAgICAgcmV0dXJuIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPjo6TmV3KHJlc3VsdCk7CiB9ICAgICAgICAKIAotdjg6OlBlcnNpc3RlbnQ8djg6OlN0
cmluZz4gZ2V0VG9TdHJpbmdOYW1lKCkKLXsKLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5n
PiYgdG9TdHJpbmdOYW1lID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT50b1N0cmluZ05h
bWUoKTsKLSAgICBpZiAodG9TdHJpbmdOYW1lLklzRW1wdHkoKSkKLSAgICAgICAgdG9TdHJpbmdO
YW1lID0gdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz46Ok5ldyh2ODo6U3RyaW5nOjpOZXcoInRv
U3RyaW5nIikpOwotICAgIHJldHVybiAqdG9TdHJpbmdOYW1lOwotCi19Ci0KLXN0YXRpYyB2ODo6
SGFuZGxlPHY4OjpWYWx1ZT4gY29uc3RydWN0b3JUb1N0cmluZyhjb25zdCB2ODo6QXJndW1lbnRz
JiBhcmdzKQordjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yVG9TdHJpbmcoY29uc3Qg
djg6OkFyZ3VtZW50cyYgYXJncykKIHsKICAgICAvLyBUaGUgRE9NIGNvbnN0cnVjdG9ycycgdG9T
dHJpbmcgZnVuY3Rpb25zIGdyYWIgdGhlIGN1cnJlbnQgdG9TdHJpbmcKICAgICAvLyBmb3IgRnVu
Y3Rpb25zIGJ5IHRha2luZyB0aGUgdG9TdHJpbmcgZnVuY3Rpb24gb2YgaXRzZWxmIGFuZCB0aGVu
CkBAIC0zNDEsMjAgKzMzMiwxMiBAQCBzdGF0aWMgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0
cnVjdG9yVG9TdHJpbmcoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKICAgICAvLyBjaGFuZ2Vz
IHRvIGEgRE9NIGNvbnN0cnVjdG9yJ3MgdG9TdHJpbmcncyB0b1N0cmluZyB3aWxsIGNhdXNlIHRo
ZQogICAgIC8vIHRvU3RyaW5nIG9mIHRoZSBET00gY29uc3RydWN0b3IgaXRzZWxmIHRvIGNoYW5n
ZS4gVGhpcyBpcyBleHRyZW1lbHkKICAgICAvLyBvYnNjdXJlIGFuZCB1bmxpa2VseSB0byBiZSBh
IHByb2JsZW0uCi0gICAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gYXJncy5DYWxsZWUo
KS0+R2V0KGdldFRvU3RyaW5nTmFtZSgpKTsKKyAgICB2ODo6SGFuZGxlPHY4OjpWYWx1ZT4gdmFs
dWUgPSBhcmdzLkNhbGxlZSgpLT5HZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIp
KTsKICAgICBpZiAoIXZhbHVlLT5Jc0Z1bmN0aW9uKCkpIAogICAgICAgICByZXR1cm4gdjg6OlN0
cmluZzo6TmV3KCIiKTsKICAgICByZXR1cm4gdjg6OkhhbmRsZTx2ODo6RnVuY3Rpb24+OjpDYXN0
KHZhbHVlKS0+Q2FsbChhcmdzLlRoaXMoKSwgMCwgMCk7CiB9CiAKLXY4OjpQZXJzaXN0ZW50PHY4
OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUb1N0cmluZ1RlbXBsYXRlKCkKLXsKLSAgICB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4mIHRvU3RyaW5nVGVtcGxhdGUgPSBWOFBlcklz
b2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUoKTsKLSAgICBpZiAodG9TdHJp
bmdUZW1wbGF0ZS5Jc0VtcHR5KCkpCi0gICAgICAgIHRvU3RyaW5nVGVtcGxhdGUgPSB2ODo6UGVy
c2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT46Ok5ldyh2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6
TmV3KGNvbnN0cnVjdG9yVG9TdHJpbmcpKTsKLSAgICByZXR1cm4gdG9TdHJpbmdUZW1wbGF0ZTsK
LX0KLQogdm9pZCBTdHJpbmdDYWNoZTo6cmVwb3J0TWVtb3J5VXNhZ2UoTWVtb3J5T2JqZWN0SW5m
byogbWVtb3J5T2JqZWN0SW5mbykgY29uc3QKIHsKICAgICBNZW1vcnlDbGFzc0luZm8gaW5mbyht
ZW1vcnlPYmplY3RJbmZvLCB0aGlzLCBNZW1vcnlJbnN0cnVtZW50YXRpb246OkJpbmRpbmcpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaAppbmRleCAzNDE5ZWI2MGY5MDZiYTQx
YTQ4ODQyYThjMzY1YTU5NjJlNWNhOGQ5Li4wMTY5ZWU5MWI1ZTE5ZWNlYWFkMTkwOGY3MDg4NDE0
YThlZjBiYzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRp
bmcuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuaApAQCAtMzYw
LDkgKzM2MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICB9CiAKICAgICB2ODo6UGVyc2lz
dGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY3JlYXRlUmF3VGVtcGxhdGUoKTsKLQotICAgIHY4
OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IGdldFRvU3RyaW5nTmFtZSgpOwotICAgIHY4OjpQZXJz
aXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUb1N0cmluZ1RlbXBsYXRlKCk7CisgICAg
djg6OkhhbmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yVG9TdHJpbmcoY29uc3Qgdjg6OkFyZ3Vt
ZW50cyYpOwogCiAgICAgU3RyaW5nIGludDMyVG9XZWJDb3JlU3RyaW5nKGludCB2YWx1ZSk7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaAppbmRleCA3
MmRhNzdlNDJkNzUwZDhiNTEzZjY2OTVhMDM5YjMwOGE4Mjg4NzZjLi5kN2MzZTVmZjg5Y2NjZTY4
MTYxOGIwZGQ2NjAxZjE3MTMxNmEzMzNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
djgvVjhQZXJJc29sYXRlRGF0YS5oCkBAIC02OSw4ICs2OSw2IEBAIHB1YmxpYzoKIAogICAgIFRl
bXBsYXRlTWFwJiByYXdUZW1wbGF0ZU1hcCgpIHsgcmV0dXJuIG1fcmF3VGVtcGxhdGVzOyB9CiAg
ICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlTWFwKCkgeyByZXR1cm4gbV90ZW1wbGF0ZXM7IH0KLSAg
ICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiYgdG9TdHJpbmdOYW1lKCkgeyByZXR1cm4gbV90
b1N0cmluZ05hbWU7IH0KLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4m
IHRvU3RyaW5nVGVtcGxhdGUoKSB7IHJldHVybiBtX3RvU3RyaW5nVGVtcGxhdGU7IH0KIAogICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiYgbGF6eUV2ZW50TGlzdGVuZXJU
b1N0cmluZ1RlbXBsYXRlKCkKICAgICB7CkBAIC0xMzMsOCArMTMxLDYgQEAgcHJpdmF0ZToKIAog
ICAgIFRlbXBsYXRlTWFwIG1fcmF3VGVtcGxhdGVzOwogICAgIFRlbXBsYXRlTWFwIG1fdGVtcGxh
dGVzOwotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IG1fdG9TdHJpbmdOYW1lOwotICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBtX3RvU3RyaW5nVGVtcGxhdGU7
CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1fbGF6eUV2ZW50TGlz
dGVuZXJUb1N0cmluZ1RlbXBsYXRlOwogICAgIE93blB0cjxTdHJpbmdDYWNoZT4gbV9zdHJpbmdD
YWNoZTsKICAgICBPd25QdHI8SW50ZWdlckNhY2hlPiBtX2ludGVnZXJDYWNoZTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>159645</attachid>
            <date>2012-08-21 03:37:33 -0700</date>
            <delta_ts>2012-08-21 17:32:18 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-94573-20120821193652.patch</filename>
            <type>text/plain</type>
            <size>18374</size>
            <attacher name="Kentaro Hara">haraken</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI2MTI4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZTgzNDUzMGFhYWZjZjNm
YjMyNTk0YmI3YTVmNGVmOTAzNDJlMjk2Ny4uNjA0MDEyNzRlMjc5MGUzMDQ4ZjE1ZjAwZmE0OTFh
MWUxMWQ3OWZmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUzIEBACisyMDEyLTA4LTIwICBLZW50
YXJvIEhhcmEgIDxoYXJha2VuQGNocm9taXVtLm9yZz4KKworICAgICAgICBbVjhdIFJlbW92ZSBn
ZXRUb1N0cmluZ05hbWUoKSBhbmQgZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpIGZyb20gVjhCaW5kaW5n
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05NDU3Mwor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIC0gUmVtb3Zl
IFY4QmluZGluZzo6Z2V0VG9TdHJpbmdOYW1lKCkgYW5kIFY4QmluZGluZzo6Z2V0VG9TdHJpbmdU
ZW1wbGF0ZSgpLgorCisgICAgICAgIC0gUmVwbGFjZSBnZXRUb1N0cmluZ05hbWUoKSB3aXRoIFN0
cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLgorCisgICAgICAgIC0gRml4IFY4UGVySXNvbGF0
ZURhdGE6OmdldFRvU3RyaW5nVGVtcGxhdGUoKSBzbyB0aGF0IGl0IGNhY2hlcyBhIHBlcnNpc3Rl
bnQKKyAgICAgICAgaGFuZGxlIG9mIGEgY3JlYXRlZCBGdW5jdGlvblRlbXBsYXRlLiBCZWZvcmUg
dGhpcyBwYXRjaCwgYSBGdW5jdGlvblRlbXBsYXRlCisgICAgICAgIGhhZCBiZWVuIGNyZWF0ZWQg
Zm9yIGVhY2ggdG9TdHJpbmcoKS4KKworICAgICAgICBObyB0ZXN0cy4gTm8gY2hhbmdlIGluIGJl
aGF2aW9yLgorCisgICAgICAgICogYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OmNvbnN0cnVjdG9yVG9TdHJpbmcpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4
QmluZGluZy5oOgorICAgICAgICAoV2ViQ29yZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0
cy9Db2RlR2VuZXJhdG9yVjgucG06CisgICAgICAgIChHZW5lcmF0ZUltcGxlbWVudGF0aW9uKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhGbG9hdDY0QXJyYXlUZW1wbGF0ZSk6CisgICAg
ICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVjdC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3RBY3RpdmVET01PYmplY3RUZW1wbGF0
ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVzdEN1c3RvbU5hbWVk
R2V0dGVyVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRl
c3RFdmVudENvbnN0cnVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3VyZVY4VGVz
dEV2ZW50Q29uc3RydWN0b3JUZW1wbGF0ZSk6CisgICAgICAgICogYmluZGluZ3Mvc2NyaXB0cy90
ZXN0L1Y4L1Y4VGVzdEV2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNvbmZpZ3Vy
ZVY4VGVzdEV2ZW50VGFyZ2V0VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJl
VjhUZXN0RXhjZXB0aW9uVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhU
ZXN0SW50ZXJmYWNlVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMvdGVzdC9W
OC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNv
bmZpZ3VyZVY4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXJUZW1wbGF0ZSk6CisgICAgICAgICog
YmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0TmFtZWRDb25zdHJ1Y3RvclRlbXBsYXRlKToK
KyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Tm9kZS5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpDb25maWd1cmVWOFRlc3ROb2RlVGVtcGxhdGUpOgorICAgICAgICAqIGJp
bmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q29uZmlndXJlVjhUZXN0T2JqVGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RTZXJpYWxpemVkU2NyaXB0VmFsdWVJbnRlcmZhY2UuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6Q29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNl
VGVtcGxhdGUpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaDoKKyAg
ICAgICAgKFY4UGVySXNvbGF0ZURhdGEpOgorCiAyMDEyLTA4LTIwICBTaGlueWEgS2F3YW5ha2Eg
IDxzaGlueWFrQGNocm9taXVtLm9yZz4KIAogICAgICAgICBTaGFkb3dSb290LmNsb25lTm9kZSgp
IG11c3QgYWx3YXlzIHRocm93IGEgREFUQV9DTE9ORV9FUlIgZXhjZXB0aW9uLgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0gYi9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQppbmRleCBi
ZjYzNjc4NGEyODFjZGEyZDA0M2FjNGU4ZjRkYWU3OTM3NDk1OWQ2Li5lYjM0Zjc4MDQzNmQzNjll
MTMyOGY0N2VhYzgwNjhhM2Q1MjAwOWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0b3JWOC5wbQpAQCAtMjk2MSw3ICsyOTYxLDcgQEAgRU5E
CiAgICAgcHVzaChAaW1wbENvbnRlbnQsIDw8RU5EKTsKIAogICAgIC8vIEN1c3RvbSB0b1N0cmlu
ZyB0ZW1wbGF0ZQotICAgIGRlc2MtPlNldChnZXRUb1N0cmluZ05hbWUoKSwgZ2V0VG9TdHJpbmdU
ZW1wbGF0ZSgpKTsKKyAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmlu
ZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUoKSk7CiAg
ICAgcmV0dXJuIGRlc2M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhGbG9hdDY0QXJyYXkuY3BwCmluZGV4IDY0NTRhOTZmZTg3
NDg5YjMxMGQ1MTgxMmVmZWMwODc1YTFiYzM2OWEuLjEyMjExODAxOTk3MDBmZWI0MmE5ZTg5OWU1
NDZmM2M5ZGFlMDZhODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Njcmlw
dHMvdGVzdC9WOC9WOEZsb2F0NjRBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGlu
Z3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4RmxvYXQ2NEFycmF5LmNwcApAQCAtMTEwLDcgKzExMCw3IEBA
IHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhG
bG9hdDY0QXJyYXlUZW1wbGF0ZSh2ODo6CiAgICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXco
ImZvbyIpLCB2ODo6RnVuY3Rpb25UZW1wbGF0ZTo6TmV3KEZsb2F0NjRBcnJheVY4SW50ZXJuYWw6
OmZvb0NhbGxiYWNrLCB2OFVuZGVmaW5lZCgpLCBmb29TaWduYXR1cmUpKTsKIAogICAgIC8vIEN1
c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQotICAgIGRlc2MtPlNldChnZXRUb1N0cmluZ05hbWUoKSwg
Z2V0VG9TdHJpbmdUZW1wbGF0ZSgpKTsKKyAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3lt
Ym9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nVGVt
cGxhdGUoKSk7CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RBY3RpdmVET01PYmplY3QuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9i
amVjdC5jcHAKaW5kZXggODg2Nzk4NDFlZjg3MjVjY2Y0OTUxYWNkNGU2ODRiY2IyZWE5ZTNmNy4u
OTI2ZGQ3OTZmMzgyMzgzODVjOWI2ZDUwYTVmM2I1MWI2YTI4ZGUyNSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEFjdGl2ZURPTU9iamVj
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVz
dEFjdGl2ZURPTU9iamVjdC5jcHAKQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgdjg6OlBlcnNp
c3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEFjdGl2ZURPTU9iamVj
dFRlbXBsYQogICAgIHByb3RvLT5TZXRBY2Nlc3Nvcih2ODo6U3RyaW5nOjpOZXcoInBvc3RNZXNz
YWdlIiksIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpwb3N0TWVzc2FnZUF0dHJHZXR0
ZXIsIFRlc3RBY3RpdmVET01PYmplY3RWOEludGVybmFsOjpUZXN0QWN0aXZlRE9NT2JqZWN0RG9t
YWluU2FmZUZ1bmN0aW9uU2V0dGVyLCB2OFVuZGVmaW5lZCgpLCB2ODo6QUxMX0NBTl9SRUFELCBz
dGF0aWNfY2FzdDx2ODo6UHJvcGVydHlBdHRyaWJ1dGU+KHY4OjpEb250RGVsZXRlKSk7CiAKICAg
ICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKLSAgICBkZXNjLT5TZXQoZ2V0VG9TdHJpbmdO
YW1lKCksIGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgZGVzYy0+U2V0KHY4OjpTdHJpbmc6
Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT50b1N0
cmluZ1RlbXBsYXRlKCkpOwogICAgIHJldHVybiBkZXNjOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3VzdG9tTmFtZWRHZXR0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEN1
c3RvbU5hbWVkR2V0dGVyLmNwcAppbmRleCA4ODhjYWU4MzJkYmMwMTY4ZWFhZDM2NmU1MjRiNTcy
YTY4OWYzZDhlLi4wZjllNjRhYzdiZGQ2YzYzODkzNTUyZDk2M2EzMmY4M2FhNDRiNmUyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0Q3Vz
dG9tTmFtZWRHZXR0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3RDdXN0b21OYW1lZEdldHRlci5jcHAKQEAgLTczLDcgKzczLDcgQEAgc3Rh
dGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3RD
dXN0b21OYW1lZEdldHRlclRlbXAKICAgICBkZXNjLT5JbnN0YW5jZVRlbXBsYXRlKCktPlNldE5h
bWVkUHJvcGVydHlIYW5kbGVyKFY4VGVzdEN1c3RvbU5hbWVkR2V0dGVyOjpuYW1lZFByb3BlcnR5
R2V0dGVyLCAwLCAwLCAwLCAwKTsKIAogICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQot
ICAgIGRlc2MtPlNldChnZXRUb1N0cmluZ05hbWUoKSwgZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpKTsK
KyAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklz
b2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUoKSk7CiAgICAgcmV0dXJuIGRl
c2M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudENvbnN0cnVjdG9yLmNwcAppbmRleCAyMzc2OTEz
YTlhMTRmOTFkZTVjNzgyNzdhZGI1N2VlN2ZlMTNlNGQ2Li4zMmUxM2FhMDM2ZTZhOWI3MGRiYTAz
ODk2NDMzYmE3YjRlNWFhZWZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9z
Y3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRDb25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50Q29uc3RydWN0b3IuY3Bw
CkBAIC0xMTAsNyArMTEwLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBDb25maWd1cmVWOFRlc3RFdmVudENvbnN0cnVjdG9yVGVtcGwKICAgICAKIAogICAg
IC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQotICAgIGRlc2MtPlNldChnZXRUb1N0cmluZ05h
bWUoKSwgZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpKTsKKyAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3Ry
aW5nVGVtcGxhdGUoKSk7CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0RXZlbnRUYXJn
ZXQuY3BwCmluZGV4IGI3ZjFhNDlmODliMGIzOTFlZThlOTFjNGZlODM1ODJlZmU4YjE2ODkuLjhl
Mjg4NmE5NWUwMzE5YjlhMjNkZDdkMWYzMzc4ZTY2NzE1NmE3MTQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFdmVudFRhcmdldC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV2ZW50
VGFyZ2V0LmNwcApAQCAtMTM0LDcgKzEzNCw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0RXZlbnRUYXJnZXRUZW1wbGF0ZSh2CiAg
ICAgcHJvdG8tPlNldCh2ODo6U3RyaW5nOjpOZXcoImRpc3BhdGNoRXZlbnQiKSwgdjg6OkZ1bmN0
aW9uVGVtcGxhdGU6Ok5ldyhUZXN0RXZlbnRUYXJnZXRWOEludGVybmFsOjpkaXNwYXRjaEV2ZW50
Q2FsbGJhY2ssIHY4VW5kZWZpbmVkKCksIGRpc3BhdGNoRXZlbnRTaWduYXR1cmUpKTsKIAogICAg
IC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQotICAgIGRlc2MtPlNldChnZXRUb1N0cmluZ05h
bWUoKSwgZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpKTsKKyAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3Ry
aW5nVGVtcGxhdGUoKSk7CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RFeGNlcHRpb24uY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5j
cHAKaW5kZXggOWJiOTlhYzNlNzk2M2FkOTM2YWVlZmFkOTZmYWY2N2EyZTBiNzllZS4uOTllYjUy
MmZhYjMwMzJkN2RlMWYxNzY4NTE2ZDJiMzcxMjNmMGE3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEV4Y2VwdGlvbi5j
cHAKQEAgLTY0LDcgKzY0LDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBDb25maWd1cmVWOFRlc3RFeGNlcHRpb25UZW1wbGF0ZSh2ODoKICAgICAKIAogICAg
IC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQotICAgIGRlc2MtPlNldChnZXRUb1N0cmluZ05h
bWUoKSwgZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpKTsKKyAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3Ry
aW5nVGVtcGxhdGUoKSk7CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RJbnRlcmZhY2UuY3BwIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5j
cHAKaW5kZXggYzY5MzRkN2M0YTM1MDIwMTMyODBmZWM3NzNkNTM1ZmMxMzRiYTdlZi4uODNhYTQw
NjA3MGIwZDIwOWI3NjliYTVjYTJkNWIzZDQwMjdmNjAzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdEludGVyZmFjZS5j
cHAKQEAgLTMwMyw3ICszMDMsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9u
VGVtcGxhdGU+IENvbmZpZ3VyZVY4VGVzdEludGVyZmFjZVRlbXBsYXRlKHY4OgogICAgIFY4RE9N
Q29uZmlndXJhdGlvbjo6YmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sIFRlc3RJ
bnRlcmZhY2VDb25zdHMsIFdURl9BUlJBWV9MRU5HVEgoVGVzdEludGVyZmFjZUNvbnN0cykpOwog
CiAgICAgLy8gQ3VzdG9tIHRvU3RyaW5nIHRlbXBsYXRlCi0gICAgZGVzYy0+U2V0KGdldFRvU3Ry
aW5nTmFtZSgpLCBnZXRUb1N0cmluZ1RlbXBsYXRlKCkpOworICAgIGRlc2MtPlNldCh2ODo6U3Ry
aW5nOjpOZXdTeW1ib2woInRvU3RyaW5nIiksIFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+
dG9TdHJpbmdUZW1wbGF0ZSgpKTsKICAgICByZXR1cm4gZGVzYzsKIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdE1lZGlhUXVlcnlM
aXN0TGlzdGVuZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4
L1Y4VGVzdE1lZGlhUXVlcnlMaXN0TGlzdGVuZXIuY3BwCmluZGV4IDRkM2Q5NWJlMGI3MDI2OTQz
ZTI5NmM0MTQwZmQ4ODFmZDE1MGJmYzkuLjJlZGUxMGJkYTM5N2M1MTEzMWU4MjNiOTkxNGQxYzRk
MzNiMjRmMTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVz
dC9WOC9WOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TWVkaWFRdWVyeUxpc3RMaXN0ZW5lci5j
cHAKQEAgLTczLDcgKzczLDcgQEAgc3RhdGljIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRl
bXBsYXRlPiBDb25maWd1cmVWOFRlc3RNZWRpYVF1ZXJ5TGlzdExpc3RlbmUKICAgICAKIAogICAg
IC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0ZQotICAgIGRlc2MtPlNldChnZXRUb1N0cmluZ05h
bWUoKSwgZ2V0VG9TdHJpbmdUZW1wbGF0ZSgpKTsKKyAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6
TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3Ry
aW5nVGVtcGxhdGUoKSk7CiAgICAgcmV0dXJuIGRlc2M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1lZENvbnN0cnVjdG9y
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3ROYW1l
ZENvbnN0cnVjdG9yLmNwcAppbmRleCA2ZjhkMzU2NGJhNjE2YTRlMDk0MGQ4OTM5MjNkMjJlOTVj
ODAyMjllLi5kMGNlY2UyOGM4MjQxYWZmZjIwOGVkYTk2MzkzYzQ3MjBlMTgwOTQxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0TmFtZWRD
b25zdHJ1Y3Rvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0
L1Y4L1Y4VGVzdE5hbWVkQ29uc3RydWN0b3IuY3BwCkBAIC0xMTQsNyArMTE0LDcgQEAgc3RhdGlj
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBDb25maWd1cmVWOFRlc3ROYW1l
ZENvbnN0cnVjdG9yVGVtcGwKICAgICAKIAogICAgIC8vIEN1c3RvbSB0b1N0cmluZyB0ZW1wbGF0
ZQotICAgIGRlc2MtPlNldChnZXRUb1N0cmluZ05hbWUoKSwgZ2V0VG9TdHJpbmdUZW1wbGF0ZSgp
KTsKKyAgICBkZXNjLT5TZXQodjg6OlN0cmluZzo6TmV3U3ltYm9sKCJ0b1N0cmluZyIpLCBWOFBl
cklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nVGVtcGxhdGUoKSk7CiAgICAgcmV0dXJu
IGRlc2M7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROb2RlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMv
dGVzdC9WOC9WOFRlc3ROb2RlLmNwcAppbmRleCA3YjM4MGEwMGE3MDkxOTYwMDAyYWFjOGE5NjI5
ZjgzYjQ0M2NmZTliLi5jMmExMDlmMDViMGI0MTMxMjY5YzNmOWMwNmE0NGIwNTY5YTA1ODA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0
Tm9kZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy90ZXN0L1Y4L1Y4
VGVzdE5vZGUuY3BwCkBAIC03Myw3ICs3Myw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0Tm9kZVRlbXBsYXRlKHY4OjpQZXJzCiAg
ICAgCiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKLSAgICBkZXNjLT5TZXQoZ2V0
VG9TdHJpbmdOYW1lKCksIGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgZGVzYy0+U2V0KHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVu
dCgpLT50b1N0cmluZ1RlbXBsYXRlKCkpOwogICAgIHJldHVybiBkZXNjOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0T2JqLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3Bw
CmluZGV4IDgxZjM0YTA0NTRjMDQ4ODFlMzlmZTY0OTAyMjVlZGE3YjQ5MWQ4NjAuLjExYWU4OTk4
ZTVkYzU1YzhhNGM5OWQ2OTZhMjI2YTBkMjM2MzE3NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvdGVzdC9WOC9WOFRlc3RPYmouY3BwCkBAIC0yMjU0LDcg
KzIyNTQsNyBAQCBzdGF0aWMgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IENv
bmZpZ3VyZVY4VGVzdE9ialRlbXBsYXRlKHY4OjpQZXJzaQogICAgIFY4RE9NQ29uZmlndXJhdGlv
bjo6YmF0Y2hDb25maWd1cmVDb25zdGFudHMoZGVzYywgcHJvdG8sIFRlc3RPYmpDb25zdHMsIFdU
Rl9BUlJBWV9MRU5HVEgoVGVzdE9iakNvbnN0cykpOwogCiAgICAgLy8gQ3VzdG9tIHRvU3RyaW5n
IHRlbXBsYXRlCi0gICAgZGVzYy0+U2V0KGdldFRvU3RyaW5nTmFtZSgpLCBnZXRUb1N0cmluZ1Rl
bXBsYXRlKCkpOworICAgIGRlc2MtPlNldCh2ODo6U3RyaW5nOjpOZXdTeW1ib2woInRvU3RyaW5n
IiksIFY4UGVySXNvbGF0ZURhdGE6OmN1cnJlbnQoKS0+dG9TdHJpbmdUZW1wbGF0ZSgpKTsKICAg
ICByZXR1cm4gZGVzYzsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mv
c2NyaXB0cy90ZXN0L1Y4L1Y4VGVzdFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZUludGVyZmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXpl
ZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAppbmRleCA3MWYwYTM3OGIxM2NjYWRhNTc3NjhjODY2
MjU4OGQzNDc4YzJjNDU5Li4wZjdiODdiMTI2NGU4Mzk1MmE5ZWQwZGM1MTQ1MjhmNjU3MDI2ZGQy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhU
ZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50ZXJmYWNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9iaW5kaW5ncy9zY3JpcHRzL3Rlc3QvVjgvVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlSW50
ZXJmYWNlLmNwcApAQCAtMjU2LDcgKzI1Niw3IEBAIHN0YXRpYyB2ODo6UGVyc2lzdGVudDx2ODo6
RnVuY3Rpb25UZW1wbGF0ZT4gQ29uZmlndXJlVjhUZXN0U2VyaWFsaXplZFNjcmlwdFZhbHVlCiAg
ICAgCiAKICAgICAvLyBDdXN0b20gdG9TdHJpbmcgdGVtcGxhdGUKLSAgICBkZXNjLT5TZXQoZ2V0
VG9TdHJpbmdOYW1lKCksIGdldFRvU3RyaW5nVGVtcGxhdGUoKSk7CisgICAgZGVzYy0+U2V0KHY4
OjpTdHJpbmc6Ok5ld1N5bWJvbCgidG9TdHJpbmciKSwgVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVu
dCgpLT50b1N0cmluZ1RlbXBsYXRlKCkpOwogICAgIHJldHVybiBkZXNjOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmNwcAppbmRleCA5ZTc5ZjM5Yjc0MDMwMTJjMTBl
YzY5NjY4NDliMGU3MDg3Y2NlODdiLi5jN2Y3NGYwNjJjNzljZWExZGY4Y2M0NjRkMTFhMGRmNmZl
Yzg0N2IxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOEJpbmRpbmcu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4QmluZGluZy5jcHAKQEAgLTMy
MiwzOSArMzIyLDYgQEAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IGNyZWF0
ZVJhd1RlbXBsYXRlKCkKICAgICByZXR1cm4gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVt
cGxhdGU+OjpOZXcocmVzdWx0KTsKIH0gICAgICAgIAogCi12ODo6UGVyc2lzdGVudDx2ODo6U3Ry
aW5nPiBnZXRUb1N0cmluZ05hbWUoKQotewotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+
JiB0b1N0cmluZ05hbWUgPSBWOFBlcklzb2xhdGVEYXRhOjpjdXJyZW50KCktPnRvU3RyaW5nTmFt
ZSgpOwotICAgIGlmICh0b1N0cmluZ05hbWUuSXNFbXB0eSgpKQotICAgICAgICB0b1N0cmluZ05h
bWUgPSB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPjo6TmV3KHY4OjpTdHJpbmc6Ok5ldygidG9T
dHJpbmciKSk7Ci0gICAgcmV0dXJuICp0b1N0cmluZ05hbWU7Ci0KLX0KLQotc3RhdGljIHY4OjpI
YW5kbGU8djg6OlZhbHVlPiBjb25zdHJ1Y3RvclRvU3RyaW5nKGNvbnN0IHY4OjpBcmd1bWVudHMm
IGFyZ3MpCi17Ci0gICAgLy8gVGhlIERPTSBjb25zdHJ1Y3RvcnMnIHRvU3RyaW5nIGZ1bmN0aW9u
cyBncmFiIHRoZSBjdXJyZW50IHRvU3RyaW5nCi0gICAgLy8gZm9yIEZ1bmN0aW9ucyBieSB0YWtp
bmcgdGhlIHRvU3RyaW5nIGZ1bmN0aW9uIG9mIGl0c2VsZiBhbmQgdGhlbgotICAgIC8vIGNhbGxp
bmcgaXQgd2l0aCB0aGUgY29uc3RydWN0b3IgYXMgaXRzIHJlY2VpdmVyLiBUaGlzIG1lYW5zIHRo
YXQKLSAgICAvLyBjaGFuZ2VzIHRvIHRoZSBGdW5jdGlvbiBwcm90b3R5cGUgY2hhaW4gb3IgdG9T
dHJpbmcgZnVuY3Rpb24gYXJlCi0gICAgLy8gcmVmbGVjdGVkIHdoZW4gcHJpbnRpbmcgRE9NIGNv
bnN0cnVjdG9ycy4gVGhlIG9ubHkgd2FydCBpcyB0aGF0Ci0gICAgLy8gY2hhbmdlcyB0byBhIERP
TSBjb25zdHJ1Y3RvcidzIHRvU3RyaW5nJ3MgdG9TdHJpbmcgd2lsbCBjYXVzZSB0aGUKLSAgICAv
LyB0b1N0cmluZyBvZiB0aGUgRE9NIGNvbnN0cnVjdG9yIGl0c2VsZiB0byBjaGFuZ2UuIFRoaXMg
aXMgZXh0cmVtZWx5Ci0gICAgLy8gb2JzY3VyZSBhbmQgdW5saWtlbHkgdG8gYmUgYSBwcm9ibGVt
LgotICAgIHY4OjpIYW5kbGU8djg6OlZhbHVlPiB2YWx1ZSA9IGFyZ3MuQ2FsbGVlKCktPkdldChn
ZXRUb1N0cmluZ05hbWUoKSk7Ci0gICAgaWYgKCF2YWx1ZS0+SXNGdW5jdGlvbigpKSAKLSAgICAg
ICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ldygiIik7Ci0gICAgcmV0dXJuIHY4OjpIYW5kbGU8djg6
OkZ1bmN0aW9uPjo6Q2FzdCh2YWx1ZSktPkNhbGwoYXJncy5UaGlzKCksIDAsIDApOwotfQotCi12
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gZ2V0VG9TdHJpbmdUZW1wbGF0ZSgp
Ci17Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+JiB0b1N0cmluZ1Rl
bXBsYXRlID0gVjhQZXJJc29sYXRlRGF0YTo6Y3VycmVudCgpLT50b1N0cmluZ1RlbXBsYXRlKCk7
Ci0gICAgaWYgKHRvU3RyaW5nVGVtcGxhdGUuSXNFbXB0eSgpKQotICAgICAgICB0b1N0cmluZ1Rl
bXBsYXRlID0gdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+OjpOZXcodjg6OkZ1
bmN0aW9uVGVtcGxhdGU6Ok5ldyhjb25zdHJ1Y3RvclRvU3RyaW5nKSk7Ci0gICAgcmV0dXJuIHRv
U3RyaW5nVGVtcGxhdGU7Ci19Ci0KIHZvaWQgU3RyaW5nQ2FjaGU6OnJlcG9ydE1lbW9yeVVzYWdl
KE1lbW9yeU9iamVjdEluZm8qIG1lbW9yeU9iamVjdEluZm8pIGNvbnN0CiB7CiAgICAgTWVtb3J5
Q2xhc3NJbmZvIGluZm8obWVtb3J5T2JqZWN0SW5mbywgdGhpcywgTWVtb3J5SW5zdHJ1bWVudGF0
aW9uOjpCaW5kaW5nKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4
QmluZGluZy5oIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhCaW5kaW5nLmgKaW5kZXgg
MzQxOWViNjBmOTA2YmE0MWE0ODg0MmE4YzM2NWE1OTYyZTVjYThkOS4uZDU1NzQzYzM1NDBkN2Jh
OWNkZGQxYTcxYmJlODRkNjZkODY0YTNjNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvdjgvVjhCaW5kaW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhC
aW5kaW5nLmgKQEAgLTM2MSw5ICszNjEsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICAgICB2
ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4gY3JlYXRlUmF3VGVtcGxhdGUoKTsK
IAotICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpTdHJpbmc+IGdldFRvU3RyaW5nTmFtZSgpOwotICAg
IHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiBnZXRUb1N0cmluZ1RlbXBsYXRl
KCk7Ci0KICAgICBTdHJpbmcgaW50MzJUb1dlYkNvcmVTdHJpbmcoaW50IHZhbHVlKTsKIAogICAg
IFBhc3NSZWZQdHI8RE9NU3RyaW5nTGlzdD4gdG9ET01TdHJpbmdMaXN0KHY4OjpIYW5kbGU8djg6
OlZhbHVlPik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9WOFBlcklz
b2xhdGVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURh
dGEuY3BwCmluZGV4IDE2ZTRiMGVkZTlmZWI2ZDFmMDk2NTZkZThkYjc3NjZmMWZhOGY2MzYuLjU0
OTkyYTRkNDQ3YTY4YTNjY2U1M2M4MDg4Y2JiMzcyYTBlNTNhZmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuY3BwCkBAIC0xMDYsNCArMTA2LDIw
IEBAIHZvaWQgVjhQZXJJc29sYXRlRGF0YTo6dmlzaXRFeHRlcm5hbFN0cmluZ3MoRXh0ZXJuYWxT
dHJpbmdWaXNpdG9yKiB2aXNpdG9yKQogfQogI2VuZGlmCiAKK3Y4OjpIYW5kbGU8djg6OlZhbHVl
PiBjb25zdHJ1Y3Rvck9mVG9TdHJpbmcoY29uc3Qgdjg6OkFyZ3VtZW50cyYgYXJncykKK3sKKyAg
ICAvLyBUaGUgRE9NIGNvbnN0cnVjdG9ycycgdG9TdHJpbmcgZnVuY3Rpb25zIGdyYWIgdGhlIGN1
cnJlbnQgdG9TdHJpbmcKKyAgICAvLyBmb3IgRnVuY3Rpb25zIGJ5IHRha2luZyB0aGUgdG9TdHJp
bmcgZnVuY3Rpb24gb2YgaXRzZWxmIGFuZCB0aGVuCisgICAgLy8gY2FsbGluZyBpdCB3aXRoIHRo
ZSBjb25zdHJ1Y3RvciBhcyBpdHMgcmVjZWl2ZXIuIFRoaXMgbWVhbnMgdGhhdAorICAgIC8vIGNo
YW5nZXMgdG8gdGhlIEZ1bmN0aW9uIHByb3RvdHlwZSBjaGFpbiBvciB0b1N0cmluZyBmdW5jdGlv
biBhcmUKKyAgICAvLyByZWZsZWN0ZWQgd2hlbiBwcmludGluZyBET00gY29uc3RydWN0b3JzLiBU
aGUgb25seSB3YXJ0IGlzIHRoYXQKKyAgICAvLyBjaGFuZ2VzIHRvIGEgRE9NIGNvbnN0cnVjdG9y
J3MgdG9TdHJpbmcncyB0b1N0cmluZyB3aWxsIGNhdXNlIHRoZQorICAgIC8vIHRvU3RyaW5nIG9m
IHRoZSBET00gY29uc3RydWN0b3IgaXRzZWxmIHRvIGNoYW5nZS4gVGhpcyBpcyBleHRyZW1lbHkK
KyAgICAvLyBvYnNjdXJlIGFuZCB1bmxpa2VseSB0byBiZSBhIHByb2JsZW0uCisgICAgdjg6Okhh
bmRsZTx2ODo6VmFsdWU+IHZhbHVlID0gYXJncy5DYWxsZWUoKS0+R2V0KHY4OjpTdHJpbmc6Ok5l
d1N5bWJvbCgidG9TdHJpbmciKSk7CisgICAgaWYgKCF2YWx1ZS0+SXNGdW5jdGlvbigpKSAKKyAg
ICAgICAgcmV0dXJuIHY4OjpTdHJpbmc6Ok5ldygiIik7CisgICAgcmV0dXJuIHY4OjpIYW5kbGU8
djg6OkZ1bmN0aW9uPjo6Q2FzdCh2YWx1ZSktPkNhbGwoYXJncy5UaGlzKCksIDAsIDApOworfQor
CiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5k
aW5ncy92OC9WOFBlcklzb2xhdGVEYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy92OC9W
OFBlcklzb2xhdGVEYXRhLmgKaW5kZXggNzJkYTc3ZTQyZDc1MGQ4YjUxM2Y2Njk1YTAzOWIzMDhh
ODI4ODc2Yy4uYThjOTcyNmM4OTM5NjkwZDU0NGMyNzlmY2JhYTlkMWYxOTMxZDA3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhQZXJJc29sYXRlRGF0YS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4UGVySXNvbGF0ZURhdGEuaApAQCAtNTIsNiAr
NTIsOCBAQCBjbGFzcyBHbG9iYWxIYW5kbGVJbmZvOwogdHlwZWRlZiBIYXNoTWFwPHY4OjpWYWx1
ZSosIEdsb2JhbEhhbmRsZUluZm8qPiBHbG9iYWxIYW5kbGVNYXA7CiAjZW5kaWYKIAordjg6Okhh
bmRsZTx2ODo6VmFsdWU+IGNvbnN0cnVjdG9yT2ZUb1N0cmluZyhjb25zdCB2ODo6QXJndW1lbnRz
Jik7CisKIGNsYXNzIFY4UGVySXNvbGF0ZURhdGEgewogcHVibGljOgogICAgIHN0YXRpYyBWOFBl
cklzb2xhdGVEYXRhKiBjcmVhdGUodjg6Oklzb2xhdGUqKTsKQEAgLTY5LDggKzcxLDEzIEBAIHB1
YmxpYzoKIAogICAgIFRlbXBsYXRlTWFwJiByYXdUZW1wbGF0ZU1hcCgpIHsgcmV0dXJuIG1fcmF3
VGVtcGxhdGVzOyB9CiAgICAgVGVtcGxhdGVNYXAmIHRlbXBsYXRlTWFwKCkgeyByZXR1cm4gbV90
ZW1wbGF0ZXM7IH0KLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6U3RyaW5nPiYgdG9TdHJpbmdOYW1l
KCkgeyByZXR1cm4gbV90b1N0cmluZ05hbWU7IH0KLSAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVu
Y3Rpb25UZW1wbGF0ZT4mIHRvU3RyaW5nVGVtcGxhdGUoKSB7IHJldHVybiBtX3RvU3RyaW5nVGVt
cGxhdGU7IH0KKworICAgIHY4OjpQZXJzaXN0ZW50PHY4OjpGdW5jdGlvblRlbXBsYXRlPiYgdG9T
dHJpbmdUZW1wbGF0ZSgpCisgICAgeworICAgICAgICBpZiAobV90b1N0cmluZ1RlbXBsYXRlLklz
RW1wdHkoKSkKKyAgICAgICAgICAgIG1fdG9TdHJpbmdUZW1wbGF0ZSA9IHY4OjpQZXJzaXN0ZW50
PHY4OjpGdW5jdGlvblRlbXBsYXRlPjo6TmV3KHY4OjpGdW5jdGlvblRlbXBsYXRlOjpOZXcoY29u
c3RydWN0b3JPZlRvU3RyaW5nKSk7CisgICAgICAgIHJldHVybiBtX3RvU3RyaW5nVGVtcGxhdGU7
CisgICAgfQogCiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+JiBsYXp5
RXZlbnRMaXN0ZW5lclRvU3RyaW5nVGVtcGxhdGUoKQogICAgIHsKQEAgLTEzMyw3ICsxNDAsNiBA
QCBwcml2YXRlOgogCiAgICAgVGVtcGxhdGVNYXAgbV9yYXdUZW1wbGF0ZXM7CiAgICAgVGVtcGxh
dGVNYXAgbV90ZW1wbGF0ZXM7Ci0gICAgdjg6OlBlcnNpc3RlbnQ8djg6OlN0cmluZz4gbV90b1N0
cmluZ05hbWU7CiAgICAgdjg6OlBlcnNpc3RlbnQ8djg6OkZ1bmN0aW9uVGVtcGxhdGU+IG1fdG9T
dHJpbmdUZW1wbGF0ZTsKICAgICB2ODo6UGVyc2lzdGVudDx2ODo6RnVuY3Rpb25UZW1wbGF0ZT4g
bV9sYXp5RXZlbnRMaXN0ZW5lclRvU3RyaW5nVGVtcGxhdGU7CiAgICAgT3duUHRyPFN0cmluZ0Nh
Y2hlPiBtX3N0cmluZ0NhY2hlOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>