<?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>53727</bug_id>
          
          <creation_ts>2011-02-03 15:57:19 -0800</creation_ts>
          <short_desc>Clone WebClipboard to be frame-specific</short_desc>
          <delta_ts>2011-02-04 15:36:52 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Other</rep_platform>
          <op_sys>OS X 10.5</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>
          
          
          <everconfirmed>0</everconfirmed>
          <reporter name="Daniel Cheng">dcheng</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>dimich</cc>
    
    <cc>fishd</cc>
    
    <cc>levin</cc>
    
    <cc>tony</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>345085</commentid>
    <comment_count>0</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-02-03 15:57:19 -0800</bug_when>
    <thetext>Clone WebClipboard to be view-specific</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345089</commentid>
    <comment_count>1</comment_count>
      <attachid>81130</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-02-03 16:03:33 -0800</bug_when>
    <thetext>Created attachment 81130
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345091</commentid>
    <comment_count>2</comment_count>
      <attachid>81130</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-02-03 16:04:45 -0800</bug_when>
    <thetext>Comment on attachment 81130
Patch

webkit-patch didn&apos;t quite do what I expected.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345143</commentid>
    <comment_count>3</comment_count>
      <attachid>81142</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-02-03 16:42:31 -0800</bug_when>
    <thetext>Created attachment 81142
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345174</commentid>
    <comment_count>4</comment_count>
      <attachid>81142</attachid>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-02-03 17:03:03 -0800</bug_when>
    <thetext>Comment on attachment 81142
Patch

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

&gt; Source/WebCore/ChangeLog:12
&gt; +        For drop operations, Chrome currently snapshots the data and copies it
&gt; +        into the renderer process. As we add more supported drag data types, the
&gt; +        copy will become increasingly expensive. Instead, we&apos;d like to snapshot
&gt; +        data in the browser to reduce the amount of data copied and to support
&gt; +        Blob in DataTransferItem. In order to allow this, we associated

I&apos;m sorry, I&apos;m not sure I follow.  Is the copy you&apos;re referring to the IPC?  I thought the slow part was reading from the drag source?

When you say you snapshot data in the browser, you mean the browser process?  Wouldn&apos;t that still need to be copied over IPC?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345196</commentid>
    <comment_count>5</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-02-03 17:18:41 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 81142 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=81142&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:12
&gt; &gt; +        For drop operations, Chrome currently snapshots the data and copies it
&gt; &gt; +        into the renderer process. As we add more supported drag data types, the
&gt; &gt; +        copy will become increasingly expensive. Instead, we&apos;d like to snapshot
&gt; &gt; +        data in the browser to reduce the amount of data copied and to support
&gt; &gt; +        Blob in DataTransferItem. In order to allow this, we associated
&gt; 
&gt; I&apos;m sorry, I&apos;m not sure I follow.  Is the copy you&apos;re referring to the IPC?  I thought the slow part was reading from the drag source?

It is, but given that Chrome doesn&apos;t actually wait for WebKit to finish drop handling before signaling the OS that the drop is complete, it&apos;s not possible to implement the original design on OS X. There probably would have been corner cases that failed on Windows as well. It worked well on Linux though. =)

&gt; 
&gt; When you say you snapshot data in the browser, you mean the browser process?  Wouldn&apos;t that still need to be copied over IPC?

Yes, but only the data requested (through getData or otherwise) would be copied over. This saves copying over any data we don&apos;t care about (for example, images).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345223</commentid>
    <comment_count>6</comment_count>
      <attachid>81159</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-02-03 17:48:01 -0800</bug_when>
    <thetext>Created attachment 81159
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345227</commentid>
    <comment_count>7</comment_count>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-02-03 17:56:00 -0800</bug_when>
    <thetext>Adding Darin Fisher since there is a change to Chromium API</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345236</commentid>
    <comment_count>8</comment_count>
      <attachid>81159</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-02-03 18:31:02 -0800</bug_when>
    <thetext>Comment on attachment 81159
Patch

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

A few comments (r- to clarify the lifetime of stored Document*):

&gt; Source/WebCore/ChangeLog:16
&gt; +        No new tests.

Lets explain more here. Is it because this code path is not yet enabled and requires more changes in Chromium so when it&apos;ll be enabled the existing tests will cover?

&gt; Source/WebCore/platform/chromium/ChromiumDataObject.cpp:60
&gt; +    const Document* document, Clipboard::ClipboardType clipboardType)

WebKit doesn&apos;t try to fit in 80 chars. Same for the other files in patch.

&gt; Source/WebCore/platform/chromium/ReadableDataObject.h:67
&gt; +    const Document* m_document;

2 questions here: 
- If it is not a RefPtr, we should have a good theory why the document is guaranteed to be alive for the lifetime of ReadableDataObject, or we should clear it (and check in getClipboard), or make this a RefPtr.
- Why isn&apos;t it Frame?

&gt; Source/WebKit/chromium/public/WebFrameClient.h:92
&gt; +    // A frame specific clipboard. May return null, in which case... you&apos;re done.

It&apos;s be better to say a bit more, &quot;the caller should assume there is no data in clipboard&quot; or something like that?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345593</commentid>
    <comment_count>9</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2011-02-04 10:25:25 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; It is, but given that Chrome doesn&apos;t actually wait for WebKit to finish drop handling before signaling the OS that the drop is complete, it&apos;s not possible to implement the original design on OS X. There probably would have been corner cases that failed on Windows as well. It worked well on Linux though. =)

I see, so you read all the data and keep a copy in the browser process.  Then the renderer process determines what types of data it wants and asks the browser process for it.  The browser process then sends back the requested data.

Since this is async, it&apos;s possible for another drag to start before the renderer process asks for data, in which case it&apos;s ambiguous what the renderer is asking for.  To disambiguate, you include which frame is asking for the data.

Sounds reasonable to me.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345630</commentid>
    <comment_count>10</comment_count>
      <attachid>81159</attachid>
    <who name="Darin Fisher (:fishd, Google)">fishd</who>
    <bug_when>2011-02-04 11:22:25 -0800</bug_when>
    <thetext>Comment on attachment 81159
Patch

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

&gt;&gt; Source/WebKit/chromium/public/WebFrameClient.h:92
&gt;&gt; +    // A frame specific clipboard. May return null, in which case... you&apos;re done.
&gt; 
&gt; It&apos;s be better to say a bit more, &quot;the caller should assume there is no data in clipboard&quot; or something like that?

This API change looks good to me.  Not sure what the &quot;... you&apos;re done&quot; bit is supposed to imply.  If it means that you cannot use a null clipboard, then I think that follows without saying :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345827</commentid>
    <comment_count>11</comment_count>
      <attachid>81295</attachid>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-02-04 15:00:40 -0800</bug_when>
    <thetext>Created attachment 81295
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345850</commentid>
    <comment_count>12</comment_count>
      <attachid>81295</attachid>
    <who name="Dmitry Titov">dimich</who>
    <bug_when>2011-02-04 15:27:00 -0800</bug_when>
    <thetext>Comment on attachment 81295
Patch

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

Thanks! 
r=me with a small nit. Change on landing or re-submit a patch for cq.

&gt; Source/WebCore/platform/chromium/ReadableDataObject.h:65
&gt; +    // The owner document. Used to send IPCs back to the correspdonging view

Lets change &quot;document&quot;-&gt;&quot;frame&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>345864</commentid>
    <comment_count>13</comment_count>
    <who name="Daniel Cheng">dcheng</who>
    <bug_when>2011-02-04 15:36:52 -0800</bug_when>
    <thetext>Committed r77687: &lt;http://trac.webkit.org/changeset/77687&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81130</attachid>
            <date>2011-02-03 16:03:33 -0800</date>
            <delta_ts>2011-02-03 16:42:29 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53727-20110203160331.patch</filename>
            <type>text/plain</type>
            <size>15395</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvY2hyb21pdW0vRWRpdG9yQ2hyb21p
dW0uY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0b3JDaHJvbWl1bS5j
cHAKaW5kZXggY2E3ZjQxYThmNzY2M2ZhOWYzMzYyMjRiMmM4OTJmZDZiMzYxMzgyYi4uYWEyZWNj
ODJkN2FmMjQwOTg4NGQwMzIyNDg4Y2E4YWI3ODZiMjhmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0b3JDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0b3JDaHJvbWl1bS5jcHAKQEAgLTM5LDcgKzM5LDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBQYXNzUmVmUHRyPENsaXBib2FyZD4gRWRpdG9yOjpu
ZXdHZW5lcmFsQ2xpcGJvYXJkKENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksIEZyYW1lKiBm
cmFtZSkKIHsKLSAgICByZXR1cm4gQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZShDbGlwYm9hcmQ6
OkNvcHlBbmRQYXN0ZSwgcG9saWN5LCBmcmFtZSk7CisgICAgcmV0dXJuIENsaXBib2FyZENocm9t
aXVtOjpjcmVhdGUoZnJhbWUtPmRvY3VtZW50KCksIENsaXBib2FyZDo6Q29weUFuZFBhc3RlLCBw
b2xpY3ksIGZyYW1lKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdC5jcHAK
aW5kZXggNzhiNzk0YmZiN2VhZWVjMWYzN2NmNTQ5ZjRlNmQ1OWQ5ZDA3ODQwYi4uNjEwNjYxZTZi
ZDkxMTJhM2UxMTUxOWE2YzBlMjk4OWU3MDM3NjFkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3QuY3BwCkBAIC01Niwx
MiArNTYsMTQgQEAgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IENocm9taXVtRGF0YU9i
amVjdDo6Y3JlYXRlKFBhc3NSZWZQdHI8Q2hyb21pdW1EYXQKICAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IENocm9taXVtRGF0YU9iamVjdChkYXRhKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q2hyb21pdW1E
YXRhT2JqZWN0PiBDaHJvbWl1bURhdGFPYmplY3Q6OmNyZWF0ZVJlYWRhYmxlKENsaXBib2FyZDo6
Q2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQorUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmpl
Y3Q+IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlUmVhZGFibGUoCisgICAgY29uc3QgRG9jdW1l
bnQqIGRvY3VtZW50LCBDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IENocm9taXVtRGF0YU9iamVjdChSZWFkYWJsZURhdGFP
YmplY3Q6OmNyZWF0ZShjbGlwYm9hcmRUeXBlKSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
Q2hyb21pdW1EYXRhT2JqZWN0KFJlYWRhYmxlRGF0YU9iamVjdDo6Y3JlYXRlKGRvY3VtZW50LCBj
bGlwYm9hcmRUeXBlKSkpOwogfQogCi1QYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gQ2hy
b21pdW1EYXRhT2JqZWN0OjpjcmVhdGVXcml0YWJsZShDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUg
Y2xpcGJvYXJkVHlwZSkKK1Bhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBDaHJvbWl1bURh
dGFPYmplY3Q6OmNyZWF0ZVdyaXRhYmxlKAorICAgIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBj
bGlwYm9hcmRUeXBlKQogewogICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2hyb21pdW1EYXRhT2Jq
ZWN0KFdyaXRhYmxlRGF0YU9iamVjdDo6Y3JlYXRlKGNsaXBib2FyZFR5cGUpKSk7CiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmpl
Y3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVj
dC5oCmluZGV4IDRhYWM1YzlhZDZlOTYxY2IzNjU1OWU4ZmQxYTQ2ZGFhMDcyYWJmZmYuLjVmMzkz
NGRhMjNmNzllMGRhMjFjODBjMmE2OTJhNDQyZDkyOWZlNjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdC5oCkBAIC00MSw3
ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENocm9taXVtRGF0YU9iamVjdCA6
IHB1YmxpYyBSZWZDb3VudGVkPENocm9taXVtRGF0YU9iamVjdD4gewogcHVibGljOgogICAgIHN0
YXRpYyBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gY3JlYXRlKFBhc3NSZWZQdHI8Q2hy
b21pdW1EYXRhT2JqZWN0TGVnYWN5PiBkYXRhKTsKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxDaHJv
bWl1bURhdGFPYmplY3Q+IGNyZWF0ZVJlYWRhYmxlKENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSk7
CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBjcmVhdGVSZWFkYWJs
ZShjb25zdCBEb2N1bWVudCosIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSk7CiAgICAgc3RhdGlj
IFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBjcmVhdGVXcml0YWJsZShDbGlwYm9hcmQ6
OkNsaXBib2FyZFR5cGUpOwogCiAgICAgdm9pZCBjbGVhckRhdGEoY29uc3QgU3RyaW5nJiB0eXBl
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2Fy
ZENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2Fy
ZENocm9taXVtLmNwcAppbmRleCA0NmI0MzM5MTI0ODFiMmQzNGI3OTZmMzdjMjIyMWI4Y2ZmNzFm
ZTc4Li5iMTgyYzU5NTk0MDcxNGQ5OTQ1NTRkZmQzYWQyNTEyZGMxOTAzM2QzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0u
Y3BwCkBAIC04NSwxMyArODUsMTYgQEAgUGFzc1JlZlB0cjxDbGlwYm9hcmRDaHJvbWl1bT4gQ2xp
cGJvYXJkQ2hyb21pdW06OmNyZWF0ZShDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFQKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZENocm9taXVtKGNsaXBib2FyZFR5cGUsIGRhdGFPYmpl
Y3QsIHBvbGljeSwgZnJhbWUpKTsKIH0KIAotUGFzc1JlZlB0cjxDbGlwYm9hcmRDaHJvbWl1bT4g
Q2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZShDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUsCi0g
ICAgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUqIGZyYW1lKQorUGFzc1JlZlB0
cjxDbGlwYm9hcmRDaHJvbWl1bT4gQ2xpcGJvYXJkQ2hyb21pdW06OmNyZWF0ZSgKKyAgICBjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQsCisgICAgQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlLAor
ICAgIENsaXBib2FyZEFjY2Vzc1BvbGljeSBwb2xpY3ksCisgICAgRnJhbWUqIGZyYW1lKQogewog
ICAgIFJlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IGRhdGFPYmplY3QgPQogICAgICAgICBwb2xp
Y3kgPT0gQ2xpcGJvYXJkV3JpdGFibGUgPwogICAgICAgICBDaHJvbWl1bURhdGFPYmplY3Q6OmNy
ZWF0ZVdyaXRhYmxlKGNsaXBib2FyZFR5cGUpIDoKLSAgICAgICAgQ2hyb21pdW1EYXRhT2JqZWN0
OjpjcmVhdGVSZWFkYWJsZShjbGlwYm9hcmRUeXBlKTsKKyAgICAgICAgQ2hyb21pdW1EYXRhT2Jq
ZWN0OjpjcmVhdGVSZWFkYWJsZShkb2N1bWVudCwgY2xpcGJvYXJkVHlwZSk7CiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDbGlwYm9hcmRDaHJvbWl1bShjbGlwYm9hcmRUeXBlLCBkYXRhT2JqZWN0
LCBwb2xpY3ksIGZyYW1lKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1bS5oCmluZGV4IGQ1YWRhMTRkNDZiMGE2MzFiOGM0
Yjg5NjM3NmIxMjNmYTEwZGQ5ZDcuLmMzZTg2ZDNlMzEwYzE3OWYwZTg1YTY2MjFhYTU3MDAyODY5
YjdiODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBi
b2FyZENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xp
cGJvYXJkQ2hyb21pdW0uaApAQCAtNTAsNyArNTAsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAg
ICAgICAgICAgICBDbGlwYm9hcmRUeXBlLCBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4s
IENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsKIAogICAgICAgICBzdGF0aWMgUGFzc1Jl
ZlB0cjxDbGlwYm9hcmRDaHJvbWl1bT4gY3JlYXRlKAotICAgICAgICAgICAgQ2xpcGJvYXJkVHlw
ZSwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOworICAgICAgICAgICAgY29uc3QgRG9j
dW1lbnQqLCBDbGlwYm9hcmRUeXBlLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZyYW1lKik7CiAK
ICAgICAgICAgLy8gUmV0dXJucyB0aGUgZmlsZSBuYW1lIChub3QgaW5jbHVkaW5nIHRoZSBleHRl
bnNpb24pLiBUaGlzIHJlbW92ZXMgYW55CiAgICAgICAgIC8vIGludmFsaWQgZmlsZSBzeXN0ZW0g
Y2hhcmFjdGVycyBhcyB3ZWxsIGFzIG1ha2luZyBzdXJlIHRoZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1CcmlkZ2UuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2Nocm9taXVtL1BsYXRmb3JtQnJpZGdlLmgKaW5kZXggYzYwODVmMWIyMzRj
MTQ5ZGFlYzkxZWJmMGNkNmY1NmMxZTYxN2FkZi4uOWJmMjVkYzQ4OTQ0YjY3MmI4ZGQ0NjUyYTc2
YjA2NThiODAwOWJhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21p
dW0vUGxhdGZvcm1CcmlkZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9QbGF0Zm9ybUJyaWRnZS5oCkBAIC0xMDksOSArMTA5LDkgQEAgcHVibGljOgogICAgIHN0YXRp
YyB2b2lkIGNsaXBib2FyZFdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmlu
ZyYgZGF0YSwgY29uc3QgU3RyaW5nJiBtZXRhZGF0YSk7CiAKICAgICAvLyBJbnRlcmZhY2UgZm9y
IGhhbmRsaW5nIGNvcHkgYW5kIHBhc3RlLCBkcmFnIGFuZCBkcm9wLCBhbmQgc2VsZWN0aW9uIGNv
cHkuCi0gICAgc3RhdGljIEhhc2hTZXQ8U3RyaW5nPiBjbGlwYm9hcmRSZWFkQXZhaWxhYmxlVHlw
ZXMoUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciwgYm9vbCogY29udGFpbnNGaWxl
bmFtZXMpOwotICAgIHN0YXRpYyBib29sIGNsaXBib2FyZFJlYWREYXRhKFBhc3RlYm9hcmRQcml2
YXRlOjpDbGlwYm9hcmRCdWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgU3RyaW5nJiBkYXRhLCBT
dHJpbmcmIG1ldGFkYXRhKTsKLSAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gY2xpcGJvYXJkUmVh
ZEZpbGVuYW1lcyhQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyKTsKKyAgICBzdGF0
aWMgSGFzaFNldDxTdHJpbmc+IGNsaXBib2FyZFJlYWRBdmFpbGFibGVUeXBlcyhjb25zdCBEb2N1
bWVudCosIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIsIGJvb2wqIGNvbnRhaW5z
RmlsZW5hbWVzKTsKKyAgICBzdGF0aWMgYm9vbCBjbGlwYm9hcmRSZWFkRGF0YShjb25zdCBEb2N1
bWVudCosIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIsIGNvbnN0IFN0cmluZyYg
dHlwZSwgU3RyaW5nJiBkYXRhLCBTdHJpbmcmIG1ldGFkYXRhKTsKKyAgICBzdGF0aWMgVmVjdG9y
PFN0cmluZz4gY2xpcGJvYXJkUmVhZEZpbGVuYW1lcyhjb25zdCBEb2N1bWVudCosIFBhc3RlYm9h
cmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIpOwogCiAgICAgLy8gQ29va2llcyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBz
dGF0aWMgdm9pZCBzZXRDb29raWVzKGNvbnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0
IFN0cmluZyYgdmFsdWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hy
b21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5jcHAKaW5kZXggZGJmNDczOTBkNjlmOWJjNzVmNzYx
MDZiYjJhZjA1NTNjNDI3NjhjNi4uNTgyZmVmZGFiN2Q2NjIwMzNhNThmMDc3MTc2ZGQ4ODM5ODgw
N2RhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUmVhZGFi
bGVEYXRhT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9S
ZWFkYWJsZURhdGFPYmplY3QuY3BwCkBAIC00MywxMyArNDMsMTUgQEAgc3RhdGljIFBhc3RlYm9h
cmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgY2xpcGJvYXJkQnVmZmVyKENsaXBib2FyZDo6Q2xp
cGJvYXJkVHkKICAgICByZXR1cm4gY2xpcGJvYXJkVHlwZSA9PSBDbGlwYm9hcmQ6OkRyYWdBbmRE
cm9wID8gUGFzdGVib2FyZFByaXZhdGU6OkRyYWdCdWZmZXIgOiBQYXN0ZWJvYXJkUHJpdmF0ZTo6
U3RhbmRhcmRCdWZmZXI7CiB9CiAKLVBhc3NSZWZQdHI8UmVhZGFibGVEYXRhT2JqZWN0PiBSZWFk
YWJsZURhdGFPYmplY3Q6OmNyZWF0ZShDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJk
VHlwZSkKK1Bhc3NSZWZQdHI8UmVhZGFibGVEYXRhT2JqZWN0PiBSZWFkYWJsZURhdGFPYmplY3Q6
OmNyZWF0ZSgKKyAgICBjb25zdCBEb2N1bWVudCogZG9jdW1lbnQsIENsaXBib2FyZDo6Q2xpcGJv
YXJkVHlwZSBjbGlwYm9hcmRUeXBlKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgUmVhZGFi
bGVEYXRhT2JqZWN0KGNsaXBib2FyZFR5cGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IFJl
YWRhYmxlRGF0YU9iamVjdChkb2N1bWVudCwgY2xpcGJvYXJkVHlwZSkpOwogfQogCi1SZWFkYWJs
ZURhdGFPYmplY3Q6OlJlYWRhYmxlRGF0YU9iamVjdChDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUg
Y2xpcGJvYXJkVHlwZSkKLSAgICA6IG1fY2xpcGJvYXJkVHlwZShjbGlwYm9hcmRUeXBlKQorUmVh
ZGFibGVEYXRhT2JqZWN0OjpSZWFkYWJsZURhdGFPYmplY3QoY29uc3QgRG9jdW1lbnQqIGRvY3Vt
ZW50LCBDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKKyAgICA6IG1fZG9j
dW1lbnQoZG9jdW1lbnQpCisgICAgLCBtX2NsaXBib2FyZFR5cGUoY2xpcGJvYXJkVHlwZSkKICAg
ICAsIG1fY29udGFpbnNGaWxlbmFtZXMoZmFsc2UpCiAgICAgLCBtX2lzVHlwZUNhY2hlSW5pdGlh
bGl6ZWQoZmFsc2UpCiB7CkBAIC05Myw3ICs5NSw3IEBAIFN0cmluZyBSZWFkYWJsZURhdGFPYmpl
Y3Q6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZWVkZWQpIGNvbnN0CiAg
ICAgICAgIHJldHVybiBkYXRhOwogICAgIH0KICAgICBzdWNjZWVkZWQgPSBQbGF0Zm9ybUJyaWRn
ZTo6Y2xpcGJvYXJkUmVhZERhdGEoCi0gICAgICAgIGNsaXBib2FyZEJ1ZmZlcihtX2NsaXBib2Fy
ZFR5cGUpLCB0eXBlLCBkYXRhLCBpZ25vcmVkTWV0YWRhdGEpOworICAgICAgICBtX2RvY3VtZW50
LCBjbGlwYm9hcmRCdWZmZXIobV9jbGlwYm9hcmRUeXBlKSwgdHlwZSwgZGF0YSwgaWdub3JlZE1l
dGFkYXRhKTsKICAgICByZXR1cm4gZGF0YTsKIH0KIApAQCAtMTAyLDcgKzEwNCw3IEBAIFN0cmlu
ZyBSZWFkYWJsZURhdGFPYmplY3Q6OnVybFRpdGxlKCkgY29uc3QKICAgICBTdHJpbmcgaWdub3Jl
ZERhdGE7CiAgICAgU3RyaW5nIHVybFRpdGxlOwogICAgIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9h
cmRSZWFkRGF0YSgKLSAgICAgICAgY2xpcGJvYXJkQnVmZmVyKG1fY2xpcGJvYXJkVHlwZSksIG1p
bWVUeXBlVGV4dFVSSUxpc3QsIGlnbm9yZWREYXRhLCB1cmxUaXRsZSk7CisgICAgICAgIG1fZG9j
dW1lbnQsIGNsaXBib2FyZEJ1ZmZlcihtX2NsaXBib2FyZFR5cGUpLCBtaW1lVHlwZVRleHRVUklM
aXN0LCBpZ25vcmVkRGF0YSwgdXJsVGl0bGUpOwogICAgIHJldHVybiB1cmxUaXRsZTsKIH0KIApA
QCAtMTExLDcgKzExMyw3IEBAIEtVUkwgUmVhZGFibGVEYXRhT2JqZWN0OjpodG1sQmFzZVVybCgp
IGNvbnN0CiAgICAgU3RyaW5nIGlnbm9yZWREYXRhOwogICAgIFN0cmluZyBodG1sQmFzZVVybDsK
ICAgICBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZERhdGEoCi0gICAgICAgIGNsaXBib2Fy
ZEJ1ZmZlcihtX2NsaXBib2FyZFR5cGUpLCBtaW1lVHlwZVRleHRIVE1MLCBpZ25vcmVkRGF0YSwg
aHRtbEJhc2VVcmwpOworICAgICAgICBtX2RvY3VtZW50LCBjbGlwYm9hcmRCdWZmZXIobV9jbGlw
Ym9hcmRUeXBlKSwgbWltZVR5cGVUZXh0SFRNTCwgaWdub3JlZERhdGEsIGh0bWxCYXNlVXJsKTsK
ICAgICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGh0bWxCYXNlVXJsKTsKIH0KIApAQCAt
MTIzLDcgKzEyNSw3IEBAIGJvb2wgUmVhZGFibGVEYXRhT2JqZWN0Ojpjb250YWluc0ZpbGVuYW1l
cygpIGNvbnN0CiAKIFZlY3RvcjxTdHJpbmc+IFJlYWRhYmxlRGF0YU9iamVjdDo6ZmlsZW5hbWVz
KCkgY29uc3QKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRGaWxl
bmFtZXMoY2xpcGJvYXJkQnVmZmVyKG1fY2xpcGJvYXJkVHlwZSkpOworICAgIHJldHVybiBQbGF0
Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEZpbGVuYW1lcyhtX2RvY3VtZW50LCBjbGlwYm9hcmRC
dWZmZXIobV9jbGlwYm9hcmRUeXBlKSk7CiB9CiAKIHZvaWQgUmVhZGFibGVEYXRhT2JqZWN0Ojpl
bnN1cmVUeXBlQ2FjaGVJbml0aWFsaXplZCgpIGNvbnN0CkBAIC0xMzIsNyArMTM0LDcgQEAgdm9p
ZCBSZWFkYWJsZURhdGFPYmplY3Q6OmVuc3VyZVR5cGVDYWNoZUluaXRpYWxpemVkKCkgY29uc3QK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgbV90eXBlcyA9IFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9h
cmRSZWFkQXZhaWxhYmxlVHlwZXMoCi0gICAgICAgIGNsaXBib2FyZEJ1ZmZlcihtX2NsaXBib2Fy
ZFR5cGUpLCAmbV9jb250YWluc0ZpbGVuYW1lcyk7CisgICAgICAgIG1fZG9jdW1lbnQsIGNsaXBi
b2FyZEJ1ZmZlcihtX2NsaXBib2FyZFR5cGUpLCAmbV9jb250YWluc0ZpbGVuYW1lcyk7CiAgICAg
bV9pc1R5cGVDYWNoZUluaXRpYWxpemVkID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuaAppbmRleCAwMjdl
MGVkMzQxYzhjNWRlYzI4NzI0MDU2ZjEwMDA2Y2Q2YzFiZDk1Li5hNTQzMDEwNTBhMzIwOTgzYWMz
MzM5MjI2OTMwNTg5YzVjZmNjYmYxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAvLyBicm93c2VyIHRvIHRoZSByZW5kZXJlci4KIGNsYXNzIFJlYWRh
YmxlRGF0YU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxlRGF0YU9iamVjdD4gewog
cHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlYWRhYmxlRGF0YU9iamVjdD4gY3JlYXRl
KENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhZGFi
bGVEYXRhT2JqZWN0PiBjcmVhdGUoY29uc3QgRG9jdW1lbnQqLCBDbGlwYm9hcmQ6OkNsaXBib2Fy
ZFR5cGUpOwogCiAgICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgSGFzaFNldDxTdHJpbmc+
IHR5cGVzKCkgY29uc3Q7CkBAIC01NywxMSArNTcsMTUgQEAgcHVibGljOgogICAgIFZlY3RvcjxT
dHJpbmc+IGZpbGVuYW1lcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFJlYWRh
YmxlRGF0YU9iamVjdChDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUpOworICAgIGV4cGxpY2l0IFJl
YWRhYmxlRGF0YU9iamVjdChjb25zdCBEb2N1bWVudCosIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlw
ZSk7CiAKICAgICAvLyBUaGlzIGlzbid0IGFsd2F5cyBjb25zdC4uLiBidXQgbW9zdCBvZiB0aGUg
dGltZSBpdCBpcy4KICAgICB2b2lkIGVuc3VyZVR5cGVDYWNoZUluaXRpYWxpemVkKCkgY29uc3Q7
CiAKKyAgICAvLyBUaGUgb3duZXIgZG9jdW1lbnQuIFVzZWQgdG8gc2VuZCBJUENzIGJhY2sgdG8g
dGhlIGNvcnJlc3Bkb25naW5nIHZpZXcKKyAgICAvLyB2aWEgV2ViRnJhbWVDbGllbnQuCisgICAg
Y29uc3QgRG9jdW1lbnQqIG1fZG9jdW1lbnQ7CisKICAgICBDbGlwYm9hcmQ6OkNsaXBib2FyZFR5
cGUgbV9jbGlwYm9hcmRUeXBlOwogCiAgICAgLy8gVG8gYXZvaWQgbWFraW5nIGEgbG90IG9mIElQ
QyBjYWxscyBmb3IgZWFjaCBkcmFnIGV2ZW50LCB3ZSBjYWNoZSBzb21lCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCBmN2JlZjUzZjEyYmY2
ZGQyMTA1ZmZmOTRkMjk3MmQ0YWQ0ZTFjYWExLi4yZmZiMmViOTY4ZjdiZTRkMmMzN2Q3ZGMyYTI5
NzE4NGQ0ZTYwMTlkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9X
ZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZy
YW1lQ2xpZW50LmgKQEAgLTQxLDYgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAKIGNsYXNz
IFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0OwogY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RD
bGllbnQ7CitjbGFzcyBXZWJDbGlwYm9hcmQ7CiBjbGFzcyBXZWJDb29raWVKYXI7CiBjbGFzcyBX
ZWJEYXRhU291cmNlOwogY2xhc3MgV2ViRm9ybUVsZW1lbnQ7CkBAIC04OCw2ICs4OSw5IEBAIHB1
YmxpYzoKICAgICAvLyBXZWJLaXRDbGllbnQ6OmNvb2tpZUphcigpIHdpbGwgYmUgY2FsbGVkIHRv
IGFjY2VzcyBjb29raWVzLgogICAgIHZpcnR1YWwgV2ViQ29va2llSmFyKiBjb29raWVKYXIoV2Vi
RnJhbWUqKSB7IHJldHVybiAwOyB9CiAKKyAgICAvLyBBIGZyYW1lIHNwZWNpZmljIGNsaXBib2Fy
ZC4gTWF5IHJldHVybiBudWxsLCBpbiB3aGljaCBjYXNlLi4uIHlvdSdyZSBkb25lLgorICAgIHZp
cnR1YWwgV2ViQ2xpcGJvYXJkKiBjbGlwYm9hcmQoKSB7IHJldHVybiAwOyB9CisKIAogICAgIC8v
IEdlbmVyYWwgbm90aWZpY2F0aW9ucyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Q
bGF0Zm9ybUJyaWRnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybUJy
aWRnZS5jcHAKaW5kZXggNGRkZTNjYWFjNzY5M2FjZjgyOTAxNGI3MmJiNmIzMTQ1M2RkZmFiNy4u
ZWVhNDA2NGJjMWY4NGM3NGZiYTUxZTY5OWU0OTc4MDNkNmRiZTc4YyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1CcmlkZ2UuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtQnJpZGdlLmNwcApAQCAtMTMyLDYgKzEzMiwxNCBA
QCBzdGF0aWMgV2ViV2lkZ2V0Q2xpZW50KiB0b1dlYldpZGdldENsaWVudChXaWRnZXQqIHdpZGdl
dCkKICAgICByZXR1cm4gY2hyb21lQ2xpZW50SW1wbC0+d2ViVmlldygpLT5jbGllbnQoKTsKIH0K
IAorc3RhdGljIFdlYkNsaXBib2FyZCogZ2V0Q2xpcGJvYXJkKGNvbnN0IERvY3VtZW50KiBkb2N1
bWVudCkKK3sKKyAgICBXZWJGcmFtZUltcGwqIGZyYW1lSW1wbCA9IFdlYkZyYW1lSW1wbDo6ZnJv
bUZyYW1lKGRvY3VtZW50LT5mcmFtZSgpKTsKKyAgICBpZiAoIWZyYW1lSW1wbCB8fCAhZnJhbWVJ
bXBsLT5jbGllbnQoKSkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIGZyYW1lSW1wbC0+
Y2xpZW50KCktPmNsaXBib2FyZCgpOworfQorCiBzdGF0aWMgV2ViQ29va2llSmFyKiBnZXRDb29r
aWVKYXIoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50KQogewogICAgIFdlYkZyYW1lSW1wbCogZnJh
bWVJbXBsID0gV2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUoZG9jdW1lbnQtPmZyYW1lKCkpOwpAQCAt
MjE3LDkgKzIyNSwxMSBAQCB2b2lkIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRXcml0ZURhdGEo
Y29uc3QgU3RyaW5nJiB0eXBlLAogfQogCiBIYXNoU2V0PFN0cmluZz4gUGxhdGZvcm1CcmlkZ2U6
OmNsaXBib2FyZFJlYWRBdmFpbGFibGVUeXBlcygKLSAgICBQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xp
cGJvYXJkQnVmZmVyIGJ1ZmZlciwgYm9vbCogY29udGFpbnNGaWxlbmFtZXMpCisgICAgY29uc3Qg
RG9jdW1lbnQqIGRvY3VtZW50LAorICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZm
ZXIgYnVmZmVyLAorICAgIGJvb2wqIGNvbnRhaW5zRmlsZW5hbWVzKQogewotICAgIFdlYlZlY3Rv
cjxXZWJTdHJpbmc+IHJlc3VsdCA9IHdlYktpdENsaWVudCgpLT5jbGlwYm9hcmQoKS0+cmVhZEF2
YWlsYWJsZVR5cGVzKAorICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHJlc3VsdCA9IGdldENsaXBi
b2FyZChkb2N1bWVudCktPnJlYWRBdmFpbGFibGVUeXBlcygKICAgICAgICAgc3RhdGljX2Nhc3Q8
V2ViQ2xpcGJvYXJkOjpCdWZmZXI+KGJ1ZmZlciksIGNvbnRhaW5zRmlsZW5hbWVzKTsKICAgICBI
YXNoU2V0PFN0cmluZz4gdHlwZXM7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCByZXN1bHQu
c2l6ZSgpOyArK2kpCkBAIC0yMjcsMTIgKzIzNywxNSBAQCBIYXNoU2V0PFN0cmluZz4gUGxhdGZv
cm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRBdmFpbGFibGVUeXBlcygKICAgICByZXR1cm4gdHlwZXM7
CiB9CiAKLWJvb2wgUGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWREYXRhKFBhc3RlYm9hcmRQ
cml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB0eXBlLCBTdHJpbmcmIGRhdGEsIFN0cmluZyYg
bWV0YWRhdGEpCitib29sIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkRGF0YShjb25zdCBE
b2N1bWVudCogZG9jdW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlciwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdHlwZSwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyYgZGF0YSwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyYgbWV0YWRhdGEpCiB7CiAgICAgV2Vi
U3RyaW5nIHJlc3VsdERhdGE7CiAgICAgV2ViU3RyaW5nIHJlc3VsdE1ldGFkYXRhOwotICAgIGJv
b2wgc3VjY2VlZGVkID0gd2ViS2l0Q2xpZW50KCktPmNsaXBib2FyZCgpLT5yZWFkRGF0YSgKKyAg
ICBib29sIHN1Y2NlZWRlZCA9IGdldENsaXBib2FyZChkb2N1bWVudCktPnJlYWREYXRhKAogICAg
ICAgICBzdGF0aWNfY2FzdDxXZWJDbGlwYm9hcmQ6OkJ1ZmZlcj4oYnVmZmVyKSwgdHlwZSwgJnJl
c3VsdERhdGEsICZyZXN1bHRNZXRhZGF0YSk7CiAgICAgaWYgKHN1Y2NlZWRlZCkgewogICAgICAg
ICBkYXRhID0gcmVzdWx0RGF0YTsKQEAgLTI0MSw5ICsyNTQsMTAgQEAgYm9vbCBQbGF0Zm9ybUJy
aWRnZTo6Y2xpcGJvYXJkUmVhZERhdGEoUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZl
ciBidWZmZXIKICAgICByZXR1cm4gc3VjY2VlZGVkOwogfQogCi1WZWN0b3I8U3RyaW5nPiBQbGF0
Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEZpbGVuYW1lcyhQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xp
cGJvYXJkQnVmZmVyIGJ1ZmZlcikKK1ZlY3RvcjxTdHJpbmc+IFBsYXRmb3JtQnJpZGdlOjpjbGlw
Ym9hcmRSZWFkRmlsZW5hbWVzKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3RlYm9hcmRQcml2
YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVyKQogewotICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+
IHJlc3VsdCA9IHdlYktpdENsaWVudCgpLT5jbGlwYm9hcmQoKS0+cmVhZEZpbGVuYW1lcygKKyAg
ICBXZWJWZWN0b3I8V2ViU3RyaW5nPiByZXN1bHQgPSBnZXRDbGlwYm9hcmQoZG9jdW1lbnQpLT5y
ZWFkRmlsZW5hbWVzKAogICAgICAgICBzdGF0aWNfY2FzdDxXZWJDbGlwYm9hcmQ6OkJ1ZmZlcj4o
YnVmZmVyKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gY29udmVydGVkUmVzdWx0OwogICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDBiMjFmNWY2M2YwYTIxZGFhYjA2N2Q3OTVi
ZWNhMDk4OGNiMDUyMmUuLjMyYWFiZDkwMTE1MjgyMWNkOTM1NDU2NTQ0ZTQ5ODlmZTExNDk2ZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKQEAgLTE3NjEs
NyArMTc2MSw4IEBAIFdlYkRyYWdPcGVyYXRpb24gV2ViVmlld0ltcGw6OmRyYWdUYXJnZXREcmFn
RW50ZXJOZXcoCiB7CiAgICAgQVNTRVJUKCFtX2N1cnJlbnREcmFnRGF0YS5nZXQoKSk7CiAKLSAg
ICBtX2N1cnJlbnREcmFnRGF0YSA9IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlUmVhZGFibGUo
Q2xpcGJvYXJkOjpEcmFnQW5kRHJvcCk7CisgICAgbV9jdXJyZW50RHJhZ0RhdGEgPSBDaHJvbWl1
bURhdGFPYmplY3Q6OmNyZWF0ZVJlYWRhYmxlKAorICAgICAgICBtX3BhZ2UtPm1haW5GcmFtZSgp
LT5kb2N1bWVudCgpLCBDbGlwYm9hcmQ6OkRyYWdBbmREcm9wKTsKICAgICBtX2RyYWdJZGVudGl0
eSA9IGlkZW50aXR5OwogICAgIG1fb3BlcmF0aW9uc0FsbG93ZWQgPSBvcGVyYXRpb25zQWxsb3dl
ZDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81142</attachid>
            <date>2011-02-03 16:42:31 -0800</date>
            <delta_ts>2011-02-03 17:47:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53727-20110203164230.patch</filename>
            <type>text/plain</type>
            <size>18945</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNGQyOGNlNjdhZDhhMzg0YzJhMTE1MDRlMmJmZmZkNzY3MjY3OWM1Li5j
OGY5ZTA2NTE5MmFiNTA2OWQ4YjI3NTIyMmZhNTRlMDQyOWI4OGVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTEtMDItMDMgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xv
bmUgV2ViQ2xpcGJvYXJkIHRvIGJlIGZyYW1lLXNwZWNpZmljLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MjcKKworICAgICAgICBGb3IgZHJvcCBv
cGVyYXRpb25zLCBDaHJvbWUgY3VycmVudGx5IHNuYXBzaG90cyB0aGUgZGF0YSBhbmQgY29waWVz
IGl0CisgICAgICAgIGludG8gdGhlIHJlbmRlcmVyIHByb2Nlc3MuIEFzIHdlIGFkZCBtb3JlIHN1
cHBvcnRlZCBkcmFnIGRhdGEgdHlwZXMsIHRoZQorICAgICAgICBjb3B5IHdpbGwgYmVjb21lIGlu
Y3JlYXNpbmdseSBleHBlbnNpdmUuIEluc3RlYWQsIHdlJ2QgbGlrZSB0byBzbmFwc2hvdAorICAg
ICAgICBkYXRhIGluIHRoZSBicm93c2VyIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIGRhdGEgY29w
aWVkIGFuZCB0byBzdXBwb3J0CisgICAgICAgIEJsb2IgaW4gRGF0YVRyYW5zZmVySXRlbS4gSW4g
b3JkZXIgdG8gYWxsb3cgdGhpcywgd2UgYXNzb2NpYXRlZAorICAgICAgICBXZWJDbGlwYm9hcmQg
d2l0aCBhIGZyYW1lIHNvIGl0IGNhbiBjb3JyZWN0bHkgcm91dGUgaXRzIElQQ3MgdG8gdGhlCisg
ICAgICAgIGNvcnJlc3BvbmRpbmcgQ2hyb21pdW0gaG9zdC4KKworICAgICAgICBObyBuZXcgdGVz
dHMuCisKKyAgICAgICAgKiBlZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlUmVhZGFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGVXcml0YWJsZSk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
Q2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OlJlYWRhYmxlRGF0YU9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVEYXRhT2JqZWN0Ojp1cmxUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFk
YWJsZURhdGFPYmplY3Q6Omh0bWxCYXNlVXJsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxl
RGF0YU9iamVjdDo6ZmlsZW5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlRGF0YU9i
amVjdDo6ZW5zdXJlVHlwZUNhY2hlSW5pdGlhbGl6ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oOgorCiAyMDExLTAyLTAzICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0b3JDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVt
LmNwcAppbmRleCBjYTdmNDFhOGY3NjYzZmE5ZjMzNjIyNGIyYzg5MmZkNmIzNjEzODJiLi5hYTJl
Y2M4MmQ3YWYyNDA5ODg0ZDAzMjI0ODhjYThhYjc4NmIyOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcApAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6
Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUq
IGZyYW1lKQogewotICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKENsaXBib2Fy
ZDo6Q29weUFuZFBhc3RlLCBwb2xpY3ksIGZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkQ2hy
b21pdW06OmNyZWF0ZShmcmFtZS0+ZG9jdW1lbnQoKSwgQ2xpcGJvYXJkOjpDb3B5QW5kUGFzdGUs
IHBvbGljeSwgZnJhbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNw
cAppbmRleCA3OGI3OTRiZmI3ZWFlZWMxZjM3Y2Y1NDlmNGU2ZDU5ZDlkMDc4NDBiLi42MTA2NjFl
NmJkOTExMmEzZTExNTE5YTZjMGUyOTg5ZTcwMzc2MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdC5jcHAKQEAgLTU2
LDEyICs1NiwxNCBAQCBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gQ2hyb21pdW1EYXRh
T2JqZWN0OjpjcmVhdGUoUGFzc1JlZlB0cjxDaHJvbWl1bURhdAogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ2hyb21pdW1EYXRhT2JqZWN0KGRhdGEpKTsKIH0KIAotUGFzc1JlZlB0cjxDaHJvbWl1
bURhdGFPYmplY3Q+IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlUmVhZGFibGUoQ2xpcGJvYXJk
OjpDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCitQYXNzUmVmUHRyPENocm9taXVtRGF0YU9i
amVjdD4gQ2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGVSZWFkYWJsZSgKKyAgICBjb25zdCBEb2N1
bWVudCogZG9jdW1lbnQsIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2hyb21pdW1EYXRhT2JqZWN0KFJlYWRhYmxlRGF0
YU9iamVjdDo6Y3JlYXRlKGNsaXBib2FyZFR5cGUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDaHJvbWl1bURhdGFPYmplY3QoUmVhZGFibGVEYXRhT2JqZWN0OjpjcmVhdGUoZG9jdW1lbnQs
IGNsaXBib2FyZFR5cGUpKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBD
aHJvbWl1bURhdGFPYmplY3Q6OmNyZWF0ZVdyaXRhYmxlKENsaXBib2FyZDo6Q2xpcGJvYXJkVHlw
ZSBjbGlwYm9hcmRUeXBlKQorUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IENocm9taXVt
RGF0YU9iamVjdDo6Y3JlYXRlV3JpdGFibGUoCisgICAgQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBl
IGNsaXBib2FyZFR5cGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDaHJvbWl1bURhdGFP
YmplY3QoV3JpdGFibGVEYXRhT2JqZWN0OjpjcmVhdGUoY2xpcGJvYXJkVHlwZSkpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2Jq
ZWN0LmgKaW5kZXggNGFhYzVjOWFkNmU5NjFjYjM2NTU5ZThmZDFhNDZkYWEwNzJhYmZmZi4uNWYz
OTM0ZGEyM2Y3OWUwZGEyMWM4MGMyYTY5MmE0NDJkOTI5ZmU2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmgKQEAgLTQx
LDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2hyb21pdW1EYXRhT2JqZWN0
IDogcHVibGljIFJlZkNvdW50ZWQ8Q2hyb21pdW1EYXRhT2JqZWN0PiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBjcmVhdGUoUGFzc1JlZlB0cjxD
aHJvbWl1bURhdGFPYmplY3RMZWdhY3k+IGRhdGEpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENo
cm9taXVtRGF0YU9iamVjdD4gY3JlYXRlUmVhZGFibGUoQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBl
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IGNyZWF0ZVJlYWRh
YmxlKGNvbnN0IERvY3VtZW50KiwgQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlKTsKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IGNyZWF0ZVdyaXRhYmxlKENsaXBib2Fy
ZDo6Q2xpcGJvYXJkVHlwZSk7CiAKICAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJv
YXJkQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJv
YXJkQ2hyb21pdW0uY3BwCmluZGV4IDQ2YjQzMzkxMjQ4MWIyZDM0Yjc5NmYzN2MyMjIxYjhjZmY3
MWZlNzguLmIxODJjNTk1OTQwNzE0ZDk5NDU1NGRmZDNhZDI1MTJkYzE5MDMzZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1
bS5jcHAKQEAgLTg1LDEzICs4NSwxNiBAQCBQYXNzUmVmUHRyPENsaXBib2FyZENocm9taXVtPiBD
bGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVAogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkQ2hyb21pdW0oY2xpcGJvYXJkVHlwZSwgZGF0YU9i
amVjdCwgcG9saWN5LCBmcmFtZSkpOwogfQogCi1QYXNzUmVmUHRyPENsaXBib2FyZENocm9taXVt
PiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSwK
LSAgICBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCitQYXNzUmVm
UHRyPENsaXBib2FyZENocm9taXVtPiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKAorICAgIGNv
bnN0IERvY3VtZW50KiBkb2N1bWVudCwKKyAgICBDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUs
CisgICAgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwKKyAgICBGcmFtZSogZnJhbWUpCiB7
CiAgICAgUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9iamVjdCA9CiAgICAgICAgIHBv
bGljeSA9PSBDbGlwYm9hcmRXcml0YWJsZSA/CiAgICAgICAgIENocm9taXVtRGF0YU9iamVjdDo6
Y3JlYXRlV3JpdGFibGUoY2xpcGJvYXJkVHlwZSkgOgotICAgICAgICBDaHJvbWl1bURhdGFPYmpl
Y3Q6OmNyZWF0ZVJlYWRhYmxlKGNsaXBib2FyZFR5cGUpOworICAgICAgICBDaHJvbWl1bURhdGFP
YmplY3Q6OmNyZWF0ZVJlYWRhYmxlKGRvY3VtZW50LCBjbGlwYm9hcmRUeXBlKTsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZENocm9taXVtKGNsaXBib2FyZFR5cGUsIGRhdGFPYmpl
Y3QsIHBvbGljeSwgZnJhbWUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmgKaW5kZXggZDVhZGExNGQ0NmIwYTYzMWI4
YzRiODk2Mzc2YjEyM2ZhMTBkZDlkNy4uYzNlODZkM2UzMTBjMTc5ZjBlODVhNjYyMWFhNTcwMDI4
NjliN2I4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xp
cGJvYXJkQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRDaHJvbWl1bS5oCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgIENsaXBib2FyZFR5cGUsIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0
PiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOwogCiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENsaXBib2FyZENocm9taXVtPiBjcmVhdGUoCi0gICAgICAgICAgICBDbGlwYm9hcmRU
eXBlLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZyYW1lKik7CisgICAgICAgICAgICBjb25zdCBE
b2N1bWVudCosIENsaXBib2FyZFR5cGUsIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsK
IAogICAgICAgICAvLyBSZXR1cm5zIHRoZSBmaWxlIG5hbWUgKG5vdCBpbmNsdWRpbmcgdGhlIGV4
dGVuc2lvbikuIFRoaXMgcmVtb3ZlcyBhbnkKICAgICAgICAgLy8gaW52YWxpZCBmaWxlIHN5c3Rl
bSBjaGFyYWN0ZXJzIGFzIHdlbGwgYXMgbWFraW5nIHN1cmUgdGhlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1CcmlkZ2UuaAppbmRleCBjNjA4NWYxYjIz
NGMxNDlkYWVjOTFlYmYwY2Q2ZjU2YzFlNjE3YWRmLi45YmYyNWRjNDg5NDRiNjcyYjhkZDQ2NTJh
NzZiMDY1OGI4MDA5YmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybUJyaWRnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtQnJpZGdlLmgKQEAgLTEwOSw5ICsxMDksOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgY2xpcGJvYXJkV3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1ldGFkYXRhKTsKIAogICAgIC8vIEludGVyZmFjZSBm
b3IgaGFuZGxpbmcgY29weSBhbmQgcGFzdGUsIGRyYWcgYW5kIGRyb3AsIGFuZCBzZWxlY3Rpb24g
Y29weS4KLSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IGNsaXBib2FyZFJlYWRBdmFpbGFibGVU
eXBlcyhQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyLCBib29sKiBjb250YWluc0Zp
bGVuYW1lcyk7Ci0gICAgc3RhdGljIGJvb2wgY2xpcGJvYXJkUmVhZERhdGEoUGFzdGVib2FyZFBy
aXZhdGU6OkNsaXBib2FyZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBTdHJpbmcmIGRhdGEs
IFN0cmluZyYgbWV0YWRhdGEpOwotICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBjbGlwYm9hcmRS
ZWFkRmlsZW5hbWVzKFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIpOworICAgIHN0
YXRpYyBIYXNoU2V0PFN0cmluZz4gY2xpcGJvYXJkUmVhZEF2YWlsYWJsZVR5cGVzKGNvbnN0IERv
Y3VtZW50KiwgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciwgYm9vbCogY29udGFp
bnNGaWxlbmFtZXMpOworICAgIHN0YXRpYyBib29sIGNsaXBib2FyZFJlYWREYXRhKGNvbnN0IERv
Y3VtZW50KiwgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciwgY29uc3QgU3RyaW5n
JiB0eXBlLCBTdHJpbmcmIGRhdGEsIFN0cmluZyYgbWV0YWRhdGEpOworICAgIHN0YXRpYyBWZWN0
b3I8U3RyaW5nPiBjbGlwYm9hcmRSZWFkRmlsZW5hbWVzKGNvbnN0IERvY3VtZW50KiwgUGFzdGVi
b2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlcik7CiAKICAgICAvLyBDb29raWVzIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAg
IHN0YXRpYyB2b2lkIHNldENvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmNwcAppbmRleCBkYmY0NzM5MGQ2OWY5YmM3NWY3
NjEwNmJiMmFmMDU1M2M0Mjc2OGM2Li41ODJmZWZkYWI3ZDY2MjAzM2E1OGYwNzcxNzZkZDg4Mzk4
ODA3ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9SZWFk
YWJsZURhdGFPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1JlYWRhYmxlRGF0YU9iamVjdC5jcHAKQEAgLTQzLDEzICs0MywxNSBAQCBzdGF0aWMgUGFzdGVi
b2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBjbGlwYm9hcmRCdWZmZXIoQ2xpcGJvYXJkOjpD
bGlwYm9hcmRUeQogICAgIHJldHVybiBjbGlwYm9hcmRUeXBlID09IENsaXBib2FyZDo6RHJhZ0Fu
ZERyb3AgPyBQYXN0ZWJvYXJkUHJpdmF0ZTo6RHJhZ0J1ZmZlciA6IFBhc3RlYm9hcmRQcml2YXRl
OjpTdGFuZGFyZEJ1ZmZlcjsKIH0KIAotUGFzc1JlZlB0cjxSZWFkYWJsZURhdGFPYmplY3Q+IFJl
YWRhYmxlRGF0YU9iamVjdDo6Y3JlYXRlKENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBjbGlwYm9h
cmRUeXBlKQorUGFzc1JlZlB0cjxSZWFkYWJsZURhdGFPYmplY3Q+IFJlYWRhYmxlRGF0YU9iamVj
dDo6Y3JlYXRlKAorICAgIGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgQ2xpcGJvYXJkOjpDbGlw
Ym9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFk
YWJsZURhdGFPYmplY3QoY2xpcGJvYXJkVHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UmVhZGFibGVEYXRhT2JqZWN0KGRvY3VtZW50LCBjbGlwYm9hcmRUeXBlKSk7CiB9CiAKLVJlYWRh
YmxlRGF0YU9iamVjdDo6UmVhZGFibGVEYXRhT2JqZWN0KENsaXBib2FyZDo6Q2xpcGJvYXJkVHlw
ZSBjbGlwYm9hcmRUeXBlKQotICAgIDogbV9jbGlwYm9hcmRUeXBlKGNsaXBib2FyZFR5cGUpCitS
ZWFkYWJsZURhdGFPYmplY3Q6OlJlYWRhYmxlRGF0YU9iamVjdChjb25zdCBEb2N1bWVudCogZG9j
dW1lbnQsIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQorICAgIDogbV9k
b2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fY2xpcGJvYXJkVHlwZShjbGlwYm9hcmRUeXBlKQog
ICAgICwgbV9jb250YWluc0ZpbGVuYW1lcyhmYWxzZSkKICAgICAsIG1faXNUeXBlQ2FjaGVJbml0
aWFsaXplZChmYWxzZSkKIHsKQEAgLTkzLDcgKzk1LDcgQEAgU3RyaW5nIFJlYWRhYmxlRGF0YU9i
amVjdDo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2NlZWRlZCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgfQogICAgIHN1Y2NlZWRlZCA9IFBsYXRmb3JtQnJp
ZGdlOjpjbGlwYm9hcmRSZWFkRGF0YSgKLSAgICAgICAgY2xpcGJvYXJkQnVmZmVyKG1fY2xpcGJv
YXJkVHlwZSksIHR5cGUsIGRhdGEsIGlnbm9yZWRNZXRhZGF0YSk7CisgICAgICAgIG1fZG9jdW1l
bnQsIGNsaXBib2FyZEJ1ZmZlcihtX2NsaXBib2FyZFR5cGUpLCB0eXBlLCBkYXRhLCBpZ25vcmVk
TWV0YWRhdGEpOwogICAgIHJldHVybiBkYXRhOwogfQogCkBAIC0xMDIsNyArMTA0LDcgQEAgU3Ry
aW5nIFJlYWRhYmxlRGF0YU9iamVjdDo6dXJsVGl0bGUoKSBjb25zdAogICAgIFN0cmluZyBpZ25v
cmVkRGF0YTsKICAgICBTdHJpbmcgdXJsVGl0bGU7CiAgICAgUGxhdGZvcm1CcmlkZ2U6OmNsaXBi
b2FyZFJlYWREYXRhKAotICAgICAgICBjbGlwYm9hcmRCdWZmZXIobV9jbGlwYm9hcmRUeXBlKSwg
bWltZVR5cGVUZXh0VVJJTGlzdCwgaWdub3JlZERhdGEsIHVybFRpdGxlKTsKKyAgICAgICAgbV9k
b2N1bWVudCwgY2xpcGJvYXJkQnVmZmVyKG1fY2xpcGJvYXJkVHlwZSksIG1pbWVUeXBlVGV4dFVS
SUxpc3QsIGlnbm9yZWREYXRhLCB1cmxUaXRsZSk7CiAgICAgcmV0dXJuIHVybFRpdGxlOwogfQog
CkBAIC0xMTEsNyArMTEzLDcgQEAgS1VSTCBSZWFkYWJsZURhdGFPYmplY3Q6Omh0bWxCYXNlVXJs
KCkgY29uc3QKICAgICBTdHJpbmcgaWdub3JlZERhdGE7CiAgICAgU3RyaW5nIGh0bWxCYXNlVXJs
OwogICAgIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkRGF0YSgKLSAgICAgICAgY2xpcGJv
YXJkQnVmZmVyKG1fY2xpcGJvYXJkVHlwZSksIG1pbWVUeXBlVGV4dEhUTUwsIGlnbm9yZWREYXRh
LCBodG1sQmFzZVVybCk7CisgICAgICAgIG1fZG9jdW1lbnQsIGNsaXBib2FyZEJ1ZmZlcihtX2Ns
aXBib2FyZFR5cGUpLCBtaW1lVHlwZVRleHRIVE1MLCBpZ25vcmVkRGF0YSwgaHRtbEJhc2VVcmwp
OwogICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgaHRtbEJhc2VVcmwpOwogfQogCkBA
IC0xMjMsNyArMTI1LDcgQEAgYm9vbCBSZWFkYWJsZURhdGFPYmplY3Q6OmNvbnRhaW5zRmlsZW5h
bWVzKCkgY29uc3QKIAogVmVjdG9yPFN0cmluZz4gUmVhZGFibGVEYXRhT2JqZWN0OjpmaWxlbmFt
ZXMoKSBjb25zdAogewotICAgIHJldHVybiBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEZp
bGVuYW1lcyhjbGlwYm9hcmRCdWZmZXIobV9jbGlwYm9hcmRUeXBlKSk7CisgICAgcmV0dXJuIFBs
YXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkRmlsZW5hbWVzKG1fZG9jdW1lbnQsIGNsaXBib2Fy
ZEJ1ZmZlcihtX2NsaXBib2FyZFR5cGUpKTsKIH0KIAogdm9pZCBSZWFkYWJsZURhdGFPYmplY3Q6
OmVuc3VyZVR5cGVDYWNoZUluaXRpYWxpemVkKCkgY29uc3QKQEAgLTEzMiw3ICsxMzQsNyBAQCB2
b2lkIFJlYWRhYmxlRGF0YU9iamVjdDo6ZW5zdXJlVHlwZUNhY2hlSW5pdGlhbGl6ZWQoKSBjb25z
dAogICAgICAgICByZXR1cm47CiAKICAgICBtX3R5cGVzID0gUGxhdGZvcm1CcmlkZ2U6OmNsaXBi
b2FyZFJlYWRBdmFpbGFibGVUeXBlcygKLSAgICAgICAgY2xpcGJvYXJkQnVmZmVyKG1fY2xpcGJv
YXJkVHlwZSksICZtX2NvbnRhaW5zRmlsZW5hbWVzKTsKKyAgICAgICAgbV9kb2N1bWVudCwgY2xp
cGJvYXJkQnVmZmVyKG1fY2xpcGJvYXJkVHlwZSksICZtX2NvbnRhaW5zRmlsZW5hbWVzKTsKICAg
ICBtX2lzVHlwZUNhY2hlSW5pdGlhbGl6ZWQgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oCmluZGV4IDAy
N2UwZWQzNDFjOGM1ZGVjMjg3MjQwNTZmMTAwMDZjZDZjMWJkOTUuLmE1NDMwMTA1MGEzMjA5ODNh
YzMzMzkyMjY5MzA1ODljNWNmY2NiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oCkBAIC00NCw3ICs0NCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIGJyb3dzZXIgdG8gdGhlIHJlbmRlcmVyLgogY2xhc3MgUmVh
ZGFibGVEYXRhT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVEYXRhT2JqZWN0PiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhZGFibGVEYXRhT2JqZWN0PiBjcmVh
dGUoQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFk
YWJsZURhdGFPYmplY3Q+IGNyZWF0ZShjb25zdCBEb2N1bWVudCosIENsaXBib2FyZDo6Q2xpcGJv
YXJkVHlwZSk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICBIYXNoU2V0PFN0cmlu
Zz4gdHlwZXMoKSBjb25zdDsKQEAgLTU3LDExICs1NywxNSBAQCBwdWJsaWM6CiAgICAgVmVjdG9y
PFN0cmluZz4gZmlsZW5hbWVzKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUmVh
ZGFibGVEYXRhT2JqZWN0KENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSk7CisgICAgZXhwbGljaXQg
UmVhZGFibGVEYXRhT2JqZWN0KGNvbnN0IERvY3VtZW50KiwgQ2xpcGJvYXJkOjpDbGlwYm9hcmRU
eXBlKTsKIAogICAgIC8vIFRoaXMgaXNuJ3QgYWx3YXlzIGNvbnN0Li4uIGJ1dCBtb3N0IG9mIHRo
ZSB0aW1lIGl0IGlzLgogICAgIHZvaWQgZW5zdXJlVHlwZUNhY2hlSW5pdGlhbGl6ZWQoKSBjb25z
dDsKIAorICAgIC8vIFRoZSBvd25lciBkb2N1bWVudC4gVXNlZCB0byBzZW5kIElQQ3MgYmFjayB0
byB0aGUgY29ycmVzcGRvbmdpbmcgdmlldworICAgIC8vIHZpYSBXZWJGcmFtZUNsaWVudC4KKyAg
ICBjb25zdCBEb2N1bWVudCogbV9kb2N1bWVudDsKKwogICAgIENsaXBib2FyZDo6Q2xpcGJvYXJk
VHlwZSBtX2NsaXBib2FyZFR5cGU7CiAKICAgICAvLyBUbyBhdm9pZCBtYWtpbmcgYSBsb3Qgb2Yg
SVBDIGNhbGxzIGZvciBlYWNoIGRyYWcgZXZlbnQsIHdlIGNhY2hlIHNvbWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggZWY1MWUxNmNmMTE1OTI1YWY5MTYyNjZjZTBmZWU1YzJjMDIwNGJk
Zi4uMmQwMmIyYzkzMmU4NjcwNGQyODU3NTJhZGI5NDYwY2MwM2ViMzUxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0wMi0wMyAgRGFuaWVsIENoZW5n
ICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDbG9uZSBXZWJDbGlwYm9hcmQgdG8gYmUgZnJhbWUtc3BlY2lmaWMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzcyNwor
CisgICAgICAgIEZvciBkcm9wIG9wZXJhdGlvbnMsIENocm9tZSBjdXJyZW50bHkgc25hcHNob3Rz
IHRoZSBkYXRhIGFuZCBjb3BpZXMgaXQKKyAgICAgICAgaW50byB0aGUgcmVuZGVyZXIgcHJvY2Vz
cy4gQXMgd2UgYWRkIG1vcmUgc3VwcG9ydGVkIGRyYWcgZGF0YSB0eXBlcywgdGhlCisgICAgICAg
IGNvcHkgd2lsbCBiZWNvbWUgaW5jcmVhc2luZ2x5IGV4cGVuc2l2ZS4gSW5zdGVhZCwgd2UnZCBs
aWtlIHRvIHNuYXBzaG90CisgICAgICAgIGRhdGEgaW4gdGhlIGJyb3dzZXIgdG8gcmVkdWNlIHRo
ZSBhbW91bnQgb2YgZGF0YSBjb3BpZWQgYW5kIHRvIHN1cHBvcnQKKyAgICAgICAgQmxvYiBpbiBE
YXRhVHJhbnNmZXJJdGVtLiBJbiBvcmRlciB0byBhbGxvdyB0aGlzLCB3ZSBhc3NvY2lhdGVkCisg
ICAgICAgIFdlYkNsaXBib2FyZCB3aXRoIGEgZnJhbWUgc28gaXQgY2FuIGNvcnJlY3RseSByb3V0
ZSBpdHMgSVBDcyB0byB0aGUKKyAgICAgICAgY29ycmVzcG9uZGluZyBDaHJvbWl1bSBob3N0Lgor
CisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lQ2xpZW50OjpjbGlwYm9hcmQpOgorICAgICAgICAqIHNyYy9QbGF0Zm9ybUJyaWRnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDbGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRBdmFpbGFibGVUeXBlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRGaWxlbmFtZXMpOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFn
VGFyZ2V0RHJhZ0VudGVyTmV3KToKKwogMjAxMS0wMi0wMSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9k
aXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKaW5k
ZXggZjdiZWY1M2YxMmJmNmRkMjEwNWZmZjk0ZDI5NzJkNGFkNGUxY2FhMS4uMmZmYjJlYjk2OGY3
YmU0ZDJjMzdkN2RjMmEyOTcxODRkNGU2MDE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIFdlYkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0Q2xpZW50OworY2xhc3MgV2ViQ2xpcGJvYXJkOwogY2xhc3MgV2ViQ29v
a2llSmFyOwogY2xhc3MgV2ViRGF0YVNvdXJjZTsKIGNsYXNzIFdlYkZvcm1FbGVtZW50OwpAQCAt
ODgsNiArODksOSBAQCBwdWJsaWM6CiAgICAgLy8gV2ViS2l0Q2xpZW50Ojpjb29raWVKYXIoKSB3
aWxsIGJlIGNhbGxlZCB0byBhY2Nlc3MgY29va2llcy4KICAgICB2aXJ0dWFsIFdlYkNvb2tpZUph
ciogY29va2llSmFyKFdlYkZyYW1lKikgeyByZXR1cm4gMDsgfQogCisgICAgLy8gQSBmcmFtZSBz
cGVjaWZpYyBjbGlwYm9hcmQuIE1heSByZXR1cm4gbnVsbCwgaW4gd2hpY2ggY2FzZS4uLiB5b3Un
cmUgZG9uZS4KKyAgICB2aXJ0dWFsIFdlYkNsaXBib2FyZCogY2xpcGJvYXJkKCkgeyByZXR1cm4g
MDsgfQorCiAKICAgICAvLyBHZW5lcmFsIG5vdGlmaWNhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1CcmlkZ2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvUGxhdGZvcm1CcmlkZ2UuY3BwCmluZGV4IDRkZGUzY2FhYzc2OTNhY2Y4MjkwMTRiNzJi
YjZiMzE0NTNkZGZhYjcuLmVlYTQwNjRiYzFmODRjNzRmYmE1MWU2OTllNDk3ODAzZDZkYmU3OGMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtQnJpZGdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybUJyaWRnZS5jcHAKQEAg
LTEzMiw2ICsxMzIsMTQgQEAgc3RhdGljIFdlYldpZGdldENsaWVudCogdG9XZWJXaWRnZXRDbGll
bnQoV2lkZ2V0KiB3aWRnZXQpCiAgICAgcmV0dXJuIGNocm9tZUNsaWVudEltcGwtPndlYlZpZXco
KS0+Y2xpZW50KCk7CiB9CiAKK3N0YXRpYyBXZWJDbGlwYm9hcmQqIGdldENsaXBib2FyZChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgV2ViRnJhbWVJbXBsKiBmcmFtZUltcGwgPSBX
ZWJGcmFtZUltcGw6OmZyb21GcmFtZShkb2N1bWVudC0+ZnJhbWUoKSk7CisgICAgaWYgKCFmcmFt
ZUltcGwgfHwgIWZyYW1lSW1wbC0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJl
dHVybiBmcmFtZUltcGwtPmNsaWVudCgpLT5jbGlwYm9hcmQoKTsKK30KKwogc3RhdGljIFdlYkNv
b2tpZUphciogZ2V0Q29va2llSmFyKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBX
ZWJGcmFtZUltcGwqIGZyYW1lSW1wbCA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGRvY3VtZW50
LT5mcmFtZSgpKTsKQEAgLTIxNyw5ICsyMjUsMTEgQEAgdm9pZCBQbGF0Zm9ybUJyaWRnZTo6Y2xp
cGJvYXJkV3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwKIH0KIAogSGFzaFNldDxTdHJpbmc+
IFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkQXZhaWxhYmxlVHlwZXMoCi0gICAgUGFzdGVi
b2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIsIGJvb2wqIGNvbnRhaW5zRmlsZW5h
bWVzKQorICAgIGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwKKyAgICBQYXN0ZWJvYXJkUHJpdmF0
ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlciwKKyAgICBib29sKiBjb250YWluc0ZpbGVuYW1lcykK
IHsKLSAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiByZXN1bHQgPSB3ZWJLaXRDbGllbnQoKS0+Y2xp
cGJvYXJkKCktPnJlYWRBdmFpbGFibGVUeXBlcygKKyAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiBy
ZXN1bHQgPSBnZXRDbGlwYm9hcmQoZG9jdW1lbnQpLT5yZWFkQXZhaWxhYmxlVHlwZXMoCiAgICAg
ICAgIHN0YXRpY19jYXN0PFdlYkNsaXBib2FyZDo6QnVmZmVyPihidWZmZXIpLCBjb250YWluc0Zp
bGVuYW1lcyk7CiAgICAgSGFzaFNldDxTdHJpbmc+IHR5cGVzOwogICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKQpAQCAtMjI3LDEyICsyMzcsMTUgQEAgSGFzaFNl
dDxTdHJpbmc+IFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkQXZhaWxhYmxlVHlwZXMoCiAg
ICAgcmV0dXJuIHR5cGVzOwogfQogCi1ib29sIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFk
RGF0YShQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlciwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgdHlwZSwgU3RyaW5n
JiBkYXRhLCBTdHJpbmcmIG1ldGFkYXRhKQorYm9vbCBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJk
UmVhZERhdGEoY29uc3QgRG9jdW1lbnQqIGRvY3VtZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZm
ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcm
IHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcmIGRh
dGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcmIG1ldGFk
YXRhKQogewogICAgIFdlYlN0cmluZyByZXN1bHREYXRhOwogICAgIFdlYlN0cmluZyByZXN1bHRN
ZXRhZGF0YTsKLSAgICBib29sIHN1Y2NlZWRlZCA9IHdlYktpdENsaWVudCgpLT5jbGlwYm9hcmQo
KS0+cmVhZERhdGEoCisgICAgYm9vbCBzdWNjZWVkZWQgPSBnZXRDbGlwYm9hcmQoZG9jdW1lbnQp
LT5yZWFkRGF0YSgKICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ2xpcGJvYXJkOjpCdWZmZXI+KGJ1
ZmZlciksIHR5cGUsICZyZXN1bHREYXRhLCAmcmVzdWx0TWV0YWRhdGEpOwogICAgIGlmIChzdWNj
ZWVkZWQpIHsKICAgICAgICAgZGF0YSA9IHJlc3VsdERhdGE7CkBAIC0yNDEsOSArMjU0LDEwIEBA
IGJvb2wgUGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWREYXRhKFBhc3RlYm9hcmRQcml2YXRl
OjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVyCiAgICAgcmV0dXJuIHN1Y2NlZWRlZDsKIH0KIAotVmVj
dG9yPFN0cmluZz4gUGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRGaWxlbmFtZXMoUGFzdGVi
b2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIpCitWZWN0b3I8U3RyaW5nPiBQbGF0
Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEZpbGVuYW1lcyhjb25zdCBEb2N1bWVudCogZG9jdW1l
bnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlcikKIHsKLSAgICBXZWJW
ZWN0b3I8V2ViU3RyaW5nPiByZXN1bHQgPSB3ZWJLaXRDbGllbnQoKS0+Y2xpcGJvYXJkKCktPnJl
YWRGaWxlbmFtZXMoCisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gcmVzdWx0ID0gZ2V0Q2xpcGJv
YXJkKGRvY3VtZW50KS0+cmVhZEZpbGVuYW1lcygKICAgICAgICAgc3RhdGljX2Nhc3Q8V2ViQ2xp
cGJvYXJkOjpCdWZmZXI+KGJ1ZmZlcikpOwogICAgIFZlY3RvcjxTdHJpbmc+IGNvbnZlcnRlZFJl
c3VsdDsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdC5zaXplKCk7ICsraSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAwYjIxZjVmNjNm
MGEyMWRhYWIwNjdkNzk1YmVjYTA5ODhjYjA1MjJlLi4zMmFhYmQ5MDExNTI4MjFjZDkzNTQ1NjU0
NGU0OTg5ZmUxMTQ5NmQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9X
ZWJWaWV3SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0lt
cGwuY3BwCkBAIC0xNzYxLDcgKzE3NjEsOCBAQCBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBs
OjpkcmFnVGFyZ2V0RHJhZ0VudGVyTmV3KAogewogICAgIEFTU0VSVCghbV9jdXJyZW50RHJhZ0Rh
dGEuZ2V0KCkpOwogCi0gICAgbV9jdXJyZW50RHJhZ0RhdGEgPSBDaHJvbWl1bURhdGFPYmplY3Q6
OmNyZWF0ZVJlYWRhYmxlKENsaXBib2FyZDo6RHJhZ0FuZERyb3ApOworICAgIG1fY3VycmVudERy
YWdEYXRhID0gQ2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGVSZWFkYWJsZSgKKyAgICAgICAgbV9w
YWdlLT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSwgQ2xpcGJvYXJkOjpEcmFnQW5kRHJvcCk7CiAg
ICAgbV9kcmFnSWRlbnRpdHkgPSBpZGVudGl0eTsKICAgICBtX29wZXJhdGlvbnNBbGxvd2VkID0g
b3BlcmF0aW9uc0FsbG93ZWQ7CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81159</attachid>
            <date>2011-02-03 17:48:01 -0800</date>
            <delta_ts>2011-02-04 15:00:37 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53727-20110203174800.patch</filename>
            <type>text/plain</type>
            <size>19232</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNGQyOGNlNjdhZDhhMzg0YzJhMTE1MDRlMmJmZmZkNzY3MjY3OWM1Li5j
OGY5ZTA2NTE5MmFiNTA2OWQ4YjI3NTIyMmZhNTRlMDQyOWI4OGVhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsNDAgQEAKKzIwMTEtMDItMDMgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xv
bmUgV2ViQ2xpcGJvYXJkIHRvIGJlIGZyYW1lLXNwZWNpZmljLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MjcKKworICAgICAgICBGb3IgZHJvcCBv
cGVyYXRpb25zLCBDaHJvbWUgY3VycmVudGx5IHNuYXBzaG90cyB0aGUgZGF0YSBhbmQgY29waWVz
IGl0CisgICAgICAgIGludG8gdGhlIHJlbmRlcmVyIHByb2Nlc3MuIEFzIHdlIGFkZCBtb3JlIHN1
cHBvcnRlZCBkcmFnIGRhdGEgdHlwZXMsIHRoZQorICAgICAgICBjb3B5IHdpbGwgYmVjb21lIGlu
Y3JlYXNpbmdseSBleHBlbnNpdmUuIEluc3RlYWQsIHdlJ2QgbGlrZSB0byBzbmFwc2hvdAorICAg
ICAgICBkYXRhIGluIHRoZSBicm93c2VyIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIGRhdGEgY29w
aWVkIGFuZCB0byBzdXBwb3J0CisgICAgICAgIEJsb2IgaW4gRGF0YVRyYW5zZmVySXRlbS4gSW4g
b3JkZXIgdG8gYWxsb3cgdGhpcywgd2UgYXNzb2NpYXRlZAorICAgICAgICBXZWJDbGlwYm9hcmQg
d2l0aCBhIGZyYW1lIHNvIGl0IGNhbiBjb3JyZWN0bHkgcm91dGUgaXRzIElQQ3MgdG8gdGhlCisg
ICAgICAgIGNvcnJlc3BvbmRpbmcgQ2hyb21pdW0gaG9zdC4KKworICAgICAgICBObyBuZXcgdGVz
dHMuCisKKyAgICAgICAgKiBlZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkVkaXRvcjo6bmV3R2VuZXJhbENsaXBib2FyZCk6CisgICAgICAgICog
cGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkNocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlUmVhZGFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6Q2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGVXcml0YWJsZSk6CisgICAgICAgICogcGxhdGZv
cm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0Lmg6CisgICAgICAgICogcGxhdGZvcm0vY2hy
b21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2xpcGJvYXJk
Q2hyb21pdW06OmNyZWF0ZSk6CisgICAgICAgICogcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJk
Q2hyb21pdW0uaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5o
OgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OlJlYWRhYmxlRGF0YU9iamVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVhZGFibGVEYXRhT2JqZWN0Ojp1cmxUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFk
YWJsZURhdGFPYmplY3Q6Omh0bWxCYXNlVXJsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxl
RGF0YU9iamVjdDo6ZmlsZW5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlRGF0YU9i
amVjdDo6ZW5zdXJlVHlwZUNhY2hlSW5pdGlhbGl6ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oOgorCiAyMDExLTAyLTAzICBEYW4gQmVybnN0ZWlu
ICA8bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29u
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9jaHJvbWl1bS9FZGl0b3JDaHJv
bWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVt
LmNwcAppbmRleCBjYTdmNDFhOGY3NjYzZmE5ZjMzNjIyNGIyYzg5MmZkNmIzNjEzODJiLi5hYTJl
Y2M4MmQ3YWYyNDA5ODg0ZDAzMjI0ODhjYThhYjc4NmIyOGYzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL2Nocm9taXVtL0VkaXRvckNocm9taXVtLmNwcApAQCAtMzksNyArMzks
NyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFBhc3NSZWZQdHI8Q2xpcGJvYXJkPiBFZGl0b3I6
Om5ld0dlbmVyYWxDbGlwYm9hcmQoQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwgRnJhbWUq
IGZyYW1lKQogewotICAgIHJldHVybiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKENsaXBib2Fy
ZDo6Q29weUFuZFBhc3RlLCBwb2xpY3ksIGZyYW1lKTsKKyAgICByZXR1cm4gQ2xpcGJvYXJkQ2hy
b21pdW06OmNyZWF0ZShmcmFtZS0+ZG9jdW1lbnQoKSwgQ2xpcGJvYXJkOjpDb3B5QW5kUGFzdGUs
IHBvbGljeSwgZnJhbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3QuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNw
cAppbmRleCA3OGI3OTRiZmI3ZWFlZWMxZjM3Y2Y1NDlmNGU2ZDU5ZDlkMDc4NDBiLi42MTA2NjFl
NmJkOTExMmEzZTExNTE5YTZjMGUyOTg5ZTcwMzc2MWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3QuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVjdC5jcHAKQEAgLTU2
LDEyICs1NiwxNCBAQCBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gQ2hyb21pdW1EYXRh
T2JqZWN0OjpjcmVhdGUoUGFzc1JlZlB0cjxDaHJvbWl1bURhdAogICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgQ2hyb21pdW1EYXRhT2JqZWN0KGRhdGEpKTsKIH0KIAotUGFzc1JlZlB0cjxDaHJvbWl1
bURhdGFPYmplY3Q+IENocm9taXVtRGF0YU9iamVjdDo6Y3JlYXRlUmVhZGFibGUoQ2xpcGJvYXJk
OjpDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCitQYXNzUmVmUHRyPENocm9taXVtRGF0YU9i
amVjdD4gQ2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGVSZWFkYWJsZSgKKyAgICBjb25zdCBEb2N1
bWVudCogZG9jdW1lbnQsIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQog
ewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgQ2hyb21pdW1EYXRhT2JqZWN0KFJlYWRhYmxlRGF0
YU9iamVjdDo6Y3JlYXRlKGNsaXBib2FyZFR5cGUpKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5l
dyBDaHJvbWl1bURhdGFPYmplY3QoUmVhZGFibGVEYXRhT2JqZWN0OjpjcmVhdGUoZG9jdW1lbnQs
IGNsaXBib2FyZFR5cGUpKSk7CiB9CiAKLVBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBD
aHJvbWl1bURhdGFPYmplY3Q6OmNyZWF0ZVdyaXRhYmxlKENsaXBib2FyZDo6Q2xpcGJvYXJkVHlw
ZSBjbGlwYm9hcmRUeXBlKQorUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IENocm9taXVt
RGF0YU9iamVjdDo6Y3JlYXRlV3JpdGFibGUoCisgICAgQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBl
IGNsaXBib2FyZFR5cGUpCiB7CiAgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDaHJvbWl1bURhdGFP
YmplY3QoV3JpdGFibGVEYXRhT2JqZWN0OjpjcmVhdGUoY2xpcGJvYXJkVHlwZSkpKTsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9i
amVjdC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2Jq
ZWN0LmgKaW5kZXggNGFhYzVjOWFkNmU5NjFjYjM2NTU5ZThmZDFhNDZkYWEwNzJhYmZmZi4uNWYz
OTM0ZGEyM2Y3OWUwZGEyMWM4MGMyYTY5MmE0NDJkOTI5ZmU2NyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmgKQEAgLTQx
LDcgKzQxLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQ2hyb21pdW1EYXRhT2JqZWN0
IDogcHVibGljIFJlZkNvdW50ZWQ8Q2hyb21pdW1EYXRhT2JqZWN0PiB7CiBwdWJsaWM6CiAgICAg
c3RhdGljIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBjcmVhdGUoUGFzc1JlZlB0cjxD
aHJvbWl1bURhdGFPYmplY3RMZWdhY3k+IGRhdGEpOwotICAgIHN0YXRpYyBQYXNzUmVmUHRyPENo
cm9taXVtRGF0YU9iamVjdD4gY3JlYXRlUmVhZGFibGUoQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBl
KTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IGNyZWF0ZVJlYWRh
YmxlKGNvbnN0IERvY3VtZW50KiwgQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlKTsKICAgICBzdGF0
aWMgUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IGNyZWF0ZVdyaXRhYmxlKENsaXBib2Fy
ZDo6Q2xpcGJvYXJkVHlwZSk7CiAKICAgICB2b2lkIGNsZWFyRGF0YShjb25zdCBTdHJpbmcmIHR5
cGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJv
YXJkQ2hyb21pdW0uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJv
YXJkQ2hyb21pdW0uY3BwCmluZGV4IDQ2YjQzMzkxMjQ4MWIyZDM0Yjc5NmYzN2MyMjIxYjhjZmY3
MWZlNzguLmIxODJjNTk1OTQwNzE0ZDk5NDU1NGRmZDNhZDI1MTJkYzE5MDMzZDMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRDaHJvbWl1
bS5jcHAKQEAgLTg1LDEzICs4NSwxNiBAQCBQYXNzUmVmUHRyPENsaXBib2FyZENocm9taXVtPiBD
bGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVAogICAgIHJl
dHVybiBhZG9wdFJlZihuZXcgQ2xpcGJvYXJkQ2hyb21pdW0oY2xpcGJvYXJkVHlwZSwgZGF0YU9i
amVjdCwgcG9saWN5LCBmcmFtZSkpOwogfQogCi1QYXNzUmVmUHRyPENsaXBib2FyZENocm9taXVt
PiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKENsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSwK
LSAgICBDbGlwYm9hcmRBY2Nlc3NQb2xpY3kgcG9saWN5LCBGcmFtZSogZnJhbWUpCitQYXNzUmVm
UHRyPENsaXBib2FyZENocm9taXVtPiBDbGlwYm9hcmRDaHJvbWl1bTo6Y3JlYXRlKAorICAgIGNv
bnN0IERvY3VtZW50KiBkb2N1bWVudCwKKyAgICBDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUs
CisgICAgQ2xpcGJvYXJkQWNjZXNzUG9saWN5IHBvbGljeSwKKyAgICBGcmFtZSogZnJhbWUpCiB7
CiAgICAgUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9iamVjdCA9CiAgICAgICAgIHBv
bGljeSA9PSBDbGlwYm9hcmRXcml0YWJsZSA/CiAgICAgICAgIENocm9taXVtRGF0YU9iamVjdDo6
Y3JlYXRlV3JpdGFibGUoY2xpcGJvYXJkVHlwZSkgOgotICAgICAgICBDaHJvbWl1bURhdGFPYmpl
Y3Q6OmNyZWF0ZVJlYWRhYmxlKGNsaXBib2FyZFR5cGUpOworICAgICAgICBDaHJvbWl1bURhdGFP
YmplY3Q6OmNyZWF0ZVJlYWRhYmxlKGRvY3VtZW50LCBjbGlwYm9hcmRUeXBlKTsKICAgICByZXR1
cm4gYWRvcHRSZWYobmV3IENsaXBib2FyZENocm9taXVtKGNsaXBib2FyZFR5cGUsIGRhdGFPYmpl
Y3QsIHBvbGljeSwgZnJhbWUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vY2hyb21pdW0vQ2xpcGJvYXJkQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL0NsaXBib2FyZENocm9taXVtLmgKaW5kZXggZDVhZGExNGQ0NmIwYTYzMWI4
YzRiODk2Mzc2YjEyM2ZhMTBkZDlkNy4uYzNlODZkM2UzMTBjMTc5ZjBlODVhNjYyMWFhNTcwMDI4
NjliN2I4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xp
cGJvYXJkQ2hyb21pdW0uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9D
bGlwYm9hcmRDaHJvbWl1bS5oCkBAIC01MCw3ICs1MCw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICAgICAgICAgIENsaXBib2FyZFR5cGUsIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0
PiwgQ2xpcGJvYXJkQWNjZXNzUG9saWN5LCBGcmFtZSopOwogCiAgICAgICAgIHN0YXRpYyBQYXNz
UmVmUHRyPENsaXBib2FyZENocm9taXVtPiBjcmVhdGUoCi0gICAgICAgICAgICBDbGlwYm9hcmRU
eXBlLCBDbGlwYm9hcmRBY2Nlc3NQb2xpY3ksIEZyYW1lKik7CisgICAgICAgICAgICBjb25zdCBE
b2N1bWVudCosIENsaXBib2FyZFR5cGUsIENsaXBib2FyZEFjY2Vzc1BvbGljeSwgRnJhbWUqKTsK
IAogICAgICAgICAvLyBSZXR1cm5zIHRoZSBmaWxlIG5hbWUgKG5vdCBpbmNsdWRpbmcgdGhlIGV4
dGVuc2lvbikuIFRoaXMgcmVtb3ZlcyBhbnkKICAgICAgICAgLy8gaW52YWxpZCBmaWxlIHN5c3Rl
bSBjaGFyYWN0ZXJzIGFzIHdlbGwgYXMgbWFraW5nIHN1cmUgdGhlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1CcmlkZ2UuaAppbmRleCBjNjA4NWYxYjIz
NGMxNDlkYWVjOTFlYmYwY2Q2ZjU2YzFlNjE3YWRmLi45YmYyNWRjNDg5NDRiNjcyYjhkZDQ2NTJh
NzZiMDY1OGI4MDA5YmE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9QbGF0Zm9ybUJyaWRnZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL1BsYXRmb3JtQnJpZGdlLmgKQEAgLTEwOSw5ICsxMDksOSBAQCBwdWJsaWM6CiAgICAgc3Rh
dGljIHZvaWQgY2xpcGJvYXJkV3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwgY29uc3QgU3Ry
aW5nJiBkYXRhLCBjb25zdCBTdHJpbmcmIG1ldGFkYXRhKTsKIAogICAgIC8vIEludGVyZmFjZSBm
b3IgaGFuZGxpbmcgY29weSBhbmQgcGFzdGUsIGRyYWcgYW5kIGRyb3AsIGFuZCBzZWxlY3Rpb24g
Y29weS4KLSAgICBzdGF0aWMgSGFzaFNldDxTdHJpbmc+IGNsaXBib2FyZFJlYWRBdmFpbGFibGVU
eXBlcyhQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyLCBib29sKiBjb250YWluc0Zp
bGVuYW1lcyk7Ci0gICAgc3RhdGljIGJvb2wgY2xpcGJvYXJkUmVhZERhdGEoUGFzdGVib2FyZFBy
aXZhdGU6OkNsaXBib2FyZEJ1ZmZlciwgY29uc3QgU3RyaW5nJiB0eXBlLCBTdHJpbmcmIGRhdGEs
IFN0cmluZyYgbWV0YWRhdGEpOwotICAgIHN0YXRpYyBWZWN0b3I8U3RyaW5nPiBjbGlwYm9hcmRS
ZWFkRmlsZW5hbWVzKFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIpOworICAgIHN0
YXRpYyBIYXNoU2V0PFN0cmluZz4gY2xpcGJvYXJkUmVhZEF2YWlsYWJsZVR5cGVzKGNvbnN0IERv
Y3VtZW50KiwgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciwgYm9vbCogY29udGFp
bnNGaWxlbmFtZXMpOworICAgIHN0YXRpYyBib29sIGNsaXBib2FyZFJlYWREYXRhKGNvbnN0IERv
Y3VtZW50KiwgUGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciwgY29uc3QgU3RyaW5n
JiB0eXBlLCBTdHJpbmcmIGRhdGEsIFN0cmluZyYgbWV0YWRhdGEpOworICAgIHN0YXRpYyBWZWN0
b3I8U3RyaW5nPiBjbGlwYm9hcmRSZWFkRmlsZW5hbWVzKGNvbnN0IERvY3VtZW50KiwgUGFzdGVi
b2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlcik7CiAKICAgICAvLyBDb29raWVzIC0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICAg
IHN0YXRpYyB2b2lkIHNldENvb2tpZXMoY29uc3QgRG9jdW1lbnQqLCBjb25zdCBLVVJMJiwgY29u
c3QgU3RyaW5nJiB2YWx1ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9j
aHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Y2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmNwcAppbmRleCBkYmY0NzM5MGQ2OWY5YmM3NWY3
NjEwNmJiMmFmMDU1M2M0Mjc2OGM2Li41ODJmZWZkYWI3ZDY2MjAzM2E1OGYwNzcxNzZkZDg4Mzk4
ODA3ZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9SZWFk
YWJsZURhdGFPYmplY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVt
L1JlYWRhYmxlRGF0YU9iamVjdC5jcHAKQEAgLTQzLDEzICs0MywxNSBAQCBzdGF0aWMgUGFzdGVi
b2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBjbGlwYm9hcmRCdWZmZXIoQ2xpcGJvYXJkOjpD
bGlwYm9hcmRUeQogICAgIHJldHVybiBjbGlwYm9hcmRUeXBlID09IENsaXBib2FyZDo6RHJhZ0Fu
ZERyb3AgPyBQYXN0ZWJvYXJkUHJpdmF0ZTo6RHJhZ0J1ZmZlciA6IFBhc3RlYm9hcmRQcml2YXRl
OjpTdGFuZGFyZEJ1ZmZlcjsKIH0KIAotUGFzc1JlZlB0cjxSZWFkYWJsZURhdGFPYmplY3Q+IFJl
YWRhYmxlRGF0YU9iamVjdDo6Y3JlYXRlKENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBjbGlwYm9h
cmRUeXBlKQorUGFzc1JlZlB0cjxSZWFkYWJsZURhdGFPYmplY3Q+IFJlYWRhYmxlRGF0YU9iamVj
dDo6Y3JlYXRlKAorICAgIGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwgQ2xpcGJvYXJkOjpDbGlw
Ym9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBSZWFk
YWJsZURhdGFPYmplY3QoY2xpcGJvYXJkVHlwZSkpOworICAgIHJldHVybiBhZG9wdFJlZihuZXcg
UmVhZGFibGVEYXRhT2JqZWN0KGRvY3VtZW50LCBjbGlwYm9hcmRUeXBlKSk7CiB9CiAKLVJlYWRh
YmxlRGF0YU9iamVjdDo6UmVhZGFibGVEYXRhT2JqZWN0KENsaXBib2FyZDo6Q2xpcGJvYXJkVHlw
ZSBjbGlwYm9hcmRUeXBlKQotICAgIDogbV9jbGlwYm9hcmRUeXBlKGNsaXBib2FyZFR5cGUpCitS
ZWFkYWJsZURhdGFPYmplY3Q6OlJlYWRhYmxlRGF0YU9iamVjdChjb25zdCBEb2N1bWVudCogZG9j
dW1lbnQsIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQorICAgIDogbV9k
b2N1bWVudChkb2N1bWVudCkKKyAgICAsIG1fY2xpcGJvYXJkVHlwZShjbGlwYm9hcmRUeXBlKQog
ICAgICwgbV9jb250YWluc0ZpbGVuYW1lcyhmYWxzZSkKICAgICAsIG1faXNUeXBlQ2FjaGVJbml0
aWFsaXplZChmYWxzZSkKIHsKQEAgLTkzLDcgKzk1LDcgQEAgU3RyaW5nIFJlYWRhYmxlRGF0YU9i
amVjdDo6Z2V0RGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGJvb2wmIHN1Y2NlZWRlZCkgY29uc3QK
ICAgICAgICAgcmV0dXJuIGRhdGE7CiAgICAgfQogICAgIHN1Y2NlZWRlZCA9IFBsYXRmb3JtQnJp
ZGdlOjpjbGlwYm9hcmRSZWFkRGF0YSgKLSAgICAgICAgY2xpcGJvYXJkQnVmZmVyKG1fY2xpcGJv
YXJkVHlwZSksIHR5cGUsIGRhdGEsIGlnbm9yZWRNZXRhZGF0YSk7CisgICAgICAgIG1fZG9jdW1l
bnQsIGNsaXBib2FyZEJ1ZmZlcihtX2NsaXBib2FyZFR5cGUpLCB0eXBlLCBkYXRhLCBpZ25vcmVk
TWV0YWRhdGEpOwogICAgIHJldHVybiBkYXRhOwogfQogCkBAIC0xMDIsNyArMTA0LDcgQEAgU3Ry
aW5nIFJlYWRhYmxlRGF0YU9iamVjdDo6dXJsVGl0bGUoKSBjb25zdAogICAgIFN0cmluZyBpZ25v
cmVkRGF0YTsKICAgICBTdHJpbmcgdXJsVGl0bGU7CiAgICAgUGxhdGZvcm1CcmlkZ2U6OmNsaXBi
b2FyZFJlYWREYXRhKAotICAgICAgICBjbGlwYm9hcmRCdWZmZXIobV9jbGlwYm9hcmRUeXBlKSwg
bWltZVR5cGVUZXh0VVJJTGlzdCwgaWdub3JlZERhdGEsIHVybFRpdGxlKTsKKyAgICAgICAgbV9k
b2N1bWVudCwgY2xpcGJvYXJkQnVmZmVyKG1fY2xpcGJvYXJkVHlwZSksIG1pbWVUeXBlVGV4dFVS
SUxpc3QsIGlnbm9yZWREYXRhLCB1cmxUaXRsZSk7CiAgICAgcmV0dXJuIHVybFRpdGxlOwogfQog
CkBAIC0xMTEsNyArMTEzLDcgQEAgS1VSTCBSZWFkYWJsZURhdGFPYmplY3Q6Omh0bWxCYXNlVXJs
KCkgY29uc3QKICAgICBTdHJpbmcgaWdub3JlZERhdGE7CiAgICAgU3RyaW5nIGh0bWxCYXNlVXJs
OwogICAgIFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkRGF0YSgKLSAgICAgICAgY2xpcGJv
YXJkQnVmZmVyKG1fY2xpcGJvYXJkVHlwZSksIG1pbWVUeXBlVGV4dEhUTUwsIGlnbm9yZWREYXRh
LCBodG1sQmFzZVVybCk7CisgICAgICAgIG1fZG9jdW1lbnQsIGNsaXBib2FyZEJ1ZmZlcihtX2Ns
aXBib2FyZFR5cGUpLCBtaW1lVHlwZVRleHRIVE1MLCBpZ25vcmVkRGF0YSwgaHRtbEJhc2VVcmwp
OwogICAgIHJldHVybiBLVVJMKFBhcnNlZFVSTFN0cmluZywgaHRtbEJhc2VVcmwpOwogfQogCkBA
IC0xMjMsNyArMTI1LDcgQEAgYm9vbCBSZWFkYWJsZURhdGFPYmplY3Q6OmNvbnRhaW5zRmlsZW5h
bWVzKCkgY29uc3QKIAogVmVjdG9yPFN0cmluZz4gUmVhZGFibGVEYXRhT2JqZWN0OjpmaWxlbmFt
ZXMoKSBjb25zdAogewotICAgIHJldHVybiBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEZp
bGVuYW1lcyhjbGlwYm9hcmRCdWZmZXIobV9jbGlwYm9hcmRUeXBlKSk7CisgICAgcmV0dXJuIFBs
YXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkRmlsZW5hbWVzKG1fZG9jdW1lbnQsIGNsaXBib2Fy
ZEJ1ZmZlcihtX2NsaXBib2FyZFR5cGUpKTsKIH0KIAogdm9pZCBSZWFkYWJsZURhdGFPYmplY3Q6
OmVuc3VyZVR5cGVDYWNoZUluaXRpYWxpemVkKCkgY29uc3QKQEAgLTEzMiw3ICsxMzQsNyBAQCB2
b2lkIFJlYWRhYmxlRGF0YU9iamVjdDo6ZW5zdXJlVHlwZUNhY2hlSW5pdGlhbGl6ZWQoKSBjb25z
dAogICAgICAgICByZXR1cm47CiAKICAgICBtX3R5cGVzID0gUGxhdGZvcm1CcmlkZ2U6OmNsaXBi
b2FyZFJlYWRBdmFpbGFibGVUeXBlcygKLSAgICAgICAgY2xpcGJvYXJkQnVmZmVyKG1fY2xpcGJv
YXJkVHlwZSksICZtX2NvbnRhaW5zRmlsZW5hbWVzKTsKKyAgICAgICAgbV9kb2N1bWVudCwgY2xp
cGJvYXJkQnVmZmVyKG1fY2xpcGJvYXJkVHlwZSksICZtX2NvbnRhaW5zRmlsZW5hbWVzKTsKICAg
ICBtX2lzVHlwZUNhY2hlSW5pdGlhbGl6ZWQgPSB0cnVlOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oCmluZGV4IDAy
N2UwZWQzNDFjOGM1ZGVjMjg3MjQwNTZmMTAwMDZjZDZjMWJkOTUuLmE1NDMwMTA1MGEzMjA5ODNh
YzMzMzkyMjY5MzA1ODljNWNmY2NiZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oCkBAIC00NCw3ICs0NCw3IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKIC8vIGJyb3dzZXIgdG8gdGhlIHJlbmRlcmVyLgogY2xhc3MgUmVh
ZGFibGVEYXRhT2JqZWN0IDogcHVibGljIFJlZkNvdW50ZWQ8UmVhZGFibGVEYXRhT2JqZWN0PiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhZGFibGVEYXRhT2JqZWN0PiBjcmVh
dGUoQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlKTsKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxSZWFk
YWJsZURhdGFPYmplY3Q+IGNyZWF0ZShjb25zdCBEb2N1bWVudCosIENsaXBib2FyZDo6Q2xpcGJv
YXJkVHlwZSk7CiAKICAgICBib29sIGhhc0RhdGEoKSBjb25zdDsKICAgICBIYXNoU2V0PFN0cmlu
Zz4gdHlwZXMoKSBjb25zdDsKQEAgLTU3LDExICs1NywxNSBAQCBwdWJsaWM6CiAgICAgVmVjdG9y
PFN0cmluZz4gZmlsZW5hbWVzKCkgY29uc3Q7CiAKIHByaXZhdGU6Ci0gICAgZXhwbGljaXQgUmVh
ZGFibGVEYXRhT2JqZWN0KENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSk7CisgICAgZXhwbGljaXQg
UmVhZGFibGVEYXRhT2JqZWN0KGNvbnN0IERvY3VtZW50KiwgQ2xpcGJvYXJkOjpDbGlwYm9hcmRU
eXBlKTsKIAogICAgIC8vIFRoaXMgaXNuJ3QgYWx3YXlzIGNvbnN0Li4uIGJ1dCBtb3N0IG9mIHRo
ZSB0aW1lIGl0IGlzLgogICAgIHZvaWQgZW5zdXJlVHlwZUNhY2hlSW5pdGlhbGl6ZWQoKSBjb25z
dDsKIAorICAgIC8vIFRoZSBvd25lciBkb2N1bWVudC4gVXNlZCB0byBzZW5kIElQQ3MgYmFjayB0
byB0aGUgY29ycmVzcGRvbmdpbmcgdmlldworICAgIC8vIHZpYSBXZWJGcmFtZUNsaWVudC4KKyAg
ICBjb25zdCBEb2N1bWVudCogbV9kb2N1bWVudDsKKwogICAgIENsaXBib2FyZDo6Q2xpcGJvYXJk
VHlwZSBtX2NsaXBib2FyZFR5cGU7CiAKICAgICAvLyBUbyBhdm9pZCBtYWtpbmcgYSBsb3Qgb2Yg
SVBDIGNhbGxzIGZvciBlYWNoIGRyYWcgZXZlbnQsIHdlIGNhY2hlIHNvbWUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9DaGFuZ2VMb2cKaW5kZXggZWY1MWUxNmNmMTE1OTI1YWY5MTYyNjZjZTBmZWU1YzJjMDIwNGJk
Zi4uMmQwMmIyYzkzMmU4NjcwNGQyODU3NTJhZGI5NDYwY2MwM2ViMzUxNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBAQAorMjAxMS0wMi0wMyAgRGFuaWVsIENoZW5n
ICA8ZGNoZW5nQGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBDbG9uZSBXZWJDbGlwYm9hcmQgdG8gYmUgZnJhbWUtc3BlY2lmaWMu
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01MzcyNwor
CisgICAgICAgIEZvciBkcm9wIG9wZXJhdGlvbnMsIENocm9tZSBjdXJyZW50bHkgc25hcHNob3Rz
IHRoZSBkYXRhIGFuZCBjb3BpZXMgaXQKKyAgICAgICAgaW50byB0aGUgcmVuZGVyZXIgcHJvY2Vz
cy4gQXMgd2UgYWRkIG1vcmUgc3VwcG9ydGVkIGRyYWcgZGF0YSB0eXBlcywgdGhlCisgICAgICAg
IGNvcHkgd2lsbCBiZWNvbWUgaW5jcmVhc2luZ2x5IGV4cGVuc2l2ZS4gSW5zdGVhZCwgd2UnZCBs
aWtlIHRvIHNuYXBzaG90CisgICAgICAgIGRhdGEgaW4gdGhlIGJyb3dzZXIgdG8gcmVkdWNlIHRo
ZSBhbW91bnQgb2YgZGF0YSBjb3BpZWQgYW5kIHRvIHN1cHBvcnQKKyAgICAgICAgQmxvYiBpbiBE
YXRhVHJhbnNmZXJJdGVtLiBJbiBvcmRlciB0byBhbGxvdyB0aGlzLCB3ZSBhc3NvY2lhdGVkCisg
ICAgICAgIFdlYkNsaXBib2FyZCB3aXRoIGEgZnJhbWUgc28gaXQgY2FuIGNvcnJlY3RseSByb3V0
ZSBpdHMgSVBDcyB0byB0aGUKKyAgICAgICAgY29ycmVzcG9uZGluZyBDaHJvbWl1bSBob3N0Lgor
CisgICAgICAgICogcHVibGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6Oldl
YkZyYW1lQ2xpZW50OjpjbGlwYm9hcmQpOgorICAgICAgICAqIHNyYy9QbGF0Zm9ybUJyaWRnZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpnZXRDbGlwYm9hcmQpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRBdmFpbGFibGVUeXBlcyk6CisgICAgICAgIChX
ZWJDb3JlOjpQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRGaWxlbmFtZXMpOgorICAgICAgICAq
IHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpkcmFn
VGFyZ2V0RHJhZ0VudGVyTmV3KToKKwogMjAxMS0wMi0wMSAgUGF2ZWwgUG9kaXZpbG92ICA8cG9k
aXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFu
LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGll
bnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmgKaW5k
ZXggZjdiZWY1M2YxMmJmNmRkMjEwNWZmZjk0ZDI5NzJkNGFkNGUxY2FhMS4uMmZmYjJlYjk2OGY3
YmU0ZDJjMzdkN2RjMmEyOTcxODRkNGU2MDE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9j
aHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCkBAIC00MSw2ICs0MSw3IEBAIG5hbWVzcGFjZSBX
ZWJLaXQgewogCiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsKIGNsYXNzIFdlYkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0Q2xpZW50OworY2xhc3MgV2ViQ2xpcGJvYXJkOwogY2xhc3MgV2ViQ29v
a2llSmFyOwogY2xhc3MgV2ViRGF0YVNvdXJjZTsKIGNsYXNzIFdlYkZvcm1FbGVtZW50OwpAQCAt
ODgsNiArODksOSBAQCBwdWJsaWM6CiAgICAgLy8gV2ViS2l0Q2xpZW50Ojpjb29raWVKYXIoKSB3
aWxsIGJlIGNhbGxlZCB0byBhY2Nlc3MgY29va2llcy4KICAgICB2aXJ0dWFsIFdlYkNvb2tpZUph
ciogY29va2llSmFyKFdlYkZyYW1lKikgeyByZXR1cm4gMDsgfQogCisgICAgLy8gQSBmcmFtZSBz
cGVjaWZpYyBjbGlwYm9hcmQuIE1heSByZXR1cm4gbnVsbCwgaW4gd2hpY2ggY2FzZS4uLiB5b3Un
cmUgZG9uZS4KKyAgICB2aXJ0dWFsIFdlYkNsaXBib2FyZCogY2xpcGJvYXJkKCkgeyByZXR1cm4g
MDsgfQorCiAKICAgICAvLyBHZW5lcmFsIG5vdGlmaWNhdGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1CcmlkZ2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9zcmMvUGxhdGZvcm1CcmlkZ2UuY3BwCmluZGV4IDRkZGUzY2FhYzc2OTNhY2Y4MjkwMTRiNzJi
YjZiMzE0NTNkZGZhYjcuLjFkYTc5NjBlMDRmNjk3MDUxMWMwM2QyMjJmYjIyNDU0NjNlNGExMDkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1BsYXRmb3JtQnJpZGdlLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9QbGF0Zm9ybUJyaWRnZS5jcHAKQEAg
LTEzMiw2ICsxMzIsMTQgQEAgc3RhdGljIFdlYldpZGdldENsaWVudCogdG9XZWJXaWRnZXRDbGll
bnQoV2lkZ2V0KiB3aWRnZXQpCiAgICAgcmV0dXJuIGNocm9tZUNsaWVudEltcGwtPndlYlZpZXco
KS0+Y2xpZW50KCk7CiB9CiAKK3N0YXRpYyBXZWJDbGlwYm9hcmQqIGdldENsaXBib2FyZChjb25z
dCBEb2N1bWVudCogZG9jdW1lbnQpCit7CisgICAgV2ViRnJhbWVJbXBsKiBmcmFtZUltcGwgPSBX
ZWJGcmFtZUltcGw6OmZyb21GcmFtZShkb2N1bWVudC0+ZnJhbWUoKSk7CisgICAgaWYgKCFmcmFt
ZUltcGwgfHwgIWZyYW1lSW1wbC0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybiAwOworICAgIHJl
dHVybiBmcmFtZUltcGwtPmNsaWVudCgpLT5jbGlwYm9hcmQoKTsKK30KKwogc3RhdGljIFdlYkNv
b2tpZUphciogZ2V0Q29va2llSmFyKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKIHsKICAgICBX
ZWJGcmFtZUltcGwqIGZyYW1lSW1wbCA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGRvY3VtZW50
LT5mcmFtZSgpKTsKQEAgLTIxNyw5ICsyMjUsMTUgQEAgdm9pZCBQbGF0Zm9ybUJyaWRnZTo6Y2xp
cGJvYXJkV3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwKIH0KIAogSGFzaFNldDxTdHJpbmc+
IFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkQXZhaWxhYmxlVHlwZXMoCi0gICAgUGFzdGVi
b2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIsIGJvb2wqIGNvbnRhaW5zRmlsZW5h
bWVzKQorICAgIGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCwKKyAgICBQYXN0ZWJvYXJkUHJpdmF0
ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlciwKKyAgICBib29sKiBjb250YWluc0ZpbGVuYW1lcykK
IHsKLSAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiByZXN1bHQgPSB3ZWJLaXRDbGllbnQoKS0+Y2xp
cGJvYXJkKCktPnJlYWRBdmFpbGFibGVUeXBlcygKKyAgICBXZWJDbGlwYm9hcmQqIGNsaXBib2Fy
ZCA9IGdldENsaXBib2FyZChkb2N1bWVudCk7CisgICAgaWYgKCFjbGlwYm9hcmQpCisgICAgICAg
IHJldHVybiBIYXNoU2V0PFN0cmluZz4oKTsKKworICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHJl
c3VsdCA9IGNsaXBib2FyZC0+cmVhZEF2YWlsYWJsZVR5cGVzKAogICAgICAgICBzdGF0aWNfY2Fz
dDxXZWJDbGlwYm9hcmQ6OkJ1ZmZlcj4oYnVmZmVyKSwgY29udGFpbnNGaWxlbmFtZXMpOwogICAg
IEhhc2hTZXQ8U3RyaW5nPiB0eXBlczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3Vs
dC5zaXplKCk7ICsraSkKQEAgLTIyNywxMiArMjQxLDE5IEBAIEhhc2hTZXQ8U3RyaW5nPiBQbGF0
Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEF2YWlsYWJsZVR5cGVzKAogICAgIHJldHVybiB0eXBl
czsKIH0KIAotYm9vbCBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZERhdGEoUGFzdGVib2Fy
ZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHR5cGUsIFN0cmluZyYgZGF0YSwgU3RyaW5n
JiBtZXRhZGF0YSkKK2Jvb2wgUGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWREYXRhKGNvbnN0
IERvY3VtZW50KiBkb2N1bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVyLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB0eXBlLAorICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nJiBkYXRhLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nJiBtZXRhZGF0YSkKIHsKKyAgICBX
ZWJDbGlwYm9hcmQqIGNsaXBib2FyZCA9IGdldENsaXBib2FyZChkb2N1bWVudCk7CisgICAgaWYg
KCFjbGlwYm9hcmQpCisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIFdlYlN0cmluZyByZXN1
bHREYXRhOwogICAgIFdlYlN0cmluZyByZXN1bHRNZXRhZGF0YTsKLSAgICBib29sIHN1Y2NlZWRl
ZCA9IHdlYktpdENsaWVudCgpLT5jbGlwYm9hcmQoKS0+cmVhZERhdGEoCisgICAgYm9vbCBzdWNj
ZWVkZWQgPSBjbGlwYm9hcmQtPnJlYWREYXRhKAogICAgICAgICBzdGF0aWNfY2FzdDxXZWJDbGlw
Ym9hcmQ6OkJ1ZmZlcj4oYnVmZmVyKSwgdHlwZSwgJnJlc3VsdERhdGEsICZyZXN1bHRNZXRhZGF0
YSk7CiAgICAgaWYgKHN1Y2NlZWRlZCkgewogICAgICAgICBkYXRhID0gcmVzdWx0RGF0YTsKQEAg
LTI0MSw5ICsyNjIsMTQgQEAgYm9vbCBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZERhdGEo
UGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIKICAgICByZXR1cm4gc3Vj
Y2VlZGVkOwogfQogCi1WZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVh
ZEZpbGVuYW1lcyhQYXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlcikKK1Zl
Y3RvcjxTdHJpbmc+IFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkRmlsZW5hbWVzKGNvbnN0
IERvY3VtZW50KiBkb2N1bWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVm
ZmVyKQogewotICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHJlc3VsdCA9IHdlYktpdENsaWVudCgp
LT5jbGlwYm9hcmQoKS0+cmVhZEZpbGVuYW1lcygKKyAgICBXZWJDbGlwYm9hcmQqIGNsaXBib2Fy
ZCA9IGdldENsaXBib2FyZChkb2N1bWVudCk7CisgICAgaWYgKCFjbGlwYm9hcmQpCisgICAgICAg
IHJldHVybiBWZWN0b3I8U3RyaW5nPigpOworCisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gcmVz
dWx0ID0gY2xpcGJvYXJkLT5yZWFkRmlsZW5hbWVzKAogICAgICAgICBzdGF0aWNfY2FzdDxXZWJD
bGlwYm9hcmQ6OkJ1ZmZlcj4oYnVmZmVyKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gY29udmVydGVk
UmVzdWx0OwogICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwIGIv
U291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCmluZGV4IDBiMjFmNWY2
M2YwYTIxZGFhYjA2N2Q3OTViZWNhMDk4OGNiMDUyMmUuLjMyYWFiZDkwMTE1MjgyMWNkOTM1NDU2
NTQ0ZTQ5ODlmZTExNDk2ZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYlZpZXdJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3
SW1wbC5jcHAKQEAgLTE3NjEsNyArMTc2MSw4IEBAIFdlYkRyYWdPcGVyYXRpb24gV2ViVmlld0lt
cGw6OmRyYWdUYXJnZXREcmFnRW50ZXJOZXcoCiB7CiAgICAgQVNTRVJUKCFtX2N1cnJlbnREcmFn
RGF0YS5nZXQoKSk7CiAKLSAgICBtX2N1cnJlbnREcmFnRGF0YSA9IENocm9taXVtRGF0YU9iamVj
dDo6Y3JlYXRlUmVhZGFibGUoQ2xpcGJvYXJkOjpEcmFnQW5kRHJvcCk7CisgICAgbV9jdXJyZW50
RHJhZ0RhdGEgPSBDaHJvbWl1bURhdGFPYmplY3Q6OmNyZWF0ZVJlYWRhYmxlKAorICAgICAgICBt
X3BhZ2UtPm1haW5GcmFtZSgpLT5kb2N1bWVudCgpLCBDbGlwYm9hcmQ6OkRyYWdBbmREcm9wKTsK
ICAgICBtX2RyYWdJZGVudGl0eSA9IGlkZW50aXR5OwogICAgIG1fb3BlcmF0aW9uc0FsbG93ZWQg
PSBvcGVyYXRpb25zQWxsb3dlZDsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>81295</attachid>
            <date>2011-02-04 15:00:40 -0800</date>
            <delta_ts>2011-02-04 15:27:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-53727-20110204150039.patch</filename>
            <type>text/plain</type>
            <size>18230</size>
            <attacher name="Daniel Cheng">dcheng</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCAwNGQyOGNlNjdhZDhhMzg0YzJhMTE1MDRlMmJmZmZkNzY3MjY3OWM1Li4w
MDI4ZjY2ZDM1YzcwOTExZWI2ODFhNmI2ZTc4ZTA0MmZkZDY5NGUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzYgQEAKKzIwMTEtMDItMDQgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5v
cmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xv
bmUgV2ViQ2xpcGJvYXJkIHRvIGJlIGZyYW1lLXNwZWNpZmljLgorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MjcKKworICAgICAgICBGb3IgZHJvcCBv
cGVyYXRpb25zLCBDaHJvbWUgY3VycmVudGx5IHNuYXBzaG90cyB0aGUgZGF0YSBhbmQgY29waWVz
IGl0CisgICAgICAgIGludG8gdGhlIHJlbmRlcmVyIHByb2Nlc3MuIEFzIHdlIGFkZCBtb3JlIHN1
cHBvcnRlZCBkcmFnIGRhdGEgdHlwZXMsIHRoZQorICAgICAgICBjb3B5IHdpbGwgYmVjb21lIGlu
Y3JlYXNpbmdseSBleHBlbnNpdmUuIEluc3RlYWQsIHdlJ2QgbGlrZSB0byBzbmFwc2hvdAorICAg
ICAgICBkYXRhIGluIHRoZSBicm93c2VyIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIGRhdGEgY29w
aWVkIGFuZCB0byBzdXBwb3J0CisgICAgICAgIEJsb2IgaW4gRGF0YVRyYW5zZmVySXRlbS4gSW4g
b3JkZXIgdG8gYWxsb3cgdGhpcywgd2UgYXNzb2NpYXRlZAorICAgICAgICBXZWJDbGlwYm9hcmQg
d2l0aCBhIGZyYW1lIHNvIGl0IGNhbiBjb3JyZWN0bHkgcm91dGUgaXRzIElQQ3MgdG8gdGhlCisg
ICAgICAgIGNvcnJlc3BvbmRpbmcgQ2hyb21pdW0gaG9zdC4KKworICAgICAgICBObyBuZXcgdGVz
dHMgYmVjYXVzZSBubyBuZXcgZnVuY3Rpb25hbGl0eS4KKworICAgICAgICAqIHBsYXRmb3JtL2No
cm9taXVtL0Nocm9taXVtRGF0YU9iamVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDaHJvbWl1
bURhdGFPYmplY3Q6OmNyZWF0ZVJlYWRhYmxlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1
bS9DaHJvbWl1bURhdGFPYmplY3QuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9DbGlw
Ym9hcmRDaHJvbWl1bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDbGlwYm9hcmRDaHJvbWl1bTo6
Y3JlYXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRnZS5oOgor
ICAgICAgICAqIHBsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OmNyZWF0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OlJlYWRhYmxlRGF0YU9iamVjdCk6CisgICAgICAgIChX
ZWJDb3JlOjpSZWFkYWJsZURhdGFPYmplY3Q6OmdldERhdGEpOgorICAgICAgICAoV2ViQ29yZTo6
UmVhZGFibGVEYXRhT2JqZWN0Ojp1cmxUaXRsZSk6CisgICAgICAgIChXZWJDb3JlOjpSZWFkYWJs
ZURhdGFPYmplY3Q6Omh0bWxCYXNlVXJsKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlRGF0
YU9iamVjdDo6ZmlsZW5hbWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlJlYWRhYmxlRGF0YU9iamVj
dDo6ZW5zdXJlVHlwZUNhY2hlSW5pdGlhbGl6ZWQpOgorICAgICAgICAqIHBsYXRmb3JtL2Nocm9t
aXVtL1JlYWRhYmxlRGF0YU9iamVjdC5oOgorCiAyMDExLTAyLTAzICBEYW4gQmVybnN0ZWluICA8
bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQW5kZXJzIENhcmxzc29uLgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRh
T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0
YU9iamVjdC5jcHAKaW5kZXggNzhiNzk0YmZiN2VhZWVjMWYzN2NmNTQ5ZjRlNmQ1OWQ5ZDA3ODQw
Yi4uZjU3MzJkZmM2NjgyZDQyZTA3MjJjMTczYjU2YzdkMDQ3MjgwNTZmMyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2hyb21pdW1EYXRhT2JqZWN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DaHJvbWl1bURhdGFPYmplY3Qu
Y3BwCkBAIC01Niw5ICs1Niw5IEBAIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBDaHJv
bWl1bURhdGFPYmplY3Q6OmNyZWF0ZShQYXNzUmVmUHRyPENocm9taXVtRGF0CiAgICAgcmV0dXJu
IGFkb3B0UmVmKG5ldyBDaHJvbWl1bURhdGFPYmplY3QoZGF0YSkpOwogfQogCi1QYXNzUmVmUHRy
PENocm9taXVtRGF0YU9iamVjdD4gQ2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGVSZWFkYWJsZShD
bGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKK1Bhc3NSZWZQdHI8Q2hyb21p
dW1EYXRhT2JqZWN0PiBDaHJvbWl1bURhdGFPYmplY3Q6OmNyZWF0ZVJlYWRhYmxlKGNvbnN0IEZy
YW1lKiBmcmFtZSwgQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlIGNsaXBib2FyZFR5cGUpCiB7Ci0g
ICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBDaHJvbWl1bURhdGFPYmplY3QoUmVhZGFibGVEYXRhT2Jq
ZWN0OjpjcmVhdGUoY2xpcGJvYXJkVHlwZSkpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYobmV3IENo
cm9taXVtRGF0YU9iamVjdChSZWFkYWJsZURhdGFPYmplY3Q6OmNyZWF0ZShmcmFtZSwgY2xpcGJv
YXJkVHlwZSkpKTsKIH0KIAogUGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IENocm9taXVt
RGF0YU9iamVjdDo6Y3JlYXRlV3JpdGFibGUoQ2xpcGJvYXJkOjpDbGlwYm9hcmRUeXBlIGNsaXBi
b2FyZFR5cGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9D
aHJvbWl1bURhdGFPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0No
cm9taXVtRGF0YU9iamVjdC5oCmluZGV4IDRhYWM1YzlhZDZlOTYxY2IzNjU1OWU4ZmQxYTQ2ZGFh
MDcyYWJmZmYuLjkxOWMyNjk3NWVkMTkzYmY1ZDViZjA1MDIxZTA2NGU3NjkxNjU0ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9iamVj
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL0Nocm9taXVtRGF0YU9i
amVjdC5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENocm9t
aXVtRGF0YU9iamVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPENocm9taXVtRGF0YU9iamVjdD4gewog
cHVibGljOgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gY3JlYXRl
KFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0TGVnYWN5PiBkYXRhKTsKLSAgICBzdGF0aWMg
UGFzc1JlZlB0cjxDaHJvbWl1bURhdGFPYmplY3Q+IGNyZWF0ZVJlYWRhYmxlKENsaXBib2FyZDo6
Q2xpcGJvYXJkVHlwZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0
PiBjcmVhdGVSZWFkYWJsZShjb25zdCBGcmFtZSosIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSk7
CiAgICAgc3RhdGljIFBhc3NSZWZQdHI8Q2hyb21pdW1EYXRhT2JqZWN0PiBjcmVhdGVXcml0YWJs
ZShDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUpOwogCiAgICAgdm9pZCBjbGVhckRhdGEoY29uc3Qg
U3RyaW5nJiB0eXBlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZENocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9t
aXVtL0NsaXBib2FyZENocm9taXVtLmNwcAppbmRleCA0NmI0MzM5MTI0ODFiMmQzNGI3OTZmMzdj
MjIyMWI4Y2ZmNzFmZTc4Li5kNmJhMmQyMGE2OGJkNjVmYWRiZWFmMzcwNGRjOWE2ZmE4ZmUzZDU1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9DbGlwYm9hcmRD
aHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vQ2xpcGJv
YXJkQ2hyb21pdW0uY3BwCkBAIC05MSw3ICs5MSw3IEBAIFBhc3NSZWZQdHI8Q2xpcGJvYXJkQ2hy
b21pdW0+IENsaXBib2FyZENocm9taXVtOjpjcmVhdGUoQ2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRU
CiAgICAgUmVmUHRyPENocm9taXVtRGF0YU9iamVjdD4gZGF0YU9iamVjdCA9CiAgICAgICAgIHBv
bGljeSA9PSBDbGlwYm9hcmRXcml0YWJsZSA/CiAgICAgICAgIENocm9taXVtRGF0YU9iamVjdDo6
Y3JlYXRlV3JpdGFibGUoY2xpcGJvYXJkVHlwZSkgOgotICAgICAgICBDaHJvbWl1bURhdGFPYmpl
Y3Q6OmNyZWF0ZVJlYWRhYmxlKGNsaXBib2FyZFR5cGUpOworICAgICAgICBDaHJvbWl1bURhdGFP
YmplY3Q6OmNyZWF0ZVJlYWRhYmxlKGZyYW1lLCBjbGlwYm9hcmRUeXBlKTsKICAgICByZXR1cm4g
YWRvcHRSZWYobmV3IENsaXBib2FyZENocm9taXVtKGNsaXBib2FyZFR5cGUsIGRhdGFPYmplY3Qs
IHBvbGljeSwgZnJhbWUpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vY2hyb21pdW0vUGxhdGZvcm1CcmlkZ2UuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2No
cm9taXVtL1BsYXRmb3JtQnJpZGdlLmgKaW5kZXggYzYwODVmMWIyMzRjMTQ5ZGFlYzkxZWJmMGNk
NmY1NmMxZTYxN2FkZi4uOWEwOWI5MDA3MDRmM2FkNTRjOGEwYjVhOGY3Y2Q5MDAxODI1YTM3OCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUGxhdGZvcm1Ccmlk
Z2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9QbGF0Zm9ybUJyaWRn
ZS5oCkBAIC0xMDksOSArMTA5LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGNsaXBib2Fy
ZFdyaXRlRGF0YShjb25zdCBTdHJpbmcmIHR5cGUsIGNvbnN0IFN0cmluZyYgZGF0YSwgY29uc3Qg
U3RyaW5nJiBtZXRhZGF0YSk7CiAKICAgICAvLyBJbnRlcmZhY2UgZm9yIGhhbmRsaW5nIGNvcHkg
YW5kIHBhc3RlLCBkcmFnIGFuZCBkcm9wLCBhbmQgc2VsZWN0aW9uIGNvcHkuCi0gICAgc3RhdGlj
IEhhc2hTZXQ8U3RyaW5nPiBjbGlwYm9hcmRSZWFkQXZhaWxhYmxlVHlwZXMoUGFzdGVib2FyZFBy
aXZhdGU6OkNsaXBib2FyZEJ1ZmZlciwgYm9vbCogY29udGFpbnNGaWxlbmFtZXMpOwotICAgIHN0
YXRpYyBib29sIGNsaXBib2FyZFJlYWREYXRhKFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRC
dWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgU3RyaW5nJiBkYXRhLCBTdHJpbmcmIG1ldGFkYXRh
KTsKLSAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gY2xpcGJvYXJkUmVhZEZpbGVuYW1lcyhQYXN0
ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyKTsKKyAgICBzdGF0aWMgSGFzaFNldDxTdHJp
bmc+IGNsaXBib2FyZFJlYWRBdmFpbGFibGVUeXBlcyhjb25zdCBGcmFtZSosIFBhc3RlYm9hcmRQ
cml2YXRlOjpDbGlwYm9hcmRCdWZmZXIsIGJvb2wqIGNvbnRhaW5zRmlsZW5hbWVzKTsKKyAgICBz
dGF0aWMgYm9vbCBjbGlwYm9hcmRSZWFkRGF0YShjb25zdCBGcmFtZSosIFBhc3RlYm9hcmRQcml2
YXRlOjpDbGlwYm9hcmRCdWZmZXIsIGNvbnN0IFN0cmluZyYgdHlwZSwgU3RyaW5nJiBkYXRhLCBT
dHJpbmcmIG1ldGFkYXRhKTsKKyAgICBzdGF0aWMgVmVjdG9yPFN0cmluZz4gY2xpcGJvYXJkUmVh
ZEZpbGVuYW1lcyhjb25zdCBGcmFtZSosIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZm
ZXIpOwogCiAgICAgLy8gQ29va2llcyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAgICBzdGF0aWMgdm9pZCBzZXRDb29raWVzKGNv
bnN0IERvY3VtZW50KiwgY29uc3QgS1VSTCYsIGNvbnN0IFN0cmluZyYgdmFsdWUpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2Nocm9taXVtL1JlYWRhYmxlRGF0YU9iamVj
dC5jcHAKaW5kZXggZGJmNDczOTBkNjlmOWJjNzVmNzYxMDZiYjJhZjA1NTNjNDI3NjhjNi4uNDg0
YTFiMzI5NGVjZTYxYjJlN2ExZjhmYzJiY2VjMTA4ODAwZmQ3MiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuY3BwCkBA
IC00MywxMyArNDMsMTQgQEAgc3RhdGljIFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZm
ZXIgY2xpcGJvYXJkQnVmZmVyKENsaXBib2FyZDo6Q2xpcGJvYXJkVHkKICAgICByZXR1cm4gY2xp
cGJvYXJkVHlwZSA9PSBDbGlwYm9hcmQ6OkRyYWdBbmREcm9wID8gUGFzdGVib2FyZFByaXZhdGU6
OkRyYWdCdWZmZXIgOiBQYXN0ZWJvYXJkUHJpdmF0ZTo6U3RhbmRhcmRCdWZmZXI7CiB9CiAKLVBh
c3NSZWZQdHI8UmVhZGFibGVEYXRhT2JqZWN0PiBSZWFkYWJsZURhdGFPYmplY3Q6OmNyZWF0ZShD
bGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKK1Bhc3NSZWZQdHI8UmVhZGFi
bGVEYXRhT2JqZWN0PiBSZWFkYWJsZURhdGFPYmplY3Q6OmNyZWF0ZShjb25zdCBGcmFtZSogZnJh
bWUsIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSBjbGlwYm9hcmRUeXBlKQogewotICAgIHJldHVy
biBhZG9wdFJlZihuZXcgUmVhZGFibGVEYXRhT2JqZWN0KGNsaXBib2FyZFR5cGUpKTsKKyAgICBy
ZXR1cm4gYWRvcHRSZWYobmV3IFJlYWRhYmxlRGF0YU9iamVjdChmcmFtZSwgY2xpcGJvYXJkVHlw
ZSkpOwogfQogCi1SZWFkYWJsZURhdGFPYmplY3Q6OlJlYWRhYmxlRGF0YU9iamVjdChDbGlwYm9h
cmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkKLSAgICA6IG1fY2xpcGJvYXJkVHlwZShj
bGlwYm9hcmRUeXBlKQorUmVhZGFibGVEYXRhT2JqZWN0OjpSZWFkYWJsZURhdGFPYmplY3QoY29u
c3QgRnJhbWUqIGZyYW1lLCBDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgY2xpcGJvYXJkVHlwZSkK
KyAgICA6IG1fZnJhbWUoZnJhbWUpCisgICAgLCBtX2NsaXBib2FyZFR5cGUoY2xpcGJvYXJkVHlw
ZSkKICAgICAsIG1fY29udGFpbnNGaWxlbmFtZXMoZmFsc2UpCiAgICAgLCBtX2lzVHlwZUNhY2hl
SW5pdGlhbGl6ZWQoZmFsc2UpCiB7CkBAIC05Myw3ICs5NCw3IEBAIFN0cmluZyBSZWFkYWJsZURh
dGFPYmplY3Q6OmdldERhdGEoY29uc3QgU3RyaW5nJiB0eXBlLCBib29sJiBzdWNjZWVkZWQpIGNv
bnN0CiAgICAgICAgIHJldHVybiBkYXRhOwogICAgIH0KICAgICBzdWNjZWVkZWQgPSBQbGF0Zm9y
bUJyaWRnZTo6Y2xpcGJvYXJkUmVhZERhdGEoCi0gICAgICAgIGNsaXBib2FyZEJ1ZmZlcihtX2Ns
aXBib2FyZFR5cGUpLCB0eXBlLCBkYXRhLCBpZ25vcmVkTWV0YWRhdGEpOworICAgICAgICBtX2Zy
YW1lLCBjbGlwYm9hcmRCdWZmZXIobV9jbGlwYm9hcmRUeXBlKSwgdHlwZSwgZGF0YSwgaWdub3Jl
ZE1ldGFkYXRhKTsKICAgICByZXR1cm4gZGF0YTsKIH0KIApAQCAtMTAyLDcgKzEwMyw3IEBAIFN0
cmluZyBSZWFkYWJsZURhdGFPYmplY3Q6OnVybFRpdGxlKCkgY29uc3QKICAgICBTdHJpbmcgaWdu
b3JlZERhdGE7CiAgICAgU3RyaW5nIHVybFRpdGxlOwogICAgIFBsYXRmb3JtQnJpZGdlOjpjbGlw
Ym9hcmRSZWFkRGF0YSgKLSAgICAgICAgY2xpcGJvYXJkQnVmZmVyKG1fY2xpcGJvYXJkVHlwZSks
IG1pbWVUeXBlVGV4dFVSSUxpc3QsIGlnbm9yZWREYXRhLCB1cmxUaXRsZSk7CisgICAgICAgIG1f
ZnJhbWUsIGNsaXBib2FyZEJ1ZmZlcihtX2NsaXBib2FyZFR5cGUpLCBtaW1lVHlwZVRleHRVUklM
aXN0LCBpZ25vcmVkRGF0YSwgdXJsVGl0bGUpOwogICAgIHJldHVybiB1cmxUaXRsZTsKIH0KIApA
QCAtMTExLDcgKzExMiw3IEBAIEtVUkwgUmVhZGFibGVEYXRhT2JqZWN0OjpodG1sQmFzZVVybCgp
IGNvbnN0CiAgICAgU3RyaW5nIGlnbm9yZWREYXRhOwogICAgIFN0cmluZyBodG1sQmFzZVVybDsK
ICAgICBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZERhdGEoCi0gICAgICAgIGNsaXBib2Fy
ZEJ1ZmZlcihtX2NsaXBib2FyZFR5cGUpLCBtaW1lVHlwZVRleHRIVE1MLCBpZ25vcmVkRGF0YSwg
aHRtbEJhc2VVcmwpOworICAgICAgICBtX2ZyYW1lLCBjbGlwYm9hcmRCdWZmZXIobV9jbGlwYm9h
cmRUeXBlKSwgbWltZVR5cGVUZXh0SFRNTCwgaWdub3JlZERhdGEsIGh0bWxCYXNlVXJsKTsKICAg
ICByZXR1cm4gS1VSTChQYXJzZWRVUkxTdHJpbmcsIGh0bWxCYXNlVXJsKTsKIH0KIApAQCAtMTIz
LDcgKzEyNCw3IEBAIGJvb2wgUmVhZGFibGVEYXRhT2JqZWN0Ojpjb250YWluc0ZpbGVuYW1lcygp
IGNvbnN0CiAKIFZlY3RvcjxTdHJpbmc+IFJlYWRhYmxlRGF0YU9iamVjdDo6ZmlsZW5hbWVzKCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gUGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWRGaWxlbmFt
ZXMoY2xpcGJvYXJkQnVmZmVyKG1fY2xpcGJvYXJkVHlwZSkpOworICAgIHJldHVybiBQbGF0Zm9y
bUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEZpbGVuYW1lcyhtX2ZyYW1lLCBjbGlwYm9hcmRCdWZmZXIo
bV9jbGlwYm9hcmRUeXBlKSk7CiB9CiAKIHZvaWQgUmVhZGFibGVEYXRhT2JqZWN0OjplbnN1cmVU
eXBlQ2FjaGVJbml0aWFsaXplZCgpIGNvbnN0CkBAIC0xMzIsNyArMTMzLDcgQEAgdm9pZCBSZWFk
YWJsZURhdGFPYmplY3Q6OmVuc3VyZVR5cGVDYWNoZUluaXRpYWxpemVkKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV90eXBlcyA9IFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFk
QXZhaWxhYmxlVHlwZXMoCi0gICAgICAgIGNsaXBib2FyZEJ1ZmZlcihtX2NsaXBib2FyZFR5cGUp
LCAmbV9jb250YWluc0ZpbGVuYW1lcyk7CisgICAgICAgIG1fZnJhbWUsIGNsaXBib2FyZEJ1ZmZl
cihtX2NsaXBib2FyZFR5cGUpLCAmbV9jb250YWluc0ZpbGVuYW1lcyk7CiAgICAgbV9pc1R5cGVD
YWNoZUluaXRpYWxpemVkID0gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vY2hyb21pdW0vUmVhZGFibGVEYXRhT2JqZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9jaHJvbWl1bS9SZWFkYWJsZURhdGFPYmplY3QuaAppbmRleCAwMjdlMGVkMzQxYzhj
NWRlYzI4NzI0MDU2ZjEwMDA2Y2Q2YzFiZDk1Li43YzE4MDY0NzMyZDk1ZDY5M2QwNTQxMDY2MWE0
ODViNDQzNzIxOGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJvbWl1
bS9SZWFkYWJsZURhdGFPYmplY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9jaHJv
bWl1bS9SZWFkYWJsZURhdGFPYmplY3QuaApAQCAtNDQsNyArNDQsNyBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAvLyBicm93c2VyIHRvIHRoZSByZW5kZXJlci4KIGNsYXNzIFJlYWRhYmxlRGF0YU9i
amVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPFJlYWRhYmxlRGF0YU9iamVjdD4gewogcHVibGljOgot
ICAgIHN0YXRpYyBQYXNzUmVmUHRyPFJlYWRhYmxlRGF0YU9iamVjdD4gY3JlYXRlKENsaXBib2Fy
ZDo6Q2xpcGJvYXJkVHlwZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8UmVhZGFibGVEYXRhT2Jq
ZWN0PiBjcmVhdGUoY29uc3QgRnJhbWUqLCBDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUpOwogCiAg
ICAgYm9vbCBoYXNEYXRhKCkgY29uc3Q7CiAgICAgSGFzaFNldDxTdHJpbmc+IHR5cGVzKCkgY29u
c3Q7CkBAIC01NywxMSArNTcsMTUgQEAgcHVibGljOgogICAgIFZlY3RvcjxTdHJpbmc+IGZpbGVu
YW1lcygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIGV4cGxpY2l0IFJlYWRhYmxlRGF0YU9iamVj
dChDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUpOworICAgIGV4cGxpY2l0IFJlYWRhYmxlRGF0YU9i
amVjdChjb25zdCBGcmFtZSosIENsaXBib2FyZDo6Q2xpcGJvYXJkVHlwZSk7CiAKICAgICAvLyBU
aGlzIGlzbid0IGFsd2F5cyBjb25zdC4uLiBidXQgbW9zdCBvZiB0aGUgdGltZSBpdCBpcy4KICAg
ICB2b2lkIGVuc3VyZVR5cGVDYWNoZUluaXRpYWxpemVkKCkgY29uc3Q7CiAKKyAgICAvLyBUaGUg
b3duZXIgZG9jdW1lbnQuIFVzZWQgdG8gc2VuZCBJUENzIGJhY2sgdG8gdGhlIGNvcnJlc3Bkb25n
aW5nIHZpZXcKKyAgICAvLyB2aWEgV2ViRnJhbWVDbGllbnQuCisgICAgY29uc3QgRnJhbWUqIG1f
ZnJhbWU7CisKICAgICBDbGlwYm9hcmQ6OkNsaXBib2FyZFR5cGUgbV9jbGlwYm9hcmRUeXBlOwog
CiAgICAgLy8gVG8gYXZvaWQgbWFraW5nIGEgbG90IG9mIElQQyBjYWxscyBmb3IgZWFjaCBkcmFn
IGV2ZW50LCB3ZSBjYWNoZSBzb21lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGVmNTFl
MTZjZjExNTkyNWFmOTE2MjY2Y2UwZmVlNWMyYzAyMDRiZGYuLmIyYjg0YmE2MTA0YmYzOTE5MmI2
NmU0NzM3MmFmMzhhNDBiNTFlNTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMzEgQEAKKzIwMTEtMDItMDQgIERhbmllbCBDaGVuZyAgPGRjaGVuZ0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xvbmUg
V2ViQ2xpcGJvYXJkIHRvIGJlIGZyYW1lLXNwZWNpZmljLgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTM3MjcKKworICAgICAgICBGb3IgZHJvcCBvcGVy
YXRpb25zLCBDaHJvbWUgY3VycmVudGx5IHNuYXBzaG90cyB0aGUgZGF0YSBhbmQgY29waWVzIGl0
CisgICAgICAgIGludG8gdGhlIHJlbmRlcmVyIHByb2Nlc3MuIEFzIHdlIGFkZCBtb3JlIHN1cHBv
cnRlZCBkcmFnIGRhdGEgdHlwZXMsIHRoZQorICAgICAgICBjb3B5IHdpbGwgYmVjb21lIGluY3Jl
YXNpbmdseSBleHBlbnNpdmUuIEluc3RlYWQsIHdlJ2QgbGlrZSB0byBzbmFwc2hvdAorICAgICAg
ICBkYXRhIGluIHRoZSBicm93c2VyIHRvIHJlZHVjZSB0aGUgYW1vdW50IG9mIGRhdGEgY29waWVk
IGFuZCB0byBzdXBwb3J0CisgICAgICAgIEJsb2IgaW4gRGF0YVRyYW5zZmVySXRlbS4gSW4gb3Jk
ZXIgdG8gYWxsb3cgdGhpcywgd2UgYXNzb2NpYXRlZAorICAgICAgICBXZWJDbGlwYm9hcmQgd2l0
aCBhIGZyYW1lIHNvIGl0IGNhbiBjb3JyZWN0bHkgcm91dGUgaXRzIElQQ3MgdG8gdGhlCisgICAg
ICAgIGNvcnJlc3BvbmRpbmcgQ2hyb21pdW0gaG9zdC4KKworICAgICAgICAqIHB1YmxpYy9XZWJG
cmFtZUNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUNsaWVudDo6Y2xpcGJvYXJk
KToKKyAgICAgICAgKiBzcmMvUGxhdGZvcm1CcmlkZ2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Z2V0Q2xpcGJvYXJkKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQnJpZGdlOjpjbGlwYm9h
cmRSZWFkQXZhaWxhYmxlVHlwZXMpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1CcmlkZ2U6
OmNsaXBib2FyZFJlYWREYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQnJpZGdlOjpj
bGlwYm9hcmRSZWFkRmlsZW5hbWVzKToKKyAgICAgICAgKiBzcmMvV2ViRnJhbWVJbXBsLmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVJbXBsOjpmcm9tRnJhbWUpOgorICAgICAgICAqIHNy
Yy9XZWJGcmFtZUltcGwuaDoKKyAgICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAg
ICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6ZHJhZ1RhcmdldERyYWdFbnRlck5ldyk6CisKIDIwMTEt
MDItMDEgIFBhdmVsIFBvZGl2aWxvdiAgPHBvZGl2aWxvdkBjaHJvbWl1bS5vcmc+CiAKICAgICAg
ICAgUmV2aWV3ZWQgYnkgUGF2ZWwgRmVsZG1hbi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVt
L3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oCmluZGV4IGY3YmVmNTNmMTJiZjZkZDIxMDVmZmY5NGQy
OTcyZDRhZDRlMWNhYTEuLmE0MWY2OTJiZWZmMTljZDg2MmZkMjUwN2RmMjM2NDUzZmEwMWM2MmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYkZyYW1lQ2xpZW50
LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaApA
QCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViQXBwbGljYXRp
b25DYWNoZUhvc3Q7CiBjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudDsKK2NsYXNz
IFdlYkNsaXBib2FyZDsKIGNsYXNzIFdlYkNvb2tpZUphcjsKIGNsYXNzIFdlYkRhdGFTb3VyY2U7
CiBjbGFzcyBXZWJGb3JtRWxlbWVudDsKQEAgLTg4LDYgKzg5LDEwIEBAIHB1YmxpYzoKICAgICAv
LyBXZWJLaXRDbGllbnQ6OmNvb2tpZUphcigpIHdpbGwgYmUgY2FsbGVkIHRvIGFjY2VzcyBjb29r
aWVzLgogICAgIHZpcnR1YWwgV2ViQ29va2llSmFyKiBjb29raWVKYXIoV2ViRnJhbWUqKSB7IHJl
dHVybiAwOyB9CiAKKyAgICAvLyBBIGZyYW1lIHNwZWNpZmljIGNsaXBib2FyZC4gTWF5IHJldHVy
biBudWxsLCBpbiB3aGljaCBjYXNlIHRoZSBjYWxsZXIKKyAgICAvLyBzaG91bGQgYXNzdW1lIHRo
ZXJlIGlzIG5vIGRhdGEgaW4gdGhlIGNsaXBib2FyZC4KKyAgICB2aXJ0dWFsIFdlYkNsaXBib2Fy
ZCogY2xpcGJvYXJkKCkgeyByZXR1cm4gMDsgfQorCiAKICAgICAvLyBHZW5lcmFsIG5vdGlmaWNh
dGlvbnMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1CcmlkZ2UuY3Bw
IGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvUGxhdGZvcm1CcmlkZ2UuY3BwCmluZGV4IDRk
ZGUzY2FhYzc2OTNhY2Y4MjkwMTRiNzJiYjZiMzE0NTNkZGZhYjcuLmIwOWQxNTA2NzQwZmFkOWQy
NWQzMjAyNDEwMmRhMDViZDVkYTBkOWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1BsYXRmb3JtQnJpZGdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9QbGF0Zm9ybUJyaWRnZS5jcHAKQEAgLTEzMiw2ICsxMzIsMTQgQEAgc3RhdGljIFdlYldpZGdl
dENsaWVudCogdG9XZWJXaWRnZXRDbGllbnQoV2lkZ2V0KiB3aWRnZXQpCiAgICAgcmV0dXJuIGNo
cm9tZUNsaWVudEltcGwtPndlYlZpZXcoKS0+Y2xpZW50KCk7CiB9CiAKK3N0YXRpYyBXZWJDbGlw
Ym9hcmQqIGdldENsaXBib2FyZChjb25zdCBGcmFtZSogZnJhbWUpCit7CisgICAgV2ViRnJhbWVJ
bXBsKiBmcmFtZUltcGwgPSBXZWJGcmFtZUltcGw6OmZyb21GcmFtZShmcmFtZSk7CisgICAgaWYg
KCFmcmFtZUltcGwgfHwgIWZyYW1lSW1wbC0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybiAwOwor
ICAgIHJldHVybiBmcmFtZUltcGwtPmNsaWVudCgpLT5jbGlwYm9hcmQoKTsKK30KKwogc3RhdGlj
IFdlYkNvb2tpZUphciogZ2V0Q29va2llSmFyKGNvbnN0IERvY3VtZW50KiBkb2N1bWVudCkKIHsK
ICAgICBXZWJGcmFtZUltcGwqIGZyYW1lSW1wbCA9IFdlYkZyYW1lSW1wbDo6ZnJvbUZyYW1lKGRv
Y3VtZW50LT5mcmFtZSgpKTsKQEAgLTIxNyw5ICsyMjUsMTUgQEAgdm9pZCBQbGF0Zm9ybUJyaWRn
ZTo6Y2xpcGJvYXJkV3JpdGVEYXRhKGNvbnN0IFN0cmluZyYgdHlwZSwKIH0KIAogSGFzaFNldDxT
dHJpbmc+IFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkQXZhaWxhYmxlVHlwZXMoCi0gICAg
UGFzdGVib2FyZFByaXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIsIGJvb2wqIGNvbnRhaW5z
RmlsZW5hbWVzKQorICAgIGNvbnN0IEZyYW1lKiBmcmFtZSwKKyAgICBQYXN0ZWJvYXJkUHJpdmF0
ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlciwKKyAgICBib29sKiBjb250YWluc0ZpbGVuYW1lcykK
IHsKLSAgICBXZWJWZWN0b3I8V2ViU3RyaW5nPiByZXN1bHQgPSB3ZWJLaXRDbGllbnQoKS0+Y2xp
cGJvYXJkKCktPnJlYWRBdmFpbGFibGVUeXBlcygKKyAgICBXZWJDbGlwYm9hcmQqIGNsaXBib2Fy
ZCA9IGdldENsaXBib2FyZChmcmFtZSk7CisgICAgaWYgKCFjbGlwYm9hcmQpCisgICAgICAgIHJl
dHVybiBIYXNoU2V0PFN0cmluZz4oKTsKKworICAgIFdlYlZlY3RvcjxXZWJTdHJpbmc+IHJlc3Vs
dCA9IGNsaXBib2FyZC0+cmVhZEF2YWlsYWJsZVR5cGVzKAogICAgICAgICBzdGF0aWNfY2FzdDxX
ZWJDbGlwYm9hcmQ6OkJ1ZmZlcj4oYnVmZmVyKSwgY29udGFpbnNGaWxlbmFtZXMpOwogICAgIEhh
c2hTZXQ8U3RyaW5nPiB0eXBlczsKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHJlc3VsdC5z
aXplKCk7ICsraSkKQEAgLTIyNywxMiArMjQxLDE5IEBAIEhhc2hTZXQ8U3RyaW5nPiBQbGF0Zm9y
bUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEF2YWlsYWJsZVR5cGVzKAogICAgIHJldHVybiB0eXBlczsK
IH0KIAotYm9vbCBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZERhdGEoUGFzdGVib2FyZFBy
aXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHR5cGUsIFN0cmluZyYgZGF0YSwgU3RyaW5nJiBt
ZXRhZGF0YSkKK2Jvb2wgUGxhdGZvcm1CcmlkZ2U6OmNsaXBib2FyZFJlYWREYXRhKGNvbnN0IEZy
YW1lKiBmcmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3Rl
Ym9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVyLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB0eXBlLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nJiBkYXRhLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU3RyaW5nJiBtZXRhZGF0YSkKIHsKKyAgICBXZWJDbGlwYm9h
cmQqIGNsaXBib2FyZCA9IGdldENsaXBib2FyZChmcmFtZSk7CisgICAgaWYgKCFjbGlwYm9hcmQp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKwogICAgIFdlYlN0cmluZyByZXN1bHREYXRhOwogICAg
IFdlYlN0cmluZyByZXN1bHRNZXRhZGF0YTsKLSAgICBib29sIHN1Y2NlZWRlZCA9IHdlYktpdENs
aWVudCgpLT5jbGlwYm9hcmQoKS0+cmVhZERhdGEoCisgICAgYm9vbCBzdWNjZWVkZWQgPSBjbGlw
Ym9hcmQtPnJlYWREYXRhKAogICAgICAgICBzdGF0aWNfY2FzdDxXZWJDbGlwYm9hcmQ6OkJ1ZmZl
cj4oYnVmZmVyKSwgdHlwZSwgJnJlc3VsdERhdGEsICZyZXN1bHRNZXRhZGF0YSk7CiAgICAgaWYg
KHN1Y2NlZWRlZCkgewogICAgICAgICBkYXRhID0gcmVzdWx0RGF0YTsKQEAgLTI0MSw5ICsyNjIs
MTQgQEAgYm9vbCBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZERhdGEoUGFzdGVib2FyZFBy
aXZhdGU6OkNsaXBib2FyZEJ1ZmZlciBidWZmZXIKICAgICByZXR1cm4gc3VjY2VlZGVkOwogfQog
Ci1WZWN0b3I8U3RyaW5nPiBQbGF0Zm9ybUJyaWRnZTo6Y2xpcGJvYXJkUmVhZEZpbGVuYW1lcyhQ
YXN0ZWJvYXJkUHJpdmF0ZTo6Q2xpcGJvYXJkQnVmZmVyIGJ1ZmZlcikKK1ZlY3RvcjxTdHJpbmc+
IFBsYXRmb3JtQnJpZGdlOjpjbGlwYm9hcmRSZWFkRmlsZW5hbWVzKGNvbnN0IEZyYW1lKiBmcmFt
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IFBhc3RlYm9hcmRQcml2YXRlOjpDbGlwYm9hcmRCdWZmZXIgYnVmZmVyKQogewotICAgIFdlYlZl
Y3RvcjxXZWJTdHJpbmc+IHJlc3VsdCA9IHdlYktpdENsaWVudCgpLT5jbGlwYm9hcmQoKS0+cmVh
ZEZpbGVuYW1lcygKKyAgICBXZWJDbGlwYm9hcmQqIGNsaXBib2FyZCA9IGdldENsaXBib2FyZChm
cmFtZSk7CisgICAgaWYgKCFjbGlwYm9hcmQpCisgICAgICAgIHJldHVybiBWZWN0b3I8U3RyaW5n
PigpOworCisgICAgV2ViVmVjdG9yPFdlYlN0cmluZz4gcmVzdWx0ID0gY2xpcGJvYXJkLT5yZWFk
RmlsZW5hbWVzKAogICAgICAgICBzdGF0aWNfY2FzdDxXZWJDbGlwYm9hcmQ6OkJ1ZmZlcj4oYnVm
ZmVyKSk7CiAgICAgVmVjdG9yPFN0cmluZz4gY29udmVydGVkUmVzdWx0OwogICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgcmVzdWx0LnNpemUoKTsgKytpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vc3JjL1dlYkZyYW1lSW1wbC5jcHAKaW5kZXggMWJhZGUzODIxNTZiMWVjYTljYWQ3OTQxMWNm
NDIzMTEwODVjNGU5Zi4uZDJjMDZmZjk2NWJhOTNkNGM3ZDYwMjEyMWYzMWEyODgwYmY5MDMyZCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJGcmFtZUltcGwuY3BwCkBAIC0xOTYz
LDcgKzE5NjMsNyBAQCB2b2lkIFdlYkZyYW1lSW1wbDo6Y3JlYXRlRnJhbWVWaWV3KCkKICAgICAg
ICAgdmlldy0+c2V0UGFyZW50VmlzaWJsZSh0cnVlKTsKIH0KIAotV2ViRnJhbWVJbXBsKiBXZWJG
cmFtZUltcGw6OmZyb21GcmFtZShGcmFtZSogZnJhbWUpCitXZWJGcmFtZUltcGwqIFdlYkZyYW1l
SW1wbDo6ZnJvbUZyYW1lKGNvbnN0IEZyYW1lKiBmcmFtZSkKIHsKICAgICBpZiAoIWZyYW1lKQog
ICAgICAgICByZXR1cm4gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3Jj
L1dlYkZyYW1lSW1wbC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBs
LmgKaW5kZXggYjdhYzEwMDM5NTgyODEzNTFiN2RhZWVlOGJkZjI5OGM5MzkzZjJjZi4uZTdjOTJi
MGZmM2Y2NjI2Njg5NThmN2FjNGUyMDY4YjQyMjQxZjJlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViRnJhbWVJbXBsLmgKQEAgLTIwOSw3ICsyMDksNyBAQCBwdWJsaWM6CiAgICAg
dm9pZCBwYWludFdpdGhDb250ZXh0KFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4dCYsIGNvbnN0IFdl
YlJlY3QmKTsKICAgICB2b2lkIGNyZWF0ZUZyYW1lVmlldygpOwogCi0gICAgc3RhdGljIFdlYkZy
YW1lSW1wbCogZnJvbUZyYW1lKFdlYkNvcmU6OkZyYW1lKiBmcmFtZSk7CisgICAgc3RhdGljIFdl
YkZyYW1lSW1wbCogZnJvbUZyYW1lKGNvbnN0IFdlYkNvcmU6OkZyYW1lKik7CiAgICAgc3RhdGlj
IFdlYkZyYW1lSW1wbCogZnJvbUZyYW1lT3duZXJFbGVtZW50KFdlYkNvcmU6OkVsZW1lbnQqIGVs
ZW1lbnQpOwogCiAgICAgLy8gSWYgdGhlIGZyYW1lIGhvc3RzIGEgUGx1Z2luRG9jdW1lbnQsIHRo
aXMgbWV0aG9kIHJldHVybnMgdGhlIFdlYlBsdWdpbkNvbnRhaW5lckltcGwKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAppbmRleCAwYjIxZjVmNjNmMGEyMWRhYWIw
NjdkNzk1YmVjYTA5ODhjYjA1MjJlLi5mYWNjODJlYTQyNzM1MTBhNjkzZWRhNzQ1YzVmOTExYTM4
Y2I0OGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1w
bC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCkBA
IC0xNzYxLDcgKzE3NjEsNyBAQCBXZWJEcmFnT3BlcmF0aW9uIFdlYlZpZXdJbXBsOjpkcmFnVGFy
Z2V0RHJhZ0VudGVyTmV3KAogewogICAgIEFTU0VSVCghbV9jdXJyZW50RHJhZ0RhdGEuZ2V0KCkp
OwogCi0gICAgbV9jdXJyZW50RHJhZ0RhdGEgPSBDaHJvbWl1bURhdGFPYmplY3Q6OmNyZWF0ZVJl
YWRhYmxlKENsaXBib2FyZDo6RHJhZ0FuZERyb3ApOworICAgIG1fY3VycmVudERyYWdEYXRhID0g
Q2hyb21pdW1EYXRhT2JqZWN0OjpjcmVhdGVSZWFkYWJsZShtX3BhZ2UtPm1haW5GcmFtZSgpLCBD
bGlwYm9hcmQ6OkRyYWdBbmREcm9wKTsKICAgICBtX2RyYWdJZGVudGl0eSA9IGlkZW50aXR5Owog
ICAgIG1fb3BlcmF0aW9uc0FsbG93ZWQgPSBvcGVyYXRpb25zQWxsb3dlZDsKIAo=
</data>
<flag name="review"
          id="72861"
          type_id="1"
          status="+"
          setter="dimich"
    />
          </attachment>
      

    </bug>

</bugzilla>