<?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>76069</bug_id>
          
          <creation_ts>2012-01-11 09:32:56 -0800</creation_ts>
          <short_desc>[GTK] ATK text-caret-moved and text-selection-changed events not being emitted</short_desc>
          <delta_ts>2012-01-22 11:29:19 -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>Accessibility</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Linux</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>76267</dependson>
          <blocked>25531</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mario Sanchez Prada">mario</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>cfleizach</cc>
    
    <cc>dglazkov</cc>
    
    <cc>gustavo.noronha</cc>
    
    <cc>gustavo</cc>
    
    <cc>mrobinson</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>xan.lopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>533957</commentid>
    <comment_count>0</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-11 09:32:56 -0800</bug_when>
    <thetext>It seems that the fix for bug 72830 broke this as no &apos;text-caret-moved&apos; event is being emitted when the caret moves across the text since it was applied.

To reproduce this bug, just do this:

1. Build WKGTK from trunk
2. Launch a browser (e.g. Epiphany) linked against that fresh WK build
3. Enable caret browsing by pressing F7
4. Position the caret anywhere in the test
5. Launch the following script: https://bugs.webkit.org/attachment.cgi?id=115151 (provided for bug 72382)

Expected: you should see text-caret-moved events showing up in the terminal

Actual: Nothing happens

This is a very important bug we should fix asap, and make sure we provide a proper unit test for it to avoid breaking things again in the future.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534700</commentid>
    <comment_count>1</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-12 03:15:32 -0800</bug_when>
    <thetext>Updating the title to better reflect the issue (the caret is an special kind of selection)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534708</commentid>
    <comment_count>2</comment_count>
      <attachid>122203</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-12 03:21:56 -0800</bug_when>
    <thetext>Created attachment 122203
Patch proposal

The patch basically restores the original code in FrameSelectionGtk.cpp (not related actually to the fix for bug 72830) and adds more checks in testatk.c to ensure this never ever happen again (cross fingers!).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>534711</commentid>
    <comment_count>3</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-12 03:29:00 -0800</bug_when>
    <thetext>As the reviewer for path in Bug 72830, I think Martin might be interested in checking this one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535508</commentid>
    <comment_count>4</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-13 01:12:59 -0800</bug_when>
    <thetext>Committed r104905: &lt;http://trac.webkit.org/changeset/104905&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>535596</commentid>
    <comment_count>5</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-13 05:14:55 -0800</bug_when>
    <thetext>It seems this is not properly fixed yet. The patch caused trouble in the GTK 64 bit Debug bot, so I had to roll it out: https://bugs.webkit.org/show_bug.cgi?id=76267</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536553</commentid>
    <comment_count>6</comment_count>
      <attachid>122637</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-16 07:52:18 -0800</bug_when>
    <thetext>Created attachment 122637
Patch proposal

(In reply to comment #5)
&gt; It seems this is not properly fixed yet. The patch caused trouble in the GTK 64 bit Debug bot, so I had to roll it out: https://bugs.webkit.org/show_bug.cgi?id=76267

The attached new patch uses positionBeforeNode instead of firstPositionInNode (which should be equivalent in this case, while not making that ASSERT fail) and also takes special care on the fact that the reference object passed to objectFocusedAndCaretOffsetUnignored should either be the same object being actually considered (and returned) or an ascendant, but never a descendant of such actual object.

I tested it in a debug 64bit build and seems to pass both the unit and layout tests. That must mean something</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536580</commentid>
    <comment_count>7</comment_count>
      <attachid>122637</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-16 08:43:56 -0800</bug_when>
    <thetext>Comment on attachment 122637
Patch proposal

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

&gt; Source/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:2745
&gt; +    AccessibilityObject* actualObject = focusedObject;

Is the goal here to find the first unignored object among the focused object and its parents? actualObject is a bad name, I think. Consider something like firstUnignoredParentOfFocusedObject.

&gt; Source/WebCore/accessibility/gtk/AccessibilityObjectWrapperAtk.cpp:2761
&gt; +    // Make sure the reference object gets now updated if the focused
&gt; +    // object was pointing to it, so we don&apos;t have the reference
&gt; +    // object as a descendant of the actual object being considered.
&gt; +    if (focusedObject != referenceObject)
&gt; +        referenceObject = actualObject;

This comment seems wrong: Should it say &quot;Make sure the reference object is updated if the focused object was *different?&quot; Can&apos;t you do this check more directly by just checking if referenceObject is a descendant of focusedObject or actualObject?

You say in your comment &quot; so we don&apos;t have the reference object as a descendant of the actual object being considered,&quot; but this can still happen if focusedObject == referenceObject and focusedObject is ignored in the a11y tree.  I find this code, in general, pretty confusing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>536637</commentid>
    <comment_count>8</comment_count>
      <attachid>122657</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-16 09:55:14 -0800</bug_when>
    <thetext>Created attachment 122657
Patch proposal

New patch, trying to address the issues pointed out by Martin before.

This one introduces a couple of new -yet pretty simple- functions in AccessibilityObject: isDescendantOf() and contains() (in a similar way to those already present in Node).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539572</commentid>
    <comment_count>9</comment_count>
      <attachid>122657</attachid>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-01-20 09:20:13 -0800</bug_when>
    <thetext>Comment on attachment 122657
Patch proposal

This looks good to me. r=me if you can get Chris to look at the platform-independent changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539575</commentid>
    <comment_count>10</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-20 09:25:26 -0800</bug_when>
    <thetext>Adding Chris to CC to check if he agrees with the cross-platform changes (the 2 new functions in AccessibilityObject)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>539639</commentid>
    <comment_count>11</comment_count>
      <attachid>122657</attachid>
    <who name="chris fleizach">cfleizach</who>
    <bug_when>2012-01-20 11:14:18 -0800</bug_when>
    <thetext>Comment on attachment 122657
Patch proposal

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

otherwise seems ok

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1297
&gt; +bool AccessibilityObject::isDescendantOf(const AccessibilityObject* axObject) const

I would name this isDescendantOfObject

&gt; Source/WebCore/accessibility/AccessibilityObject.cpp:1309
&gt; +bool AccessibilityObject::contains(const AccessibilityObject* axObject) const

i would name this isAncestorOfObject</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540130</commentid>
    <comment_count>12</comment_count>
      <attachid>123447</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-21 06:33:12 -0800</bug_when>
    <thetext>Created attachment 123447
Patch proposal

Attaching a new patch incorporating Chris&apos;s suggestions</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540131</commentid>
    <comment_count>13</comment_count>
      <attachid>123447</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2012-01-21 06:42:05 -0800</bug_when>
    <thetext>Comment on attachment 123447
Patch proposal

Attachment 123447 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/11274049</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540132</commentid>
    <comment_count>14</comment_count>
      <attachid>123447</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-01-21 06:42:52 -0800</bug_when>
    <thetext>Comment on attachment 123447
Patch proposal

Attachment 123447 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/11258069</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540133</commentid>
    <comment_count>15</comment_count>
      <attachid>123447</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-21 07:00:52 -0800</bug_when>
    <thetext>Comment on attachment 123447
Patch proposal

Attachment 123447 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/11119082</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540134</commentid>
    <comment_count>16</comment_count>
      <attachid>123447</attachid>
    <who name="Collabora GTK+ EWS bot">gustavo.noronha</who>
    <bug_when>2012-01-21 07:07:45 -0800</bug_when>
    <thetext>Comment on attachment 123447
Patch proposal

Attachment 123447 did not pass gtk-ews (gtk):
Output: http://queues.webkit.org/results/11323012</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540135</commentid>
    <comment_count>17</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-21 07:18:26 -0800</bug_when>
    <thetext>Sorry, uploaded the wrong patch... will upload the right one soon</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540138</commentid>
    <comment_count>18</comment_count>
      <attachid>123448</attachid>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-21 07:50:43 -0800</bug_when>
    <thetext>Created attachment 123448
Patch proposal

Now the right one. Sorry again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>540298</commentid>
    <comment_count>19</comment_count>
    <who name="Mario Sanchez Prada">mario</who>
    <bug_when>2012-01-22 11:29:19 -0800</bug_when>
    <thetext>Committed r105590: &lt;http://trac.webkit.org/changeset/105590&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122203</attachid>
            <date>2012-01-12 03:21:56 -0800</date>
            <delta_ts>2012-01-16 07:52:18 -0800</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2012-01-12-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>10979</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSBhNGMyNWZmMTBhNjYxYmEzN2MzNWEzN2YzY2ZmNjMwYTNlZGI1OTM2IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBUaHUsIDEyIEphbiAyMDEyIDEyOjE3OjMzICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMi0wMS0xMiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdIEFUSyB0ZXh0LWNhcmV0LW1vdmVkIGFuZCB0ZXh0LXNlbGVjdGlvbi1j
aGFuZ2VkIGV2ZW50cyBub3QgYmVpbmcgZW1pdHRlZAogICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2OQoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KCiAgICAgICAgRml4IGJ1ZyBpbnRyb2R1Y2VkIHdpdGggcGF0Y2ggZm9yIEJ1ZyA3
MjgzMC4KCiAgICAgICAgKiBlZGl0aW5nL2d0ay9GcmFtZVNlbGVjdGlvbkd0ay5jcHA6CiAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0
aW9uQ2hhbmdlKToKICAgICAgICBQYXNzIHRoZSByaWdodCBhY2Nlc3NpYmlsaXR5IG9iamVjdCBh
c3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQKICAgICAgICBzZWxlY3Rpb24gdG8gb2JqZWN0Rm9j
dXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkLgoKMjAxMi0wMS0xMiAgTWFyaW8gU2FuY2hleiBQ
cmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CgogICAgICAgIFtHVEtdIEFUSyB0ZXh0LWNhcmV0
LW1vdmVkIGFuZCB0ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkIGV2ZW50cyBub3QgYmVpbmcgZW1pdHRl
ZAogICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2OQoK
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KCiAgICAgICAgVXBkYXRlIGNhcmV0
IGJyb3dzaW5nIHJlbGF0ZWQgdW5pdCB0ZXN0cyB0byBjaGVjayBlbWlzc2lvbnMgb2YKICAgICAg
ICAndGV4dC1jYXJldC1tb3ZlZCcgYW5kICd0ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkJyBzaWduYWxz
LgoKICAgICAgICAqIHRlc3RzL3Rlc3RhdGsuYzoKICAgICAgICAodGV4dENhcmV0TW92ZWRDYWxs
YmFjayk6IE5ldyBjYWxsYmFjayBmb3IgJ3RleHQtY2FyZXQtbW92ZWQnLgogICAgICAgICh0ZXN0
V2Via2l0QXRrQ2FyZXRPZmZzZXRzKTogQ2hlY2sgZW1pc3Npb25zIG9mICd0ZXh0LWNhcmV0LW1v
dmVkJy4KICAgICAgICAodGV4dFNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjayk6IE5ldyBjYWxsYmFj
ayBmb3IgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZWQnLgogICAgICAgICh0ZXN0V2Via2l0QXRrVGV4
dFNlbGVjdGlvbnMpOiBDaGVjayBlbWlzc2lvbnMgb2YgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZWQn
LgotLS0KIFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyAgICAgICAgICAgICAgICAgICAgICAgICB8
ICAgMTQgKysrKysKIFNvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0ZyYW1lU2VsZWN0aW9uR3Rr
LmNwcCB8ICAgIDYgKystCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAgICAgICAg
ICAgICAgICAgfCAgIDE2ICsrKysrKwogU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdGF0ay5j
ICAgICAgICAgICAgICAgIHwgICA1NiArKysrKysrKysrKysrKysrKysrKysrCiA0IGZpbGVzIGNo
YW5nZWQsIDkwIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDQz
NTlmNjUuLmUyZjQxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0wMS0xMiAg
TWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CisKKyAgICAgICAgW0dU
S10gQVRLIHRleHQtY2FyZXQtbW92ZWQgYW5kIHRleHQtc2VsZWN0aW9uLWNoYW5nZWQgZXZlbnRz
IG5vdCBiZWluZyBlbWl0dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD03NjA2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIEZpeCBidWcgaW50cm9kdWNlZCB3aXRoIHBhdGNoIGZvciBCdWcgNzI4MzAuCisK
KyAgICAgICAgKiBlZGl0aW5nL2d0ay9GcmFtZVNlbGVjdGlvbkd0ay5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVjdGlvbkNo
YW5nZSk6CisgICAgICAgIFBhc3MgdGhlIHJpZ2h0IGFjY2Vzc2liaWxpdHkgb2JqZWN0IGFzc29j
aWF0ZWQgd2l0aCB0aGUgY3VycmVudAorICAgICAgICBzZWxlY3Rpb24gdG8gb2JqZWN0Rm9jdXNl
ZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkLgorCiAyMDEyLTAxLTEwICBCcmFkeSBFaWRzb24gIDxi
ZWlkc29uQGFwcGxlLmNvbT4KIAogICAgICAgICA8cmRhcjovL3Byb2JsZW0vOTMyODY4ND4gYW5k
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjc2NApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRnJhbWVTZWxlY3Rpb25HdGsuY3BwIGIvU291
cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRnJhbWVTZWxlY3Rpb25HdGsuY3BwCmluZGV4IGE2Mzc4
NzAuLjM4NWIxZTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0ZyYW1l
U2VsZWN0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9GcmFtZVNl
bGVjdGlvbkd0ay5jcHAKQEAgLTg0LDggKzg0LDEwIEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246Om5v
dGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoKQogICAgIGlmICghbV9zZWxlY3Rp
b24uc3RhcnQoKS5pc05vdE51bGwoKSB8fCAhbV9zZWxlY3Rpb24uZW5kKCkuaXNOb3ROdWxsKCkp
CiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIExvb2sgZm9yIHRoZSBhY2Nlc3NpYmlsaXR5IG9i
amVjdCBmb3IgdGhlIEZyYW1lLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxp
dHlPYmplY3QgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJvb3RPYmpl
Y3RGb3JGcmFtZShtX2ZyYW1lKTsKKyAgICBSZW5kZXJPYmplY3QqIGZvY3VzZWROb2RlID0gbV9z
ZWxlY3Rpb24uZW5kKCkuZGVwcmVjYXRlZE5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShmb2N1c2VkTm9kZSk7CisKKyAgICAvLyBOZWVk
IHRvIGNoZWNrIHRoaXMgYXMgZ2V0T3JDcmVhdGUgY291bGQgcmV0dXJuIDAsCiAgICAgaWYgKCFh
Y2Nlc3NpYmlsaXR5T2JqZWN0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRl
eCAyYzUwYTFiLi40NDQwYjFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTItMDEtMTIgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIEFUSyB0ZXh0LWNhcmV0LW1vdmVkIGFuZCB0ZXh0LXNlbGVjdGlvbi1jaGFu
Z2VkIGV2ZW50cyBub3QgYmVpbmcgZW1pdHRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FyZXQgYnJvd3NpbmcgcmVsYXRlZCB1bml0IHRl
c3RzIHRvIGNoZWNrIGVtaXNzaW9ucyBvZgorICAgICAgICAndGV4dC1jYXJldC1tb3ZlZCcgYW5k
ICd0ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkJyBzaWduYWxzLgorCisgICAgICAgICogdGVzdHMvdGVz
dGF0ay5jOgorICAgICAgICAodGV4dENhcmV0TW92ZWRDYWxsYmFjayk6IE5ldyBjYWxsYmFjayBm
b3IgJ3RleHQtY2FyZXQtbW92ZWQnLgorICAgICAgICAodGVzdFdlYmtpdEF0a0NhcmV0T2Zmc2V0
cyk6IENoZWNrIGVtaXNzaW9ucyBvZiAndGV4dC1jYXJldC1tb3ZlZCcuCisgICAgICAgICh0ZXh0
U2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKTogTmV3IGNhbGxiYWNrIGZvciAndGV4dC1zZWxlY3Rp
b24tY2hhbmdlZCcuCisgICAgICAgICh0ZXN0V2Via2l0QXRrVGV4dFNlbGVjdGlvbnMpOiBDaGVj
ayBlbWlzc2lvbnMgb2YgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZWQnLgorCiAyMDEyLTAxLTEwICBN
YXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBBWDog
c3VwcG9ydCBoZWxwVGV4dCgpIGluIER1bXBSZW5kZXJUcmVlCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0
YXRrLmMKaW5kZXggZTg1MmRlZS4uM2M4YjY3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9n
dGsvdGVzdHMvdGVzdGF0ay5jCisrKyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsu
YwpAQCAtMjU0LDYgKzI1NCwxNyBAQCBzdGF0aWMgdm9pZCBydW5HZXRUZXh0VGVzdHMoQXRrVGV4
dCogdGV4dE9iamVjdCkKICAgICB9CiB9CiAKK3N0YXRpYyBnY2hhciogdGV4dENhcmV0TW92ZWRS
ZXN1bHQgPSAwOworCitzdGF0aWMgdm9pZCB0ZXh0Q2FyZXRNb3ZlZENhbGxiYWNrKEF0a1RleHQq
IHRleHQsIGdpbnQgcG9zLCBncG9pbnRlciBkYXRhKQoreworICAgIGdfYXNzZXJ0KEFUS19JU19U
RVhUKHRleHQpKTsKKworICAgIGdfZnJlZSh0ZXh0Q2FyZXRNb3ZlZFJlc3VsdCk7CisgICAgQXRr
Um9sZSByb2xlID0gYXRrX29iamVjdF9nZXRfcm9sZShBVEtfT0JKRUNUKHRleHQpKTsKKyAgICB0
ZXh0Q2FyZXRNb3ZlZFJlc3VsdCA9IGdfc3RyZHVwX3ByaW50ZigifCVzfCVkfCIsIGF0a19yb2xl
X2dldF9uYW1lKHJvbGUpLCBwb3MpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrQ2Fy
ZXRPZmZzZXRzKCkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9W
SUVXKHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CkBAIC0yNjcsNiArMjc4LDggQEAgc3RhdGljIHZv
aWQgdGVzdFdlYmtpdEF0a0NhcmV0T2Zmc2V0cygpCiAKICAgICBBdGtPYmplY3QqIGhlYWRlciA9
IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAwKTsKICAgICBnX2Fzc2Vy
dChBVEtfSVNfVEVYVChoZWFkZXIpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGhlYWRlciwgInRl
eHQtY2FyZXQtbW92ZWQiLCBHX0NBTExCQUNLKHRleHRDYXJldE1vdmVkQ2FsbGJhY2spLCAwKTsK
KwogICAgIGdjaGFyKiB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQoaGVhZGVyKSwg
MCwgLTEpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIkEgdGV4dCBoZWFkZXIiKTsK
ICAgICBnX2ZyZWUgKHRleHQpOwpAQCAtMjc2LDkgKzI4OSwxMiBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrQ2FyZXRPZmZzZXRzKCkKICAgICBnX2Fzc2VydF9jbXBpbnQocmVzdWx0LCA9PSwg
VFJVRSk7CiAgICAgZ2ludCBvZmZzZXQgPSBhdGtfdGV4dF9nZXRfY2FyZXRfb2Zmc2V0KEFUS19U
RVhUKGhlYWRlcikpOwogICAgIGdfYXNzZXJ0X2NtcGludChvZmZzZXQsID09LCA1KTsKKyAgICBn
X2Fzc2VydF9jbXBzdHIodGV4dENhcmV0TW92ZWRSZXN1bHQsID09LCAifGhlYWRpbmd8NXwiKTsK
IAogICAgIEF0a09iamVjdCogcGFyYWdyYXBoID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9j
aGlsZChvYmplY3QsIDEpOwogICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFwaCkpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QocGFyYWdyYXBoLCAidGV4dC1jYXJldC1tb3ZlZCIsIEdfQ0FM
TEJBQ0sodGV4dENhcmV0TW92ZWRDYWxsYmFjayksIDApOworCiAgICAgdGV4dCA9IGF0a190ZXh0
X2dldF90ZXh0KEFUS19URVhUKHBhcmFncmFwaCksIDAsIC0xKTsKICAgICBnX2Fzc2VydF9jbXBz
dHIodGV4dCwgPT0sICJBIHBhcmFncmFwaCB3aXRoIGEgbGluayBpbiB0aGUgbWlkZGxlIik7CiAg
ICAgZ19mcmVlICh0ZXh0KTsKQEAgLTI4OCwxNiArMzA0LDMyIEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJraXRBdGtDYXJldE9mZnNldHMoKQogICAgIGdfYXNzZXJ0X2NtcGludChyZXN1bHQsID09LCBU
UlVFKTsKICAgICBvZmZzZXQgPSBhdGtfdGV4dF9nZXRfY2FyZXRfb2Zmc2V0KEFUS19URVhUKHBh
cmFncmFwaCkpOwogICAgIGdfYXNzZXJ0X2NtcGludChvZmZzZXQsID09LCA1KTsKKyAgICBnX2Fz
c2VydF9jbXBzdHIodGV4dENhcmV0TW92ZWRSZXN1bHQsID09LCAifHBhcmFncmFwaHw1fCIpOwog
CiAgICAgcmVzdWx0ID0gYXRrX3RleHRfc2V0X2NhcmV0X29mZnNldChBVEtfVEVYVChwYXJhZ3Jh
cGgpLCAyMCk7CiAgICAgZ19hc3NlcnRfY21waW50KHJlc3VsdCwgPT0sIFRSVUUpOwogICAgIG9m
ZnNldCA9IGF0a190ZXh0X2dldF9jYXJldF9vZmZzZXQoQVRLX1RFWFQocGFyYWdyYXBoKSk7CiAg
ICAgZ19hc3NlcnRfY21waW50KG9mZnNldCwgPT0sIDIwKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIo
dGV4dENhcmV0TW92ZWRSZXN1bHQsID09LCAifHBhcmFncmFwaHwyMHwiKTsKIAogICAgIHJlc3Vs
dCA9IGF0a190ZXh0X3NldF9jYXJldF9vZmZzZXQoQVRLX1RFWFQocGFyYWdyYXBoKSwgMzApOwog
ICAgIGdfYXNzZXJ0X2NtcGludChyZXN1bHQsID09LCBUUlVFKTsKICAgICBvZmZzZXQgPSBhdGtf
dGV4dF9nZXRfY2FyZXRfb2Zmc2V0KEFUS19URVhUKHBhcmFncmFwaCkpOwogICAgIGdfYXNzZXJ0
X2NtcGludChvZmZzZXQsID09LCAzMCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHRDYXJldE1v
dmVkUmVzdWx0LCA9PSwgInxwYXJhZ3JhcGh8MzB8Iik7CisKKyAgICBBdGtPYmplY3QqIGxpbmsg
PSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKHBhcmFncmFwaCwgMCk7CisgICAgZ19h
c3NlcnQoQVRLX0lTX1RFWFQobGluaykpOworICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dChB
VEtfVEVYVChsaW5rKSwgMCwgLTEpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIndp
dGggYSBsaW5rIik7CisgICAgZ19mcmVlICh0ZXh0KTsKKworICAgIHJlc3VsdCA9IGF0a190ZXh0
X3NldF9jYXJldF9vZmZzZXQoQVRLX1RFWFQobGluayksIDUpOworICAgIGdfYXNzZXJ0X2NtcGlu
dChyZXN1bHQsID09LCBUUlVFKTsKKyAgICBvZmZzZXQgPSBhdGtfdGV4dF9nZXRfY2FyZXRfb2Zm
c2V0KEFUS19URVhUKGxpbmspKTsKKyAgICBnX2Fzc2VydF9jbXBpbnQob2Zmc2V0LCA9PSwgNSk7
CisgICAgLyogUG9zaXRpb25zIGluc2lkZSBsaW5rcyBhcmUgcmVwb3J0ZWQgcmVsYXRpdmUgdG8g
dGhlIHBhcmFncmFwaC4gKi8KKyAgICBnX2Fzc2VydF9jbXBzdHIodGV4dENhcmV0TW92ZWRSZXN1
bHQsID09LCAifHBhcmFncmFwaHwxN3wiKTsKIAogICAgIEF0a09iamVjdCogbGlzdCA9IGF0a19v
YmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAyKTsKICAgICBnX2Fzc2VydChBVEtf
T0JKRUNUKGxpc3QpKTsKQEAgLTM1NSw4ICszODcsMTEgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtp
dEF0a0NhcmV0T2Zmc2V0cygpCiAgICAgb2Zmc2V0ID0gYXRrX3RleHRfZ2V0X2NhcmV0X29mZnNl
dChBVEtfVEVYVCh0ZXh0RW50cnkpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQob2Zmc2V0LCA9PSwg
NSk7CiAKKyAgICBnX2ZyZWUodGV4dENhcmV0TW92ZWRSZXN1bHQpOworCiAgICAgZ19vYmplY3Rf
dW5yZWYoaGVhZGVyKTsKICAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgpOworICAgIGdfb2Jq
ZWN0X3VucmVmKGxpbmspOwogICAgIGdfb2JqZWN0X3VucmVmKGxpc3QpOwogICAgIGdfb2JqZWN0
X3VucmVmKGxpc3RJdGVtKTsKICAgICBnX29iamVjdF91bnJlZihwYW5lbCk7CkBAIC0xMTA5LDYg
KzExNDQsMjAgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a1RleHRBdHRyaWJ1dGVzKCkKICAg
ICBhdGtfYXR0cmlidXRlX3NldF9mcmVlKHNldDMpOwogfQogCitzdGF0aWMgZ2NoYXIqIHRleHRT
ZWxlY3Rpb25DaGFuZ2VkUmVzdWx0ID0gMDsKKworc3RhdGljIHZvaWQgdGV4dFNlbGVjdGlvbkNo
YW5nZWRDYWxsYmFjayhBdGtUZXh0KiB0ZXh0LCBncG9pbnRlciBkYXRhKQoreworICAgIGdfYXNz
ZXJ0KEFUS19JU19URVhUKHRleHQpKTsKKworICAgIGdfZnJlZSh0ZXh0U2VsZWN0aW9uQ2hhbmdl
ZFJlc3VsdCk7CisgICAgQXRrUm9sZSByb2xlID0gYXRrX29iamVjdF9nZXRfcm9sZShBVEtfT0JK
RUNUKHRleHQpKTsKKyAgICBpbnQgc3RhcnRPZmZzZXQgPSAwOworICAgIGludCBlbmRPZmZzZXQg
PSAwOworICAgIGF0a190ZXh0X2dldF9zZWxlY3Rpb24oQVRLX1RFWFQodGV4dCksIDAsICZzdGFy
dE9mZnNldCwgJmVuZE9mZnNldCk7CisgICAgdGV4dFNlbGVjdGlvbkNoYW5nZWRSZXN1bHQgPSBn
X3N0cmR1cF9wcmludGYoInwlc3wlZHwlZHwiLCBhdGtfcm9sZV9nZXRfbmFtZShyb2xlKSwgc3Rh
cnRPZmZzZXQsIGVuZE9mZnNldCk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtUZXh0
U2VsZWN0aW9ucygpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJf
VklFVyh3ZWJraXRfd2ViX3ZpZXdfbmV3KCkpOwpAQCAtMTEyMiw5ICsxMTcxLDExIEBAIHN0YXRp
YyB2b2lkIHRlc3RXZWJraXRBdGtUZXh0U2VsZWN0aW9ucygpCiAKICAgICBBdGtUZXh0KiBwYXJh
Z3JhcGgxID0gQVRLX1RFWFQoYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3Qs
IDApKTsKICAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChwYXJhZ3JhcGgxKSk7CisgICAgZ19zaWdu
YWxfY29ubmVjdChwYXJhZ3JhcGgxLCAidGV4dC1zZWxlY3Rpb24tY2hhbmdlZCIsIEdfQ0FMTEJB
Q0sodGV4dFNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjayksIDApOwogCiAgICAgQXRrVGV4dCogcGFy
YWdyYXBoMiA9IEFUS19URVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0
LCAxKSk7CiAgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoMikpOworICAgIGdfc2ln
bmFsX2Nvbm5lY3QocGFyYWdyYXBoMiwgInRleHQtc2VsZWN0aW9uLWNoYW5nZWQiLCBHX0NBTExC
QUNLKHRleHRTZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2spLCAwKTsKIAogICAgIEF0a1RleHQqIGxp
bmsgPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKEFUS19PQkpFQ1Qo
cGFyYWdyYXBoMiksIDApKTsKICAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChsaW5rKSk7CkBAIC0x
MTYwLDExICsxMjExLDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtUZXh0U2VsZWN0aW9u
cygpCiAgICAgcmVzdWx0ID0gYXRrX3RleHRfc2V0X3NlbGVjdGlvbihwYXJhZ3JhcGgxLCAwLCA1
LCAyNSk7CiAgICAgZ19hc3NlcnQocmVzdWx0KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoYXRrX3Rl
eHRfZ2V0X25fc2VsZWN0aW9ucyhwYXJhZ3JhcGgxKSwgPT0sIDEpOworICAgIGdfYXNzZXJ0X2Nt
cHN0cih0ZXh0U2VsZWN0aW9uQ2hhbmdlZFJlc3VsdCwgPT0sICJ8cGFyYWdyYXBofDV8MjV8Iik7
CiAgICAgc2VsZWN0ZWRUZXh0ID0gYXRrX3RleHRfZ2V0X3NlbGVjdGlvbihwYXJhZ3JhcGgxLCAw
LCAmc3RhcnRPZmZzZXQsICZlbmRPZmZzZXQpOwogICAgIGdfYXNzZXJ0X2NtcGludChzdGFydE9m
ZnNldCwgPT0sIDUpOwogICAgIGdfYXNzZXJ0X2NtcGludChlbmRPZmZzZXQsID09LCAyNSk7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKHNlbGVjdGVkVGV4dCwgPT0sICJhZ3JhcGggd2l0aCBwbGFpbiB0
ZSIpOwogICAgIGdfZnJlZSAoc2VsZWN0ZWRUZXh0KTsKKwogICAgIC8qIFRyeSByZW1vdmluZyB0
aGUgc2VsZWN0aW9uIGZyb20gb3RoZXIgQXRrVGV4dCBvYmplY3QgKHNob3VsZCBmYWlsKS4gKi8K
ICAgICByZXN1bHQgPSBhdGtfdGV4dF9yZW1vdmVfc2VsZWN0aW9uKHBhcmFncmFwaDIsIDApOwog
ICAgIGdfYXNzZXJ0KCFyZXN1bHQpOwpAQCAtMTIwNyw2ICsxMjYwLDcgQEAgc3RhdGljIHZvaWQg
dGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKCkKICAgICByZXN1bHQgPSBhdGtfdGV4dF9zZXRf
c2VsZWN0aW9uKHBhcmFncmFwaDIsIDAsIDI3LCAzNyk7CiAgICAgZ19hc3NlcnQocmVzdWx0KTsK
ICAgICBnX2Fzc2VydF9jbXBpbnQoYXRrX3RleHRfZ2V0X25fc2VsZWN0aW9ucyhwYXJhZ3JhcGgy
KSwgPT0sIDEpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0U2VsZWN0aW9uQ2hhbmdlZFJlc3Vs
dCwgPT0sICJ8cGFyYWdyYXBofDI3fDM3fCIpOwogICAgIHNlbGVjdGVkVGV4dCA9IGF0a190ZXh0
X2dldF9zZWxlY3Rpb24ocGFyYWdyYXBoMiwgMCwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0KTsK
ICAgICBnX2Fzc2VydF9jbXBpbnQoc3RhcnRPZmZzZXQsID09LCAyNyk7CiAgICAgZ19hc3NlcnRf
Y21waW50KGVuZE9mZnNldCwgPT0sIDM3KTsKQEAgLTEyNTYsNiArMTMxMCw4IEBAIHN0YXRpYyB2
b2lkIHRlc3RXZWJraXRBdGtUZXh0U2VsZWN0aW9ucygpCiAgICAgZ19hc3NlcnRfY21wc3RyKHNl
bGVjdGVkVGV4dCwgPT0sICJBIGxpc3QiKTsKICAgICBnX2ZyZWUgKHNlbGVjdGVkVGV4dCk7CiAK
KyAgICBnX2ZyZWUodGV4dFNlbGVjdGlvbkNoYW5nZWRSZXN1bHQpOworCiAgICAgZ19vYmplY3Rf
dW5yZWYocGFyYWdyYXBoMSk7CiAgICAgZ19vYmplY3RfdW5yZWYocGFyYWdyYXBoMik7CiAgICAg
Z19vYmplY3RfdW5yZWYobGlzdCk7Ci0tIAoxLjcuNy40Cgo=
</data>
<flag name="review"
          id="122939"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122637</attachid>
            <date>2012-01-16 07:52:18 -0800</date>
            <delta_ts>2012-01-16 09:55:14 -0800</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2012-01-16-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>15400</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSA3YThkM2NjZGNlMzJjNGJiZmQzNTVlZDE5YTZjODI3NzM3NWU0ODc3IE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBNb24sIDE2IEphbiAyMDEyIDE2OjQ4OjExICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMi0wMS0xNiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdIEFUSyB0ZXh0LWNhcmV0LW1vdmVkIGFuZCB0ZXh0LXNlbGVjdGlvbi1j
aGFuZ2VkIGV2ZW50cyBub3QgYmVpbmcgZW1pdHRlZAogICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2OQoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KCiAgICAgICAgRml4IGJ1ZyBpbnRyb2R1Y2VkIHdpdGggcGF0Y2ggZm9yIEJ1ZyA3
MjgzMC4KCiAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckF0ay5jcHA6CiAgICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NhcmV0X29m
ZnNldCk6IE1ha2Ugc3VyZSB0byBwYXNzIHRoZQogICAgICAgIHJpZ2h0IHJlZmVyZW5jZSBvYmpl
Y3QgdG8gb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkLgogICAgICAgIChvYmpl
Y3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQpOiBVc2UgcG9zaXRpb25CZWZvcmVOb2Rl
CiAgICAgICAgaW5zdGVhZCBvZiBmaXJzdFBvc2l0aW9uSW5Ob2RlIGZvciBjYWxjdWxhdGluZyB0
aGUgYmVnaW5pbmcgb2YgdGhlCiAgICAgICAgcmFuZ2UgdXNlZCB0byBjYWxjdWxhdGUgdGhlIG9m
ZnNldHMuIEVuc3VyZSB0aGF0IHRoZSByZWZlcmVuY2UKICAgICAgICBvYmplY3QgaXMgbmV2ZXIg
YSBkZXNjZW5kYW50IG9mIHRoZSBhY3R1YWwgb2JqZWN0IGJlaW5nIHJldHVybmVkLgoKICAgICAg
ICAqIGVkaXRpbmcvZ3RrL0ZyYW1lU2VsZWN0aW9uR3RrLmNwcDoKICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UpOgog
ICAgICAgIFBhc3MgdGhlIHJpZ2h0IGFjY2Vzc2liaWxpdHkgb2JqZWN0IGFzc29jaWF0ZWQgd2l0
aCB0aGUgY3VycmVudAogICAgICAgIHNlbGVjdGlvbiB0byBvYmplY3RGb2N1c2VkQW5kQ2FyZXRP
ZmZzZXRVbmlnbm9yZWQuCgoyMDEyLTAxLTE2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNo
ZXpAaWdhbGlhLmNvbT4KCiAgICAgICAgW0dUS10gQVRLIHRleHQtY2FyZXQtbW92ZWQgYW5kIHRl
eHQtc2VsZWN0aW9uLWNoYW5nZWQgZXZlbnRzIG5vdCBiZWluZyBlbWl0dGVkCiAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDY5CgogICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgoKICAgICAgICBVcGRhdGUgY2FyZXQgYnJvd3NpbmcgcmVs
YXRlZCB1bml0IHRlc3RzIHRvIGNoZWNrIGVtaXNzaW9ucyBvZgogICAgICAgICd0ZXh0LWNhcmV0
LW1vdmVkJyBhbmQgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZWQnIHNpZ25hbHMuCgogICAgICAgICog
dGVzdHMvdGVzdGF0ay5jOgogICAgICAgICh0ZXh0Q2FyZXRNb3ZlZENhbGxiYWNrKTogTmV3IGNh
bGxiYWNrIGZvciAndGV4dC1jYXJldC1tb3ZlZCcuCiAgICAgICAgKHRlc3RXZWJraXRBdGtDYXJl
dE9mZnNldHMpOiBDaGVjayBlbWlzc2lvbnMgb2YgJ3RleHQtY2FyZXQtbW92ZWQnLgogICAgICAg
ICh0ZXh0U2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKTogTmV3IGNhbGxiYWNrIGZvciAndGV4dC1z
ZWxlY3Rpb24tY2hhbmdlZCcuCiAgICAgICAgKHRlc3RXZWJraXRBdGtUZXh0U2VsZWN0aW9ucyk6
IENoZWNrIGVtaXNzaW9ucyBvZiAndGV4dC1zZWxlY3Rpb24tY2hhbmdlZCcuCi0tLQogU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIyICsrKysr
KysrCiAuLi4vZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcCAgICAgICAgICB8
ICAgMzUgKysrKysrKystLS0tCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9GcmFtZVNlbGVj
dGlvbkd0ay5jcHAgICB8ICAgIDYgKystCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAg
ICAgICAgICAgICAgICAgICAgICB8ICAgMTYgKysrKysrCiBTb3VyY2UvV2ViS2l0L2d0ay90ZXN0
cy90ZXN0YXRrLmMgICAgICAgICAgICAgICAgICB8ICAgNTYgKysrKysrKysrKysrKysrKysrKysK
IDUgZmlsZXMgY2hhbmdlZCwgMTIyIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCAxNmRkZWQ3Li45YWZhYzQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAK
KzIwMTItMDEtMTYgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgor
CisgICAgICAgIFtHVEtdIEFUSyB0ZXh0LWNhcmV0LW1vdmVkIGFuZCB0ZXh0LXNlbGVjdGlvbi1j
aGFuZ2VkIGV2ZW50cyBub3QgYmVpbmcgZW1pdHRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBGaXggYnVnIGludHJvZHVjZWQgd2l0aCBwYXRjaCBmb3Ig
QnVnIDcyODMwLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJBdGsuY3BwOgorICAgICAgICAod2Via2l0X2FjY2Vzc2libGVfdGV4dF9nZXRf
Y2FyZXRfb2Zmc2V0KTogTWFrZSBzdXJlIHRvIHBhc3MgdGhlCisgICAgICAgIHJpZ2h0IHJlZmVy
ZW5jZSBvYmplY3QgdG8gb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkLgorICAg
ICAgICAob2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKTogVXNlIHBvc2l0aW9u
QmVmb3JlTm9kZQorICAgICAgICBpbnN0ZWFkIG9mIGZpcnN0UG9zaXRpb25Jbk5vZGUgZm9yIGNh
bGN1bGF0aW5nIHRoZSBiZWdpbmluZyBvZiB0aGUKKyAgICAgICAgcmFuZ2UgdXNlZCB0byBjYWxj
dWxhdGUgdGhlIG9mZnNldHMuIEVuc3VyZSB0aGF0IHRoZSByZWZlcmVuY2UKKyAgICAgICAgb2Jq
ZWN0IGlzIG5ldmVyIGEgZGVzY2VuZGFudCBvZiB0aGUgYWN0dWFsIG9iamVjdCBiZWluZyByZXR1
cm5lZC4KKworICAgICAgICAqIGVkaXRpbmcvZ3RrL0ZyYW1lU2VsZWN0aW9uR3RrLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2Vs
ZWN0aW9uQ2hhbmdlKToKKyAgICAgICAgUGFzcyB0aGUgcmlnaHQgYWNjZXNzaWJpbGl0eSBvYmpl
Y3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50CisgICAgICAgIHNlbGVjdGlvbiB0byBvYmpl
Y3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQuCisKIDIwMTItMDEtMTYgIENhcmxvcyBH
YXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQu
IEZpeCBtYWtlIGRpc3RjaGVjay4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2li
aWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcApp
bmRleCBlYWRhY2FmLi44NGExNGIyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsu
Y3BwCkBAIC0xMzQ1LDYgKzEzNDUsMTIgQEAgc3RhdGljIGdpbnQgd2Via2l0X2FjY2Vzc2libGVf
dGV4dF9nZXRfY2FyZXRfb2Zmc2V0KEF0a1RleHQqIHRleHQpCiAgICAgaWYgKCFjb3JlT2JqZWN0
LT5pc0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKKyAg
ICAvLyBXZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBwYXNzIGEgdmFsaWQgb2JqZWN0IGFzIHJlZmVy
ZW5jZS4KKyAgICBpZiAoY29yZU9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQorICAg
ICAgICBjb3JlT2JqZWN0ID0gY29yZU9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Cisg
ICAgaWYgKCFjb3JlT2JqZWN0KQorICAgICAgICByZXR1cm4gMDsKKwogICAgIGludCBvZmZzZXQ7
CiAgICAgaWYgKCFvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQoY29yZU9iamVj
dCwgb2Zmc2V0KSkKICAgICAgICAgcmV0dXJuIDA7CkBAIC0yNzM2LDE5ICsyNzQyLDI2IEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiByCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgLy8gTG9vayBm
b3IgdGhlIGFjdHVhbCAobm90IGlnbm9yaW5nIGFjY2Vzc2liaWxpdHkpIHNlbGVjdGVkIG9iamVj
dC4KLSAgICBpZiAoZm9jdXNlZE9iamVjdC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQotICAg
ICAgICBmb2N1c2VkT2JqZWN0ID0gZm9jdXNlZE9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVk
KCk7Ci0gICAgaWYgKCFmb2N1c2VkT2JqZWN0KQorICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFj
dHVhbE9iamVjdCA9IGZvY3VzZWRPYmplY3Q7CisgICAgaWYgKGFjdHVhbE9iamVjdC0+YWNjZXNz
aWJpbGl0eUlzSWdub3JlZCgpKQorICAgICAgICBhY3R1YWxPYmplY3QgPSBhY3R1YWxPYmplY3Qt
PnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGlmICghYWN0dWFsT2JqZWN0KQogICAgICAg
ICByZXR1cm4gMDsKIAogICAgIC8vIERvbid0IGlnbm9yZSBsaW5rcyBpZiB0aGUgb2Zmc2V0IGlz
IGJlaW5nIHJlcXVlc3RlZCBmb3IgYSBsaW5rLgotICAgIGlmICghcmVmZXJlbmNlT2JqZWN0LT5p
c0xpbmsoKSAmJiBmb2N1c2VkT2JqZWN0LT5pc0xpbmsoKSkKLSAgICAgICAgZm9jdXNlZE9iamVj
dCA9IGZvY3VzZWRPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgIGlmICghZm9j
dXNlZE9iamVjdCkKKyAgICBpZiAoIXJlZmVyZW5jZU9iamVjdC0+aXNMaW5rKCkgJiYgYWN0dWFs
T2JqZWN0LT5pc0xpbmsoKSkKKyAgICAgICAgYWN0dWFsT2JqZWN0ID0gYWN0dWFsT2JqZWN0LT5w
YXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBpZiAoIWFjdHVhbE9iamVjdCkKICAgICAgICAg
cmV0dXJuIDA7CiAKKyAgICAvLyBNYWtlIHN1cmUgdGhlIHJlZmVyZW5jZSBvYmplY3QgZ2V0cyBu
b3cgdXBkYXRlZCBpZiB0aGUgZm9jdXNlZAorICAgIC8vIG9iamVjdCB3YXMgcG9pbnRpbmcgdG8g
aXQsIHNvIHdlIGRvbid0IGhhdmUgdGhlIHJlZmVyZW5jZQorICAgIC8vIG9iamVjdCBhcyBhIGRl
c2NlbmRhbnQgb2YgdGhlIGFjdHVhbCBvYmplY3QgYmVpbmcgY29uc2lkZXJlZC4KKyAgICBpZiAo
Zm9jdXNlZE9iamVjdCAhPSByZWZlcmVuY2VPYmplY3QpCisgICAgICAgIHJlZmVyZW5jZU9iamVj
dCA9IGFjdHVhbE9iamVjdDsKKwogICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IDA7Ci0gICAgaWYgKGZv
Y3VzZWRPYmplY3QgIT0gcmVmZXJlbmNlT2JqZWN0IHx8IGZvY3VzZWRPYmplY3QtPmlzVGV4dENv
bnRyb2woKSkgeworICAgIGlmIChhY3R1YWxPYmplY3QgIT0gcmVmZXJlbmNlT2JqZWN0IHx8IGFj
dHVhbE9iamVjdC0+aXNUZXh0Q29udHJvbCgpKSB7CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXNl
IHRoZSBmaXJzdCBjaGlsZCdzIG5vZGUgb2YgdGhlIHJlZmVyZW5jZQogICAgICAgICAvLyBvYmpl
Y3QgYXMgdGhlIHN0YXJ0IHBvaW50IHRvIGNhbGN1bGF0ZSB0aGUgY2FyZXQgb2Zmc2V0CiAgICAg
ICAgIC8vIGJlY2F1c2Ugd2Ugd2FudCBpdCB0byBiZSByZWxhdGl2ZSB0byB0aGUgb2JqZWN0IG9m
CkBAIC0yNzU5LDEwICsyNzcyLDEwIEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZvY3Vz
ZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiByCiAgICAgICAg
ICAgICBzdGFydE5vZGUgPSBheEZpcnN0Q2hpbGQtPm5vZGUoKTsKICAgICB9CiAgICAgaWYgKCFz
dGFydE5vZGUpCi0gICAgICAgIHN0YXJ0Tm9kZSA9IGZvY3VzZWRPYmplY3QtPm5vZGUoKTsKKyAg
ICAgICAgc3RhcnROb2RlID0gYWN0dWFsT2JqZWN0LT5ub2RlKCk7CiAKLSAgICBWaXNpYmxlUG9z
aXRpb24gc3RhcnRQb3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9uSW5Ob2Rl
KHN0YXJ0Tm9kZSksIERPV05TVFJFQU0pOwotICAgIFZpc2libGVQb3NpdGlvbiBlbmRQb3NpdGlv
biA9IGZvY3VzZWRPYmplY3QtPnNlbGVjdGlvbigpLnZpc2libGVFbmQoKTsKKyAgICBWaXNpYmxl
UG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkJlZm9yZU5v
ZGUoc3RhcnROb2RlKSwgRE9XTlNUUkVBTSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVuZFBvc2l0
aW9uID0gYWN0dWFsT2JqZWN0LT5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CiAKICAgICBpZiAo
c3RhcnRQb3NpdGlvbiA9PSBlbmRQb3NpdGlvbikKICAgICAgICAgb2Zmc2V0ID0gMDsKQEAgLTI3
NzQsNyArMjc4Nyw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZvY3VzZWRBbmRDYXJl
dE9mZnNldFVuaWdub3JlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiByCiAgICAgICAgIG9mZnNldCA9
IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOwogICAgIH0KIAot
ICAgIHJldHVybiBmb2N1c2VkT2JqZWN0OworICAgIHJldHVybiBhY3R1YWxPYmplY3Q7CiB9CiAK
ICNlbmRpZiAvLyBIQVZFKEFDQ0VTU0lCSUxJVFkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL2d0ay9GcmFtZVNlbGVjdGlvbkd0ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0
aW5nL2d0ay9GcmFtZVNlbGVjdGlvbkd0ay5jcHAKaW5kZXggYTYzNzg3MC4uYWYxNGQzOSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRnJhbWVTZWxlY3Rpb25HdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0ZyYW1lU2VsZWN0aW9uR3RrLmNwcApA
QCAtODQsOCArODQsMTAgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6bm90aWZ5QWNjZXNzaWJpbGl0
eUZvclNlbGVjdGlvbkNoYW5nZSgpCiAgICAgaWYgKCFtX3NlbGVjdGlvbi5zdGFydCgpLmlzTm90
TnVsbCgpIHx8ICFtX3NlbGVjdGlvbi5lbmQoKS5pc05vdE51bGwoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgLy8gTG9vayBmb3IgdGhlIGFjY2Vzc2liaWxpdHkgb2JqZWN0IGZvciB0aGUgRnJh
bWUuCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNjZXNzaWJpbGl0eU9iamVjdCA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+cm9vdE9iamVjdEZvckZyYW1lKG1fZnJh
bWUpOworICAgIFJlbmRlck9iamVjdCogZm9jdXNlZE5vZGUgPSBtX3NlbGVjdGlvbi5lbmQoKS5j
b250YWluZXJOb2RlKCktPnJlbmRlcmVyKCk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogYWNj
ZXNzaWJpbGl0eU9iamVjdCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmF4T2JqZWN0Q2FjaGUoKS0+
Z2V0T3JDcmVhdGUoZm9jdXNlZE5vZGUpOworCisgICAgLy8gTmVlZCB0byBjaGVjayB0aGlzIGFz
IGdldE9yQ3JlYXRlIGNvdWxkIHJldHVybiAwLgogICAgIGlmICghYWNjZXNzaWJpbGl0eU9iamVj
dCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKaW5kZXggMWVjY2VjMi4uODc3ZWNh
ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJLaXQvZ3RrL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE5IEBACisyMDEyLTAxLTE2ICBNYXJpbyBT
YW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KKworICAgICAgICBbR1RLXSBBVEsg
dGV4dC1jYXJldC1tb3ZlZCBhbmQgdGV4dC1zZWxlY3Rpb24tY2hhbmdlZCBldmVudHMgbm90IGJl
aW5nIGVtaXR0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTc2MDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgVXBkYXRlIGNhcmV0IGJyb3dzaW5nIHJlbGF0ZWQgdW5pdCB0ZXN0cyB0byBjaGVjayBlbWlz
c2lvbnMgb2YKKyAgICAgICAgJ3RleHQtY2FyZXQtbW92ZWQnIGFuZCAndGV4dC1zZWxlY3Rpb24t
Y2hhbmdlZCcgc2lnbmFscy4KKworICAgICAgICAqIHRlc3RzL3Rlc3RhdGsuYzoKKyAgICAgICAg
KHRleHRDYXJldE1vdmVkQ2FsbGJhY2spOiBOZXcgY2FsbGJhY2sgZm9yICd0ZXh0LWNhcmV0LW1v
dmVkJy4KKyAgICAgICAgKHRlc3RXZWJraXRBdGtDYXJldE9mZnNldHMpOiBDaGVjayBlbWlzc2lv
bnMgb2YgJ3RleHQtY2FyZXQtbW92ZWQnLgorICAgICAgICAodGV4dFNlbGVjdGlvbkNoYW5nZWRD
YWxsYmFjayk6IE5ldyBjYWxsYmFjayBmb3IgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZWQnLgorICAg
ICAgICAodGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKTogQ2hlY2sgZW1pc3Npb25zIG9mICd0
ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkJy4KKwogMjAxMi0wMS0xMyAgTWFyaW8gU2FuY2hleiBQcmFk
YSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBv
dXQgcjEwNDkwNS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsu
YyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsuYwppbmRleCBhMTE1NTJmLi5iNDhi
NTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKKysrIGIv
U291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdGF0ay5jCkBAIC0yNTQsNiArMjU0LDE3IEBAIHN0
YXRpYyB2b2lkIHJ1bkdldFRleHRUZXN0cyhBdGtUZXh0KiB0ZXh0T2JqZWN0KQogICAgIH0KIH0K
IAorc3RhdGljIGdjaGFyKiB0ZXh0Q2FyZXRNb3ZlZFJlc3VsdCA9IDA7CisKK3N0YXRpYyB2b2lk
IHRleHRDYXJldE1vdmVkQ2FsbGJhY2soQXRrVGV4dCogdGV4dCwgZ2ludCBwb3MsIGdwb2ludGVy
IGRhdGEpCit7CisgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQodGV4dCkpOworCisgICAgZ19mcmVl
KHRleHRDYXJldE1vdmVkUmVzdWx0KTsKKyAgICBBdGtSb2xlIHJvbGUgPSBhdGtfb2JqZWN0X2dl
dF9yb2xlKEFUS19PQkpFQ1QodGV4dCkpOworICAgIHRleHRDYXJldE1vdmVkUmVzdWx0ID0gZ19z
dHJkdXBfcHJpbnRmKCJ8JXN8JWR8IiwgYXRrX3JvbGVfZ2V0X25hbWUocm9sZSksIHBvcyk7Cit9
CisKIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtDYXJldE9mZnNldHMoKQogewogICAgIFdlYktp
dFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0X3dlYl92aWV3X25ldygp
KTsKQEAgLTI2Nyw2ICsyNzgsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrQ2FyZXRPZmZz
ZXRzKCkKIAogICAgIEF0a09iamVjdCogaGVhZGVyID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJs
ZV9jaGlsZChvYmplY3QsIDApOwogICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKGhlYWRlcikpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3QoaGVhZGVyLCAidGV4dC1jYXJldC1tb3ZlZCIsIEdfQ0FMTEJB
Q0sodGV4dENhcmV0TW92ZWRDYWxsYmFjayksIDApOworCiAgICAgZ2NoYXIqIHRleHQgPSBhdGtf
dGV4dF9nZXRfdGV4dChBVEtfVEVYVChoZWFkZXIpLCAwLCAtMSk7CiAgICAgZ19hc3NlcnRfY21w
c3RyKHRleHQsID09LCAiQSB0ZXh0IGhlYWRlciIpOwogICAgIGdfZnJlZSAodGV4dCk7CkBAIC0y
NzYsOSArMjg5LDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtDYXJldE9mZnNldHMoKQog
ICAgIGdfYXNzZXJ0X2NtcGludChyZXN1bHQsID09LCBUUlVFKTsKICAgICBnaW50IG9mZnNldCA9
IGF0a190ZXh0X2dldF9jYXJldF9vZmZzZXQoQVRLX1RFWFQoaGVhZGVyKSk7CiAgICAgZ19hc3Nl
cnRfY21waW50KG9mZnNldCwgPT0sIDUpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0Q2FyZXRN
b3ZlZFJlc3VsdCwgPT0sICJ8aGVhZGluZ3w1fCIpOwogCiAgICAgQXRrT2JqZWN0KiBwYXJhZ3Jh
cGggPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMSk7CiAgICAgZ19h
c3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoKSk7CisgICAgZ19zaWduYWxfY29ubmVjdChwYXJh
Z3JhcGgsICJ0ZXh0LWNhcmV0LW1vdmVkIiwgR19DQUxMQkFDSyh0ZXh0Q2FyZXRNb3ZlZENhbGxi
YWNrKSwgMCk7CisKICAgICB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQocGFyYWdy
YXBoKSwgMCwgLTEpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9PSwgIkEgcGFyYWdyYXBo
IHdpdGggYSBsaW5rIGluIHRoZSBtaWRkbGUiKTsKICAgICBnX2ZyZWUgKHRleHQpOwpAQCAtMjg4
LDE2ICszMDQsMzIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0NhcmV0T2Zmc2V0cygpCiAg
ICAgZ19hc3NlcnRfY21waW50KHJlc3VsdCwgPT0sIFRSVUUpOwogICAgIG9mZnNldCA9IGF0a190
ZXh0X2dldF9jYXJldF9vZmZzZXQoQVRLX1RFWFQocGFyYWdyYXBoKSk7CiAgICAgZ19hc3NlcnRf
Y21waW50KG9mZnNldCwgPT0sIDUpOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0Q2FyZXRNb3Zl
ZFJlc3VsdCwgPT0sICJ8cGFyYWdyYXBofDV8Iik7CiAKICAgICByZXN1bHQgPSBhdGtfdGV4dF9z
ZXRfY2FyZXRfb2Zmc2V0KEFUS19URVhUKHBhcmFncmFwaCksIDIwKTsKICAgICBnX2Fzc2VydF9j
bXBpbnQocmVzdWx0LCA9PSwgVFJVRSk7CiAgICAgb2Zmc2V0ID0gYXRrX3RleHRfZ2V0X2NhcmV0
X29mZnNldChBVEtfVEVYVChwYXJhZ3JhcGgpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQob2Zmc2V0
LCA9PSwgMjApOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0Q2FyZXRNb3ZlZFJlc3VsdCwgPT0s
ICJ8cGFyYWdyYXBofDIwfCIpOwogCiAgICAgcmVzdWx0ID0gYXRrX3RleHRfc2V0X2NhcmV0X29m
ZnNldChBVEtfVEVYVChwYXJhZ3JhcGgpLCAzMCk7CiAgICAgZ19hc3NlcnRfY21waW50KHJlc3Vs
dCwgPT0sIFRSVUUpOwogICAgIG9mZnNldCA9IGF0a190ZXh0X2dldF9jYXJldF9vZmZzZXQoQVRL
X1RFWFQocGFyYWdyYXBoKSk7CiAgICAgZ19hc3NlcnRfY21waW50KG9mZnNldCwgPT0sIDMwKTsK
KyAgICBnX2Fzc2VydF9jbXBzdHIodGV4dENhcmV0TW92ZWRSZXN1bHQsID09LCAifHBhcmFncmFw
aHwzMHwiKTsKKworICAgIEF0a09iamVjdCogbGluayA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2li
bGVfY2hpbGQocGFyYWdyYXBoLCAwKTsKKyAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChsaW5rKSk7
CisgICAgdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGxpbmspLCAwLCAtMSk7Cisg
ICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCAid2l0aCBhIGxpbmsiKTsKKyAgICBnX2ZyZWUg
KHRleHQpOworCisgICAgcmVzdWx0ID0gYXRrX3RleHRfc2V0X2NhcmV0X29mZnNldChBVEtfVEVY
VChsaW5rKSwgNSk7CisgICAgZ19hc3NlcnRfY21waW50KHJlc3VsdCwgPT0sIFRSVUUpOworICAg
IG9mZnNldCA9IGF0a190ZXh0X2dldF9jYXJldF9vZmZzZXQoQVRLX1RFWFQobGluaykpOworICAg
IGdfYXNzZXJ0X2NtcGludChvZmZzZXQsID09LCA1KTsKKyAgICAvKiBQb3NpdGlvbnMgaW5zaWRl
IGxpbmtzIGFyZSByZXBvcnRlZCByZWxhdGl2ZSB0byB0aGUgcGFyYWdyYXBoLiAqLworICAgIGdf
YXNzZXJ0X2NtcHN0cih0ZXh0Q2FyZXRNb3ZlZFJlc3VsdCwgPT0sICJ8cGFyYWdyYXBofDE3fCIp
OwogCiAgICAgQXRrT2JqZWN0KiBsaXN0ID0gYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGls
ZChvYmplY3QsIDIpOwogICAgIGdfYXNzZXJ0KEFUS19PQkpFQ1QobGlzdCkpOwpAQCAtMzU1LDgg
KzM4NywxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrQ2FyZXRPZmZzZXRzKCkKICAgICBv
ZmZzZXQgPSBhdGtfdGV4dF9nZXRfY2FyZXRfb2Zmc2V0KEFUS19URVhUKHRleHRFbnRyeSkpOwog
ICAgIGdfYXNzZXJ0X2NtcGludChvZmZzZXQsID09LCA1KTsKIAorICAgIGdfZnJlZSh0ZXh0Q2Fy
ZXRNb3ZlZFJlc3VsdCk7CisKICAgICBnX29iamVjdF91bnJlZihoZWFkZXIpOwogICAgIGdfb2Jq
ZWN0X3VucmVmKHBhcmFncmFwaCk7CisgICAgZ19vYmplY3RfdW5yZWYobGluayk7CiAgICAgZ19v
YmplY3RfdW5yZWYobGlzdCk7CiAgICAgZ19vYmplY3RfdW5yZWYobGlzdEl0ZW0pOwogICAgIGdf
b2JqZWN0X3VucmVmKHBhbmVsKTsKQEAgLTEwODcsNiArMTEyMiwyMCBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2Via2l0QXRrVGV4dEF0dHJpYnV0ZXMoKQogICAgIGF0a19hdHRyaWJ1dGVfc2V0X2ZyZWUo
c2V0Myk7CiB9CiAKK3N0YXRpYyBnY2hhciogdGV4dFNlbGVjdGlvbkNoYW5nZWRSZXN1bHQgPSAw
OworCitzdGF0aWMgdm9pZCB0ZXh0U2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKEF0a1RleHQqIHRl
eHQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQodGV4dCkpOwor
CisgICAgZ19mcmVlKHRleHRTZWxlY3Rpb25DaGFuZ2VkUmVzdWx0KTsKKyAgICBBdGtSb2xlIHJv
bGUgPSBhdGtfb2JqZWN0X2dldF9yb2xlKEFUS19PQkpFQ1QodGV4dCkpOworICAgIGludCBzdGFy
dE9mZnNldCA9IDA7CisgICAgaW50IGVuZE9mZnNldCA9IDA7CisgICAgYXRrX3RleHRfZ2V0X3Nl
bGVjdGlvbihBVEtfVEVYVCh0ZXh0KSwgMCwgJnN0YXJ0T2Zmc2V0LCAmZW5kT2Zmc2V0KTsKKyAg
ICB0ZXh0U2VsZWN0aW9uQ2hhbmdlZFJlc3VsdCA9IGdfc3RyZHVwX3ByaW50ZigifCVzfCVkfCVk
fCIsIGF0a19yb2xlX2dldF9uYW1lKHJvbGUpLCBzdGFydE9mZnNldCwgZW5kT2Zmc2V0KTsKK30K
Kwogc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKCkKIHsKICAgICBXZWJL
aXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtpdF93ZWJfdmlld19uZXco
KSk7CkBAIC0xMTAwLDkgKzExNDksMTEgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a1RleHRT
ZWxlY3Rpb25zKCkKIAogICAgIEF0a1RleHQqIHBhcmFncmFwaDEgPSBBVEtfVEVYVChhdGtfb2Jq
ZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCkpOwogICAgIGdfYXNzZXJ0KEFUS19J
U19URVhUKHBhcmFncmFwaDEpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KHBhcmFncmFwaDEsICJ0
ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkIiwgR19DQUxMQkFDSyh0ZXh0U2VsZWN0aW9uQ2hhbmdlZENh
bGxiYWNrKSwgMCk7CiAKICAgICBBdGtUZXh0KiBwYXJhZ3JhcGgyID0gQVRLX1RFWFQoYXRrX29i
amVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDEpKTsKICAgICBnX2Fzc2VydChBVEtf
SVNfVEVYVChwYXJhZ3JhcGgyKSk7CisgICAgZ19zaWduYWxfY29ubmVjdChwYXJhZ3JhcGgyLCAi
dGV4dC1zZWxlY3Rpb24tY2hhbmdlZCIsIEdfQ0FMTEJBQ0sodGV4dFNlbGVjdGlvbkNoYW5nZWRD
YWxsYmFjayksIDApOwogCiAgICAgQXRrVGV4dCogbGluayA9IEFUS19URVhUKGF0a19vYmplY3Rf
cmVmX2FjY2Vzc2libGVfY2hpbGQoQVRLX09CSkVDVChwYXJhZ3JhcGgyKSwgMCkpOwogICAgIGdf
YXNzZXJ0KEFUS19JU19URVhUKGxpbmspKTsKQEAgLTExMzgsMTEgKzExODksMTMgQEAgc3RhdGlj
IHZvaWQgdGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKCkKICAgICByZXN1bHQgPSBhdGtfdGV4
dF9zZXRfc2VsZWN0aW9uKHBhcmFncmFwaDEsIDAsIDUsIDI1KTsKICAgICBnX2Fzc2VydChyZXN1
bHQpOwogICAgIGdfYXNzZXJ0X2NtcGludChhdGtfdGV4dF9nZXRfbl9zZWxlY3Rpb25zKHBhcmFn
cmFwaDEpLCA9PSwgMSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHRTZWxlY3Rpb25DaGFuZ2Vk
UmVzdWx0LCA9PSwgInxwYXJhZ3JhcGh8NXwyNXwiKTsKICAgICBzZWxlY3RlZFRleHQgPSBhdGtf
dGV4dF9nZXRfc2VsZWN0aW9uKHBhcmFncmFwaDEsIDAsICZzdGFydE9mZnNldCwgJmVuZE9mZnNl
dCk7CiAgICAgZ19hc3NlcnRfY21waW50KHN0YXJ0T2Zmc2V0LCA9PSwgNSk7CiAgICAgZ19hc3Nl
cnRfY21waW50KGVuZE9mZnNldCwgPT0sIDI1KTsKICAgICBnX2Fzc2VydF9jbXBzdHIoc2VsZWN0
ZWRUZXh0LCA9PSwgImFncmFwaCB3aXRoIHBsYWluIHRlIik7CiAgICAgZ19mcmVlIChzZWxlY3Rl
ZFRleHQpOworCiAgICAgLyogVHJ5IHJlbW92aW5nIHRoZSBzZWxlY3Rpb24gZnJvbSBvdGhlciBB
dGtUZXh0IG9iamVjdCAoc2hvdWxkIGZhaWwpLiAqLwogICAgIHJlc3VsdCA9IGF0a190ZXh0X3Jl
bW92ZV9zZWxlY3Rpb24ocGFyYWdyYXBoMiwgMCk7CiAgICAgZ19hc3NlcnQoIXJlc3VsdCk7CkBA
IC0xMTg1LDYgKzEyMzgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrVGV4dFNlbGVjdGlv
bnMoKQogICAgIHJlc3VsdCA9IGF0a190ZXh0X3NldF9zZWxlY3Rpb24ocGFyYWdyYXBoMiwgMCwg
MjcsIDM3KTsKICAgICBnX2Fzc2VydChyZXN1bHQpOwogICAgIGdfYXNzZXJ0X2NtcGludChhdGtf
dGV4dF9nZXRfbl9zZWxlY3Rpb25zKHBhcmFncmFwaDIpLCA9PSwgMSk7CisgICAgZ19hc3NlcnRf
Y21wc3RyKHRleHRTZWxlY3Rpb25DaGFuZ2VkUmVzdWx0LCA9PSwgInxwYXJhZ3JhcGh8Mjd8Mzd8
Iik7CiAgICAgc2VsZWN0ZWRUZXh0ID0gYXRrX3RleHRfZ2V0X3NlbGVjdGlvbihwYXJhZ3JhcGgy
LCAwLCAmc3RhcnRPZmZzZXQsICZlbmRPZmZzZXQpOwogICAgIGdfYXNzZXJ0X2NtcGludChzdGFy
dE9mZnNldCwgPT0sIDI3KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZW5kT2Zmc2V0LCA9PSwgMzcp
OwpAQCAtMTIzNCw2ICsxMjg4LDggQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a1RleHRTZWxl
Y3Rpb25zKCkKICAgICBnX2Fzc2VydF9jbXBzdHIoc2VsZWN0ZWRUZXh0LCA9PSwgIkEgbGlzdCIp
OwogICAgIGdfZnJlZSAoc2VsZWN0ZWRUZXh0KTsKIAorICAgIGdfZnJlZSh0ZXh0U2VsZWN0aW9u
Q2hhbmdlZFJlc3VsdCk7CisKICAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgxKTsKICAgICBn
X29iamVjdF91bnJlZihwYXJhZ3JhcGgyKTsKICAgICBnX29iamVjdF91bnJlZihsaXN0KTsKLS0g
CjEuNy43LjUKCg==
</data>
<flag name="review"
          id="123490"
          type_id="1"
          status="-"
          setter="mrobinson"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>122657</attachid>
            <date>2012-01-16 09:55:14 -0800</date>
            <delta_ts>2012-01-21 06:33:12 -0800</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-2012-01-16-Mario-Sanchez-Prada-msanchez-igalia.com.patch</filename>
            <type>text/plain</type>
            <size>18153</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAwYTY4ZDQ3ZDIzMTI0ZWE4M2MzMTg1NzJmY2Q4YTU0ZTQxNTQ0YTZkIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBNb24sIDE2IEphbiAyMDEyIDE4OjUyOjExICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gMjAxMi0wMS0xNiAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CgogICAgICAgIFtHVEtdIEFUSyB0ZXh0LWNhcmV0LW1vdmVkIGFuZCB0ZXh0LXNlbGVjdGlvbi1j
aGFuZ2VkIGV2ZW50cyBub3QgYmVpbmcgZW1pdHRlZAogICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2OQoKICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KCiAgICAgICAgRml4IGJ1ZyBpbnRyb2R1Y2VkIHdpdGggcGF0Y2ggZm9yIEJ1ZyA3
MjgzMC4KCiAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwOgog
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRhbnRPZik6IE5l
dyBmdW5jdGlvbiwgdG8KICAgICAgICBjaGVjayBpZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBp
cyBhIGRlc2NlbmRhbnQgb2Ygb3RoZXIgb2JqZWN0LgogICAgICAgIChXZWJDb3JlOjpBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojpjb250YWlucyk6IE5ldyBmdW5jdGlvbiwgdG8KICAgICAgICBjaGVjayBp
ZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBpcyBhbiBhbmNlc3RvciBvZiBvdGhlciBvYmplY3Qu
CiAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaDoKCiAgICAgICAg
KiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CiAg
ICAgICAgKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NhcmV0X29mZnNldCk6IE1ha2Ugc3Vy
ZSB0byBwYXNzIHRoZQogICAgICAgIHJpZ2h0IHJlZmVyZW5jZSBvYmplY3QgdG8gb2JqZWN0Rm9j
dXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkLgogICAgICAgIChvYmplY3RGb2N1c2VkQW5kQ2Fy
ZXRPZmZzZXRVbmlnbm9yZWQpOiBVc2UgcG9zaXRpb25CZWZvcmVOb2RlCiAgICAgICAgaW5zdGVh
ZCBvZiBmaXJzdFBvc2l0aW9uSW5Ob2RlIGZvciBjYWxjdWxhdGluZyB0aGUgYmVnaW5pbmcgb2Yg
dGhlCiAgICAgICAgcmFuZ2UgdXNlZCB0byBjYWxjdWxhdGUgdGhlIG9mZnNldHMuIEVuc3VyZSB0
aGF0IHRoZSByZWZlcmVuY2UKICAgICAgICBvYmplY3QgaXMgbmV2ZXIgYSBkZXNjZW5kYW50IG9m
IHRoZSBhY3R1YWwgb2JqZWN0IGJlaW5nIHJldHVybmVkLgoKICAgICAgICAqIGVkaXRpbmcvZ3Rr
L0ZyYW1lU2VsZWN0aW9uR3RrLmNwcDoKICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246
Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UpOgogICAgICAgIFBhc3MgdGhl
IHJpZ2h0IGFjY2Vzc2liaWxpdHkgb2JqZWN0IGFzc29jaWF0ZWQgd2l0aCB0aGUgY3VycmVudAog
ICAgICAgIHNlbGVjdGlvbiB0byBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQu
CgoyMDEyLTAxLTE2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
CiAgICAgICAgW0dUS10gQVRLIHRleHQtY2FyZXQtbW92ZWQgYW5kIHRleHQtc2VsZWN0aW9uLWNo
YW5nZWQgZXZlbnRzIG5vdCBiZWluZyBlbWl0dGVkCiAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDY5CgogICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgoKICAgICAgICBVcGRhdGUgY2FyZXQgYnJvd3NpbmcgcmVsYXRlZCB1bml0IHRlc3Rz
IHRvIGNoZWNrIGVtaXNzaW9ucyBvZgogICAgICAgICd0ZXh0LWNhcmV0LW1vdmVkJyBhbmQgJ3Rl
eHQtc2VsZWN0aW9uLWNoYW5nZWQnIHNpZ25hbHMuCgogICAgICAgICogdGVzdHMvdGVzdGF0ay5j
OgogICAgICAgICh0ZXh0Q2FyZXRNb3ZlZENhbGxiYWNrKTogTmV3IGNhbGxiYWNrIGZvciAndGV4
dC1jYXJldC1tb3ZlZCcuCiAgICAgICAgKHRlc3RXZWJraXRBdGtDYXJldE9mZnNldHMpOiBDaGVj
ayBlbWlzc2lvbnMgb2YgJ3RleHQtY2FyZXQtbW92ZWQnLgogICAgICAgICh0ZXh0U2VsZWN0aW9u
Q2hhbmdlZENhbGxiYWNrKTogTmV3IGNhbGxiYWNrIGZvciAndGV4dC1zZWxlY3Rpb24tY2hhbmdl
ZCcuCiAgICAgICAgKHRlc3RXZWJraXRBdGtUZXh0U2VsZWN0aW9ucyk6IENoZWNrIGVtaXNzaW9u
cyBvZiAndGV4dC1zZWxlY3Rpb24tY2hhbmdlZCcuCi0tLQogU291cmNlL1dlYkNvcmUvQ2hhbmdl
TG9nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDI5ICsrKysrKysrKysKIC4uLi9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAgIHwgICAyMCArKysrKysr
CiBTb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCB8ICAg
IDIgKwogLi4uL2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAgICAgICAgICAg
fCAgIDM0ICsrKysrKysrLS0tLQogU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRnJhbWVTZWxl
Y3Rpb25HdGsuY3BwICAgfCAgICA2ICsrLQogU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nICAg
ICAgICAgICAgICAgICAgICAgICAgfCAgIDE2ICsrKysrKwogU291cmNlL1dlYktpdC9ndGsvdGVz
dHMvdGVzdGF0ay5jICAgICAgICAgICAgICAgICAgfCAgIDU2ICsrKysrKysrKysrKysrKysrKysr
CiA3IGZpbGVzIGNoYW5nZWQsIDE1MCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKaW5kZXggMTZkZGVkNy4uMDA1MTk3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBA
CisyMDEyLTAxLTE2ICBNYXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4K
KworICAgICAgICBbR1RLXSBBVEsgdGV4dC1jYXJldC1tb3ZlZCBhbmQgdGV4dC1zZWxlY3Rpb24t
Y2hhbmdlZCBldmVudHMgbm90IGJlaW5nIGVtaXR0ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDY5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRml4IGJ1ZyBpbnRyb2R1Y2VkIHdpdGggcGF0Y2ggZm9y
IEJ1ZyA3MjgzMC4KKworICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVj
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0Rlc2NlbmRh
bnRPZik6IE5ldyBmdW5jdGlvbiwgdG8KKyAgICAgICAgY2hlY2sgaWYgYW4gYWNjZXNzaWJpbGl0
eSBvYmplY3QgaXMgYSBkZXNjZW5kYW50IG9mIG90aGVyIG9iamVjdC4KKyAgICAgICAgKFdlYkNv
cmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmNvbnRhaW5zKTogTmV3IGZ1bmN0aW9uLCB0bworICAg
ICAgICBjaGVjayBpZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBpcyBhbiBhbmNlc3RvciBvZiBv
dGhlciBvYmplY3QuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
Lmg6CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckF0ay5jcHA6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0X2dldF9jYXJldF9v
ZmZzZXQpOiBNYWtlIHN1cmUgdG8gcGFzcyB0aGUKKyAgICAgICAgcmlnaHQgcmVmZXJlbmNlIG9i
amVjdCB0byBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQuCisgICAgICAgIChv
YmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQpOiBVc2UgcG9zaXRpb25CZWZvcmVO
b2RlCisgICAgICAgIGluc3RlYWQgb2YgZmlyc3RQb3NpdGlvbkluTm9kZSBmb3IgY2FsY3VsYXRp
bmcgdGhlIGJlZ2luaW5nIG9mIHRoZQorICAgICAgICByYW5nZSB1c2VkIHRvIGNhbGN1bGF0ZSB0
aGUgb2Zmc2V0cy4gRW5zdXJlIHRoYXQgdGhlIHJlZmVyZW5jZQorICAgICAgICBvYmplY3QgaXMg
bmV2ZXIgYSBkZXNjZW5kYW50IG9mIHRoZSBhY3R1YWwgb2JqZWN0IGJlaW5nIHJldHVybmVkLgor
CisgICAgICAgICogZWRpdGluZy9ndGsvRnJhbWVTZWxlY3Rpb25HdGsuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25D
aGFuZ2UpOgorICAgICAgICBQYXNzIHRoZSByaWdodCBhY2Nlc3NpYmlsaXR5IG9iamVjdCBhc3Nv
Y2lhdGVkIHdpdGggdGhlIGN1cnJlbnQKKyAgICAgICAgc2VsZWN0aW9uIHRvIG9iamVjdEZvY3Vz
ZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZC4KKwogMjAxMi0wMS0xNiAgQ2FybG9zIEdhcmNpYSBD
YW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZC4gRml4IG1h
a2UgZGlzdGNoZWNrLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMmRiMDIyMi4uZmQzNTgwNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuY3BwCkBA
IC0xMjk0LDYgKzEyOTQsMjYgQEAgQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxp
dHlPYmplY3Q6Om9yaWVudGF0aW9uKCkgY29uc3QKICAgICByZXR1cm4gQWNjZXNzaWJpbGl0eU9y
aWVudGF0aW9uSG9yaXpvbnRhbDsKIH0gICAgCiAKK2Jvb2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6
aXNEZXNjZW5kYW50T2YoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QpIGNvbnN0
Cit7CisgICAgaWYgKCFheE9iamVjdCB8fCAhYXhPYmplY3QtPmhhc0NoaWxkcmVuKCkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIGZvciAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCog
cGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBhcmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRP
YmplY3QoKSkgeworICAgICAgICBpZiAocGFyZW50ID09IGF4T2JqZWN0KQorICAgICAgICAgICAg
cmV0dXJuIHRydWU7CisgICAgfQorICAgIHJldHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3Np
YmlsaXR5T2JqZWN0Ojpjb250YWlucyhjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBheE9iamVj
dCkgY29uc3QKK3sKKyAgICBpZiAoIWF4T2JqZWN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXR1cm4gdGhpcyA9PSBheE9iamVjdCB8fCBheE9iamVjdC0+aXNEZXNjZW5kYW50T2Yo
dGhpcyk7Cit9CisKIHR5cGVkZWYgSGFzaE1hcDxTdHJpbmcsIEFjY2Vzc2liaWxpdHlSb2xlLCBD
YXNlRm9sZGluZ0hhc2g+IEFSSUFSb2xlTWFwOwogCiBzdHJ1Y3QgUm9sZUVudHJ5IHsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5o
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKaW5k
ZXggNDI4MzI0ZC4uOWI1ZmQ2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmgKQEAgLTU3NCw2ICs1NzQsOCBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY3RpdmVEZXNjZW5kYW50KCkgY29uc3Qg
eyByZXR1cm4gMDsgfSAgICAKICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQWN0aXZlRGVzY2VuZGFu
dENoYW5nZWQoKSB7IH0KICAgICB2aXJ0dWFsIHZvaWQgaGFuZGxlQXJpYUV4cGFuZGVkQ2hhbmdl
ZCgpIHsgfQorICAgIGJvb2wgaXNEZXNjZW5kYW50T2YoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVj
dCopIGNvbnN0OworICAgIGJvb2wgY29udGFpbnMoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCop
IGNvbnN0OwogICAgIAogICAgIHN0YXRpYyBBY2Nlc3NpYmlsaXR5Um9sZSBhcmlhUm9sZVRvV2Vi
Q29yZVJvbGUoY29uc3QgU3RyaW5nJik7CiAgICAgY29uc3QgQXRvbWljU3RyaW5nJiBnZXRBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdy
YXBwZXJBdGsuY3BwCmluZGV4IGVhZGFjYWYuLmY3MmJkNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckF0ay5jcHAKQEAgLTEzNDUsNiArMTM0NSwxMiBAQCBzdGF0aWMgZ2ludCB3ZWJr
aXRfYWNjZXNzaWJsZV90ZXh0X2dldF9jYXJldF9vZmZzZXQoQXRrVGV4dCogdGV4dCkKICAgICBp
ZiAoIWNvcmVPYmplY3QtPmlzQWNjZXNzaWJpbGl0eVJlbmRlck9iamVjdCgpKQogICAgICAgICBy
ZXR1cm4gMDsKIAorICAgIC8vIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHBhc3MgYSB2YWxpZCBv
YmplY3QgYXMgcmVmZXJlbmNlLgorICAgIGlmIChjb3JlT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkpCisgICAgICAgIGNvcmVPYmplY3QgPSBjb3JlT2JqZWN0LT5wYXJlbnRPYmplY3RV
bmlnbm9yZWQoKTsKKyAgICBpZiAoIWNvcmVPYmplY3QpCisgICAgICAgIHJldHVybiAwOworCiAg
ICAgaW50IG9mZnNldDsKICAgICBpZiAoIW9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdu
b3JlZChjb3JlT2JqZWN0LCBvZmZzZXQpKQogICAgICAgICByZXR1cm4gMDsKQEAgLTI3MzYsMTkg
KzI3NDIsMjUgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zm
c2V0VW5pZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHIKICAgICAgICAgcmV0dXJuIDA7CiAK
ICAgICAvLyBMb29rIGZvciB0aGUgYWN0dWFsIChub3QgaWdub3JpbmcgYWNjZXNzaWJpbGl0eSkg
c2VsZWN0ZWQgb2JqZWN0LgotICAgIGlmIChmb2N1c2VkT2JqZWN0LT5hY2Nlc3NpYmlsaXR5SXNJ
Z25vcmVkKCkpCi0gICAgICAgIGZvY3VzZWRPYmplY3QgPSBmb2N1c2VkT2JqZWN0LT5wYXJlbnRP
YmplY3RVbmlnbm9yZWQoKTsKLSAgICBpZiAoIWZvY3VzZWRPYmplY3QpCisgICAgQWNjZXNzaWJp
bGl0eU9iamVjdCogZmlyc3RVbmlnbm9yZWRQYXJlbnQgPSBmb2N1c2VkT2JqZWN0OworICAgIGlm
IChmaXJzdFVuaWdub3JlZFBhcmVudC0+YWNjZXNzaWJpbGl0eUlzSWdub3JlZCgpKQorICAgICAg
ICBmaXJzdFVuaWdub3JlZFBhcmVudCA9IGZpcnN0VW5pZ25vcmVkUGFyZW50LT5wYXJlbnRPYmpl
Y3RVbmlnbm9yZWQoKTsKKyAgICBpZiAoIWZpcnN0VW5pZ25vcmVkUGFyZW50KQogICAgICAgICBy
ZXR1cm4gMDsKIAogICAgIC8vIERvbid0IGlnbm9yZSBsaW5rcyBpZiB0aGUgb2Zmc2V0IGlzIGJl
aW5nIHJlcXVlc3RlZCBmb3IgYSBsaW5rLgotICAgIGlmICghcmVmZXJlbmNlT2JqZWN0LT5pc0xp
bmsoKSAmJiBmb2N1c2VkT2JqZWN0LT5pc0xpbmsoKSkKLSAgICAgICAgZm9jdXNlZE9iamVjdCA9
IGZvY3VzZWRPYmplY3QtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgIGlmICghZm9jdXNl
ZE9iamVjdCkKKyAgICBpZiAoIXJlZmVyZW5jZU9iamVjdC0+aXNMaW5rKCkgJiYgZmlyc3RVbmln
bm9yZWRQYXJlbnQtPmlzTGluaygpKQorICAgICAgICBmaXJzdFVuaWdub3JlZFBhcmVudCA9IGZp
cnN0VW5pZ25vcmVkUGFyZW50LT5wYXJlbnRPYmplY3RVbmlnbm9yZWQoKTsKKyAgICBpZiAoIWZp
cnN0VW5pZ25vcmVkUGFyZW50KQogICAgICAgICByZXR1cm4gMDsKIAorICAgIC8vIFRoZSByZWZl
cmVuY2Ugb2JqZWN0IG11c3QgZWl0aGVyIGNvaW5jaWRlIHdpdGggdGhlIGZvY3VzZWQKKyAgICAv
LyBvYmplY3QgYmVpbmcgY29uc2lkZXJlZCwgb3IgYmUgYSBkZXNjZW5kYW50IG9mIGl0LgorICAg
IGlmIChyZWZlcmVuY2VPYmplY3QtPmlzRGVzY2VuZGFudE9mKGZpcnN0VW5pZ25vcmVkUGFyZW50
KSkKKyAgICAgICAgcmVmZXJlbmNlT2JqZWN0ID0gZmlyc3RVbmlnbm9yZWRQYXJlbnQ7CisKICAg
ICBOb2RlKiBzdGFydE5vZGUgPSAwOwotICAgIGlmIChmb2N1c2VkT2JqZWN0ICE9IHJlZmVyZW5j
ZU9iamVjdCB8fCBmb2N1c2VkT2JqZWN0LT5pc1RleHRDb250cm9sKCkpIHsKKyAgICBpZiAoZmly
c3RVbmlnbm9yZWRQYXJlbnQgIT0gcmVmZXJlbmNlT2JqZWN0IHx8IGZpcnN0VW5pZ25vcmVkUGFy
ZW50LT5pc1RleHRDb250cm9sKCkpIHsKICAgICAgICAgLy8gV2UgbmVlZCB0byB1c2UgdGhlIGZp
cnN0IGNoaWxkJ3Mgbm9kZSBvZiB0aGUgcmVmZXJlbmNlCiAgICAgICAgIC8vIG9iamVjdCBhcyB0
aGUgc3RhcnQgcG9pbnQgdG8gY2FsY3VsYXRlIHRoZSBjYXJldCBvZmZzZXQKICAgICAgICAgLy8g
YmVjYXVzZSB3ZSB3YW50IGl0IHRvIGJlIHJlbGF0aXZlIHRvIHRoZSBvYmplY3Qgb2YKQEAgLTI3
NTksMTAgKzI3NzEsMTAgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0Rm9jdXNlZEFuZENh
cmV0T2Zmc2V0VW5pZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHIKICAgICAgICAgICAgIHN0
YXJ0Tm9kZSA9IGF4Rmlyc3RDaGlsZC0+bm9kZSgpOwogICAgIH0KICAgICBpZiAoIXN0YXJ0Tm9k
ZSkKLSAgICAgICAgc3RhcnROb2RlID0gZm9jdXNlZE9iamVjdC0+bm9kZSgpOworICAgICAgICBz
dGFydE5vZGUgPSBmaXJzdFVuaWdub3JlZFBhcmVudC0+bm9kZSgpOwogCi0gICAgVmlzaWJsZVBv
c2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24oZmlyc3RQb3NpdGlvbkluTm9k
ZShzdGFydE5vZGUpLCBET1dOU1RSRUFNKTsKLSAgICBWaXNpYmxlUG9zaXRpb24gZW5kUG9zaXRp
b24gPSBmb2N1c2VkT2JqZWN0LT5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CisgICAgVmlzaWJs
ZVBvc2l0aW9uIHN0YXJ0UG9zaXRpb24gPSBWaXNpYmxlUG9zaXRpb24ocG9zaXRpb25CZWZvcmVO
b2RlKHN0YXJ0Tm9kZSksIERPV05TVFJFQU0pOworICAgIFZpc2libGVQb3NpdGlvbiBlbmRQb3Np
dGlvbiA9IGZpcnN0VW5pZ25vcmVkUGFyZW50LT5zZWxlY3Rpb24oKS52aXNpYmxlRW5kKCk7CiAK
ICAgICBpZiAoc3RhcnRQb3NpdGlvbiA9PSBlbmRQb3NpdGlvbikKICAgICAgICAgb2Zmc2V0ID0g
MDsKQEAgLTI3NzQsNyArMjc4Niw3IEBAIEFjY2Vzc2liaWxpdHlPYmplY3QqIG9iamVjdEZvY3Vz
ZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZChBY2Nlc3NpYmlsaXR5T2JqZWN0KiByCiAgICAgICAg
IG9mZnNldCA9IFRleHRJdGVyYXRvcjo6cmFuZ2VMZW5ndGgocmFuZ2UuZ2V0KCksIHRydWUpOwog
ICAgIH0KIAotICAgIHJldHVybiBmb2N1c2VkT2JqZWN0OworICAgIHJldHVybiBmaXJzdFVuaWdu
b3JlZFBhcmVudDsKIH0KIAogI2VuZGlmIC8vIEhBVkUoQUNDRVNTSUJJTElUWSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0ZyYW1lU2VsZWN0aW9uR3RrLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3RrL0ZyYW1lU2VsZWN0aW9uR3RrLmNwcAppbmRleCBhNjM3
ODcwLi5hZjE0ZDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9GcmFt
ZVNlbGVjdGlvbkd0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRnJhbWVT
ZWxlY3Rpb25HdGsuY3BwCkBAIC04NCw4ICs4NCwxMCBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpu
b3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkKICAgICBpZiAoIW1fc2VsZWN0
aW9uLnN0YXJ0KCkuaXNOb3ROdWxsKCkgfHwgIW1fc2VsZWN0aW9uLmVuZCgpLmlzTm90TnVsbCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICAvLyBMb29rIGZvciB0aGUgYWNjZXNzaWJpbGl0eSBv
YmplY3QgZm9yIHRoZSBGcmFtZS4KLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmls
aXR5T2JqZWN0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yb290T2Jq
ZWN0Rm9yRnJhbWUobV9mcmFtZSk7CisgICAgUmVuZGVyT2JqZWN0KiBmb2N1c2VkTm9kZSA9IG1f
c2VsZWN0aW9uLmVuZCgpLmNvbnRhaW5lck5vZGUoKS0+cmVuZGVyZXIoKTsKKyAgICBBY2Nlc3Np
YmlsaXR5T2JqZWN0KiBhY2Nlc3NpYmlsaXR5T2JqZWN0ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShmb2N1c2VkTm9kZSk7CisKKyAgICAvLyBOZWVk
IHRvIGNoZWNrIHRoaXMgYXMgZ2V0T3JDcmVhdGUgY291bGQgcmV0dXJuIDAuCiAgICAgaWYgKCFh
Y2Nlc3NpYmlsaXR5T2JqZWN0KQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvZ3RrL0NoYW5nZUxvZwppbmRl
eCAxZWNjZWMyLi44NzdlY2FmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTkgQEAKKzIw
MTItMDEtMTYgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIEFUSyB0ZXh0LWNhcmV0LW1vdmVkIGFuZCB0ZXh0LXNlbGVjdGlvbi1jaGFu
Z2VkIGV2ZW50cyBub3QgYmVpbmcgZW1pdHRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBVcGRhdGUgY2FyZXQgYnJvd3NpbmcgcmVsYXRlZCB1bml0IHRl
c3RzIHRvIGNoZWNrIGVtaXNzaW9ucyBvZgorICAgICAgICAndGV4dC1jYXJldC1tb3ZlZCcgYW5k
ICd0ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkJyBzaWduYWxzLgorCisgICAgICAgICogdGVzdHMvdGVz
dGF0ay5jOgorICAgICAgICAodGV4dENhcmV0TW92ZWRDYWxsYmFjayk6IE5ldyBjYWxsYmFjayBm
b3IgJ3RleHQtY2FyZXQtbW92ZWQnLgorICAgICAgICAodGVzdFdlYmtpdEF0a0NhcmV0T2Zmc2V0
cyk6IENoZWNrIGVtaXNzaW9ucyBvZiAndGV4dC1jYXJldC1tb3ZlZCcuCisgICAgICAgICh0ZXh0
U2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKTogTmV3IGNhbGxiYWNrIGZvciAndGV4dC1zZWxlY3Rp
b24tY2hhbmdlZCcuCisgICAgICAgICh0ZXN0V2Via2l0QXRrVGV4dFNlbGVjdGlvbnMpOiBDaGVj
ayBlbWlzc2lvbnMgb2YgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZWQnLgorCiAyMDEyLTAxLTEzICBN
YXJpbyBTYW5jaGV6IFByYWRhICA8bXNhbmNoZXpAaWdhbGlhLmNvbT4KIAogICAgICAgICBVbnJl
dmlld2VkLCByb2xsaW5nIG91dCByMTA0OTA1LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9n
dGsvdGVzdHMvdGVzdGF0ay5jIGIvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdGF0ay5jCmlu
ZGV4IGExMTU1MmYuLmI0OGI1NTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3Rz
L3Rlc3RhdGsuYworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0YXRrLmMKQEAgLTI1
NCw2ICsyNTQsMTcgQEAgc3RhdGljIHZvaWQgcnVuR2V0VGV4dFRlc3RzKEF0a1RleHQqIHRleHRP
YmplY3QpCiAgICAgfQogfQogCitzdGF0aWMgZ2NoYXIqIHRleHRDYXJldE1vdmVkUmVzdWx0ID0g
MDsKKworc3RhdGljIHZvaWQgdGV4dENhcmV0TW92ZWRDYWxsYmFjayhBdGtUZXh0KiB0ZXh0LCBn
aW50IHBvcywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBnX2Fzc2VydChBVEtfSVNfVEVYVCh0ZXh0
KSk7CisKKyAgICBnX2ZyZWUodGV4dENhcmV0TW92ZWRSZXN1bHQpOworICAgIEF0a1JvbGUgcm9s
ZSA9IGF0a19vYmplY3RfZ2V0X3JvbGUoQVRLX09CSkVDVCh0ZXh0KSk7CisgICAgdGV4dENhcmV0
TW92ZWRSZXN1bHQgPSBnX3N0cmR1cF9wcmludGYoInwlc3wlZHwiLCBhdGtfcm9sZV9nZXRfbmFt
ZShyb2xlKSwgcG9zKTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0NhcmV0T2Zmc2V0
cygpCiB7CiAgICAgV2ViS2l0V2ViVmlldyogd2ViVmlldyA9IFdFQktJVF9XRUJfVklFVyh3ZWJr
aXRfd2ViX3ZpZXdfbmV3KCkpOwpAQCAtMjY3LDYgKzI3OCw4IEBAIHN0YXRpYyB2b2lkIHRlc3RX
ZWJraXRBdGtDYXJldE9mZnNldHMoKQogCiAgICAgQXRrT2JqZWN0KiBoZWFkZXIgPSBhdGtfb2Jq
ZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCk7CiAgICAgZ19hc3NlcnQoQVRLX0lT
X1RFWFQoaGVhZGVyKSk7CisgICAgZ19zaWduYWxfY29ubmVjdChoZWFkZXIsICJ0ZXh0LWNhcmV0
LW1vdmVkIiwgR19DQUxMQkFDSyh0ZXh0Q2FyZXRNb3ZlZENhbGxiYWNrKSwgMCk7CisKICAgICBn
Y2hhciogdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGhlYWRlciksIDAsIC0xKTsK
ICAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sICJBIHRleHQgaGVhZGVyIik7CiAgICAgZ19m
cmVlICh0ZXh0KTsKQEAgLTI3Niw5ICsyODksMTIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0
a0NhcmV0T2Zmc2V0cygpCiAgICAgZ19hc3NlcnRfY21waW50KHJlc3VsdCwgPT0sIFRSVUUpOwog
ICAgIGdpbnQgb2Zmc2V0ID0gYXRrX3RleHRfZ2V0X2NhcmV0X29mZnNldChBVEtfVEVYVChoZWFk
ZXIpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQob2Zmc2V0LCA9PSwgNSk7CisgICAgZ19hc3NlcnRf
Y21wc3RyKHRleHRDYXJldE1vdmVkUmVzdWx0LCA9PSwgInxoZWFkaW5nfDV8Iik7CiAKICAgICBB
dGtPYmplY3QqIHBhcmFncmFwaCA9IGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2Jq
ZWN0LCAxKTsKICAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChwYXJhZ3JhcGgpKTsKKyAgICBnX3Np
Z25hbF9jb25uZWN0KHBhcmFncmFwaCwgInRleHQtY2FyZXQtbW92ZWQiLCBHX0NBTExCQUNLKHRl
eHRDYXJldE1vdmVkQ2FsbGJhY2spLCAwKTsKKwogICAgIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4
dChBVEtfVEVYVChwYXJhZ3JhcGgpLCAwLCAtMSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHRleHQs
ID09LCAiQSBwYXJhZ3JhcGggd2l0aCBhIGxpbmsgaW4gdGhlIG1pZGRsZSIpOwogICAgIGdfZnJl
ZSAodGV4dCk7CkBAIC0yODgsMTYgKzMwNCwzMiBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRr
Q2FyZXRPZmZzZXRzKCkKICAgICBnX2Fzc2VydF9jbXBpbnQocmVzdWx0LCA9PSwgVFJVRSk7CiAg
ICAgb2Zmc2V0ID0gYXRrX3RleHRfZ2V0X2NhcmV0X29mZnNldChBVEtfVEVYVChwYXJhZ3JhcGgp
KTsKICAgICBnX2Fzc2VydF9jbXBpbnQob2Zmc2V0LCA9PSwgNSk7CisgICAgZ19hc3NlcnRfY21w
c3RyKHRleHRDYXJldE1vdmVkUmVzdWx0LCA9PSwgInxwYXJhZ3JhcGh8NXwiKTsKIAogICAgIHJl
c3VsdCA9IGF0a190ZXh0X3NldF9jYXJldF9vZmZzZXQoQVRLX1RFWFQocGFyYWdyYXBoKSwgMjAp
OwogICAgIGdfYXNzZXJ0X2NtcGludChyZXN1bHQsID09LCBUUlVFKTsKICAgICBvZmZzZXQgPSBh
dGtfdGV4dF9nZXRfY2FyZXRfb2Zmc2V0KEFUS19URVhUKHBhcmFncmFwaCkpOwogICAgIGdfYXNz
ZXJ0X2NtcGludChvZmZzZXQsID09LCAyMCk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHRDYXJl
dE1vdmVkUmVzdWx0LCA9PSwgInxwYXJhZ3JhcGh8MjB8Iik7CiAKICAgICByZXN1bHQgPSBhdGtf
dGV4dF9zZXRfY2FyZXRfb2Zmc2V0KEFUS19URVhUKHBhcmFncmFwaCksIDMwKTsKICAgICBnX2Fz
c2VydF9jbXBpbnQocmVzdWx0LCA9PSwgVFJVRSk7CiAgICAgb2Zmc2V0ID0gYXRrX3RleHRfZ2V0
X2NhcmV0X29mZnNldChBVEtfVEVYVChwYXJhZ3JhcGgpKTsKICAgICBnX2Fzc2VydF9jbXBpbnQo
b2Zmc2V0LCA9PSwgMzApOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0Q2FyZXRNb3ZlZFJlc3Vs
dCwgPT0sICJ8cGFyYWdyYXBofDMwfCIpOworCisgICAgQXRrT2JqZWN0KiBsaW5rID0gYXRrX29i
amVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChwYXJhZ3JhcGgsIDApOworICAgIGdfYXNzZXJ0KEFU
S19JU19URVhUKGxpbmspKTsKKyAgICB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQoQVRLX1RFWFQo
bGluayksIDAsIC0xKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGV4dCwgPT0sICJ3aXRoIGEgbGlu
ayIpOworICAgIGdfZnJlZSAodGV4dCk7CisKKyAgICByZXN1bHQgPSBhdGtfdGV4dF9zZXRfY2Fy
ZXRfb2Zmc2V0KEFUS19URVhUKGxpbmspLCA1KTsKKyAgICBnX2Fzc2VydF9jbXBpbnQocmVzdWx0
LCA9PSwgVFJVRSk7CisgICAgb2Zmc2V0ID0gYXRrX3RleHRfZ2V0X2NhcmV0X29mZnNldChBVEtf
VEVYVChsaW5rKSk7CisgICAgZ19hc3NlcnRfY21waW50KG9mZnNldCwgPT0sIDUpOworICAgIC8q
IFBvc2l0aW9ucyBpbnNpZGUgbGlua3MgYXJlIHJlcG9ydGVkIHJlbGF0aXZlIHRvIHRoZSBwYXJh
Z3JhcGguICovCisgICAgZ19hc3NlcnRfY21wc3RyKHRleHRDYXJldE1vdmVkUmVzdWx0LCA9PSwg
InxwYXJhZ3JhcGh8MTd8Iik7CiAKICAgICBBdGtPYmplY3QqIGxpc3QgPSBhdGtfb2JqZWN0X3Jl
Zl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMik7CiAgICAgZ19hc3NlcnQoQVRLX09CSkVDVChs
aXN0KSk7CkBAIC0zNTUsOCArMzg3LDExIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtDYXJl
dE9mZnNldHMoKQogICAgIG9mZnNldCA9IGF0a190ZXh0X2dldF9jYXJldF9vZmZzZXQoQVRLX1RF
WFQodGV4dEVudHJ5KSk7CiAgICAgZ19hc3NlcnRfY21waW50KG9mZnNldCwgPT0sIDUpOwogCisg
ICAgZ19mcmVlKHRleHRDYXJldE1vdmVkUmVzdWx0KTsKKwogICAgIGdfb2JqZWN0X3VucmVmKGhl
YWRlcik7CiAgICAgZ19vYmplY3RfdW5yZWYocGFyYWdyYXBoKTsKKyAgICBnX29iamVjdF91bnJl
ZihsaW5rKTsKICAgICBnX29iamVjdF91bnJlZihsaXN0KTsKICAgICBnX29iamVjdF91bnJlZihs
aXN0SXRlbSk7CiAgICAgZ19vYmplY3RfdW5yZWYocGFuZWwpOwpAQCAtMTA4Nyw2ICsxMTIyLDIw
IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtUZXh0QXR0cmlidXRlcygpCiAgICAgYXRrX2F0
dHJpYnV0ZV9zZXRfZnJlZShzZXQzKTsKIH0KIAorc3RhdGljIGdjaGFyKiB0ZXh0U2VsZWN0aW9u
Q2hhbmdlZFJlc3VsdCA9IDA7CisKK3N0YXRpYyB2b2lkIHRleHRTZWxlY3Rpb25DaGFuZ2VkQ2Fs
bGJhY2soQXRrVGV4dCogdGV4dCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgICBnX2Fzc2VydChBVEtf
SVNfVEVYVCh0ZXh0KSk7CisKKyAgICBnX2ZyZWUodGV4dFNlbGVjdGlvbkNoYW5nZWRSZXN1bHQp
OworICAgIEF0a1JvbGUgcm9sZSA9IGF0a19vYmplY3RfZ2V0X3JvbGUoQVRLX09CSkVDVCh0ZXh0
KSk7CisgICAgaW50IHN0YXJ0T2Zmc2V0ID0gMDsKKyAgICBpbnQgZW5kT2Zmc2V0ID0gMDsKKyAg
ICBhdGtfdGV4dF9nZXRfc2VsZWN0aW9uKEFUS19URVhUKHRleHQpLCAwLCAmc3RhcnRPZmZzZXQs
ICZlbmRPZmZzZXQpOworICAgIHRleHRTZWxlY3Rpb25DaGFuZ2VkUmVzdWx0ID0gZ19zdHJkdXBf
cHJpbnRmKCJ8JXN8JWR8JWR8IiwgYXRrX3JvbGVfZ2V0X25hbWUocm9sZSksIHN0YXJ0T2Zmc2V0
LCBlbmRPZmZzZXQpOworfQorCiBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrVGV4dFNlbGVjdGlv
bnMoKQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Vi
a2l0X3dlYl92aWV3X25ldygpKTsKQEAgLTExMDAsOSArMTE0OSwxMSBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2Via2l0QXRrVGV4dFNlbGVjdGlvbnMoKQogCiAgICAgQXRrVGV4dCogcGFyYWdyYXBoMSA9
IEFUS19URVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQob2JqZWN0LCAwKSk7CiAg
ICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoMSkpOworICAgIGdfc2lnbmFsX2Nvbm5l
Y3QocGFyYWdyYXBoMSwgInRleHQtc2VsZWN0aW9uLWNoYW5nZWQiLCBHX0NBTExCQUNLKHRleHRT
ZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2spLCAwKTsKIAogICAgIEF0a1RleHQqIHBhcmFncmFwaDIg
PSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMSkpOwog
ICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFwaDIpKTsKKyAgICBnX3NpZ25hbF9jb25u
ZWN0KHBhcmFncmFwaDIsICJ0ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkIiwgR19DQUxMQkFDSyh0ZXh0
U2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKSwgMCk7CiAKICAgICBBdGtUZXh0KiBsaW5rID0gQVRL
X1RFWFQoYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChBVEtfT0JKRUNUKHBhcmFncmFw
aDIpLCAwKSk7CiAgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQobGluaykpOwpAQCAtMTEzOCwxMSAr
MTE4OSwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrVGV4dFNlbGVjdGlvbnMoKQogICAg
IHJlc3VsdCA9IGF0a190ZXh0X3NldF9zZWxlY3Rpb24ocGFyYWdyYXBoMSwgMCwgNSwgMjUpOwog
ICAgIGdfYXNzZXJ0KHJlc3VsdCk7CiAgICAgZ19hc3NlcnRfY21waW50KGF0a190ZXh0X2dldF9u
X3NlbGVjdGlvbnMocGFyYWdyYXBoMSksID09LCAxKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGV4
dFNlbGVjdGlvbkNoYW5nZWRSZXN1bHQsID09LCAifHBhcmFncmFwaHw1fDI1fCIpOwogICAgIHNl
bGVjdGVkVGV4dCA9IGF0a190ZXh0X2dldF9zZWxlY3Rpb24ocGFyYWdyYXBoMSwgMCwgJnN0YXJ0
T2Zmc2V0LCAmZW5kT2Zmc2V0KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoc3RhcnRPZmZzZXQsID09
LCA1KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZW5kT2Zmc2V0LCA9PSwgMjUpOwogICAgIGdfYXNz
ZXJ0X2NtcHN0cihzZWxlY3RlZFRleHQsID09LCAiYWdyYXBoIHdpdGggcGxhaW4gdGUiKTsKICAg
ICBnX2ZyZWUgKHNlbGVjdGVkVGV4dCk7CisKICAgICAvKiBUcnkgcmVtb3ZpbmcgdGhlIHNlbGVj
dGlvbiBmcm9tIG90aGVyIEF0a1RleHQgb2JqZWN0IChzaG91bGQgZmFpbCkuICovCiAgICAgcmVz
dWx0ID0gYXRrX3RleHRfcmVtb3ZlX3NlbGVjdGlvbihwYXJhZ3JhcGgyLCAwKTsKICAgICBnX2Fz
c2VydCghcmVzdWx0KTsKQEAgLTExODUsNiArMTIzOCw3IEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJr
aXRBdGtUZXh0U2VsZWN0aW9ucygpCiAgICAgcmVzdWx0ID0gYXRrX3RleHRfc2V0X3NlbGVjdGlv
bihwYXJhZ3JhcGgyLCAwLCAyNywgMzcpOwogICAgIGdfYXNzZXJ0KHJlc3VsdCk7CiAgICAgZ19h
c3NlcnRfY21waW50KGF0a190ZXh0X2dldF9uX3NlbGVjdGlvbnMocGFyYWdyYXBoMiksID09LCAx
KTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGV4dFNlbGVjdGlvbkNoYW5nZWRSZXN1bHQsID09LCAi
fHBhcmFncmFwaHwyN3wzN3wiKTsKICAgICBzZWxlY3RlZFRleHQgPSBhdGtfdGV4dF9nZXRfc2Vs
ZWN0aW9uKHBhcmFncmFwaDIsIDAsICZzdGFydE9mZnNldCwgJmVuZE9mZnNldCk7CiAgICAgZ19h
c3NlcnRfY21waW50KHN0YXJ0T2Zmc2V0LCA9PSwgMjcpOwogICAgIGdfYXNzZXJ0X2NtcGludChl
bmRPZmZzZXQsID09LCAzNyk7CkBAIC0xMjM0LDYgKzEyODgsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrVGV4dFNlbGVjdGlvbnMoKQogICAgIGdfYXNzZXJ0X2NtcHN0cihzZWxlY3RlZFRl
eHQsID09LCAiQSBsaXN0Iik7CiAgICAgZ19mcmVlIChzZWxlY3RlZFRleHQpOwogCisgICAgZ19m
cmVlKHRleHRTZWxlY3Rpb25DaGFuZ2VkUmVzdWx0KTsKKwogICAgIGdfb2JqZWN0X3VucmVmKHBh
cmFncmFwaDEpOwogICAgIGdfb2JqZWN0X3VucmVmKHBhcmFncmFwaDIpOwogICAgIGdfb2JqZWN0
X3VucmVmKGxpc3QpOwotLSAKMS43LjcuNQoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123447</attachid>
            <date>2012-01-21 06:33:12 -0800</date>
            <delta_ts>2012-01-21 07:50:43 -0800</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-GTK-ATK-text-caret-moved-and-text-selection-changed-.patch</filename>
            <type>text/plain</type>
            <size>17809</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAzYmNkMTRmYzU5MzEyNzBhYTVmZDVhNDQwOWY4NjUwOTI0NGM3YzAxIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBTYXQsIDIxIEphbiAyMDEyIDE1OjI3OjA1ICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gW0dUS10gQVRLIHRleHQtY2FyZXQtbW92ZWQgYW5kIHRleHQtc2VsZWN0aW9uLWNoYW5nZWQg
ZXZlbnRzCiBub3QgYmVpbmcgZW1pdHRlZAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc2MDY5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClNvdXJjZS9XZWJD
b3JlOgoKRml4IGJ1ZyBpbnRyb2R1Y2VkIHdpdGggcGF0Y2ggZm9yIEJ1ZyA3MjgzMC4KCiogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzRGVzY2VuZGFudE9mT2JqZWN0KTogTmV3IGZ1bmN0aW9uLAp0byBjaGVjayBp
ZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBpcyBhIGRlc2NlbmRhbnQgb2Ygb3RoZXIgb2JqZWN0
LgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBbmNlc3Rvck9mT2JqZWN0KTogTmV3
IGZ1bmN0aW9uLAp0byBjaGVjayBpZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBpcyBhbiBhbmNl
c3RvciBvZiBvdGhlciBvYmplY3QuCiogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
Lmg6CgoqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNw
cDoKKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NhcmV0X29mZnNldCk6IE1ha2Ugc3VyZSB0
byBwYXNzIHRoZQpyaWdodCByZWZlcmVuY2Ugb2JqZWN0IHRvIG9iamVjdEZvY3VzZWRBbmRDYXJl
dE9mZnNldFVuaWdub3JlZC4KKG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZCk6
IFVzZSBwb3NpdGlvbkJlZm9yZU5vZGUKaW5zdGVhZCBvZiBmaXJzdFBvc2l0aW9uSW5Ob2RlIGZv
ciBjYWxjdWxhdGluZyB0aGUgYmVnaW5pbmcgb2YgdGhlCnJhbmdlIHVzZWQgdG8gY2FsY3VsYXRl
IHRoZSBvZmZzZXRzLiBFbnN1cmUgdGhhdCB0aGUgcmVmZXJlbmNlCm9iamVjdCBpcyBuZXZlciBh
IGRlc2NlbmRhbnQgb2YgdGhlIGFjdHVhbCBvYmplY3QgYmVpbmcgcmV0dXJuZWQuCgoqIGVkaXRp
bmcvZ3RrL0ZyYW1lU2VsZWN0aW9uR3RrLmNwcDoKKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpu
b3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKToKUGFzcyB0aGUgcmlnaHQgYWNj
ZXNzaWJpbGl0eSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50CnNlbGVjdGlvbiB0
byBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQuCgpTb3VyY2UvV2ViS2l0L2d0
azoKClVwZGF0ZSBjYXJldCBicm93c2luZyByZWxhdGVkIHVuaXQgdGVzdHMgdG8gY2hlY2sgZW1p
c3Npb25zIG9mCid0ZXh0LWNhcmV0LW1vdmVkJyBhbmQgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZWQn
IHNpZ25hbHMuCgoqIHRlc3RzL3Rlc3RhdGsuYzoKKHRleHRDYXJldE1vdmVkQ2FsbGJhY2spOiBO
ZXcgY2FsbGJhY2sgZm9yICd0ZXh0LWNhcmV0LW1vdmVkJy4KKHRlc3RXZWJraXRBdGtDYXJldE9m
ZnNldHMpOiBDaGVjayBlbWlzc2lvbnMgb2YgJ3RleHQtY2FyZXQtbW92ZWQnLgoodGV4dFNlbGVj
dGlvbkNoYW5nZWRDYWxsYmFjayk6IE5ldyBjYWxsYmFjayBmb3IgJ3RleHQtc2VsZWN0aW9uLWNo
YW5nZWQnLgoodGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKTogQ2hlY2sgZW1pc3Npb25zIG9m
ICd0ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkJy4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjkgKysrKysrKysrKwogLi4uL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAgfCAgIDIwICsrKysrKysKIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIHwgICAgMiAr
CiAuLi4vZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcCAgICAgICAgICB8ICAg
MzQgKysrKysrKystLS0tCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9GcmFtZVNlbGVjdGlv
bkd0ay5jcHAgICB8ICAgIDYgKystCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMTYgKysrKysrCiBTb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90
ZXN0YXRrLmMgICAgICAgICAgICAgICAgICB8ICAgNTYgKysrKysrKysrKysrKysrKysrKysKIDcg
ZmlsZXMgY2hhbmdlZCwgMTUwIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBhYmEwZDc5Li4xYmU3YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTItMDEtMjEgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIEFUSyB0ZXh0LWNhcmV0LW1vdmVkIGFuZCB0ZXh0LXNlbGVjdGlvbi1jaGFu
Z2VkIGV2ZW50cyBub3QgYmVpbmcgZW1pdHRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggYnVnIGludHJvZHVjZWQgd2l0aCBwYXRjaCBmb3IgQnVn
IDcyODMwLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRGVzY2VuZGFudE9m
T2JqZWN0KTogTmV3IGZ1bmN0aW9uLAorICAgICAgICB0byBjaGVjayBpZiBhbiBhY2Nlc3NpYmls
aXR5IG9iamVjdCBpcyBhIGRlc2NlbmRhbnQgb2Ygb3RoZXIgb2JqZWN0LgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBbmNlc3Rvck9mT2JqZWN0KTogTmV3IGZ1bmN0
aW9uLAorICAgICAgICB0byBjaGVjayBpZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBpcyBhbiBh
bmNlc3RvciBvZiBvdGhlciBvYmplY3QuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0Lmg6CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0
X2dldF9jYXJldF9vZmZzZXQpOiBNYWtlIHN1cmUgdG8gcGFzcyB0aGUKKyAgICAgICAgcmlnaHQg
cmVmZXJlbmNlIG9iamVjdCB0byBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQu
CisgICAgICAgIChvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQpOiBVc2UgcG9z
aXRpb25CZWZvcmVOb2RlCisgICAgICAgIGluc3RlYWQgb2YgZmlyc3RQb3NpdGlvbkluTm9kZSBm
b3IgY2FsY3VsYXRpbmcgdGhlIGJlZ2luaW5nIG9mIHRoZQorICAgICAgICByYW5nZSB1c2VkIHRv
IGNhbGN1bGF0ZSB0aGUgb2Zmc2V0cy4gRW5zdXJlIHRoYXQgdGhlIHJlZmVyZW5jZQorICAgICAg
ICBvYmplY3QgaXMgbmV2ZXIgYSBkZXNjZW5kYW50IG9mIHRoZSBhY3R1YWwgb2JqZWN0IGJlaW5n
IHJldHVybmVkLgorCisgICAgICAgICogZWRpdGluZy9ndGsvRnJhbWVTZWxlY3Rpb25HdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlG
b3JTZWxlY3Rpb25DaGFuZ2UpOgorICAgICAgICBQYXNzIHRoZSByaWdodCBhY2Nlc3NpYmlsaXR5
IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQKKyAgICAgICAgc2VsZWN0aW9uIHRv
IG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZC4KKwogMjAxMi0wMS0yMSAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICA8ZmVJbWFn
ZT4gaWdub3JlcyBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMWI4Y2Q5
OC4uYWNkMWFhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMjk0LDYgKzEyOTQsMjYgQEAgQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om9yaWVudGF0aW9uKCkgY29uc3QKICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKIH0gICAgCiAKK2Jv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXNjZW5kYW50T2ZPYmplY3QoY29uc3QgQWNjZXNz
aWJpbGl0eU9iamVjdCogYXhPYmplY3QpIGNvbnN0Cit7CisgICAgaWYgKCFheE9iamVjdCB8fCAh
YXhPYmplY3QtPmhhc0NoaWxkcmVuKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZv
ciAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBh
cmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeworICAgICAgICBpZiAocGFy
ZW50ID09IGF4T2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FuY2VzdG9yT2ZP
YmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QpIGNvbnN0Cit7CisgICAg
aWYgKCFheE9iamVjdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRoaXMg
PT0gYXhPYmplY3QgfHwgYXhPYmplY3QtPmlzRGVzY2VuZGFudE9mKHRoaXMpOworfQorCiB0eXBl
ZGVmIEhhc2hNYXA8U3RyaW5nLCBBY2Nlc3NpYmlsaXR5Um9sZSwgQ2FzZUZvbGRpbmdIYXNoPiBB
UklBUm9sZU1hcDsKIAogc3RydWN0IFJvbGVFbnRyeSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IGJkNTc0MWMuLmM0MTdj
YzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0
eU9iamVjdC5oCkBAIC01NjQsNiArNTY0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgQWNjZXNz
aWJpbGl0eU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IHsgcmV0dXJuIDA7IH0gICAg
CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkgeyB9CiAg
ICAgdmlydHVhbCB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKSB7IH0KKyAgICBib29s
IGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqKSBjb25zdDsK
KyAgICBib29sIGlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2JqZWN0Kikg
Y29uc3Q7CiAgICAgCiAgICAgc3RhdGljIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xlVG9XZWJD
b3JlUm9sZShjb25zdCBTdHJpbmcmKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdldEF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0ay5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3Jh
cHBlckF0ay5jcHAKaW5kZXggZWFkYWNhZi4uZmU5ZjAwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJBdGsuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmpl
Y3RXcmFwcGVyQXRrLmNwcApAQCAtMTM0NSw2ICsxMzQ1LDEyIEBAIHN0YXRpYyBnaW50IHdlYmtp
dF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NhcmV0X29mZnNldChBdGtUZXh0KiB0ZXh0KQogICAgIGlm
ICghY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCiAgICAgICAgIHJl
dHVybiAwOwogCisgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgcGFzcyBhIHZhbGlkIG9i
amVjdCBhcyByZWZlcmVuY2UuCisgICAgaWYgKGNvcmVPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKKyAgICAgICAgY29yZU9iamVjdCA9IGNvcmVPYmplY3QtPnBhcmVudE9iamVjdFVu
aWdub3JlZCgpOworICAgIGlmICghY29yZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIDA7CisKICAg
ICBpbnQgb2Zmc2V0OwogICAgIGlmICghb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25v
cmVkKGNvcmVPYmplY3QsIG9mZnNldCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjczNiwxOSAr
Mjc0MiwyNSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZz
ZXRVbmlnbm9yZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogcgogICAgICAgICByZXR1cm4gMDsKIAog
ICAgIC8vIExvb2sgZm9yIHRoZSBhY3R1YWwgKG5vdCBpZ25vcmluZyBhY2Nlc3NpYmlsaXR5KSBz
ZWxlY3RlZCBvYmplY3QuCi0gICAgaWYgKGZvY3VzZWRPYmplY3QtPmFjY2Vzc2liaWxpdHlJc0ln
bm9yZWQoKSkKLSAgICAgICAgZm9jdXNlZE9iamVjdCA9IGZvY3VzZWRPYmplY3QtPnBhcmVudE9i
amVjdFVuaWdub3JlZCgpOwotICAgIGlmICghZm9jdXNlZE9iamVjdCkKKyAgICBBY2Nlc3NpYmls
aXR5T2JqZWN0KiBmaXJzdFVuaWdub3JlZFBhcmVudCA9IGZvY3VzZWRPYmplY3Q7CisgICAgaWYg
KGZpcnN0VW5pZ25vcmVkUGFyZW50LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisgICAgICAg
IGZpcnN0VW5pZ25vcmVkUGFyZW50ID0gZmlyc3RVbmlnbm9yZWRQYXJlbnQtPnBhcmVudE9iamVj
dFVuaWdub3JlZCgpOworICAgIGlmICghZmlyc3RVbmlnbm9yZWRQYXJlbnQpCiAgICAgICAgIHJl
dHVybiAwOwogCiAgICAgLy8gRG9uJ3QgaWdub3JlIGxpbmtzIGlmIHRoZSBvZmZzZXQgaXMgYmVp
bmcgcmVxdWVzdGVkIGZvciBhIGxpbmsuCi0gICAgaWYgKCFyZWZlcmVuY2VPYmplY3QtPmlzTGlu
aygpICYmIGZvY3VzZWRPYmplY3QtPmlzTGluaygpKQotICAgICAgICBmb2N1c2VkT2JqZWN0ID0g
Zm9jdXNlZE9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFmb2N1c2Vk
T2JqZWN0KQorICAgIGlmICghcmVmZXJlbmNlT2JqZWN0LT5pc0xpbmsoKSAmJiBmaXJzdFVuaWdu
b3JlZFBhcmVudC0+aXNMaW5rKCkpCisgICAgICAgIGZpcnN0VW5pZ25vcmVkUGFyZW50ID0gZmly
c3RVbmlnbm9yZWRQYXJlbnQtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGlmICghZmly
c3RVbmlnbm9yZWRQYXJlbnQpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgLy8gVGhlIHJlZmVy
ZW5jZSBvYmplY3QgbXVzdCBlaXRoZXIgY29pbmNpZGUgd2l0aCB0aGUgZm9jdXNlZAorICAgIC8v
IG9iamVjdCBiZWluZyBjb25zaWRlcmVkLCBvciBiZSBhIGRlc2NlbmRhbnQgb2YgaXQuCisgICAg
aWYgKHJlZmVyZW5jZU9iamVjdC0+aXNEZXNjZW5kYW50T2ZPYmplY3QoZmlyc3RVbmlnbm9yZWRQ
YXJlbnQpKQorICAgICAgICByZWZlcmVuY2VPYmplY3QgPSBmaXJzdFVuaWdub3JlZFBhcmVudDsK
KwogICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IDA7Ci0gICAgaWYgKGZvY3VzZWRPYmplY3QgIT0gcmVm
ZXJlbmNlT2JqZWN0IHx8IGZvY3VzZWRPYmplY3QtPmlzVGV4dENvbnRyb2woKSkgeworICAgIGlm
IChmaXJzdFVuaWdub3JlZFBhcmVudCAhPSByZWZlcmVuY2VPYmplY3QgfHwgZmlyc3RVbmlnbm9y
ZWRQYXJlbnQtPmlzVGV4dENvbnRyb2woKSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIHVzZSB0
aGUgZmlyc3QgY2hpbGQncyBub2RlIG9mIHRoZSByZWZlcmVuY2UKICAgICAgICAgLy8gb2JqZWN0
IGFzIHRoZSBzdGFydCBwb2ludCB0byBjYWxjdWxhdGUgdGhlIGNhcmV0IG9mZnNldAogICAgICAg
ICAvLyBiZWNhdXNlIHdlIHdhbnQgaXQgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIG9iamVjdCBvZgpA
QCAtMjc1OSwxMCArMjc3MSwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGb2N1c2Vk
QW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogcgogICAgICAgICAg
ICAgc3RhcnROb2RlID0gYXhGaXJzdENoaWxkLT5ub2RlKCk7CiAgICAgfQogICAgIGlmICghc3Rh
cnROb2RlKQotICAgICAgICBzdGFydE5vZGUgPSBmb2N1c2VkT2JqZWN0LT5ub2RlKCk7CisgICAg
ICAgIHN0YXJ0Tm9kZSA9IGZpcnN0VW5pZ25vcmVkUGFyZW50LT5ub2RlKCk7CiAKLSAgICBWaXNp
YmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihmaXJzdFBvc2l0aW9u
SW5Ob2RlKHN0YXJ0Tm9kZSksIERPV05TVFJFQU0pOwotICAgIFZpc2libGVQb3NpdGlvbiBlbmRQ
b3NpdGlvbiA9IGZvY3VzZWRPYmplY3QtPnNlbGVjdGlvbigpLnZpc2libGVFbmQoKTsKKyAgICBW
aXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihwb3NpdGlvbkJl
Zm9yZU5vZGUoc3RhcnROb2RlKSwgRE9XTlNUUkVBTSk7CisgICAgVmlzaWJsZVBvc2l0aW9uIGVu
ZFBvc2l0aW9uID0gZmlyc3RVbmlnbm9yZWRQYXJlbnQtPnNlbGVjdGlvbigpLnZpc2libGVFbmQo
KTsKIAogICAgIGlmIChzdGFydFBvc2l0aW9uID09IGVuZFBvc2l0aW9uKQogICAgICAgICBvZmZz
ZXQgPSAwOwpAQCAtMjc3NCw3ICsyNzg2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCogb2JqZWN0
Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3QqIHIKICAg
ICAgICAgb2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQoKSwgdHJ1
ZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGZvY3VzZWRPYmplY3Q7CisgICAgcmV0dXJuIGZpcnN0
VW5pZ25vcmVkUGFyZW50OwogfQogCiAjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRnJhbWVTZWxlY3Rpb25HdGsuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRnJhbWVTZWxlY3Rpb25HdGsuY3BwCmluZGV4
IGE2Mzc4NzAuLmFmMTRkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvZ3Rr
L0ZyYW1lU2VsZWN0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9G
cmFtZVNlbGVjdGlvbkd0ay5jcHAKQEAgLTg0LDggKzg0LDEwIEBAIHZvaWQgRnJhbWVTZWxlY3Rp
b246Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoKQogICAgIGlmICghbV9z
ZWxlY3Rpb24uc3RhcnQoKS5pc05vdE51bGwoKSB8fCAhbV9zZWxlY3Rpb24uZW5kKCkuaXNOb3RO
dWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIExvb2sgZm9yIHRoZSBhY2Nlc3NpYmls
aXR5IG9iamVjdCBmb3IgdGhlIEZyYW1lLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vz
c2liaWxpdHlPYmplY3QgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJv
b3RPYmplY3RGb3JGcmFtZShtX2ZyYW1lKTsKKyAgICBSZW5kZXJPYmplY3QqIGZvY3VzZWROb2Rl
ID0gbV9zZWxlY3Rpb24uZW5kKCkuY29udGFpbmVyTm9kZSgpLT5yZW5kZXJlcigpOworICAgIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3QgPSBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGZvY3VzZWROb2RlKTsKKworICAgIC8v
IE5lZWQgdG8gY2hlY2sgdGhpcyBhcyBnZXRPckNyZWF0ZSBjb3VsZCByZXR1cm4gMC4KICAgICBp
ZiAoIWFjY2Vzc2liaWxpdHlPYmplY3QpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9n
CmluZGV4IDA4YmI4NDkuLjA5OTU2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZ3RrL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOSBA
QAorMjAxMi0wMS0yMSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxpYS5jb20+
CisKKyAgICAgICAgW0dUS10gQVRLIHRleHQtY2FyZXQtbW92ZWQgYW5kIHRleHQtc2VsZWN0aW9u
LWNoYW5nZWQgZXZlbnRzIG5vdCBiZWluZyBlbWl0dGVkCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYXJldCBicm93c2luZyByZWxhdGVkIHVu
aXQgdGVzdHMgdG8gY2hlY2sgZW1pc3Npb25zIG9mCisgICAgICAgICd0ZXh0LWNhcmV0LW1vdmVk
JyBhbmQgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZWQnIHNpZ25hbHMuCisKKyAgICAgICAgKiB0ZXN0
cy90ZXN0YXRrLmM6CisgICAgICAgICh0ZXh0Q2FyZXRNb3ZlZENhbGxiYWNrKTogTmV3IGNhbGxi
YWNrIGZvciAndGV4dC1jYXJldC1tb3ZlZCcuCisgICAgICAgICh0ZXN0V2Via2l0QXRrQ2FyZXRP
ZmZzZXRzKTogQ2hlY2sgZW1pc3Npb25zIG9mICd0ZXh0LWNhcmV0LW1vdmVkJy4KKyAgICAgICAg
KHRleHRTZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2spOiBOZXcgY2FsbGJhY2sgZm9yICd0ZXh0LXNl
bGVjdGlvbi1jaGFuZ2VkJy4KKyAgICAgICAgKHRlc3RXZWJraXRBdGtUZXh0U2VsZWN0aW9ucyk6
IENoZWNrIGVtaXNzaW9ucyBvZiAndGV4dC1zZWxlY3Rpb24tY2hhbmdlZCcuCisKIDIwMTItMDEt
MTggIEV2YW4gTmVtZXJzb24gIDxldmFuQGNvZXVzLWdyb3VwLmNvbT4KIAogICAgICAgICBbR1RL
XSBXZWJLaXQtMy4wLmdpciBkb2VzIG5vdCBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0IEMgaW5j
bHVkZXMgb3IgZXhwb3J0ZWQgcGFja2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZ3Rr
L3Rlc3RzL3Rlc3RhdGsuYyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsuYwppbmRl
eCBhMTE1NTJmLi5iNDhiNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90
ZXN0YXRrLmMKKysrIGIvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdGF0ay5jCkBAIC0yNTQs
NiArMjU0LDE3IEBAIHN0YXRpYyB2b2lkIHJ1bkdldFRleHRUZXN0cyhBdGtUZXh0KiB0ZXh0T2Jq
ZWN0KQogICAgIH0KIH0KIAorc3RhdGljIGdjaGFyKiB0ZXh0Q2FyZXRNb3ZlZFJlc3VsdCA9IDA7
CisKK3N0YXRpYyB2b2lkIHRleHRDYXJldE1vdmVkQ2FsbGJhY2soQXRrVGV4dCogdGV4dCwgZ2lu
dCBwb3MsIGdwb2ludGVyIGRhdGEpCit7CisgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQodGV4dCkp
OworCisgICAgZ19mcmVlKHRleHRDYXJldE1vdmVkUmVzdWx0KTsKKyAgICBBdGtSb2xlIHJvbGUg
PSBhdGtfb2JqZWN0X2dldF9yb2xlKEFUS19PQkpFQ1QodGV4dCkpOworICAgIHRleHRDYXJldE1v
dmVkUmVzdWx0ID0gZ19zdHJkdXBfcHJpbnRmKCJ8JXN8JWR8IiwgYXRrX3JvbGVfZ2V0X25hbWUo
cm9sZSksIHBvcyk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtDYXJldE9mZnNldHMo
KQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVcod2Via2l0
X3dlYl92aWV3X25ldygpKTsKQEAgLTI2Nyw2ICsyNzgsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Vi
a2l0QXRrQ2FyZXRPZmZzZXRzKCkKIAogICAgIEF0a09iamVjdCogaGVhZGVyID0gYXRrX29iamVj
dF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwogICAgIGdfYXNzZXJ0KEFUS19JU19U
RVhUKGhlYWRlcikpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoaGVhZGVyLCAidGV4dC1jYXJldC1t
b3ZlZCIsIEdfQ0FMTEJBQ0sodGV4dENhcmV0TW92ZWRDYWxsYmFjayksIDApOworCiAgICAgZ2No
YXIqIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChoZWFkZXIpLCAwLCAtMSk7CiAg
ICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCAiQSB0ZXh0IGhlYWRlciIpOwogICAgIGdfZnJl
ZSAodGV4dCk7CkBAIC0yNzYsOSArMjg5LDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtD
YXJldE9mZnNldHMoKQogICAgIGdfYXNzZXJ0X2NtcGludChyZXN1bHQsID09LCBUUlVFKTsKICAg
ICBnaW50IG9mZnNldCA9IGF0a190ZXh0X2dldF9jYXJldF9vZmZzZXQoQVRLX1RFWFQoaGVhZGVy
KSk7CiAgICAgZ19hc3NlcnRfY21waW50KG9mZnNldCwgPT0sIDUpOworICAgIGdfYXNzZXJ0X2Nt
cHN0cih0ZXh0Q2FyZXRNb3ZlZFJlc3VsdCwgPT0sICJ8aGVhZGluZ3w1fCIpOwogCiAgICAgQXRr
T2JqZWN0KiBwYXJhZ3JhcGggPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVj
dCwgMSk7CiAgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoKSk7CisgICAgZ19zaWdu
YWxfY29ubmVjdChwYXJhZ3JhcGgsICJ0ZXh0LWNhcmV0LW1vdmVkIiwgR19DQUxMQkFDSyh0ZXh0
Q2FyZXRNb3ZlZENhbGxiYWNrKSwgMCk7CisKICAgICB0ZXh0ID0gYXRrX3RleHRfZ2V0X3RleHQo
QVRLX1RFWFQocGFyYWdyYXBoKSwgMCwgLTEpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0LCA9
PSwgIkEgcGFyYWdyYXBoIHdpdGggYSBsaW5rIGluIHRoZSBtaWRkbGUiKTsKICAgICBnX2ZyZWUg
KHRleHQpOwpAQCAtMjg4LDE2ICszMDQsMzIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a0Nh
cmV0T2Zmc2V0cygpCiAgICAgZ19hc3NlcnRfY21waW50KHJlc3VsdCwgPT0sIFRSVUUpOwogICAg
IG9mZnNldCA9IGF0a190ZXh0X2dldF9jYXJldF9vZmZzZXQoQVRLX1RFWFQocGFyYWdyYXBoKSk7
CiAgICAgZ19hc3NlcnRfY21waW50KG9mZnNldCwgPT0sIDUpOworICAgIGdfYXNzZXJ0X2NtcHN0
cih0ZXh0Q2FyZXRNb3ZlZFJlc3VsdCwgPT0sICJ8cGFyYWdyYXBofDV8Iik7CiAKICAgICByZXN1
bHQgPSBhdGtfdGV4dF9zZXRfY2FyZXRfb2Zmc2V0KEFUS19URVhUKHBhcmFncmFwaCksIDIwKTsK
ICAgICBnX2Fzc2VydF9jbXBpbnQocmVzdWx0LCA9PSwgVFJVRSk7CiAgICAgb2Zmc2V0ID0gYXRr
X3RleHRfZ2V0X2NhcmV0X29mZnNldChBVEtfVEVYVChwYXJhZ3JhcGgpKTsKICAgICBnX2Fzc2Vy
dF9jbXBpbnQob2Zmc2V0LCA9PSwgMjApOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0Q2FyZXRN
b3ZlZFJlc3VsdCwgPT0sICJ8cGFyYWdyYXBofDIwfCIpOwogCiAgICAgcmVzdWx0ID0gYXRrX3Rl
eHRfc2V0X2NhcmV0X29mZnNldChBVEtfVEVYVChwYXJhZ3JhcGgpLCAzMCk7CiAgICAgZ19hc3Nl
cnRfY21waW50KHJlc3VsdCwgPT0sIFRSVUUpOwogICAgIG9mZnNldCA9IGF0a190ZXh0X2dldF9j
YXJldF9vZmZzZXQoQVRLX1RFWFQocGFyYWdyYXBoKSk7CiAgICAgZ19hc3NlcnRfY21waW50KG9m
ZnNldCwgPT0sIDMwKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGV4dENhcmV0TW92ZWRSZXN1bHQs
ID09LCAifHBhcmFncmFwaHwzMHwiKTsKKworICAgIEF0a09iamVjdCogbGluayA9IGF0a19vYmpl
Y3RfcmVmX2FjY2Vzc2libGVfY2hpbGQocGFyYWdyYXBoLCAwKTsKKyAgICBnX2Fzc2VydChBVEtf
SVNfVEVYVChsaW5rKSk7CisgICAgdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19URVhUKGxp
bmspLCAwLCAtMSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCAid2l0aCBhIGxpbmsi
KTsKKyAgICBnX2ZyZWUgKHRleHQpOworCisgICAgcmVzdWx0ID0gYXRrX3RleHRfc2V0X2NhcmV0
X29mZnNldChBVEtfVEVYVChsaW5rKSwgNSk7CisgICAgZ19hc3NlcnRfY21waW50KHJlc3VsdCwg
PT0sIFRSVUUpOworICAgIG9mZnNldCA9IGF0a190ZXh0X2dldF9jYXJldF9vZmZzZXQoQVRLX1RF
WFQobGluaykpOworICAgIGdfYXNzZXJ0X2NtcGludChvZmZzZXQsID09LCA1KTsKKyAgICAvKiBQ
b3NpdGlvbnMgaW5zaWRlIGxpbmtzIGFyZSByZXBvcnRlZCByZWxhdGl2ZSB0byB0aGUgcGFyYWdy
YXBoLiAqLworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0Q2FyZXRNb3ZlZFJlc3VsdCwgPT0sICJ8
cGFyYWdyYXBofDE3fCIpOwogCiAgICAgQXRrT2JqZWN0KiBsaXN0ID0gYXRrX29iamVjdF9yZWZf
YWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDIpOwogICAgIGdfYXNzZXJ0KEFUS19PQkpFQ1QobGlz
dCkpOwpAQCAtMzU1LDggKzM4NywxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrQ2FyZXRP
ZmZzZXRzKCkKICAgICBvZmZzZXQgPSBhdGtfdGV4dF9nZXRfY2FyZXRfb2Zmc2V0KEFUS19URVhU
KHRleHRFbnRyeSkpOwogICAgIGdfYXNzZXJ0X2NtcGludChvZmZzZXQsID09LCA1KTsKIAorICAg
IGdfZnJlZSh0ZXh0Q2FyZXRNb3ZlZFJlc3VsdCk7CisKICAgICBnX29iamVjdF91bnJlZihoZWFk
ZXIpOwogICAgIGdfb2JqZWN0X3VucmVmKHBhcmFncmFwaCk7CisgICAgZ19vYmplY3RfdW5yZWYo
bGluayk7CiAgICAgZ19vYmplY3RfdW5yZWYobGlzdCk7CiAgICAgZ19vYmplY3RfdW5yZWYobGlz
dEl0ZW0pOwogICAgIGdfb2JqZWN0X3VucmVmKHBhbmVsKTsKQEAgLTEwODcsNiArMTEyMiwyMCBA
QCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrVGV4dEF0dHJpYnV0ZXMoKQogICAgIGF0a19hdHRy
aWJ1dGVfc2V0X2ZyZWUoc2V0Myk7CiB9CiAKK3N0YXRpYyBnY2hhciogdGV4dFNlbGVjdGlvbkNo
YW5nZWRSZXN1bHQgPSAwOworCitzdGF0aWMgdm9pZCB0ZXh0U2VsZWN0aW9uQ2hhbmdlZENhbGxi
YWNrKEF0a1RleHQqIHRleHQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgZ19hc3NlcnQoQVRLX0lT
X1RFWFQodGV4dCkpOworCisgICAgZ19mcmVlKHRleHRTZWxlY3Rpb25DaGFuZ2VkUmVzdWx0KTsK
KyAgICBBdGtSb2xlIHJvbGUgPSBhdGtfb2JqZWN0X2dldF9yb2xlKEFUS19PQkpFQ1QodGV4dCkp
OworICAgIGludCBzdGFydE9mZnNldCA9IDA7CisgICAgaW50IGVuZE9mZnNldCA9IDA7CisgICAg
YXRrX3RleHRfZ2V0X3NlbGVjdGlvbihBVEtfVEVYVCh0ZXh0KSwgMCwgJnN0YXJ0T2Zmc2V0LCAm
ZW5kT2Zmc2V0KTsKKyAgICB0ZXh0U2VsZWN0aW9uQ2hhbmdlZFJlc3VsdCA9IGdfc3RyZHVwX3By
aW50ZigifCVzfCVkfCVkfCIsIGF0a19yb2xlX2dldF9uYW1lKHJvbGUpLCBzdGFydE9mZnNldCwg
ZW5kT2Zmc2V0KTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25z
KCkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVXKHdlYmtp
dF93ZWJfdmlld19uZXcoKSk7CkBAIC0xMTAwLDkgKzExNDksMTEgQEAgc3RhdGljIHZvaWQgdGVz
dFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKCkKIAogICAgIEF0a1RleHQqIHBhcmFncmFwaDEgPSBB
VEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCkpOwogICAg
IGdfYXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFwaDEpKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0
KHBhcmFncmFwaDEsICJ0ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkIiwgR19DQUxMQkFDSyh0ZXh0U2Vs
ZWN0aW9uQ2hhbmdlZENhbGxiYWNrKSwgMCk7CiAKICAgICBBdGtUZXh0KiBwYXJhZ3JhcGgyID0g
QVRLX1RFWFQoYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDEpKTsKICAg
ICBnX2Fzc2VydChBVEtfSVNfVEVYVChwYXJhZ3JhcGgyKSk7CisgICAgZ19zaWduYWxfY29ubmVj
dChwYXJhZ3JhcGgyLCAidGV4dC1zZWxlY3Rpb24tY2hhbmdlZCIsIEdfQ0FMTEJBQ0sodGV4dFNl
bGVjdGlvbkNoYW5nZWRDYWxsYmFjayksIDApOwogCiAgICAgQXRrVGV4dCogbGluayA9IEFUS19U
RVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoQVRLX09CSkVDVChwYXJhZ3JhcGgy
KSwgMCkpOwogICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKGxpbmspKTsKQEAgLTExMzgsMTEgKzEx
ODksMTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKCkKICAgICBy
ZXN1bHQgPSBhdGtfdGV4dF9zZXRfc2VsZWN0aW9uKHBhcmFncmFwaDEsIDAsIDUsIDI1KTsKICAg
ICBnX2Fzc2VydChyZXN1bHQpOwogICAgIGdfYXNzZXJ0X2NtcGludChhdGtfdGV4dF9nZXRfbl9z
ZWxlY3Rpb25zKHBhcmFncmFwaDEpLCA9PSwgMSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHRT
ZWxlY3Rpb25DaGFuZ2VkUmVzdWx0LCA9PSwgInxwYXJhZ3JhcGh8NXwyNXwiKTsKICAgICBzZWxl
Y3RlZFRleHQgPSBhdGtfdGV4dF9nZXRfc2VsZWN0aW9uKHBhcmFncmFwaDEsIDAsICZzdGFydE9m
ZnNldCwgJmVuZE9mZnNldCk7CiAgICAgZ19hc3NlcnRfY21waW50KHN0YXJ0T2Zmc2V0LCA9PSwg
NSk7CiAgICAgZ19hc3NlcnRfY21waW50KGVuZE9mZnNldCwgPT0sIDI1KTsKICAgICBnX2Fzc2Vy
dF9jbXBzdHIoc2VsZWN0ZWRUZXh0LCA9PSwgImFncmFwaCB3aXRoIHBsYWluIHRlIik7CiAgICAg
Z19mcmVlIChzZWxlY3RlZFRleHQpOworCiAgICAgLyogVHJ5IHJlbW92aW5nIHRoZSBzZWxlY3Rp
b24gZnJvbSBvdGhlciBBdGtUZXh0IG9iamVjdCAoc2hvdWxkIGZhaWwpLiAqLwogICAgIHJlc3Vs
dCA9IGF0a190ZXh0X3JlbW92ZV9zZWxlY3Rpb24ocGFyYWdyYXBoMiwgMCk7CiAgICAgZ19hc3Nl
cnQoIXJlc3VsdCk7CkBAIC0xMTg1LDYgKzEyMzgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0
QXRrVGV4dFNlbGVjdGlvbnMoKQogICAgIHJlc3VsdCA9IGF0a190ZXh0X3NldF9zZWxlY3Rpb24o
cGFyYWdyYXBoMiwgMCwgMjcsIDM3KTsKICAgICBnX2Fzc2VydChyZXN1bHQpOwogICAgIGdfYXNz
ZXJ0X2NtcGludChhdGtfdGV4dF9nZXRfbl9zZWxlY3Rpb25zKHBhcmFncmFwaDIpLCA9PSwgMSk7
CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHRTZWxlY3Rpb25DaGFuZ2VkUmVzdWx0LCA9PSwgInxw
YXJhZ3JhcGh8Mjd8Mzd8Iik7CiAgICAgc2VsZWN0ZWRUZXh0ID0gYXRrX3RleHRfZ2V0X3NlbGVj
dGlvbihwYXJhZ3JhcGgyLCAwLCAmc3RhcnRPZmZzZXQsICZlbmRPZmZzZXQpOwogICAgIGdfYXNz
ZXJ0X2NtcGludChzdGFydE9mZnNldCwgPT0sIDI3KTsKICAgICBnX2Fzc2VydF9jbXBpbnQoZW5k
T2Zmc2V0LCA9PSwgMzcpOwpAQCAtMTIzNCw2ICsxMjg4LDggQEAgc3RhdGljIHZvaWQgdGVzdFdl
YmtpdEF0a1RleHRTZWxlY3Rpb25zKCkKICAgICBnX2Fzc2VydF9jbXBzdHIoc2VsZWN0ZWRUZXh0
LCA9PSwgIkEgbGlzdCIpOwogICAgIGdfZnJlZSAoc2VsZWN0ZWRUZXh0KTsKIAorICAgIGdfZnJl
ZSh0ZXh0U2VsZWN0aW9uQ2hhbmdlZFJlc3VsdCk7CisKICAgICBnX29iamVjdF91bnJlZihwYXJh
Z3JhcGgxKTsKICAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgyKTsKICAgICBnX29iamVjdF91
bnJlZihsaXN0KTsKLS0gCjEuNy43LjUKCg==
</data>
<flag name="commit-queue"
          id="124514"
          type_id="3"
          status="-"
          setter="webkit-ews"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>123448</attachid>
            <date>2012-01-21 07:50:43 -0800</date>
            <delta_ts>2012-01-21 09:16:53 -0800</delta_ts>
            <desc>Patch proposal</desc>
            <filename>0001-GTK-ATK-text-caret-moved-and-text-selection-changed-.patch</filename>
            <type>text/plain</type>
            <size>17815</size>
            <attacher name="Mario Sanchez Prada">mario</attacher>
            
              <data encoding="base64">RnJvbSAxYjg3ZDdiYjU4YTU4MzAwMGUyNzMxYjhhMTZjZTAyNGQ2NTk4MTYwIE1vbiBTZXAgMTcg
MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXJpbyBTYW5jaGV6IFByYWRhIDxtc2FuY2hlekBpZ2FsaWEu
Y29tPgpEYXRlOiBTYXQsIDIxIEphbiAyMDEyIDE2OjQyOjEzICswMTAwClN1YmplY3Q6IFtQQVRD
SF0gW0dUS10gQVRLIHRleHQtY2FyZXQtbW92ZWQgYW5kIHRleHQtc2VsZWN0aW9uLWNoYW5nZWQg
ZXZlbnRzCiBub3QgYmVpbmcgZW1pdHRlZAogaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTc2MDY5CgpSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KClNvdXJjZS9XZWJD
b3JlOgoKRml4IGJ1ZyBpbnRyb2R1Y2VkIHdpdGggcGF0Y2ggZm9yIEJ1ZyA3MjgzMC4KCiogYWNj
ZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcDoKKFdlYkNvcmU6OkFjY2Vzc2liaWxp
dHlPYmplY3Q6OmlzRGVzY2VuZGFudE9mT2JqZWN0KTogTmV3IGZ1bmN0aW9uLAp0byBjaGVjayBp
ZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBpcyBhIGRlc2NlbmRhbnQgb2Ygb3RoZXIgb2JqZWN0
LgooV2ViQ29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBbmNlc3Rvck9mT2JqZWN0KTogTmV3
IGZ1bmN0aW9uLAp0byBjaGVjayBpZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBpcyBhbiBhbmNl
c3RvciBvZiBvdGhlciBvYmplY3QuCiogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0
Lmg6CgoqIGFjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNw
cDoKKHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NhcmV0X29mZnNldCk6IE1ha2Ugc3VyZSB0
byBwYXNzIHRoZQpyaWdodCByZWZlcmVuY2Ugb2JqZWN0IHRvIG9iamVjdEZvY3VzZWRBbmRDYXJl
dE9mZnNldFVuaWdub3JlZC4KKG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZCk6
IFVzZSBwb3NpdGlvbkJlZm9yZU5vZGUKaW5zdGVhZCBvZiBmaXJzdFBvc2l0aW9uSW5Ob2RlIGZv
ciBjYWxjdWxhdGluZyB0aGUgYmVnaW5pbmcgb2YgdGhlCnJhbmdlIHVzZWQgdG8gY2FsY3VsYXRl
IHRoZSBvZmZzZXRzLiBFbnN1cmUgdGhhdCB0aGUgcmVmZXJlbmNlCm9iamVjdCBpcyBuZXZlciBh
IGRlc2NlbmRhbnQgb2YgdGhlIGFjdHVhbCBvYmplY3QgYmVpbmcgcmV0dXJuZWQuCgoqIGVkaXRp
bmcvZ3RrL0ZyYW1lU2VsZWN0aW9uR3RrLmNwcDoKKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpu
b3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKToKUGFzcyB0aGUgcmlnaHQgYWNj
ZXNzaWJpbGl0eSBvYmplY3QgYXNzb2NpYXRlZCB3aXRoIHRoZSBjdXJyZW50CnNlbGVjdGlvbiB0
byBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQuCgpTb3VyY2UvV2ViS2l0L2d0
azoKClVwZGF0ZSBjYXJldCBicm93c2luZyByZWxhdGVkIHVuaXQgdGVzdHMgdG8gY2hlY2sgZW1p
c3Npb25zIG9mCid0ZXh0LWNhcmV0LW1vdmVkJyBhbmQgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZWQn
IHNpZ25hbHMuCgoqIHRlc3RzL3Rlc3RhdGsuYzoKKHRleHRDYXJldE1vdmVkQ2FsbGJhY2spOiBO
ZXcgY2FsbGJhY2sgZm9yICd0ZXh0LWNhcmV0LW1vdmVkJy4KKHRlc3RXZWJraXRBdGtDYXJldE9m
ZnNldHMpOiBDaGVjayBlbWlzc2lvbnMgb2YgJ3RleHQtY2FyZXQtbW92ZWQnLgoodGV4dFNlbGVj
dGlvbkNoYW5nZWRDYWxsYmFjayk6IE5ldyBjYWxsYmFjayBmb3IgJ3RleHQtc2VsZWN0aW9uLWNo
YW5nZWQnLgoodGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKTogQ2hlY2sgZW1pc3Npb25zIG9m
ICd0ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkJy4KLS0tCiBTb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cg
ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMjkgKysrKysrKysrKwogLi4uL1dlYkNvcmUv
YWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCAgfCAgIDIwICsrKysrKysKIFNv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oIHwgICAgMiAr
CiAuLi4vZ3RrL0FjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyQXRrLmNwcCAgICAgICAgICB8ICAg
MzQgKysrKysrKystLS0tCiBTb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2d0ay9GcmFtZVNlbGVjdGlv
bkd0ay5jcHAgICB8ICAgIDYgKystCiBTb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cgICAgICAg
ICAgICAgICAgICAgICAgICB8ICAgMTYgKysrKysrCiBTb3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90
ZXN0YXRrLmMgICAgICAgICAgICAgICAgICB8ICAgNTYgKysrKysrKysrKysrKysrKysrKysKIDcg
ZmlsZXMgY2hhbmdlZCwgMTUwIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQoKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBhYmEwZDc5Li4xYmU3YTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFu
Z2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzIgQEAKKzIw
MTItMDEtMjEgIE1hcmlvIFNhbmNoZXogUHJhZGEgIDxtc2FuY2hlekBpZ2FsaWEuY29tPgorCisg
ICAgICAgIFtHVEtdIEFUSyB0ZXh0LWNhcmV0LW1vdmVkIGFuZCB0ZXh0LXNlbGVjdGlvbi1jaGFu
Z2VkIGV2ZW50cyBub3QgYmVpbmcgZW1pdHRlZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggYnVnIGludHJvZHVjZWQgd2l0aCBwYXRjaCBmb3IgQnVn
IDcyODMwLgorCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmlzRGVzY2VuZGFudE9m
T2JqZWN0KTogTmV3IGZ1bmN0aW9uLAorICAgICAgICB0byBjaGVjayBpZiBhbiBhY2Nlc3NpYmls
aXR5IG9iamVjdCBpcyBhIGRlc2NlbmRhbnQgb2Ygb3RoZXIgb2JqZWN0LgorICAgICAgICAoV2Vi
Q29yZTo6QWNjZXNzaWJpbGl0eU9iamVjdDo6aXNBbmNlc3Rvck9mT2JqZWN0KTogTmV3IGZ1bmN0
aW9uLAorICAgICAgICB0byBjaGVjayBpZiBhbiBhY2Nlc3NpYmlsaXR5IG9iamVjdCBpcyBhbiBh
bmNlc3RvciBvZiBvdGhlciBvYmplY3QuCisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3Np
YmlsaXR5T2JqZWN0Lmg6CisKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmls
aXR5T2JqZWN0V3JhcHBlckF0ay5jcHA6CisgICAgICAgICh3ZWJraXRfYWNjZXNzaWJsZV90ZXh0
X2dldF9jYXJldF9vZmZzZXQpOiBNYWtlIHN1cmUgdG8gcGFzcyB0aGUKKyAgICAgICAgcmlnaHQg
cmVmZXJlbmNlIG9iamVjdCB0byBvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQu
CisgICAgICAgIChvYmplY3RGb2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQpOiBVc2UgcG9z
aXRpb25CZWZvcmVOb2RlCisgICAgICAgIGluc3RlYWQgb2YgZmlyc3RQb3NpdGlvbkluTm9kZSBm
b3IgY2FsY3VsYXRpbmcgdGhlIGJlZ2luaW5nIG9mIHRoZQorICAgICAgICByYW5nZSB1c2VkIHRv
IGNhbGN1bGF0ZSB0aGUgb2Zmc2V0cy4gRW5zdXJlIHRoYXQgdGhlIHJlZmVyZW5jZQorICAgICAg
ICBvYmplY3QgaXMgbmV2ZXIgYSBkZXNjZW5kYW50IG9mIHRoZSBhY3R1YWwgb2JqZWN0IGJlaW5n
IHJldHVybmVkLgorCisgICAgICAgICogZWRpdGluZy9ndGsvRnJhbWVTZWxlY3Rpb25HdGsuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlG
b3JTZWxlY3Rpb25DaGFuZ2UpOgorICAgICAgICBQYXNzIHRoZSByaWdodCBhY2Nlc3NpYmlsaXR5
IG9iamVjdCBhc3NvY2lhdGVkIHdpdGggdGhlIGN1cnJlbnQKKyAgICAgICAgc2VsZWN0aW9uIHRv
IG9iamVjdEZvY3VzZWRBbmRDYXJldE9mZnNldFVuaWdub3JlZC4KKwogMjAxMi0wMS0yMSAgTmlr
b2xhcyBaaW1tZXJtYW5uICA8bnppbW1lcm1hbm5AcmltLmNvbT4KIAogICAgICAgICA8ZmVJbWFn
ZT4gaWdub3JlcyBwcmVzZXJ2ZUFzcGVjdFJhdGlvPSJub25lIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKaW5kZXggMWI4Y2Q5
OC4uYmJiYmZmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nl
c3NpYmlsaXR5T2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0Fj
Y2Vzc2liaWxpdHlPYmplY3QuY3BwCkBAIC0xMjk0LDYgKzEyOTQsMjYgQEAgQWNjZXNzaWJpbGl0
eU9yaWVudGF0aW9uIEFjY2Vzc2liaWxpdHlPYmplY3Q6Om9yaWVudGF0aW9uKCkgY29uc3QKICAg
ICByZXR1cm4gQWNjZXNzaWJpbGl0eU9yaWVudGF0aW9uSG9yaXpvbnRhbDsKIH0gICAgCiAKK2Jv
b2wgQWNjZXNzaWJpbGl0eU9iamVjdDo6aXNEZXNjZW5kYW50T2ZPYmplY3QoY29uc3QgQWNjZXNz
aWJpbGl0eU9iamVjdCogYXhPYmplY3QpIGNvbnN0Cit7CisgICAgaWYgKCFheE9iamVjdCB8fCAh
YXhPYmplY3QtPmhhc0NoaWxkcmVuKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGZv
ciAoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogcGFyZW50ID0gcGFyZW50T2JqZWN0KCk7IHBh
cmVudDsgcGFyZW50ID0gcGFyZW50LT5wYXJlbnRPYmplY3QoKSkgeworICAgICAgICBpZiAocGFy
ZW50ID09IGF4T2JqZWN0KQorICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorICAgIHJl
dHVybiBmYWxzZTsKK30KKworYm9vbCBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojppc0FuY2VzdG9yT2ZP
YmplY3QoY29uc3QgQWNjZXNzaWJpbGl0eU9iamVjdCogYXhPYmplY3QpIGNvbnN0Cit7CisgICAg
aWYgKCFheE9iamVjdCkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgcmV0dXJuIHRoaXMg
PT0gYXhPYmplY3QgfHwgYXhPYmplY3QtPmlzRGVzY2VuZGFudE9mT2JqZWN0KHRoaXMpOworfQor
CiB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBBY2Nlc3NpYmlsaXR5Um9sZSwgQ2FzZUZvbGRpbmdI
YXNoPiBBUklBUm9sZU1hcDsKIAogc3RydWN0IFJvbGVFbnRyeSB7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlPYmplY3QuaCBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5oCmluZGV4IGJkNTc0MWMu
LmM0MTdjYzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNz
aWJpbGl0eU9iamVjdC5oCkBAIC01NjQsNiArNTY0LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwg
QWNjZXNzaWJpbGl0eU9iamVjdCogYWN0aXZlRGVzY2VuZGFudCgpIGNvbnN0IHsgcmV0dXJuIDA7
IH0gICAgCiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFjdGl2ZURlc2NlbmRhbnRDaGFuZ2VkKCkg
eyB9CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUFyaWFFeHBhbmRlZENoYW5nZWQoKSB7IH0KKyAg
ICBib29sIGlzRGVzY2VuZGFudE9mT2JqZWN0KGNvbnN0IEFjY2Vzc2liaWxpdHlPYmplY3QqKSBj
b25zdDsKKyAgICBib29sIGlzQW5jZXN0b3JPZk9iamVjdChjb25zdCBBY2Nlc3NpYmlsaXR5T2Jq
ZWN0KikgY29uc3Q7CiAgICAgCiAgICAgc3RhdGljIEFjY2Vzc2liaWxpdHlSb2xlIGFyaWFSb2xl
VG9XZWJDb3JlUm9sZShjb25zdCBTdHJpbmcmKTsKICAgICBjb25zdCBBdG9taWNTdHJpbmcmIGdl
dEF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJikgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlckF0
ay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L2d0ay9BY2Nlc3NpYmlsaXR5T2Jq
ZWN0V3JhcHBlckF0ay5jcHAKaW5kZXggZWFkYWNhZi4uZmU5ZjAwNyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9ndGsvQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJB
dGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvZ3RrL0FjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVyQXRrLmNwcApAQCAtMTM0NSw2ICsxMzQ1LDEyIEBAIHN0YXRpYyBnaW50
IHdlYmtpdF9hY2Nlc3NpYmxlX3RleHRfZ2V0X2NhcmV0X29mZnNldChBdGtUZXh0KiB0ZXh0KQog
ICAgIGlmICghY29yZU9iamVjdC0+aXNBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0KCkpCiAgICAg
ICAgIHJldHVybiAwOwogCisgICAgLy8gV2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgcGFzcyBhIHZh
bGlkIG9iamVjdCBhcyByZWZlcmVuY2UuCisgICAgaWYgKGNvcmVPYmplY3QtPmFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSkKKyAgICAgICAgY29yZU9iamVjdCA9IGNvcmVPYmplY3QtPnBhcmVudE9i
amVjdFVuaWdub3JlZCgpOworICAgIGlmICghY29yZU9iamVjdCkKKyAgICAgICAgcmV0dXJuIDA7
CisKICAgICBpbnQgb2Zmc2V0OwogICAgIGlmICghb2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0
VW5pZ25vcmVkKGNvcmVPYmplY3QsIG9mZnNldCkpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMjcz
NiwxOSArMjc0MiwyNSBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RGb2N1c2VkQW5kQ2Fy
ZXRPZmZzZXRVbmlnbm9yZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogcgogICAgICAgICByZXR1cm4g
MDsKIAogICAgIC8vIExvb2sgZm9yIHRoZSBhY3R1YWwgKG5vdCBpZ25vcmluZyBhY2Nlc3NpYmls
aXR5KSBzZWxlY3RlZCBvYmplY3QuCi0gICAgaWYgKGZvY3VzZWRPYmplY3QtPmFjY2Vzc2liaWxp
dHlJc0lnbm9yZWQoKSkKLSAgICAgICAgZm9jdXNlZE9iamVjdCA9IGZvY3VzZWRPYmplY3QtPnBh
cmVudE9iamVjdFVuaWdub3JlZCgpOwotICAgIGlmICghZm9jdXNlZE9iamVjdCkKKyAgICBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBmaXJzdFVuaWdub3JlZFBhcmVudCA9IGZvY3VzZWRPYmplY3Q7Cisg
ICAgaWYgKGZpcnN0VW5pZ25vcmVkUGFyZW50LT5hY2Nlc3NpYmlsaXR5SXNJZ25vcmVkKCkpCisg
ICAgICAgIGZpcnN0VW5pZ25vcmVkUGFyZW50ID0gZmlyc3RVbmlnbm9yZWRQYXJlbnQtPnBhcmVu
dE9iamVjdFVuaWdub3JlZCgpOworICAgIGlmICghZmlyc3RVbmlnbm9yZWRQYXJlbnQpCiAgICAg
ICAgIHJldHVybiAwOwogCiAgICAgLy8gRG9uJ3QgaWdub3JlIGxpbmtzIGlmIHRoZSBvZmZzZXQg
aXMgYmVpbmcgcmVxdWVzdGVkIGZvciBhIGxpbmsuCi0gICAgaWYgKCFyZWZlcmVuY2VPYmplY3Qt
PmlzTGluaygpICYmIGZvY3VzZWRPYmplY3QtPmlzTGluaygpKQotICAgICAgICBmb2N1c2VkT2Jq
ZWN0ID0gZm9jdXNlZE9iamVjdC0+cGFyZW50T2JqZWN0VW5pZ25vcmVkKCk7Ci0gICAgaWYgKCFm
b2N1c2VkT2JqZWN0KQorICAgIGlmICghcmVmZXJlbmNlT2JqZWN0LT5pc0xpbmsoKSAmJiBmaXJz
dFVuaWdub3JlZFBhcmVudC0+aXNMaW5rKCkpCisgICAgICAgIGZpcnN0VW5pZ25vcmVkUGFyZW50
ID0gZmlyc3RVbmlnbm9yZWRQYXJlbnQtPnBhcmVudE9iamVjdFVuaWdub3JlZCgpOworICAgIGlm
ICghZmlyc3RVbmlnbm9yZWRQYXJlbnQpCiAgICAgICAgIHJldHVybiAwOwogCisgICAgLy8gVGhl
IHJlZmVyZW5jZSBvYmplY3QgbXVzdCBlaXRoZXIgY29pbmNpZGUgd2l0aCB0aGUgZm9jdXNlZAor
ICAgIC8vIG9iamVjdCBiZWluZyBjb25zaWRlcmVkLCBvciBiZSBhIGRlc2NlbmRhbnQgb2YgaXQu
CisgICAgaWYgKHJlZmVyZW5jZU9iamVjdC0+aXNEZXNjZW5kYW50T2ZPYmplY3QoZmlyc3RVbmln
bm9yZWRQYXJlbnQpKQorICAgICAgICByZWZlcmVuY2VPYmplY3QgPSBmaXJzdFVuaWdub3JlZFBh
cmVudDsKKwogICAgIE5vZGUqIHN0YXJ0Tm9kZSA9IDA7Ci0gICAgaWYgKGZvY3VzZWRPYmplY3Qg
IT0gcmVmZXJlbmNlT2JqZWN0IHx8IGZvY3VzZWRPYmplY3QtPmlzVGV4dENvbnRyb2woKSkgewor
ICAgIGlmIChmaXJzdFVuaWdub3JlZFBhcmVudCAhPSByZWZlcmVuY2VPYmplY3QgfHwgZmlyc3RV
bmlnbm9yZWRQYXJlbnQtPmlzVGV4dENvbnRyb2woKSkgewogICAgICAgICAvLyBXZSBuZWVkIHRv
IHVzZSB0aGUgZmlyc3QgY2hpbGQncyBub2RlIG9mIHRoZSByZWZlcmVuY2UKICAgICAgICAgLy8g
b2JqZWN0IGFzIHRoZSBzdGFydCBwb2ludCB0byBjYWxjdWxhdGUgdGhlIGNhcmV0IG9mZnNldAog
ICAgICAgICAvLyBiZWNhdXNlIHdlIHdhbnQgaXQgdG8gYmUgcmVsYXRpdmUgdG8gdGhlIG9iamVj
dCBvZgpAQCAtMjc1OSwxMCArMjc3MSwxMCBAQCBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3RG
b2N1c2VkQW5kQ2FyZXRPZmZzZXRVbmlnbm9yZWQoQWNjZXNzaWJpbGl0eU9iamVjdCogcgogICAg
ICAgICAgICAgc3RhcnROb2RlID0gYXhGaXJzdENoaWxkLT5ub2RlKCk7CiAgICAgfQogICAgIGlm
ICghc3RhcnROb2RlKQotICAgICAgICBzdGFydE5vZGUgPSBmb2N1c2VkT2JqZWN0LT5ub2RlKCk7
CisgICAgICAgIHN0YXJ0Tm9kZSA9IGZpcnN0VW5pZ25vcmVkUGFyZW50LT5ub2RlKCk7CiAKLSAg
ICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihmaXJzdFBv
c2l0aW9uSW5Ob2RlKHN0YXJ0Tm9kZSksIERPV05TVFJFQU0pOwotICAgIFZpc2libGVQb3NpdGlv
biBlbmRQb3NpdGlvbiA9IGZvY3VzZWRPYmplY3QtPnNlbGVjdGlvbigpLnZpc2libGVFbmQoKTsK
KyAgICBWaXNpYmxlUG9zaXRpb24gc3RhcnRQb3NpdGlvbiA9IFZpc2libGVQb3NpdGlvbihwb3Np
dGlvbkJlZm9yZU5vZGUoc3RhcnROb2RlKSwgRE9XTlNUUkVBTSk7CisgICAgVmlzaWJsZVBvc2l0
aW9uIGVuZFBvc2l0aW9uID0gZmlyc3RVbmlnbm9yZWRQYXJlbnQtPnNlbGVjdGlvbigpLnZpc2li
bGVFbmQoKTsKIAogICAgIGlmIChzdGFydFBvc2l0aW9uID09IGVuZFBvc2l0aW9uKQogICAgICAg
ICBvZmZzZXQgPSAwOwpAQCAtMjc3NCw3ICsyNzg2LDcgQEAgQWNjZXNzaWJpbGl0eU9iamVjdCog
b2JqZWN0Rm9jdXNlZEFuZENhcmV0T2Zmc2V0VW5pZ25vcmVkKEFjY2Vzc2liaWxpdHlPYmplY3Qq
IHIKICAgICAgICAgb2Zmc2V0ID0gVGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aChyYW5nZS5nZXQo
KSwgdHJ1ZSk7CiAgICAgfQogCi0gICAgcmV0dXJuIGZvY3VzZWRPYmplY3Q7CisgICAgcmV0dXJu
IGZpcnN0VW5pZ25vcmVkUGFyZW50OwogfQogCiAjZW5kaWYgLy8gSEFWRShBQ0NFU1NJQklMSVRZ
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRnJhbWVTZWxlY3Rpb25H
dGsuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9ndGsvRnJhbWVTZWxlY3Rpb25HdGsuY3Bw
CmluZGV4IGE2Mzc4NzAuLmFmMTRkMzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRp
bmcvZ3RrL0ZyYW1lU2VsZWN0aW9uR3RrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5n
L2d0ay9GcmFtZVNlbGVjdGlvbkd0ay5jcHAKQEAgLTg0LDggKzg0LDEwIEBAIHZvaWQgRnJhbWVT
ZWxlY3Rpb246Om5vdGlmeUFjY2Vzc2liaWxpdHlGb3JTZWxlY3Rpb25DaGFuZ2UoKQogICAgIGlm
ICghbV9zZWxlY3Rpb24uc3RhcnQoKS5pc05vdE51bGwoKSB8fCAhbV9zZWxlY3Rpb24uZW5kKCku
aXNOb3ROdWxsKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIC8vIExvb2sgZm9yIHRoZSBhY2Nl
c3NpYmlsaXR5IG9iamVjdCBmb3IgdGhlIEZyYW1lLgotICAgIEFjY2Vzc2liaWxpdHlPYmplY3Qq
IGFjY2Vzc2liaWxpdHlPYmplY3QgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hl
KCktPnJvb3RPYmplY3RGb3JGcmFtZShtX2ZyYW1lKTsKKyAgICBSZW5kZXJPYmplY3QqIGZvY3Vz
ZWROb2RlID0gbV9zZWxlY3Rpb24uZW5kKCkuY29udGFpbmVyTm9kZSgpLT5yZW5kZXJlcigpOwor
ICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGFjY2Vzc2liaWxpdHlPYmplY3QgPSBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPmdldE9yQ3JlYXRlKGZvY3VzZWROb2RlKTsKKwor
ICAgIC8vIE5lZWQgdG8gY2hlY2sgdGhpcyBhcyBnZXRPckNyZWF0ZSBjb3VsZCByZXR1cm4gMC4K
ICAgICBpZiAoIWFjY2Vzc2liaWxpdHlPYmplY3QpCiAgICAgICAgIHJldHVybjsKIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9ndGsvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9ndGsvQ2hh
bmdlTG9nCmluZGV4IDA4YmI4NDkuLjA5OTU2MDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Z3RrL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2d0ay9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxOSBAQAorMjAxMi0wMS0yMSAgTWFyaW8gU2FuY2hleiBQcmFkYSAgPG1zYW5jaGV6QGlnYWxp
YS5jb20+CisKKyAgICAgICAgW0dUS10gQVRLIHRleHQtY2FyZXQtbW92ZWQgYW5kIHRleHQtc2Vs
ZWN0aW9uLWNoYW5nZWQgZXZlbnRzIG5vdCBiZWluZyBlbWl0dGVkCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2OQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFVwZGF0ZSBjYXJldCBicm93c2luZyByZWxh
dGVkIHVuaXQgdGVzdHMgdG8gY2hlY2sgZW1pc3Npb25zIG9mCisgICAgICAgICd0ZXh0LWNhcmV0
LW1vdmVkJyBhbmQgJ3RleHQtc2VsZWN0aW9uLWNoYW5nZWQnIHNpZ25hbHMuCisKKyAgICAgICAg
KiB0ZXN0cy90ZXN0YXRrLmM6CisgICAgICAgICh0ZXh0Q2FyZXRNb3ZlZENhbGxiYWNrKTogTmV3
IGNhbGxiYWNrIGZvciAndGV4dC1jYXJldC1tb3ZlZCcuCisgICAgICAgICh0ZXN0V2Via2l0QXRr
Q2FyZXRPZmZzZXRzKTogQ2hlY2sgZW1pc3Npb25zIG9mICd0ZXh0LWNhcmV0LW1vdmVkJy4KKyAg
ICAgICAgKHRleHRTZWxlY3Rpb25DaGFuZ2VkQ2FsbGJhY2spOiBOZXcgY2FsbGJhY2sgZm9yICd0
ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkJy4KKyAgICAgICAgKHRlc3RXZWJraXRBdGtUZXh0U2VsZWN0
aW9ucyk6IENoZWNrIGVtaXNzaW9ucyBvZiAndGV4dC1zZWxlY3Rpb24tY2hhbmdlZCcuCisKIDIw
MTItMDEtMTggIEV2YW4gTmVtZXJzb24gIDxldmFuQGNvZXVzLWdyb3VwLmNvbT4KIAogICAgICAg
ICBbR1RLXSBXZWJLaXQtMy4wLmdpciBkb2VzIG5vdCBpbmNsdWRlIGluZm9ybWF0aW9uIGFib3V0
IEMgaW5jbHVkZXMgb3IgZXhwb3J0ZWQgcGFja2FnZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZ3RrL3Rlc3RzL3Rlc3RhdGsuYyBiL1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RhdGsu
YwppbmRleCBhMTE1NTJmLi5iNDhiNTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2d0ay90
ZXN0cy90ZXN0YXRrLmMKKysrIGIvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdGF0ay5jCkBA
IC0yNTQsNiArMjU0LDE3IEBAIHN0YXRpYyB2b2lkIHJ1bkdldFRleHRUZXN0cyhBdGtUZXh0KiB0
ZXh0T2JqZWN0KQogICAgIH0KIH0KIAorc3RhdGljIGdjaGFyKiB0ZXh0Q2FyZXRNb3ZlZFJlc3Vs
dCA9IDA7CisKK3N0YXRpYyB2b2lkIHRleHRDYXJldE1vdmVkQ2FsbGJhY2soQXRrVGV4dCogdGV4
dCwgZ2ludCBwb3MsIGdwb2ludGVyIGRhdGEpCit7CisgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQo
dGV4dCkpOworCisgICAgZ19mcmVlKHRleHRDYXJldE1vdmVkUmVzdWx0KTsKKyAgICBBdGtSb2xl
IHJvbGUgPSBhdGtfb2JqZWN0X2dldF9yb2xlKEFUS19PQkpFQ1QodGV4dCkpOworICAgIHRleHRD
YXJldE1vdmVkUmVzdWx0ID0gZ19zdHJkdXBfcHJpbnRmKCJ8JXN8JWR8IiwgYXRrX3JvbGVfZ2V0
X25hbWUocm9sZSksIHBvcyk7Cit9CisKIHN0YXRpYyB2b2lkIHRlc3RXZWJraXRBdGtDYXJldE9m
ZnNldHMoKQogewogICAgIFdlYktpdFdlYlZpZXcqIHdlYlZpZXcgPSBXRUJLSVRfV0VCX1ZJRVco
d2Via2l0X3dlYl92aWV3X25ldygpKTsKQEAgLTI2Nyw2ICsyNzgsOCBAQCBzdGF0aWMgdm9pZCB0
ZXN0V2Via2l0QXRrQ2FyZXRPZmZzZXRzKCkKIAogICAgIEF0a09iamVjdCogaGVhZGVyID0gYXRr
X29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDApOwogICAgIGdfYXNzZXJ0KEFU
S19JU19URVhUKGhlYWRlcikpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoaGVhZGVyLCAidGV4dC1j
YXJldC1tb3ZlZCIsIEdfQ0FMTEJBQ0sodGV4dENhcmV0TW92ZWRDYWxsYmFjayksIDApOworCiAg
ICAgZ2NoYXIqIHRleHQgPSBhdGtfdGV4dF9nZXRfdGV4dChBVEtfVEVYVChoZWFkZXIpLCAwLCAt
MSk7CiAgICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCAiQSB0ZXh0IGhlYWRlciIpOwogICAg
IGdfZnJlZSAodGV4dCk7CkBAIC0yNzYsOSArMjg5LDEyIEBAIHN0YXRpYyB2b2lkIHRlc3RXZWJr
aXRBdGtDYXJldE9mZnNldHMoKQogICAgIGdfYXNzZXJ0X2NtcGludChyZXN1bHQsID09LCBUUlVF
KTsKICAgICBnaW50IG9mZnNldCA9IGF0a190ZXh0X2dldF9jYXJldF9vZmZzZXQoQVRLX1RFWFQo
aGVhZGVyKSk7CiAgICAgZ19hc3NlcnRfY21waW50KG9mZnNldCwgPT0sIDUpOworICAgIGdfYXNz
ZXJ0X2NtcHN0cih0ZXh0Q2FyZXRNb3ZlZFJlc3VsdCwgPT0sICJ8aGVhZGluZ3w1fCIpOwogCiAg
ICAgQXRrT2JqZWN0KiBwYXJhZ3JhcGggPSBhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxk
KG9iamVjdCwgMSk7CiAgICAgZ19hc3NlcnQoQVRLX0lTX1RFWFQocGFyYWdyYXBoKSk7CisgICAg
Z19zaWduYWxfY29ubmVjdChwYXJhZ3JhcGgsICJ0ZXh0LWNhcmV0LW1vdmVkIiwgR19DQUxMQkFD
Syh0ZXh0Q2FyZXRNb3ZlZENhbGxiYWNrKSwgMCk7CisKICAgICB0ZXh0ID0gYXRrX3RleHRfZ2V0
X3RleHQoQVRLX1RFWFQocGFyYWdyYXBoKSwgMCwgLTEpOwogICAgIGdfYXNzZXJ0X2NtcHN0cih0
ZXh0LCA9PSwgIkEgcGFyYWdyYXBoIHdpdGggYSBsaW5rIGluIHRoZSBtaWRkbGUiKTsKICAgICBn
X2ZyZWUgKHRleHQpOwpAQCAtMjg4LDE2ICszMDQsMzIgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtp
dEF0a0NhcmV0T2Zmc2V0cygpCiAgICAgZ19hc3NlcnRfY21waW50KHJlc3VsdCwgPT0sIFRSVUUp
OwogICAgIG9mZnNldCA9IGF0a190ZXh0X2dldF9jYXJldF9vZmZzZXQoQVRLX1RFWFQocGFyYWdy
YXBoKSk7CiAgICAgZ19hc3NlcnRfY21waW50KG9mZnNldCwgPT0sIDUpOworICAgIGdfYXNzZXJ0
X2NtcHN0cih0ZXh0Q2FyZXRNb3ZlZFJlc3VsdCwgPT0sICJ8cGFyYWdyYXBofDV8Iik7CiAKICAg
ICByZXN1bHQgPSBhdGtfdGV4dF9zZXRfY2FyZXRfb2Zmc2V0KEFUS19URVhUKHBhcmFncmFwaCks
IDIwKTsKICAgICBnX2Fzc2VydF9jbXBpbnQocmVzdWx0LCA9PSwgVFJVRSk7CiAgICAgb2Zmc2V0
ID0gYXRrX3RleHRfZ2V0X2NhcmV0X29mZnNldChBVEtfVEVYVChwYXJhZ3JhcGgpKTsKICAgICBn
X2Fzc2VydF9jbXBpbnQob2Zmc2V0LCA9PSwgMjApOworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0
Q2FyZXRNb3ZlZFJlc3VsdCwgPT0sICJ8cGFyYWdyYXBofDIwfCIpOwogCiAgICAgcmVzdWx0ID0g
YXRrX3RleHRfc2V0X2NhcmV0X29mZnNldChBVEtfVEVYVChwYXJhZ3JhcGgpLCAzMCk7CiAgICAg
Z19hc3NlcnRfY21waW50KHJlc3VsdCwgPT0sIFRSVUUpOwogICAgIG9mZnNldCA9IGF0a190ZXh0
X2dldF9jYXJldF9vZmZzZXQoQVRLX1RFWFQocGFyYWdyYXBoKSk7CiAgICAgZ19hc3NlcnRfY21w
aW50KG9mZnNldCwgPT0sIDMwKTsKKyAgICBnX2Fzc2VydF9jbXBzdHIodGV4dENhcmV0TW92ZWRS
ZXN1bHQsID09LCAifHBhcmFncmFwaHwzMHwiKTsKKworICAgIEF0a09iamVjdCogbGluayA9IGF0
a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQocGFyYWdyYXBoLCAwKTsKKyAgICBnX2Fzc2Vy
dChBVEtfSVNfVEVYVChsaW5rKSk7CisgICAgdGV4dCA9IGF0a190ZXh0X2dldF90ZXh0KEFUS19U
RVhUKGxpbmspLCAwLCAtMSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHQsID09LCAid2l0aCBh
IGxpbmsiKTsKKyAgICBnX2ZyZWUgKHRleHQpOworCisgICAgcmVzdWx0ID0gYXRrX3RleHRfc2V0
X2NhcmV0X29mZnNldChBVEtfVEVYVChsaW5rKSwgNSk7CisgICAgZ19hc3NlcnRfY21waW50KHJl
c3VsdCwgPT0sIFRSVUUpOworICAgIG9mZnNldCA9IGF0a190ZXh0X2dldF9jYXJldF9vZmZzZXQo
QVRLX1RFWFQobGluaykpOworICAgIGdfYXNzZXJ0X2NtcGludChvZmZzZXQsID09LCA1KTsKKyAg
ICAvKiBQb3NpdGlvbnMgaW5zaWRlIGxpbmtzIGFyZSByZXBvcnRlZCByZWxhdGl2ZSB0byB0aGUg
cGFyYWdyYXBoLiAqLworICAgIGdfYXNzZXJ0X2NtcHN0cih0ZXh0Q2FyZXRNb3ZlZFJlc3VsdCwg
PT0sICJ8cGFyYWdyYXBofDE3fCIpOwogCiAgICAgQXRrT2JqZWN0KiBsaXN0ID0gYXRrX29iamVj
dF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDIpOwogICAgIGdfYXNzZXJ0KEFUS19PQkpF
Q1QobGlzdCkpOwpAQCAtMzU1LDggKzM4NywxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRr
Q2FyZXRPZmZzZXRzKCkKICAgICBvZmZzZXQgPSBhdGtfdGV4dF9nZXRfY2FyZXRfb2Zmc2V0KEFU
S19URVhUKHRleHRFbnRyeSkpOwogICAgIGdfYXNzZXJ0X2NtcGludChvZmZzZXQsID09LCA1KTsK
IAorICAgIGdfZnJlZSh0ZXh0Q2FyZXRNb3ZlZFJlc3VsdCk7CisKICAgICBnX29iamVjdF91bnJl
ZihoZWFkZXIpOwogICAgIGdfb2JqZWN0X3VucmVmKHBhcmFncmFwaCk7CisgICAgZ19vYmplY3Rf
dW5yZWYobGluayk7CiAgICAgZ19vYmplY3RfdW5yZWYobGlzdCk7CiAgICAgZ19vYmplY3RfdW5y
ZWYobGlzdEl0ZW0pOwogICAgIGdfb2JqZWN0X3VucmVmKHBhbmVsKTsKQEAgLTEwODcsNiArMTEy
MiwyMCBAQCBzdGF0aWMgdm9pZCB0ZXN0V2Via2l0QXRrVGV4dEF0dHJpYnV0ZXMoKQogICAgIGF0
a19hdHRyaWJ1dGVfc2V0X2ZyZWUoc2V0Myk7CiB9CiAKK3N0YXRpYyBnY2hhciogdGV4dFNlbGVj
dGlvbkNoYW5nZWRSZXN1bHQgPSAwOworCitzdGF0aWMgdm9pZCB0ZXh0U2VsZWN0aW9uQ2hhbmdl
ZENhbGxiYWNrKEF0a1RleHQqIHRleHQsIGdwb2ludGVyIGRhdGEpCit7CisgICAgZ19hc3NlcnQo
QVRLX0lTX1RFWFQodGV4dCkpOworCisgICAgZ19mcmVlKHRleHRTZWxlY3Rpb25DaGFuZ2VkUmVz
dWx0KTsKKyAgICBBdGtSb2xlIHJvbGUgPSBhdGtfb2JqZWN0X2dldF9yb2xlKEFUS19PQkpFQ1Qo
dGV4dCkpOworICAgIGludCBzdGFydE9mZnNldCA9IDA7CisgICAgaW50IGVuZE9mZnNldCA9IDA7
CisgICAgYXRrX3RleHRfZ2V0X3NlbGVjdGlvbihBVEtfVEVYVCh0ZXh0KSwgMCwgJnN0YXJ0T2Zm
c2V0LCAmZW5kT2Zmc2V0KTsKKyAgICB0ZXh0U2VsZWN0aW9uQ2hhbmdlZFJlc3VsdCA9IGdfc3Ry
ZHVwX3ByaW50ZigifCVzfCVkfCVkfCIsIGF0a19yb2xlX2dldF9uYW1lKHJvbGUpLCBzdGFydE9m
ZnNldCwgZW5kT2Zmc2V0KTsKK30KKwogc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a1RleHRTZWxl
Y3Rpb25zKCkKIHsKICAgICBXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3ID0gV0VCS0lUX1dFQl9WSUVX
KHdlYmtpdF93ZWJfdmlld19uZXcoKSk7CkBAIC0xMTAwLDkgKzExNDksMTEgQEAgc3RhdGljIHZv
aWQgdGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKCkKIAogICAgIEF0a1RleHQqIHBhcmFncmFw
aDEgPSBBVEtfVEVYVChhdGtfb2JqZWN0X3JlZl9hY2Nlc3NpYmxlX2NoaWxkKG9iamVjdCwgMCkp
OwogICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKHBhcmFncmFwaDEpKTsKKyAgICBnX3NpZ25hbF9j
b25uZWN0KHBhcmFncmFwaDEsICJ0ZXh0LXNlbGVjdGlvbi1jaGFuZ2VkIiwgR19DQUxMQkFDSyh0
ZXh0U2VsZWN0aW9uQ2hhbmdlZENhbGxiYWNrKSwgMCk7CiAKICAgICBBdGtUZXh0KiBwYXJhZ3Jh
cGgyID0gQVRLX1RFWFQoYXRrX29iamVjdF9yZWZfYWNjZXNzaWJsZV9jaGlsZChvYmplY3QsIDEp
KTsKICAgICBnX2Fzc2VydChBVEtfSVNfVEVYVChwYXJhZ3JhcGgyKSk7CisgICAgZ19zaWduYWxf
Y29ubmVjdChwYXJhZ3JhcGgyLCAidGV4dC1zZWxlY3Rpb24tY2hhbmdlZCIsIEdfQ0FMTEJBQ0so
dGV4dFNlbGVjdGlvbkNoYW5nZWRDYWxsYmFjayksIDApOwogCiAgICAgQXRrVGV4dCogbGluayA9
IEFUS19URVhUKGF0a19vYmplY3RfcmVmX2FjY2Vzc2libGVfY2hpbGQoQVRLX09CSkVDVChwYXJh
Z3JhcGgyKSwgMCkpOwogICAgIGdfYXNzZXJ0KEFUS19JU19URVhUKGxpbmspKTsKQEAgLTExMzgs
MTEgKzExODksMTMgQEAgc3RhdGljIHZvaWQgdGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKCkK
ICAgICByZXN1bHQgPSBhdGtfdGV4dF9zZXRfc2VsZWN0aW9uKHBhcmFncmFwaDEsIDAsIDUsIDI1
KTsKICAgICBnX2Fzc2VydChyZXN1bHQpOwogICAgIGdfYXNzZXJ0X2NtcGludChhdGtfdGV4dF9n
ZXRfbl9zZWxlY3Rpb25zKHBhcmFncmFwaDEpLCA9PSwgMSk7CisgICAgZ19hc3NlcnRfY21wc3Ry
KHRleHRTZWxlY3Rpb25DaGFuZ2VkUmVzdWx0LCA9PSwgInxwYXJhZ3JhcGh8NXwyNXwiKTsKICAg
ICBzZWxlY3RlZFRleHQgPSBhdGtfdGV4dF9nZXRfc2VsZWN0aW9uKHBhcmFncmFwaDEsIDAsICZz
dGFydE9mZnNldCwgJmVuZE9mZnNldCk7CiAgICAgZ19hc3NlcnRfY21waW50KHN0YXJ0T2Zmc2V0
LCA9PSwgNSk7CiAgICAgZ19hc3NlcnRfY21waW50KGVuZE9mZnNldCwgPT0sIDI1KTsKICAgICBn
X2Fzc2VydF9jbXBzdHIoc2VsZWN0ZWRUZXh0LCA9PSwgImFncmFwaCB3aXRoIHBsYWluIHRlIik7
CiAgICAgZ19mcmVlIChzZWxlY3RlZFRleHQpOworCiAgICAgLyogVHJ5IHJlbW92aW5nIHRoZSBz
ZWxlY3Rpb24gZnJvbSBvdGhlciBBdGtUZXh0IG9iamVjdCAoc2hvdWxkIGZhaWwpLiAqLwogICAg
IHJlc3VsdCA9IGF0a190ZXh0X3JlbW92ZV9zZWxlY3Rpb24ocGFyYWdyYXBoMiwgMCk7CiAgICAg
Z19hc3NlcnQoIXJlc3VsdCk7CkBAIC0xMTg1LDYgKzEyMzgsNyBAQCBzdGF0aWMgdm9pZCB0ZXN0
V2Via2l0QXRrVGV4dFNlbGVjdGlvbnMoKQogICAgIHJlc3VsdCA9IGF0a190ZXh0X3NldF9zZWxl
Y3Rpb24ocGFyYWdyYXBoMiwgMCwgMjcsIDM3KTsKICAgICBnX2Fzc2VydChyZXN1bHQpOwogICAg
IGdfYXNzZXJ0X2NtcGludChhdGtfdGV4dF9nZXRfbl9zZWxlY3Rpb25zKHBhcmFncmFwaDIpLCA9
PSwgMSk7CisgICAgZ19hc3NlcnRfY21wc3RyKHRleHRTZWxlY3Rpb25DaGFuZ2VkUmVzdWx0LCA9
PSwgInxwYXJhZ3JhcGh8Mjd8Mzd8Iik7CiAgICAgc2VsZWN0ZWRUZXh0ID0gYXRrX3RleHRfZ2V0
X3NlbGVjdGlvbihwYXJhZ3JhcGgyLCAwLCAmc3RhcnRPZmZzZXQsICZlbmRPZmZzZXQpOwogICAg
IGdfYXNzZXJ0X2NtcGludChzdGFydE9mZnNldCwgPT0sIDI3KTsKICAgICBnX2Fzc2VydF9jbXBp
bnQoZW5kT2Zmc2V0LCA9PSwgMzcpOwpAQCAtMTIzNCw2ICsxMjg4LDggQEAgc3RhdGljIHZvaWQg
dGVzdFdlYmtpdEF0a1RleHRTZWxlY3Rpb25zKCkKICAgICBnX2Fzc2VydF9jbXBzdHIoc2VsZWN0
ZWRUZXh0LCA9PSwgIkEgbGlzdCIpOwogICAgIGdfZnJlZSAoc2VsZWN0ZWRUZXh0KTsKIAorICAg
IGdfZnJlZSh0ZXh0U2VsZWN0aW9uQ2hhbmdlZFJlc3VsdCk7CisKICAgICBnX29iamVjdF91bnJl
ZihwYXJhZ3JhcGgxKTsKICAgICBnX29iamVjdF91bnJlZihwYXJhZ3JhcGgyKTsKICAgICBnX29i
amVjdF91bnJlZihsaXN0KTsKLS0gCjEuNy43LjUKCg==
</data>
<flag name="review"
          id="124515"
          type_id="1"
          status="+"
          setter="mrobinson"
    />
          </attachment>
      

    </bug>

</bugzilla>