<?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>74893</bug_id>
          
          <creation_ts>2011-12-19 15:24:06 -0800</creation_ts>
          <short_desc>[chromium] Make sure rootDamageRect gets passed to renderer</short_desc>
          <delta_ts>2012-01-03 16:34:26 -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>Layout and Rendering</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Shawn Singh">shawnsingh</reporter>
          <assigned_to name="Shawn Singh">shawnsingh</assigned_to>
          <cc>backer</cc>
    
    <cc>cc-bugs</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>524224</commentid>
    <comment_count>0</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-12-19 15:24:06 -0800</bug_when>
    <thetext>In the process of refactoring, the root damage rect got &quot;disconnected&quot; from where it is used to perform the partial swap.  The fix is very straightforward, and works fine.  However, I would like to add a unit test to make sure this does not happen again.  An effective unit test needs to mock the &quot;getExtensions()&quot; accessor, so we can pretend that partial swap is supported.  Currently getExtensions() is implemented as non-virtual in un-mockable GraphicsContext3DPrivate.

Is it OK to move the implementation of getExtensions() from GraphicsContext3DPrivate into WebGraphicsContext3D, where we can make it virtual and mock-able?  or is there some reason not to do this?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524243</commentid>
    <comment_count>1</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-19 15:54:54 -0800</bug_when>
    <thetext>Extensions3DChromium simply thunks to WebGraphicsContext3D for all of its operations and WebGraphicsContext3D is fully virtual and easy to mock. I don&apos;t understand why you would need more. Is there some scenario that you can&apos;t mock out today?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524354</commentid>
    <comment_count>2</comment_count>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-12-19 18:29:59 -0800</bug_when>
    <thetext>
Thanks, it works exactly as you suggested.  Will post a patch soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524355</commentid>
    <comment_count>3</comment_count>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-19 18:39:35 -0800</bug_when>
    <thetext>OK cool, glad that worked.

If it helps shuffling around all of the Platform headers should make it pretty easy for us to cut out at least one layer of indirection in our GraphicsContext3D-&gt;WebGraphicsContext3D mappings.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524368</commentid>
    <comment_count>4</comment_count>
      <attachid>119972</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-12-19 18:59:11 -0800</bug_when>
    <thetext>Created attachment 119972
Patch

This patch has (1) the fix itself (2) appropriate unit test (3) drive-by style fix on ordering of include files.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524374</commentid>
    <comment_count>5</comment_count>
      <attachid>119972</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2011-12-19 19:07:08 -0800</bug_when>
    <thetext>Comment on attachment 119972
Patch

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

haven&apos;t looked through full patch, just some drive by nits for now. will try to look at this later

&gt; Source/WebCore/platform/graphics/chromium/LayerRendererChromium.h:108
&gt; +    void swapBuffers(IntRect subBuffer);

we typically pass IntRects by const ref, can we do that here?

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:311
&gt; +    FakeDrawableCCLayerImpl(int id) : CCLayerImpl(id) { }

nit: explicit

&gt; Source/WebKit/chromium/tests/CCLayerTreeHostImplTest.cpp:337
&gt; +class PartialSwapTrackerContext: public MockWebGraphicsContext3D {

nit: space between PartialSwapTrackerContext and the :</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>524407</commentid>
    <comment_count>6</comment_count>
      <attachid>119981</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2011-12-19 20:35:32 -0800</bug_when>
    <thetext>Created attachment 119981
addressed nits and added one more case to unit test</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528861</commentid>
    <comment_count>7</comment_count>
      <attachid>120960</attachid>
    <who name="Shawn Singh">shawnsingh</who>
    <bug_when>2012-01-03 11:00:59 -0800</bug_when>
    <thetext>Created attachment 120960
updated to close to tip of tree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>528865</commentid>
    <comment_count>8</comment_count>
      <attachid>120960</attachid>
    <who name="James Robinson">jamesr</who>
    <bug_when>2012-01-03 11:06:54 -0800</bug_when>
    <thetext>Comment on attachment 120960
updated to close to tip of tree

R=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529147</commentid>
    <comment_count>9</comment_count>
      <attachid>120960</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-03 16:34:21 -0800</bug_when>
    <thetext>Comment on attachment 120960
updated to close to tip of tree

Clearing flags on attachment: 120960

Committed r103988: &lt;http://trac.webkit.org/changeset/103988&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>529148</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-01-03 16:34:26 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119972</attachid>
            <date>2011-12-19 18:59:11 -0800</date>
            <delta_ts>2011-12-19 20:35:24 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-74893-20111219185910.patch</filename>
            <type>text/plain</type>
            <size>12181</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk0NzM0YzVmNzk3ZGQ5
Y2IyMmI0OTYzZmQ1MzllNWIzMTY4YmU1Yi4uZmE4YmQxOTg1MjExN2E3ZjI1OWUwMDBkZjBjMzcy
NTk0YmVkMzdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTEyLTE5ICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWFrZSBzdXJlIHJvb3QgZGFtYWdlIHJlY3QgZ2V0cyBwYXNzZWQgdG8gcmVuZGVyZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODkzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pdCB0ZXN0IGFkZGVk
IHRvIENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFz
c2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnN3YXBCdWZmZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmg6CisKIDIwMTEtMTItMTkgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENDTGF5ZXJEZWxlZ2F0ZSBhbmQgV2ViTGF5ZXJD
bGllbnQgZG8gbm90IG5lZWQgbm90aWZ5U3luY1JlcXVpcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDM2MTU4OGNkZGM2MGE0N2Y1MWMyZDY1ODM2YWVlYTg3MTc0NmNhZmMuLjMwYjlk
NzgyMTg5MmJlOWFiNDQ4ZDcwOTVjYzUxZGI5YjZlZTgzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTkgIFNoYXduIFNpbmdoICA8c2hhd25z
aW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIHN1cmUgcm9vdCBk
YW1hZ2UgcmVjdCBnZXRzIHBhc3NlZCB0byByZW5kZXJlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKwogMjAxMS0xMi0xOSAgSmFtZXMgUm9i
aW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ0NMYXll
ckRlbGVnYXRlIGFuZCBXZWJMYXllckNsaWVudCBkbyBub3QgbmVlZCBub3RpZnlTeW5jUmVxdWly
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDNhMTRiNDNlNWQz
ZTc3ZTRjZTU3Y2IyMTE2OTY3ZDcxYmJjYjM2ZGEuLmZmODg3YmNkZTFkYWZhNmI0MzllNDZjZTE3
ZGRhZjAxNWI0YjJjMzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApA
QCAtNTUsMTMgKzU1LDEzIEBACiAjaW5jbHVkZSAiY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmgi
CiAjaW5jbHVkZSAiY2MvQ0NEYW1hZ2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0Jv
cmRlckRyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKKyNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5j
bHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRHJh
d1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDVGlsZURyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKLSNpbmNs
dWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKLSNpbmNsdWRlICJjYy9DQ1Byb3h5Lmgi
CiAjaWYgVVNFKFNLSUEpCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCiAjaW5jbHVkZSAiR3JD
b250ZXh0LmgiCkBAIC03NTEsMTQgKzc1MSwxMyBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZmluaXNoKCkKICAgICBtX2NvbnRleHQtPmZpbmlzaCgpOwogfQogCi12b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6c3dhcEJ1ZmZlcnMoKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnN3YXBCdWZmZXJzKEludFJlY3Qgc3ViQnVmZmVyKQogewogICAgIFRSQUNFX0VWRU5UKCJMYXll
clJlbmRlcmVyQ2hyb21pdW06OnN3YXBCdWZmZXJzIiwgdGhpcywgMCk7CiAgICAgLy8gV2UncmUg
ZG9uZSEgVGltZSB0byBzd2FwYnVmZmVycyEKIAogICAgIGlmIChtX2NhcGFiaWxpdGllcy51c2lu
Z1BhcnRpYWxTd2FwKSB7CiAgICAgICAgIC8vIElmIHN1cHBvcnRlZCwgd2UgY2FuIHNhdmUgc2ln
bmlmaWNhbnQgYmFuZHdpZHRoIGJ5IG9ubHkgc3dhcHBpbmcgdGhlIGRhbWFnZWQvc2Npc3NvcmVk
IHJlZ2lvbiAoY2xhbXBlZCB0byB0aGUgdmlld3BvcnQpCi0gICAgICAgIEludFJlY3Qgc3ViQnVm
ZmVyID0gZW5jbG9zaW5nSW50UmVjdChtX3Jvb3REYW1hZ2VSZWN0KTsKICAgICAgICAgc3ViQnVm
ZmVyLmludGVyc2VjdChJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIHZpZXdwb3J0U2l6ZSgpKSk7
CiAgICAgICAgIEV4dGVuc2lvbnMzRENocm9taXVtKiBleHRlbnNpb25zM0RDaHJvbWl1bSA9IHN0
YXRpY19jYXN0PEV4dGVuc2lvbnMzRENocm9taXVtKj4obV9jb250ZXh0LT5nZXRFeHRlbnNpb25z
KCkpOwogICAgICAgICBpbnQgZmxpcHBlZFlQb3NPZlJlY3RCb3R0b20gPSB2aWV3cG9ydEhlaWdo
dCgpIC0gc3ViQnVmZmVyLnkoKSAtIHN1YkJ1ZmZlci5oZWlnaHQoKTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJv
bWl1bS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJS
ZW5kZXJlckNocm9taXVtLmgKaW5kZXggYzhhY2IyYzM0NWFhMDZjMTdkZDQ5YTM3MWM4OTJhOGMy
ZDJhN2RmMy4uY2E5NWI0YzNhMDVlMDAwY2IyNDk0MTFhMWQxOGNiN2I3NWU2NmExOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5k
ZXJlckNocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hy
b21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBmaW5pc2goKTsKIAogICAgIC8vIHB1dHMgYmFja2J1ZmZlciBvbnNjcmVlbgot
ICAgIHZvaWQgc3dhcEJ1ZmZlcnMoKTsKKyAgICB2b2lkIHN3YXBCdWZmZXJzKEludFJlY3Qgc3Vi
QnVmZmVyKTsKIAogICAgIHN0YXRpYyB2b2lkIGRlYnVnR0xDYWxsKEdyYXBoaWNzQ29udGV4dDNE
KiwgY29uc3QgY2hhciogY29tbWFuZCwgY29uc3QgY2hhciogZmlsZSwgaW50IGxpbmUpOwogCkBA
IC0yNDIsOCArMjQyLDYgQEAgcHJpdmF0ZToKICAgICBGbG9hdFF1YWQgbV9zaGFyZWRHZW9tZXRy
eVF1YWQ7CiAKICAgICBib29sIG1faXNWaWV3cG9ydENoYW5nZWQ7Ci0KLSAgICBGbG9hdFJlY3Qg
bV9yb290RGFtYWdlUmVjdDsKIH07CiAKIC8vIFNldHRpbmcgREVCVUdfR0xfQ0FMTFMgdG8gMSB3
aWxsIGNhbGwgZ2xHZXRFcnJvcigpIGFmdGVyIGFsbW9zdCBldmVyeSBHTApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVI
b3N0SW1wbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAppbmRleCAwOTQ2NWJmOTllNzlmZTcxZjI0MTc0Njc4
NDUyZGFlZjg3NTkxMDc0Li4xNTBmYzhlOTJjYTY4YTBiODE4Y2JjYTNmN2QzOWRjZGFkNzYyZTY5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9j
Yy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcApAQCAtMzEsOCArMzEs
OCBAQAogI2luY2x1ZGUgIkxheWVyUmVuZGVyZXJDaHJvbWl1bS5oIgogI2luY2x1ZGUgIlRyYWNl
RXZlbnQuaCIKICNpbmNsdWRlICJjYy9DQ0RhbWFnZVRyYWNrZXIuaCIKLSNpbmNsdWRlICJjYy9D
Q0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3QuaCIK
KyNpbmNsdWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKICNpbmNsdWRlICJjYy9DQ1Bh
Z2VTY2FsZUFuaW1hdGlvbi5oIgogI2luY2x1ZGUgImNjL0NDUmVuZGVyU3VyZmFjZURyYXdRdWFk
LmgiCiAjaW5jbHVkZSAiY2MvQ0NUaHJlYWRUYXNrLmgiCkBAIC0yMDcsNyArMjA3LDcgQEAgdm9p
ZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxhdGVSZW5kZXJQYXNzZXMoVmVjdG9yPE93blB0
cjxDQ1JlbmRlclBhc3M+ID4mIHAKIAogICAgIGlmIChsYXllclJlbmRlcmVyQ2FwYWJpbGl0aWVz
KCkudXNpbmdQYXJ0aWFsU3dhcCkKICAgICAgICAgdHJhY2tEYW1hZ2VGb3JBbGxTdXJmYWNlcyhy
b290TGF5ZXIoKSwgcmVuZGVyU3VyZmFjZUxheWVyTGlzdCk7Ci0gICAgRmxvYXRSZWN0IHJvb3RE
YW1hZ2VSZWN0ID0gcm9vdExheWVyKCktPnJlbmRlclN1cmZhY2UoKS0+ZGFtYWdlVHJhY2tlcigp
LT5jdXJyZW50RGFtYWdlUmVjdCgpOworICAgIG1fcm9vdERhbWFnZVJlY3QgPSByb290TGF5ZXIo
KS0+cmVuZGVyU3VyZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7
CiAKICAgICBmb3IgKGludCBzdXJmYWNlSW5kZXggPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0LnNp
emUoKSAtIDE7IHN1cmZhY2VJbmRleCA+PSAwIDsgLS1zdXJmYWNlSW5kZXgpIHsKICAgICAgICAg
Q0NMYXllckltcGwqIHJlbmRlclN1cmZhY2VMYXllciA9IHJlbmRlclN1cmZhY2VMYXllckxpc3Rb
c3VyZmFjZUluZGV4XS5nZXQoKTsKQEAgLTIxNyw3ICsyMTcsNyBAQCB2b2lkIENDTGF5ZXJUcmVl
SG9zdEltcGw6OmNhbGN1bGF0ZVJlbmRlclBhc3NlcyhWZWN0b3I8T3duUHRyPENDUmVuZGVyUGFz
cz4gPiYgcAogCiAgICAgICAgIEZsb2F0UmVjdCBzdXJmYWNlRGFtYWdlUmVjdDsKICAgICAgICAg
aWYgKGxheWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKQotICAgICAg
ICAgICAgc3VyZmFjZURhbWFnZVJlY3QgPSBkYW1hZ2VJblN1cmZhY2VTcGFjZShyZW5kZXJTdXJm
YWNlTGF5ZXIsIHJvb3REYW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIHN1cmZhY2VEYW1hZ2VSZWN0
ID0gZGFtYWdlSW5TdXJmYWNlU3BhY2UocmVuZGVyU3VyZmFjZUxheWVyLCBtX3Jvb3REYW1hZ2VS
ZWN0KTsKICAgICAgICAgcGFzcy0+c2V0U3VyZmFjZURhbWFnZVJlY3Qoc3VyZmFjZURhbWFnZVJl
Y3QpOwogCiAgICAgICAgIGNvbnN0IENDTGF5ZXJMaXN0JiBsYXllckxpc3QgPSByZW5kZXJTdXJm
YWNlLT5sYXllckxpc3QoKTsKQEAgLTI4NCw3ICsyODQsNyBAQCBUZXh0dXJlQWxsb2NhdG9yKiBD
Q0xheWVyVHJlZUhvc3RJbXBsOjpjb250ZW50c1RleHR1cmVBbGxvY2F0b3IoKSBjb25zdAogdm9p
ZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpzd2FwQnVmZmVycygpCiB7CiAgICAgQVNTRVJUKG1fbGF5
ZXJSZW5kZXJlciAmJiAhaXNDb250ZXh0TG9zdCgpKTsKLSAgICBtX2xheWVyUmVuZGVyZXItPnN3
YXBCdWZmZXJzKCk7CisgICAgbV9sYXllclJlbmRlcmVyLT5zd2FwQnVmZmVycyhlbmNsb3NpbmdJ
bnRSZWN0KG1fcm9vdERhbWFnZVJlY3QpKTsKIH0KIAogdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBs
OjpvblN3YXBCdWZmZXJzQ29tcGxldGUoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1w
bC5oCmluZGV4IGVkMzhiODZkZTQ2ZmNiMzU0NWI4MDg5ZWYxNmM2YjQ1MjEzODhkZDEuLjdhN2Qz
NjgwMDg0YmJlM2E4Yjk3Y2Y1YjgxMTg3MTQxMDEyODI5OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xh
eWVyVHJlZUhvc3RJbXBsLmgKQEAgLTE1NCw2ICsxNTQsOCBAQCBwcml2YXRlOgogICAgIE93blB0
cjxDQ1BhZ2VTY2FsZUFuaW1hdGlvbj4gbV9wYWdlU2NhbGVBbmltYXRpb247CiAKICAgICBDQ0xh
eWVyU29ydGVyIG1fbGF5ZXJTb3J0ZXI7CisKKyAgICBGbG9hdFJlY3QgbV9yb290RGFtYWdlUmVj
dDsKIH07CiAKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0ND
TGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMv
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwCmluZGV4IGM0N2E3YzI5MGM0ZDEwNGNkNWQ3Zjli
YmE5NjA0ODdkOGVmZDcyMTMuLmE1MDAzOGY2YTI1OTNmMDQxZWFjMWYzYjgzNmVhMDA4OWRjZDA0
ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVI
b3N0SW1wbFRlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXll
clRyZWVIb3N0SW1wbFRlc3QuY3BwCkBAIC0zOCw3ICszOCw3IEBAIHVzaW5nIG5hbWVzcGFjZSBX
ZWJLaXQ7CiAKIG5hbWVzcGFjZSB7CiAKLWNsYXNzIENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0IDog
cHVibGljIHRlc3Rpbmc6OlRlc3QsIENDTGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgeworY2xhc3Mg
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgcHVibGljIEND
TGF5ZXJUcmVlSG9zdEltcGxDbGllbnQgewogcHVibGljOgogICAgIENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0KCkKICAgICAgICAgOiBtX2RpZFJlcXVlc3RDb21taXQoZmFsc2UpCkBAIC0zMDgsNyAr
MzA4LDcgQEAgcHJpdmF0ZToKIAogY2xhc3MgRmFrZURyYXdhYmxlQ0NMYXllckltcGw6IHB1Ymxp
YyBDQ0xheWVySW1wbCB7CiBwdWJsaWM6Ci0gICAgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoKSA6
IENDTGF5ZXJJbXBsKDApIHsgfQorICAgIEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKGludCBpZCkg
OiBDQ0xheWVySW1wbChpZCkgeyB9CiAgICAgdmlydHVhbCB2b2lkIGRyYXcoTGF5ZXJSZW5kZXJl
ckNocm9taXVtKiByZW5kZXJlcikgeyB9CiB9OwogCkBAIC0zMjMsNyArMzIzLDcgQEAgVEVTVF9G
KENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByZXNoYXBlTm90Q2FsbGVkVW50aWxEcmF3KQogICAg
IG1faG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOwogICAgIG1faG9z
dEltcGwtPnNldFZpZXdwb3J0KEludFNpemUoMTAsIDEwKSk7CiAKLSAgICBSZWZQdHI8Q0NMYXll
ckltcGw+IHJvb3QgPSBhZG9wdFJlZihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoKSk7Cisg
ICAgUmVmUHRyPENDTGF5ZXJJbXBsPiByb290ID0gYWRvcHRSZWYobmV3IEZha2VEcmF3YWJsZUND
TGF5ZXJJbXBsKDEpKTsKICAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDAp
KTsKICAgICByb290LT5zZXRCb3VuZHMoSW50U2l6ZSgxMCwgMTApKTsKICAgICByb290LT5zZXRE
cmF3c0NvbnRlbnQodHJ1ZSk7CkBAIC0zMzQsNSArMzM0LDgwIEBAIFRFU1RfRihDQ0xheWVyVHJl
ZUhvc3RJbXBsVGVzdCwgcmVzaGFwZU5vdENhbGxlZFVudGlsRHJhdykKICAgICBFWFBFQ1RfVFJV
RShyZXNoYXBlVHJhY2tlci0+cmVzaGFwZUNhbGxlZCgpKTsKIH0KIAorY2xhc3MgUGFydGlhbFN3
YXBUcmFja2VyQ29udGV4dDogcHVibGljIE1vY2tXZWJHcmFwaGljc0NvbnRleHQzRCB7CitwdWJs
aWM6CisgICAgdmlydHVhbCBib29sIGluaXRpYWxpemUoQXR0cmlidXRlcywgV2ViVmlldyosIGJv
b2wgcmVuZGVyRGlyZWN0bHlUb1dlYlZpZXcpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1
YWwgdm9pZCBwb3N0U3ViQnVmZmVyQ0hST01JVU0oaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGlu
dCBoZWlnaHQpCisgICAgeworICAgICAgICBtX3BhcnRpYWxTd2FwUmVjdCA9IEludFJlY3QoeCwg
eSwgd2lkdGgsIGhlaWdodCk7CisgICAgfQorCisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0U3Ry
aW5nKFdHQzNEZW51bSBuYW1lKQorICAgIHsKKyAgICAgICAgaWYgKG5hbWUgPT0gR3JhcGhpY3ND
b250ZXh0M0Q6OkVYVEVOU0lPTlMpCisgICAgICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCJHTF9D
SFJPTUlVTV9wb3N0X3N1Yl9idWZmZXIiKTsKKworICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7
CisgICAgfQorCisgICAgSW50UmVjdCBwYXJ0aWFsU3dhcFJlY3QoKSBjb25zdCB7IHJldHVybiBt
X3BhcnRpYWxTd2FwUmVjdDsgfQorCitwcml2YXRlOgorICAgIEludFJlY3QgbV9wYXJ0aWFsU3dh
cFJlY3Q7Cit9OworCisvLyBNYWtlIHN1cmUgZGFtYWdlIHRyYWNraW5nIHByb3BhZ2F0ZXMgYWxs
IHRoZSB3YXkgdG8gdGhlIGdyYXBoaWNzIGNvbnRleHQsCisvLyB3aGVyZSBpdCBzaG91bGQgcmVx
dWVzdCB0byBzd2FwIG9ubHkgdGhlIHN1YkJ1ZmZlciB0aGF0IGlzIGRhbWFnZWQuCitURVNUX0Yo
Q0NMYXllclRyZWVIb3N0SW1wbFRlc3QsIHBhcnRpYWxTd2FwUmVjZWl2ZXNEYW1hZ2VSZWN0KQor
eworICAgIEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJzOworICAgIFBhcnRpYWxT
d2FwVHJhY2tlckNvbnRleHQqIHBhcnRpYWxTd2FwVHJhY2tlciA9IG5ldyBQYXJ0aWFsU3dhcFRy
YWNrZXJDb250ZXh0KCk7CisgICAgUmVmUHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0g
R3JhcGhpY3NDb250ZXh0M0RQcml2YXRlOjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29u
dGV4dChhZG9wdFB0cihwYXJ0aWFsU3dhcFRyYWNrZXIpLCBhdHRycywgMCwgR3JhcGhpY3NDb250
ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9Ib3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRFByaXZh
dGU6OkZvclVzZU9uVGhpc1RocmVhZCk7CisKKyAgICAvLyBUaGlzIHRlc3QgY3JlYXRlcyBpdHMg
b3duIENDTGF5ZXJUcmVlSG9zdEltcGwsIHNvCisgICAgLy8gdGhhdCB3ZSBjYW4gZm9yY2UgcGFy
dGlhbCBzd2FwIGVuYWJsZWQuCisgICAgQ0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBzZXR0aW5n
cy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSB0cnVlOworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJ
bXBsPiBsYXllclRyZWVIb3N0SW1wbCA9IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0
aW5ncywgdGhpcyk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRl
cmVyKGNvbnRleHQpOworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zZXRWaWV3cG9ydChJbnRTaXpl
KDUwMCwgNTAwKSk7CisKKyAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJvb3QgPSBhZG9wdFJlZihu
ZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMSkpOworICAgIFJlZlB0cjxDQ0xheWVySW1wbD4g
Y2hpbGQgPSBhZG9wdFJlZihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMikpOworICAgIGNo
aWxkLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDEyLCAxMykpOworICAgIGNoaWxkLT5zZXRBbmNo
b3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICBjaGlsZC0+c2V0Qm91bmRzKEludFNpemUo
MTQsIDE1KSk7CisgICAgY2hpbGQtPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICByb290LT5z
ZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDApKTsKKyAgICByb290LT5zZXRCb3VuZHMoSW50
U2l6ZSg1MDAsIDUwMCkpOworICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICBy
b290LT5hZGRDaGlsZChjaGlsZCk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFJvb3RMYXll
cihyb290KTsKKworICAgIC8vIEZpcnN0IGZyYW1lLCB0aGUgZW50aXJlIHNjcmVlbiBzaG91bGQg
Z2V0IHN3YXBwZWQuCisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBs
YXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKKyAgICBJbnRSZWN0IGFjdHVhbFN3YXBS
ZWN0ID0gcGFydGlhbFN3YXBUcmFja2VyLT5wYXJ0aWFsU3dhcFJlY3QoKTsKKyAgICBJbnRSZWN0
IGV4cGVjdGVkU3dhcFJlY3QgPSBJbnRSZWN0KEludFBvaW50Ojp6ZXJvKCksIEludFNpemUoNTAw
LCA1MDApKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRTd2FwUmVjdC54KCksIGFjdHVhbFN3YXBS
ZWN0LngoKSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkU3dhcFJlY3QueSgpLCBhY3R1YWxTd2Fw
UmVjdC55KCkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZFN3YXBSZWN0LndpZHRoKCksIGFjdHVh
bFN3YXBSZWN0LndpZHRoKCkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZFN3YXBSZWN0LmhlaWdo
dCgpLCBhY3R1YWxTd2FwUmVjdC5oZWlnaHQoKSk7CisKKyAgICAvLyBTZWNvbmQgZnJhbWUsIG9u
bHkgdGhlIGRhbWFnZWQgYXJlYSBzaG91bGQgZ2V0IHN3YXBwZWQuIERhbWFnZSBzaG91bGQgYmUg
dGhlIHVuaW9uCisgICAgLy8gb2Ygb2xkIGFuZCBuZXcgY2hpbGQgcmVjdHMuCisgICAgY2hpbGQt
PnNldFBvc2l0aW9uKEZsb2F0UG9pbnQoMCwgMCkpOworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5k
cmF3TGF5ZXJzKCk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7CisgICAg
YWN0dWFsU3dhcFJlY3QgPSBwYXJ0aWFsU3dhcFRyYWNrZXItPnBhcnRpYWxTd2FwUmVjdCgpOwor
ICAgIC8vIGV4cGVjdGVkIGRhbWFnZSByZWN0OiBJbnRSZWN0KEludFBvaW50KDAsIDApLCBJbnRT
aXplKDI2LCAyOCkpOworICAgIC8vIGV4cGVjdGVkIHN3YXAgcmVjdDogdmVydGljYWxseSBmbGlw
cGVkLCB3aXRoIG9yaWdpbiBhdCBib3R0b20gbGVmdCBjb3JuZXIuCisgICAgZXhwZWN0ZWRTd2Fw
UmVjdCA9IEludFJlY3QoSW50UG9pbnQoMCwgNTAwLTI4KSwgSW50U2l6ZSgyNiwgMjgpKTsKKyAg
ICBFWFBFQ1RfRVEoZXhwZWN0ZWRTd2FwUmVjdC54KCksIGFjdHVhbFN3YXBSZWN0LngoKSk7Cisg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkU3dhcFJlY3QueSgpLCBhY3R1YWxTd2FwUmVjdC55KCkpOwor
ICAgIEVYUEVDVF9FUShleHBlY3RlZFN3YXBSZWN0LndpZHRoKCksIGFjdHVhbFN3YXBSZWN0Lndp
ZHRoKCkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZFN3YXBSZWN0LmhlaWdodCgpLCBhY3R1YWxT
d2FwUmVjdC5oZWlnaHQoKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>119981</attachid>
            <date>2011-12-19 20:35:32 -0800</date>
            <delta_ts>2012-01-03 11:00:56 -0800</delta_ts>
            <desc>addressed nits and added one more case to unit test</desc>
            <filename>bug-74893-20111219203528.patch</filename>
            <type>text/plain</type>
            <size>13703</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzMjkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk0NzM0YzVmNzk3ZGQ5
Y2IyMmI0OTYzZmQ1MzllNWIzMTY4YmU1Yi4uZmE4YmQxOTg1MjExN2E3ZjI1OWUwMDBkZjBjMzcy
NTk0YmVkMzdjNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDExLTEyLTE5ICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWFrZSBzdXJlIHJvb3QgZGFtYWdlIHJlY3QgZ2V0cyBwYXNzZWQgdG8gcmVuZGVyZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODkzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pdCB0ZXN0IGFkZGVk
IHRvIENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFz
c2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnN3YXBCdWZmZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmg6CisKIDIwMTEtMTItMTkgIEphbWVzIFJvYmluc29uICA8amFtZXNyQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIENDTGF5ZXJEZWxlZ2F0ZSBhbmQgV2ViTGF5ZXJD
bGllbnQgZG8gbm90IG5lZWQgbm90aWZ5U3luY1JlcXVpcmVkCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCmluZGV4IDM2MTU4OGNkZGM2MGE0N2Y1MWMyZDY1ODM2YWVlYTg3MTc0NmNhZmMuLjMwYjlk
NzgyMTg5MmJlOWFiNDQ4ZDcwOTVjYzUxZGI5YjZlZTgzMWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMTEtMTItMTkgIFNoYXduIFNpbmdoICA8c2hhd25z
aW5naEBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgW2Nocm9taXVtXSBNYWtlIHN1cmUgcm9vdCBk
YW1hZ2UgcmVjdCBnZXRzIHBhc3NlZCB0byByZW5kZXJlcgorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4OTMKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHRlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcDoKKyAgICAgICAgKFdlYktpdDo6VEVTVF9GKToKKwogMjAxMS0xMi0xOSAgSmFtZXMgUm9i
aW5zb24gIDxqYW1lc3JAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFtjaHJvbWl1bV0gQ0NMYXll
ckRlbGVnYXRlIGFuZCBXZWJMYXllckNsaWVudCBkbyBub3QgbmVlZCBub3RpZnlTeW5jUmVxdWly
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVt
L0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9jaHJvbWl1bS9MYXllclJlbmRlcmVyQ2hyb21pdW0uY3BwCmluZGV4IDNhMTRiNDNlNWQz
ZTc3ZTRjZTU3Y2IyMTE2OTY3ZDcxYmJjYjM2ZGEuLmRhZWI5N2Y5YTJjY2YyYTVlNmNlZWY5ZTAw
MDQ0Y2M4NTFmNWEzZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcApA
QCAtNTUsMTMgKzU1LDEzIEBACiAjaW5jbHVkZSAiY2MvQ0NDdXN0b21MYXllckRyYXdRdWFkLmgi
CiAjaW5jbHVkZSAiY2MvQ0NEYW1hZ2VUcmFja2VyLmgiCiAjaW5jbHVkZSAiY2MvQ0NEZWJ1Z0Jv
cmRlckRyYXdRdWFkLmgiCisjaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKKyNpbmNsdWRlICJj
Yy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKKyNpbmNsdWRlICJjYy9DQ1Byb3h5LmgiCiAjaW5j
bHVkZSAiY2MvQ0NSZW5kZXJQYXNzLmgiCiAjaW5jbHVkZSAiY2MvQ0NSZW5kZXJTdXJmYWNlRHJh
d1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1NvbGlkQ29sb3JEcmF3UXVhZC5oIgogI2luY2x1ZGUg
ImNjL0NDVGlsZURyYXdRdWFkLmgiCi0jaW5jbHVkZSAiY2MvQ0NMYXllckltcGwuaCIKLSNpbmNs
dWRlICJjYy9DQ0xheWVyVHJlZUhvc3RDb21tb24uaCIKLSNpbmNsdWRlICJjYy9DQ1Byb3h5Lmgi
CiAjaWYgVVNFKFNLSUEpCiAjaW5jbHVkZSAiRXh0ZW5zaW9uczNELmgiCiAjaW5jbHVkZSAiR3JD
b250ZXh0LmgiCkBAIC03NTEsMTggKzc1MSwxOCBAQCB2b2lkIExheWVyUmVuZGVyZXJDaHJvbWl1
bTo6ZmluaXNoKCkKICAgICBtX2NvbnRleHQtPmZpbmlzaCgpOwogfQogCi12b2lkIExheWVyUmVu
ZGVyZXJDaHJvbWl1bTo6c3dhcEJ1ZmZlcnMoKQordm9pZCBMYXllclJlbmRlcmVyQ2hyb21pdW06
OnN3YXBCdWZmZXJzKGNvbnN0IEludFJlY3QmIHN1YkJ1ZmZlcikKIHsKICAgICBUUkFDRV9FVkVO
VCgiTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzd2FwQnVmZmVycyIsIHRoaXMsIDApOwogICAgIC8v
IFdlJ3JlIGRvbmUhIFRpbWUgdG8gc3dhcGJ1ZmZlcnMhCiAKICAgICBpZiAobV9jYXBhYmlsaXRp
ZXMudXNpbmdQYXJ0aWFsU3dhcCkgewogICAgICAgICAvLyBJZiBzdXBwb3J0ZWQsIHdlIGNhbiBz
YXZlIHNpZ25pZmljYW50IGJhbmR3aWR0aCBieSBvbmx5IHN3YXBwaW5nIHRoZSBkYW1hZ2VkL3Nj
aXNzb3JlZCByZWdpb24gKGNsYW1wZWQgdG8gdGhlIHZpZXdwb3J0KQotICAgICAgICBJbnRSZWN0
IHN1YkJ1ZmZlciA9IGVuY2xvc2luZ0ludFJlY3QobV9yb290RGFtYWdlUmVjdCk7Ci0gICAgICAg
IHN1YkJ1ZmZlci5pbnRlcnNlY3QoSW50UmVjdChJbnRQb2ludDo6emVybygpLCB2aWV3cG9ydFNp
emUoKSkpOworICAgICAgICBJbnRSZWN0IGNsaXBwZWRTdWJCdWZmZXIgPSBzdWJCdWZmZXI7Cisg
ICAgICAgIGNsaXBwZWRTdWJCdWZmZXIuaW50ZXJzZWN0KEludFJlY3QoSW50UG9pbnQ6Onplcm8o
KSwgdmlld3BvcnRTaXplKCkpKTsKICAgICAgICAgRXh0ZW5zaW9uczNEQ2hyb21pdW0qIGV4dGVu
c2lvbnMzRENocm9taXVtID0gc3RhdGljX2Nhc3Q8RXh0ZW5zaW9uczNEQ2hyb21pdW0qPihtX2Nv
bnRleHQtPmdldEV4dGVuc2lvbnMoKSk7Ci0gICAgICAgIGludCBmbGlwcGVkWVBvc09mUmVjdEJv
dHRvbSA9IHZpZXdwb3J0SGVpZ2h0KCkgLSBzdWJCdWZmZXIueSgpIC0gc3ViQnVmZmVyLmhlaWdo
dCgpOwotICAgICAgICBleHRlbnNpb25zM0RDaHJvbWl1bS0+cG9zdFN1YkJ1ZmZlckNIUk9NSVVN
KHN1YkJ1ZmZlci54KCksIGZsaXBwZWRZUG9zT2ZSZWN0Qm90dG9tLCBzdWJCdWZmZXIud2lkdGgo
KSwgc3ViQnVmZmVyLmhlaWdodCgpKTsKKyAgICAgICAgaW50IGZsaXBwZWRZUG9zT2ZSZWN0Qm90
dG9tID0gdmlld3BvcnRIZWlnaHQoKSAtIGNsaXBwZWRTdWJCdWZmZXIueSgpIC0gY2xpcHBlZFN1
YkJ1ZmZlci5oZWlnaHQoKTsKKyAgICAgICAgZXh0ZW5zaW9uczNEQ2hyb21pdW0tPnBvc3RTdWJC
dWZmZXJDSFJPTUlVTShjbGlwcGVkU3ViQnVmZmVyLngoKSwgZmxpcHBlZFlQb3NPZlJlY3RCb3R0
b20sIGNsaXBwZWRTdWJCdWZmZXIud2lkdGgoKSwgY2xpcHBlZFN1YkJ1ZmZlci5oZWlnaHQoKSk7
CiAgICAgfSBlbHNlCiAgICAgICAgIC8vIE5vdGUgdGhhdCBjdXJyZW50bHkgdGhpcyBoYXMgdGhl
IHNhbWUgZWZmZWN0IGFzIHN3YXBCdWZmZXJzOyB3ZSBzaG91bGQKICAgICAgICAgLy8gY29uc2lk
ZXIgZXhwb3NpbmcgYSBkaWZmZXJlbnQgZW50cnkgcG9pbnQgb24gR3JhcGhpY3NDb250ZXh0M0Qu
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9M
YXllclJlbmRlcmVyQ2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCmluZGV4IGM4YWNiMmMzNDVhYTA2YzE3
ZGQ0OWEzNzFjODkyYThjMmQyYTdkZjMuLjJiYjAxNDZhZDUzMTRjYWQ4YzVmNzhkY2EwMWRhZDE1
ZGVmZWJlMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oCkBAIC0xMDUsNyAr
MTA1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZmluaXNoKCk7CiAKICAgICAvLyBwdXRzIGJhY2ti
dWZmZXIgb25zY3JlZW4KLSAgICB2b2lkIHN3YXBCdWZmZXJzKCk7CisgICAgdm9pZCBzd2FwQnVm
ZmVycyhjb25zdCBJbnRSZWN0JiBzdWJCdWZmZXIpOwogCiAgICAgc3RhdGljIHZvaWQgZGVidWdH
TENhbGwoR3JhcGhpY3NDb250ZXh0M0QqLCBjb25zdCBjaGFyKiBjb21tYW5kLCBjb25zdCBjaGFy
KiBmaWxlLCBpbnQgbGluZSk7CiAKQEAgLTI0Miw4ICsyNDIsNiBAQCBwcml2YXRlOgogICAgIEZs
b2F0UXVhZCBtX3NoYXJlZEdlb21ldHJ5UXVhZDsKIAogICAgIGJvb2wgbV9pc1ZpZXdwb3J0Q2hh
bmdlZDsKLQotICAgIEZsb2F0UmVjdCBtX3Jvb3REYW1hZ2VSZWN0OwogfTsKIAogLy8gU2V0dGlu
ZyBERUJVR19HTF9DQUxMUyB0byAxIHdpbGwgY2FsbCBnbEdldEVycm9yKCkgYWZ0ZXIgYWxtb3N0
IGV2ZXJ5IEdMCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9j
aHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCmluZGV4IDA5
NDY1YmY5OWU3OWZlNzFmMjQxNzQ2Nzg0NTJkYWVmODc1OTEwNzQuLjE1MGZjOGU5MmNhNjhhMGI4
MThjYmNhM2Y3ZDM5ZGNkYWQ3NjJlNjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9z
dEltcGwuY3BwCkBAIC0zMSw4ICszMSw4IEBACiAjaW5jbHVkZSAiTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgiCiAjaW5jbHVkZSAiVHJhY2VFdmVudC5oIgogI2luY2x1ZGUgImNjL0NDRGFtYWdlVHJh
Y2tlci5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgogI2luY2x1ZGUg
ImNjL0NDTGF5ZXJUcmVlSG9zdC5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1v
bi5oIgogI2luY2x1ZGUgImNjL0NDUGFnZVNjYWxlQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSAiY2Mv
Q0NSZW5kZXJTdXJmYWNlRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ1RocmVhZFRhc2suaCIK
QEAgLTIwNyw3ICsyMDcsNyBAQCB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNhbGN1bGF0ZVJl
bmRlclBhc3NlcyhWZWN0b3I8T3duUHRyPENDUmVuZGVyUGFzcz4gPiYgcAogCiAgICAgaWYgKGxh
eWVyUmVuZGVyZXJDYXBhYmlsaXRpZXMoKS51c2luZ1BhcnRpYWxTd2FwKQogICAgICAgICB0cmFj
a0RhbWFnZUZvckFsbFN1cmZhY2VzKHJvb3RMYXllcigpLCByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0
KTsKLSAgICBGbG9hdFJlY3Qgcm9vdERhbWFnZVJlY3QgPSByb290TGF5ZXIoKS0+cmVuZGVyU3Vy
ZmFjZSgpLT5kYW1hZ2VUcmFja2VyKCktPmN1cnJlbnREYW1hZ2VSZWN0KCk7CisgICAgbV9yb290
RGFtYWdlUmVjdCA9IHJvb3RMYXllcigpLT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIo
KS0+Y3VycmVudERhbWFnZVJlY3QoKTsKIAogICAgIGZvciAoaW50IHN1cmZhY2VJbmRleCA9IHJl
bmRlclN1cmZhY2VMYXllckxpc3Quc2l6ZSgpIC0gMTsgc3VyZmFjZUluZGV4ID49IDAgOyAtLXN1
cmZhY2VJbmRleCkgewogICAgICAgICBDQ0xheWVySW1wbCogcmVuZGVyU3VyZmFjZUxheWVyID0g
cmVuZGVyU3VyZmFjZUxheWVyTGlzdFtzdXJmYWNlSW5kZXhdLmdldCgpOwpAQCAtMjE3LDcgKzIx
Nyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKFZl
Y3RvcjxPd25QdHI8Q0NSZW5kZXJQYXNzPiA+JiBwCiAKICAgICAgICAgRmxvYXRSZWN0IHN1cmZh
Y2VEYW1hZ2VSZWN0OwogICAgICAgICBpZiAobGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVz
aW5nUGFydGlhbFN3YXApCi0gICAgICAgICAgICBzdXJmYWNlRGFtYWdlUmVjdCA9IGRhbWFnZUlu
U3VyZmFjZVNwYWNlKHJlbmRlclN1cmZhY2VMYXllciwgcm9vdERhbWFnZVJlY3QpOworICAgICAg
ICAgICAgc3VyZmFjZURhbWFnZVJlY3QgPSBkYW1hZ2VJblN1cmZhY2VTcGFjZShyZW5kZXJTdXJm
YWNlTGF5ZXIsIG1fcm9vdERhbWFnZVJlY3QpOwogICAgICAgICBwYXNzLT5zZXRTdXJmYWNlRGFt
YWdlUmVjdChzdXJmYWNlRGFtYWdlUmVjdCk7CiAKICAgICAgICAgY29uc3QgQ0NMYXllckxpc3Qm
IGxheWVyTGlzdCA9IHJlbmRlclN1cmZhY2UtPmxheWVyTGlzdCgpOwpAQCAtMjg0LDcgKzI4NCw3
IEBAIFRleHR1cmVBbGxvY2F0b3IqIENDTGF5ZXJUcmVlSG9zdEltcGw6OmNvbnRlbnRzVGV4dHVy
ZUFsbG9jYXRvcigpIGNvbnN0CiB2b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6OnN3YXBCdWZmZXJz
KCkKIHsKICAgICBBU1NFUlQobV9sYXllclJlbmRlcmVyICYmICFpc0NvbnRleHRMb3N0KCkpOwot
ICAgIG1fbGF5ZXJSZW5kZXJlci0+c3dhcEJ1ZmZlcnMoKTsKKyAgICBtX2xheWVyUmVuZGVyZXIt
PnN3YXBCdWZmZXJzKGVuY2xvc2luZ0ludFJlY3QobV9yb290RGFtYWdlUmVjdCkpOwogfQogCiB2
b2lkIENDTGF5ZXJUcmVlSG9zdEltcGw6Om9uU3dhcEJ1ZmZlcnNDb21wbGV0ZSgpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVy
VHJlZUhvc3RJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1
bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKaW5kZXggZWQzOGI4NmRlNDZmY2IzNTQ1YjgwODll
ZjE2YzZiNDUyMTM4OGRkMS4uN2E3ZDM2ODAwODRiYmUzYThiOTdjZjViODExODcxNDEwMTI4Mjk5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaApAQCAtMTU0LDYgKzE1NCw4
IEBAIHByaXZhdGU6CiAgICAgT3duUHRyPENDUGFnZVNjYWxlQW5pbWF0aW9uPiBtX3BhZ2VTY2Fs
ZUFuaW1hdGlvbjsKIAogICAgIENDTGF5ZXJTb3J0ZXIgbV9sYXllclNvcnRlcjsKKworICAgIEZs
b2F0UmVjdCBtX3Jvb3REYW1hZ2VSZWN0OwogfTsKIAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vdGVzdHMvQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKaW5kZXgg
YzQ3YTdjMjkwYzRkMTA0Y2Q1ZDdmOWJiYTk2MDQ4N2Q4ZWZkNzIxMy4uZTk4ZjQ0ZGEyZTdjZjE1
YTI5MWU1YjAzMDZmNTY4YTViMzE4ZGE0YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJv
bWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktp
dC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHAKQEAgLTM4LDcgKzM4
LDcgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsKIAogbmFtZXNwYWNlIHsKIAotY2xhc3MgQ0NM
YXllclRyZWVIb3N0SW1wbFRlc3QgOiBwdWJsaWMgdGVzdGluZzo6VGVzdCwgQ0NMYXllclRyZWVI
b3N0SW1wbENsaWVudCB7CitjbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCA6IHB1YmxpYyB0
ZXN0aW5nOjpUZXN0LCBwdWJsaWMgQ0NMYXllclRyZWVIb3N0SW1wbENsaWVudCB7CiBwdWJsaWM6
CiAgICAgQ0NMYXllclRyZWVIb3N0SW1wbFRlc3QoKQogICAgICAgICA6IG1fZGlkUmVxdWVzdENv
bW1pdChmYWxzZSkKQEAgLTMwOCw3ICszMDgsNyBAQCBwcml2YXRlOgogCiBjbGFzcyBGYWtlRHJh
d2FibGVDQ0xheWVySW1wbDogcHVibGljIENDTGF5ZXJJbXBsIHsKIHB1YmxpYzoKLSAgICBGYWtl
RHJhd2FibGVDQ0xheWVySW1wbCgpIDogQ0NMYXllckltcGwoMCkgeyB9CisgICAgZXhwbGljaXQg
RmFrZURyYXdhYmxlQ0NMYXllckltcGwoaW50IGlkKSA6IENDTGF5ZXJJbXBsKGlkKSB7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgZHJhdyhMYXllclJlbmRlcmVyQ2hyb21pdW0qIHJlbmRlcmVyKSB7IH0K
IH07CiAKQEAgLTMyMyw3ICszMjMsNyBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qs
IHJlc2hhcGVOb3RDYWxsZWRVbnRpbERyYXcpCiAgICAgbV9ob3N0SW1wbC0+aW5pdGlhbGl6ZUxh
eWVyUmVuZGVyZXIoY29udGV4dCk7CiAgICAgbV9ob3N0SW1wbC0+c2V0Vmlld3BvcnQoSW50U2l6
ZSgxMCwgMTApKTsKIAotICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGFkb3B0UmVmKG5l
dyBGYWtlRHJhd2FibGVDQ0xheWVySW1wbCgpKTsKKyAgICBSZWZQdHI8Q0NMYXllckltcGw+IHJv
b3QgPSBhZG9wdFJlZihuZXcgRmFrZURyYXdhYmxlQ0NMYXllckltcGwoMSkpOwogICAgIHJvb3Qt
PnNldEFuY2hvclBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOwogICAgIHJvb3QtPnNldEJvdW5kcyhJ
bnRTaXplKDEwLCAxMCkpOwogICAgIHJvb3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKQEAgLTMz
NCw1ICszMzQsOTQgQEAgVEVTVF9GKENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LCByZXNoYXBlTm90
Q2FsbGVkVW50aWxEcmF3KQogICAgIEVYUEVDVF9UUlVFKHJlc2hhcGVUcmFja2VyLT5yZXNoYXBl
Q2FsbGVkKCkpOwogfQogCitjbGFzcyBQYXJ0aWFsU3dhcFRyYWNrZXJDb250ZXh0IDogcHVibGlj
IEZha2VXZWJHcmFwaGljc0NvbnRleHQzRCB7CitwdWJsaWM6CisgICAgdmlydHVhbCBib29sIGlu
aXRpYWxpemUoQXR0cmlidXRlcywgV2ViVmlldyosIGJvb2wgcmVuZGVyRGlyZWN0bHlUb1dlYlZp
ZXcpIHsgcmV0dXJuIHRydWU7IH0KKworICAgIHZpcnR1YWwgdm9pZCBwb3N0U3ViQnVmZmVyQ0hS
T01JVU0oaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCisgICAgeworICAgICAg
ICBtX3BhcnRpYWxTd2FwUmVjdCA9IEludFJlY3QoeCwgeSwgd2lkdGgsIGhlaWdodCk7CisgICAg
fQorCisgICAgdmlydHVhbCBXZWJTdHJpbmcgZ2V0U3RyaW5nKFdHQzNEZW51bSBuYW1lKQorICAg
IHsKKyAgICAgICAgaWYgKG5hbWUgPT0gR3JhcGhpY3NDb250ZXh0M0Q6OkVYVEVOU0lPTlMpCisg
ICAgICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCJHTF9DSFJPTUlVTV9wb3N0X3N1Yl9idWZmZXIi
KTsKKworICAgICAgICByZXR1cm4gV2ViU3RyaW5nKCk7CisgICAgfQorCisgICAgSW50UmVjdCBw
YXJ0aWFsU3dhcFJlY3QoKSBjb25zdCB7IHJldHVybiBtX3BhcnRpYWxTd2FwUmVjdDsgfQorCitw
cml2YXRlOgorICAgIEludFJlY3QgbV9wYXJ0aWFsU3dhcFJlY3Q7Cit9OworCisvLyBNYWtlIHN1
cmUgZGFtYWdlIHRyYWNraW5nIHByb3BhZ2F0ZXMgYWxsIHRoZSB3YXkgdG8gdGhlIGdyYXBoaWNz
IGNvbnRleHQsCisvLyB3aGVyZSBpdCBzaG91bGQgcmVxdWVzdCB0byBzd2FwIG9ubHkgdGhlIHN1
YkJ1ZmZlciB0aGF0IGlzIGRhbWFnZWQuCitURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1wbFRlc3Qs
IHBhcnRpYWxTd2FwUmVjZWl2ZXNEYW1hZ2VSZWN0KQoreworICAgIEdyYXBoaWNzQ29udGV4dDNE
OjpBdHRyaWJ1dGVzIGF0dHJzOworICAgIFBhcnRpYWxTd2FwVHJhY2tlckNvbnRleHQqIHBhcnRp
YWxTd2FwVHJhY2tlciA9IG5ldyBQYXJ0aWFsU3dhcFRyYWNrZXJDb250ZXh0KCk7CisgICAgUmVm
UHRyPEdyYXBoaWNzQ29udGV4dDNEPiBjb250ZXh0ID0gR3JhcGhpY3NDb250ZXh0M0RQcml2YXRl
OjpjcmVhdGVHcmFwaGljc0NvbnRleHRGcm9tV2ViQ29udGV4dChhZG9wdFB0cihwYXJ0aWFsU3dh
cFRyYWNrZXIpLCBhdHRycywgMCwgR3JhcGhpY3NDb250ZXh0M0Q6OlJlbmRlckRpcmVjdGx5VG9I
b3N0V2luZG93LCBHcmFwaGljc0NvbnRleHQzRFByaXZhdGU6OkZvclVzZU9uVGhpc1RocmVhZCk7
CisKKyAgICAvLyBUaGlzIHRlc3QgY3JlYXRlcyBpdHMgb3duIENDTGF5ZXJUcmVlSG9zdEltcGws
IHNvCisgICAgLy8gdGhhdCB3ZSBjYW4gZm9yY2UgcGFydGlhbCBzd2FwIGVuYWJsZWQuCisgICAg
Q0NTZXR0aW5ncyBzZXR0aW5nczsKKyAgICBzZXR0aW5ncy5wYXJ0aWFsU3dhcEVuYWJsZWQgPSB0
cnVlOworICAgIE93blB0cjxDQ0xheWVyVHJlZUhvc3RJbXBsPiBsYXllclRyZWVIb3N0SW1wbCA9
IENDTGF5ZXJUcmVlSG9zdEltcGw6OmNyZWF0ZShzZXR0aW5ncywgdGhpcyk7CisgICAgbGF5ZXJU
cmVlSG9zdEltcGwtPmluaXRpYWxpemVMYXllclJlbmRlcmVyKGNvbnRleHQpOworICAgIGxheWVy
VHJlZUhvc3RJbXBsLT5zZXRWaWV3cG9ydChJbnRTaXplKDUwMCwgNTAwKSk7CisKKyAgICBSZWZQ
dHI8Q0NMYXllckltcGw+IHJvb3QgPSBhZG9wdFJlZihuZXcgRmFrZURyYXdhYmxlQ0NMYXllcklt
cGwoMSkpOworICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gY2hpbGQgPSBhZG9wdFJlZihuZXcgRmFr
ZURyYXdhYmxlQ0NMYXllckltcGwoMikpOworICAgIGNoaWxkLT5zZXRQb3NpdGlvbihGbG9hdFBv
aW50KDEyLCAxMykpOworICAgIGNoaWxkLT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50KDAsIDAp
KTsKKyAgICBjaGlsZC0+c2V0Qm91bmRzKEludFNpemUoMTQsIDE1KSk7CisgICAgY2hpbGQtPnNl
dERyYXdzQ29udGVudCh0cnVlKTsKKyAgICByb290LT5zZXRBbmNob3JQb2ludChGbG9hdFBvaW50
KDAsIDApKTsKKyAgICByb290LT5zZXRCb3VuZHMoSW50U2l6ZSg1MDAsIDUwMCkpOworICAgIHJv
b3QtPnNldERyYXdzQ29udGVudCh0cnVlKTsKKyAgICByb290LT5hZGRDaGlsZChjaGlsZCk7Cisg
ICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFJvb3RMYXllcihyb290KTsKKworICAgIC8vIEZpcnN0
IGZyYW1lLCB0aGUgZW50aXJlIHNjcmVlbiBzaG91bGQgZ2V0IHN3YXBwZWQuCisgICAgbGF5ZXJU
cmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsKKyAgICBsYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1
ZmZlcnMoKTsKKyAgICBJbnRSZWN0IGFjdHVhbFN3YXBSZWN0ID0gcGFydGlhbFN3YXBUcmFja2Vy
LT5wYXJ0aWFsU3dhcFJlY3QoKTsKKyAgICBJbnRSZWN0IGV4cGVjdGVkU3dhcFJlY3QgPSBJbnRS
ZWN0KEludFBvaW50Ojp6ZXJvKCksIEludFNpemUoNTAwLCA1MDApKTsKKyAgICBFWFBFQ1RfRVEo
ZXhwZWN0ZWRTd2FwUmVjdC54KCksIGFjdHVhbFN3YXBSZWN0LngoKSk7CisgICAgRVhQRUNUX0VR
KGV4cGVjdGVkU3dhcFJlY3QueSgpLCBhY3R1YWxTd2FwUmVjdC55KCkpOworICAgIEVYUEVDVF9F
UShleHBlY3RlZFN3YXBSZWN0LndpZHRoKCksIGFjdHVhbFN3YXBSZWN0LndpZHRoKCkpOworICAg
IEVYUEVDVF9FUShleHBlY3RlZFN3YXBSZWN0LmhlaWdodCgpLCBhY3R1YWxTd2FwUmVjdC5oZWln
aHQoKSk7CisKKyAgICAvLyBTZWNvbmQgZnJhbWUsIG9ubHkgdGhlIGRhbWFnZWQgYXJlYSBzaG91
bGQgZ2V0IHN3YXBwZWQuIERhbWFnZSBzaG91bGQgYmUgdGhlIHVuaW9uCisgICAgLy8gb2Ygb2xk
IGFuZCBuZXcgY2hpbGQgcmVjdHMuCisgICAgLy8gZXhwZWN0ZWQgZGFtYWdlIHJlY3Q6IEludFJl
Y3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSgyNiwgMjgpKTsKKyAgICAvLyBleHBlY3RlZCBz
d2FwIHJlY3Q6IHZlcnRpY2FsbHkgZmxpcHBlZCwgd2l0aCBvcmlnaW4gYXQgYm90dG9tIGxlZnQg
Y29ybmVyLgorICAgIGNoaWxkLT5zZXRQb3NpdGlvbihGbG9hdFBvaW50KDAsIDApKTsKKyAgICBs
YXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5z
d2FwQnVmZmVycygpOworICAgIGFjdHVhbFN3YXBSZWN0ID0gcGFydGlhbFN3YXBUcmFja2VyLT5w
YXJ0aWFsU3dhcFJlY3QoKTsKKyAgICBleHBlY3RlZFN3YXBSZWN0ID0gSW50UmVjdChJbnRQb2lu
dCgwLCA1MDAtMjgpLCBJbnRTaXplKDI2LCAyOCkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZFN3
YXBSZWN0LngoKSwgYWN0dWFsU3dhcFJlY3QueCgpKTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRT
d2FwUmVjdC55KCksIGFjdHVhbFN3YXBSZWN0LnkoKSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVk
U3dhcFJlY3Qud2lkdGgoKSwgYWN0dWFsU3dhcFJlY3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VR
KGV4cGVjdGVkU3dhcFJlY3QuaGVpZ2h0KCksIGFjdHVhbFN3YXBSZWN0LmhlaWdodCgpKTsKKwor
ICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHBhcnRpYWwgc3dhcCBpcyBjb25zdHJhaW5lZCB0byB0aGUg
dmlld3BvcnQgZGltZW5zaW9ucworICAgIC8vIGV4cGVjdGVkIGRhbWFnZSByZWN0OiBJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIEludFNpemUoNTAwLCA1MDApKTsKKyAgICAvLyBleHBlY3RlZCBz
d2FwIHJlY3Q6IGZsaXBwZWQgZGFtYWdlIHJlY3QsIGJ1dCBhbHNvIGNsYW1wZWQgdG8gdmlld3Bv
cnQKKyAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Vmlld3BvcnQoSW50U2l6ZSgxMCwgMTApKTsK
KyAgICByb290LT5zZXRPcGFjaXR5KDAuNyk7IC8vIHRoaXMgd2lsbCBkYW1hZ2UgZXZlcnl0aGlu
ZworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgbGF5ZXJUcmVlSG9z
dEltcGwtPnN3YXBCdWZmZXJzKCk7CisgICAgYWN0dWFsU3dhcFJlY3QgPSBwYXJ0aWFsU3dhcFRy
YWNrZXItPnBhcnRpYWxTd2FwUmVjdCgpOworICAgIGV4cGVjdGVkU3dhcFJlY3QgPSBJbnRSZWN0
KEludFBvaW50Ojp6ZXJvKCksIEludFNpemUoMTAsIDEwKSk7CisgICAgRVhQRUNUX0VRKGV4cGVj
dGVkU3dhcFJlY3QueCgpLCBhY3R1YWxTd2FwUmVjdC54KCkpOworICAgIEVYUEVDVF9FUShleHBl
Y3RlZFN3YXBSZWN0LnkoKSwgYWN0dWFsU3dhcFJlY3QueSgpKTsKKyAgICBFWFBFQ1RfRVEoZXhw
ZWN0ZWRTd2FwUmVjdC53aWR0aCgpLCBhY3R1YWxTd2FwUmVjdC53aWR0aCgpKTsKKyAgICBFWFBF
Q1RfRVEoZXhwZWN0ZWRTd2FwUmVjdC5oZWlnaHQoKSwgYWN0dWFsU3dhcFJlY3QuaGVpZ2h0KCkp
OworfQogCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120960</attachid>
            <date>2012-01-03 11:00:59 -0800</date>
            <delta_ts>2012-01-03 16:34:21 -0800</delta_ts>
            <desc>updated to close to tip of tree</desc>
            <filename>bug-74893-20120103110058.patch</filename>
            <type>text/plain</type>
            <size>13948</size>
            <attacher name="Shawn Singh">shawnsingh</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzOTM2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDJkNDIzNTgwMGU3MDU1
NTY2NDBiNjdjZWM4NzRkN2Q4YzAzODRjOC4uMGU0ZDFhNWZlNmFmMDZkYTc5MGM3MTUyMWZiOTRl
OWJiNjNlMGY1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTAxLTAzICBTaGF3
biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0g
TWFrZSBzdXJlIHJvb3QgZGFtYWdlIHJlY3QgZ2V0cyBwYXNzZWQgdG8gcmVuZGVyZXIKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODkzCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVW5pdCB0ZXN0IGFkZGVk
IHRvIENDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAorCisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkxheWVyUmVuZGVyZXJDaHJvbWl1bTo6c3dhcEJ1ZmZlcnMpOgorICAgICAgICAqIHBsYXRm
b3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q0NMYXllclRyZWVIb3N0SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFz
c2VzKToKKyAgICAgICAgKFdlYkNvcmU6OkNDTGF5ZXJUcmVlSG9zdEltcGw6OnN3YXBCdWZmZXJz
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhv
c3RJbXBsLmg6CisKIDIwMTItMDEtMDMgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIEZpeCBzY3JvbGxiYXJzIHNpemUgd2l0aCBHVEsr
IDMueApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cgYi9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCAwZTRlOGM4M2I4N2QyM2JmNWM1MGI4
ZTkzNzA1NjIwOWQ4MzhhY2UwLi5iN2RiMTdiMjMwMGU2MzViYzRkZjY2MzAzNzIxMTNmMDlkMTAx
OWNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTAx
LTAzICBTaGF3biBTaW5naCAgPHNoYXduc2luZ2hAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtj
aHJvbWl1bV0gTWFrZSBzdXJlIHJvb3QgZGFtYWdlIHJlY3QgZ2V0cyBwYXNzZWQgdG8gcmVuZGVy
ZXIKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODkz
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiB0ZXN0
cy9DQ0xheWVyVHJlZUhvc3RJbXBsVGVzdC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlRFU1RfRik6
CisgICAgICAgIChXZWJLaXQ6OlBhcnRpYWxTd2FwVHJhY2tlckNvbnRleHQ6OmluaXRpYWxpemUp
OgorICAgICAgICAoV2ViS2l0OjpQYXJ0aWFsU3dhcFRyYWNrZXJDb250ZXh0Ojpwb3N0U3ViQnVm
ZmVyQ0hST01JVU0pOgorICAgICAgICAoV2ViS2l0OjpQYXJ0aWFsU3dhcFRyYWNrZXJDb250ZXh0
OjpnZXRTdHJpbmcpOgorICAgICAgICAoV2ViS2l0OjpQYXJ0aWFsU3dhcFRyYWNrZXJDb250ZXh0
OjpwYXJ0aWFsU3dhcFJlY3QpOgorCiAyMDExLTEyLTMwICBBbWkgRmlzY2htYW4gIDxmaXNjaG1h
bkBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWxsb3cgZGlzYWJsaW5nIGFjY2VsZXJhdGVkIGNv
bXBvc2l0aW5nIGluIFdlYk1lZGlhUGxheWVyQ2xpZW50IChzbyBhdWRpby1vbmx5IDx2aWRlbz4g
aXNuJ3QgYWNjZWxlcmF0ZWQpLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5jcHAK
aW5kZXggM2ExNGI0M2U1ZDNlNzdlNGNlNTdjYjIxMTY5NjdkNzFiYmNiMzZkYS4uZGFlYjk3Zjlh
MmNjZjJhNWU2Y2VlZjllMDAwNDRjYzg1MWY1YTNmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jaHJvbWl1bS9MYXllclJlbmRl
cmVyQ2hyb21pdW0uY3BwCkBAIC01NSwxMyArNTUsMTMgQEAKICNpbmNsdWRlICJjYy9DQ0N1c3Rv
bUxheWVyRHJhd1F1YWQuaCIKICNpbmNsdWRlICJjYy9DQ0RhbWFnZVRyYWNrZXIuaCIKICNpbmNs
dWRlICJjYy9DQ0RlYnVnQm9yZGVyRHJhd1F1YWQuaCIKKyNpbmNsdWRlICJjYy9DQ0xheWVySW1w
bC5oIgorI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgorI2luY2x1ZGUgImNj
L0NDUHJveHkuaCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclBhc3MuaCIKICNpbmNsdWRlICJjYy9D
Q1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNjL0NDU29saWRDb2xvckRyYXdR
dWFkLmgiCiAjaW5jbHVkZSAiY2MvQ0NUaWxlRHJhd1F1YWQuaCIKLSNpbmNsdWRlICJjYy9DQ0xh
eWVySW1wbC5oIgotI2luY2x1ZGUgImNjL0NDTGF5ZXJUcmVlSG9zdENvbW1vbi5oIgotI2luY2x1
ZGUgImNjL0NDUHJveHkuaCIKICNpZiBVU0UoU0tJQSkKICNpbmNsdWRlICJFeHRlbnNpb25zM0Qu
aCIKICNpbmNsdWRlICJHckNvbnRleHQuaCIKQEAgLTc1MSwxOCArNzUxLDE4IEBAIHZvaWQgTGF5
ZXJSZW5kZXJlckNocm9taXVtOjpmaW5pc2goKQogICAgIG1fY29udGV4dC0+ZmluaXNoKCk7CiB9
CiAKLXZvaWQgTGF5ZXJSZW5kZXJlckNocm9taXVtOjpzd2FwQnVmZmVycygpCit2b2lkIExheWVy
UmVuZGVyZXJDaHJvbWl1bTo6c3dhcEJ1ZmZlcnMoY29uc3QgSW50UmVjdCYgc3ViQnVmZmVyKQog
ewogICAgIFRSQUNFX0VWRU5UKCJMYXllclJlbmRlcmVyQ2hyb21pdW06OnN3YXBCdWZmZXJzIiwg
dGhpcywgMCk7CiAgICAgLy8gV2UncmUgZG9uZSEgVGltZSB0byBzd2FwYnVmZmVycyEKIAogICAg
IGlmIChtX2NhcGFiaWxpdGllcy51c2luZ1BhcnRpYWxTd2FwKSB7CiAgICAgICAgIC8vIElmIHN1
cHBvcnRlZCwgd2UgY2FuIHNhdmUgc2lnbmlmaWNhbnQgYmFuZHdpZHRoIGJ5IG9ubHkgc3dhcHBp
bmcgdGhlIGRhbWFnZWQvc2Npc3NvcmVkIHJlZ2lvbiAoY2xhbXBlZCB0byB0aGUgdmlld3BvcnQp
Ci0gICAgICAgIEludFJlY3Qgc3ViQnVmZmVyID0gZW5jbG9zaW5nSW50UmVjdChtX3Jvb3REYW1h
Z2VSZWN0KTsKLSAgICAgICAgc3ViQnVmZmVyLmludGVyc2VjdChJbnRSZWN0KEludFBvaW50Ojp6
ZXJvKCksIHZpZXdwb3J0U2l6ZSgpKSk7CisgICAgICAgIEludFJlY3QgY2xpcHBlZFN1YkJ1ZmZl
ciA9IHN1YkJ1ZmZlcjsKKyAgICAgICAgY2xpcHBlZFN1YkJ1ZmZlci5pbnRlcnNlY3QoSW50UmVj
dChJbnRQb2ludDo6emVybygpLCB2aWV3cG9ydFNpemUoKSkpOwogICAgICAgICBFeHRlbnNpb25z
M0RDaHJvbWl1bSogZXh0ZW5zaW9uczNEQ2hyb21pdW0gPSBzdGF0aWNfY2FzdDxFeHRlbnNpb25z
M0RDaHJvbWl1bSo+KG1fY29udGV4dC0+Z2V0RXh0ZW5zaW9ucygpKTsKLSAgICAgICAgaW50IGZs
aXBwZWRZUG9zT2ZSZWN0Qm90dG9tID0gdmlld3BvcnRIZWlnaHQoKSAtIHN1YkJ1ZmZlci55KCkg
LSBzdWJCdWZmZXIuaGVpZ2h0KCk7Ci0gICAgICAgIGV4dGVuc2lvbnMzRENocm9taXVtLT5wb3N0
U3ViQnVmZmVyQ0hST01JVU0oc3ViQnVmZmVyLngoKSwgZmxpcHBlZFlQb3NPZlJlY3RCb3R0b20s
IHN1YkJ1ZmZlci53aWR0aCgpLCBzdWJCdWZmZXIuaGVpZ2h0KCkpOworICAgICAgICBpbnQgZmxp
cHBlZFlQb3NPZlJlY3RCb3R0b20gPSB2aWV3cG9ydEhlaWdodCgpIC0gY2xpcHBlZFN1YkJ1ZmZl
ci55KCkgLSBjbGlwcGVkU3ViQnVmZmVyLmhlaWdodCgpOworICAgICAgICBleHRlbnNpb25zM0RD
aHJvbWl1bS0+cG9zdFN1YkJ1ZmZlckNIUk9NSVVNKGNsaXBwZWRTdWJCdWZmZXIueCgpLCBmbGlw
cGVkWVBvc09mUmVjdEJvdHRvbSwgY2xpcHBlZFN1YkJ1ZmZlci53aWR0aCgpLCBjbGlwcGVkU3Vi
QnVmZmVyLmhlaWdodCgpKTsKICAgICB9IGVsc2UKICAgICAgICAgLy8gTm90ZSB0aGF0IGN1cnJl
bnRseSB0aGlzIGhhcyB0aGUgc2FtZSBlZmZlY3QgYXMgc3dhcEJ1ZmZlcnM7IHdlIHNob3VsZAog
ICAgICAgICAvLyBjb25zaWRlciBleHBvc2luZyBhIGRpZmZlcmVudCBlbnRyeSBwb2ludCBvbiBH
cmFwaGljc0NvbnRleHQzRC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2Nocm9taXVtL0xheWVyUmVuZGVyZXJDaHJvbWl1bS5oIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKaW5kZXgg
YzhhY2IyYzM0NWFhMDZjMTdkZDQ5YTM3MWM4OTJhOGMyZDJhN2RmMy4uMmJiMDE0NmFkNTMxNGNh
ZDhjNWY3OGRjYTAxZGFkMTVkZWZlYmUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9taXVtLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vTGF5ZXJSZW5kZXJlckNocm9t
aXVtLmgKQEAgLTEwNSw3ICsxMDUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmaW5pc2goKTsKIAog
ICAgIC8vIHB1dHMgYmFja2J1ZmZlciBvbnNjcmVlbgotICAgIHZvaWQgc3dhcEJ1ZmZlcnMoKTsK
KyAgICB2b2lkIHN3YXBCdWZmZXJzKGNvbnN0IEludFJlY3QmIHN1YkJ1ZmZlcik7CiAKICAgICBz
dGF0aWMgdm9pZCBkZWJ1Z0dMQ2FsbChHcmFwaGljc0NvbnRleHQzRCosIGNvbnN0IGNoYXIqIGNv
bW1hbmQsIGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lKTsKIApAQCAtMjQyLDggKzI0Miw2IEBA
IHByaXZhdGU6CiAgICAgRmxvYXRRdWFkIG1fc2hhcmVkR2VvbWV0cnlRdWFkOwogCiAgICAgYm9v
bCBtX2lzVmlld3BvcnRDaGFuZ2VkOwotCi0gICAgRmxvYXRSZWN0IG1fcm9vdERhbWFnZVJlY3Q7
CiB9OwogCiAvLyBTZXR0aW5nIERFQlVHX0dMX0NBTExTIHRvIDEgd2lsbCBjYWxsIGdsR2V0RXJy
b3IoKSBhZnRlciBhbG1vc3QgZXZlcnkgR0wKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAKaW5kZXggMDk0NjViZjk5ZTc5ZmU3MWYyNDE3NDY3ODQ1MmRhZWY4NzU5MTA3NC4u
MTUwZmM4ZTkyY2E2OGEwYjgxOGNiY2EzZjdkMzlkY2RhZDc2MmU2OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0
SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0v
Y2MvQ0NMYXllclRyZWVIb3N0SW1wbC5jcHAKQEAgLTMxLDggKzMxLDggQEAKICNpbmNsdWRlICJM
YXllclJlbmRlcmVyQ2hyb21pdW0uaCIKICNpbmNsdWRlICJUcmFjZUV2ZW50LmgiCiAjaW5jbHVk
ZSAiY2MvQ0NEYW1hZ2VUcmFja2VyLmgiCi0jaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0Q29t
bW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NMYXllclRyZWVIb3N0LmgiCisjaW5jbHVkZSAiY2MvQ0NM
YXllclRyZWVIb3N0Q29tbW9uLmgiCiAjaW5jbHVkZSAiY2MvQ0NQYWdlU2NhbGVBbmltYXRpb24u
aCIKICNpbmNsdWRlICJjYy9DQ1JlbmRlclN1cmZhY2VEcmF3UXVhZC5oIgogI2luY2x1ZGUgImNj
L0NDVGhyZWFkVGFzay5oIgpAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6Y2FsY3VsYXRlUmVuZGVyUGFzc2VzKFZlY3RvcjxPd25QdHI8Q0NSZW5kZXJQYXNzPiA+
JiBwCiAKICAgICBpZiAobGF5ZXJSZW5kZXJlckNhcGFiaWxpdGllcygpLnVzaW5nUGFydGlhbFN3
YXApCiAgICAgICAgIHRyYWNrRGFtYWdlRm9yQWxsU3VyZmFjZXMocm9vdExheWVyKCksIHJlbmRl
clN1cmZhY2VMYXllckxpc3QpOwotICAgIEZsb2F0UmVjdCByb290RGFtYWdlUmVjdCA9IHJvb3RM
YXllcigpLT5yZW5kZXJTdXJmYWNlKCktPmRhbWFnZVRyYWNrZXIoKS0+Y3VycmVudERhbWFnZVJl
Y3QoKTsKKyAgICBtX3Jvb3REYW1hZ2VSZWN0ID0gcm9vdExheWVyKCktPnJlbmRlclN1cmZhY2Uo
KS0+ZGFtYWdlVHJhY2tlcigpLT5jdXJyZW50RGFtYWdlUmVjdCgpOwogCiAgICAgZm9yIChpbnQg
c3VyZmFjZUluZGV4ID0gcmVuZGVyU3VyZmFjZUxheWVyTGlzdC5zaXplKCkgLSAxOyBzdXJmYWNl
SW5kZXggPj0gMCA7IC0tc3VyZmFjZUluZGV4KSB7CiAgICAgICAgIENDTGF5ZXJJbXBsKiByZW5k
ZXJTdXJmYWNlTGF5ZXIgPSByZW5kZXJTdXJmYWNlTGF5ZXJMaXN0W3N1cmZhY2VJbmRleF0uZ2V0
KCk7CkBAIC0yMTcsNyArMjE3LDcgQEAgdm9pZCBDQ0xheWVyVHJlZUhvc3RJbXBsOjpjYWxjdWxh
dGVSZW5kZXJQYXNzZXMoVmVjdG9yPE93blB0cjxDQ1JlbmRlclBhc3M+ID4mIHAKIAogICAgICAg
ICBGbG9hdFJlY3Qgc3VyZmFjZURhbWFnZVJlY3Q7CiAgICAgICAgIGlmIChsYXllclJlbmRlcmVy
Q2FwYWJpbGl0aWVzKCkudXNpbmdQYXJ0aWFsU3dhcCkKLSAgICAgICAgICAgIHN1cmZhY2VEYW1h
Z2VSZWN0ID0gZGFtYWdlSW5TdXJmYWNlU3BhY2UocmVuZGVyU3VyZmFjZUxheWVyLCByb290RGFt
YWdlUmVjdCk7CisgICAgICAgICAgICBzdXJmYWNlRGFtYWdlUmVjdCA9IGRhbWFnZUluU3VyZmFj
ZVNwYWNlKHJlbmRlclN1cmZhY2VMYXllciwgbV9yb290RGFtYWdlUmVjdCk7CiAgICAgICAgIHBh
c3MtPnNldFN1cmZhY2VEYW1hZ2VSZWN0KHN1cmZhY2VEYW1hZ2VSZWN0KTsKIAogICAgICAgICBj
b25zdCBDQ0xheWVyTGlzdCYgbGF5ZXJMaXN0ID0gcmVuZGVyU3VyZmFjZS0+bGF5ZXJMaXN0KCk7
CkBAIC0yODQsNyArMjg0LDcgQEAgVGV4dHVyZUFsbG9jYXRvciogQ0NMYXllclRyZWVIb3N0SW1w
bDo6Y29udGVudHNUZXh0dXJlQWxsb2NhdG9yKCkgY29uc3QKIHZvaWQgQ0NMYXllclRyZWVIb3N0
SW1wbDo6c3dhcEJ1ZmZlcnMoKQogewogICAgIEFTU0VSVChtX2xheWVyUmVuZGVyZXIgJiYgIWlz
Q29udGV4dExvc3QoKSk7Ci0gICAgbV9sYXllclJlbmRlcmVyLT5zd2FwQnVmZmVycygpOworICAg
IG1fbGF5ZXJSZW5kZXJlci0+c3dhcEJ1ZmZlcnMoZW5jbG9zaW5nSW50UmVjdChtX3Jvb3REYW1h
Z2VSZWN0KSk7CiB9CiAKIHZvaWQgQ0NMYXllclRyZWVIb3N0SW1wbDo6b25Td2FwQnVmZmVyc0Nv
bXBsZXRlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2No
cm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2Nocm9taXVtL2NjL0NDTGF5ZXJUcmVlSG9zdEltcGwuaAppbmRleCBlZDM4Yjg2
ZGU0NmZjYjM1NDViODA4OWVmMTZjNmI0NTIxMzg4ZGQxLi43YTdkMzY4MDA4NGJiZTNhOGI5N2Nm
NWI4MTE4NzE0MTAxMjgyOTkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9jaHJvbWl1bS9jYy9DQ0xheWVyVHJlZUhvc3RJbXBsLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2hyb21pdW0vY2MvQ0NMYXllclRyZWVIb3N0SW1wbC5o
CkBAIC0xNTQsNiArMTU0LDggQEAgcHJpdmF0ZToKICAgICBPd25QdHI8Q0NQYWdlU2NhbGVBbmlt
YXRpb24+IG1fcGFnZVNjYWxlQW5pbWF0aW9uOwogCiAgICAgQ0NMYXllclNvcnRlciBtX2xheWVy
U29ydGVyOworCisgICAgRmxvYXRSZWN0IG1fcm9vdERhbWFnZVJlY3Q7CiB9OwogCiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9DQ0xheWVyVHJlZUhvc3RJbXBs
VGVzdC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0LmNwcAppbmRleCBjNDdhN2MyOTBjNGQxMDRjZDVkN2Y5YmJhOTYwNDg3ZDhlZmQ3MjEz
Li5lOThmNDRkYTJlN2NmMTVhMjkxZTViMDMwNmY1NjhhNWIzMThkYTRiIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Rlc3RzL0NDTGF5ZXJUcmVlSG9zdEltcGxUZXN0
LmNwcApAQCAtMzgsNyArMzgsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViS2l0OwogCiBuYW1lc3Bh
Y2UgewogCi1jbGFzcyBDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCA6IHB1YmxpYyB0ZXN0aW5nOjpU
ZXN0LCBDQ0xheWVyVHJlZUhvc3RJbXBsQ2xpZW50IHsKK2NsYXNzIENDTGF5ZXJUcmVlSG9zdElt
cGxUZXN0IDogcHVibGljIHRlc3Rpbmc6OlRlc3QsIHB1YmxpYyBDQ0xheWVyVHJlZUhvc3RJbXBs
Q2xpZW50IHsKIHB1YmxpYzoKICAgICBDQ0xheWVyVHJlZUhvc3RJbXBsVGVzdCgpCiAgICAgICAg
IDogbV9kaWRSZXF1ZXN0Q29tbWl0KGZhbHNlKQpAQCAtMzA4LDcgKzMwOCw3IEBAIHByaXZhdGU6
CiAKIGNsYXNzIEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsOiBwdWJsaWMgQ0NMYXllckltcGwgewog
cHVibGljOgotICAgIEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKCkgOiBDQ0xheWVySW1wbCgwKSB7
IH0KKyAgICBleHBsaWNpdCBGYWtlRHJhd2FibGVDQ0xheWVySW1wbChpbnQgaWQpIDogQ0NMYXll
ckltcGwoaWQpIHsgfQogICAgIHZpcnR1YWwgdm9pZCBkcmF3KExheWVyUmVuZGVyZXJDaHJvbWl1
bSogcmVuZGVyZXIpIHsgfQogfTsKIApAQCAtMzIzLDcgKzMyMyw3IEBAIFRFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgcmVzaGFwZU5vdENhbGxlZFVudGlsRHJhdykKICAgICBtX2hvc3RJ
bXBsLT5pbml0aWFsaXplTGF5ZXJSZW5kZXJlcihjb250ZXh0KTsKICAgICBtX2hvc3RJbXBsLT5z
ZXRWaWV3cG9ydChJbnRTaXplKDEwLCAxMCkpOwogCi0gICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBy
b290ID0gYWRvcHRSZWYobmV3IEZha2VEcmF3YWJsZUNDTGF5ZXJJbXBsKCkpOworICAgIFJlZlB0
cjxDQ0xheWVySW1wbD4gcm9vdCA9IGFkb3B0UmVmKG5ldyBGYWtlRHJhd2FibGVDQ0xheWVySW1w
bCgxKSk7CiAgICAgcm9vdC0+c2V0QW5jaG9yUG9pbnQoRmxvYXRQb2ludCgwLCAwKSk7CiAgICAg
cm9vdC0+c2V0Qm91bmRzKEludFNpemUoMTAsIDEwKSk7CiAgICAgcm9vdC0+c2V0RHJhd3NDb250
ZW50KHRydWUpOwpAQCAtMzM0LDUgKzMzNCw5NCBAQCBURVNUX0YoQ0NMYXllclRyZWVIb3N0SW1w
bFRlc3QsIHJlc2hhcGVOb3RDYWxsZWRVbnRpbERyYXcpCiAgICAgRVhQRUNUX1RSVUUocmVzaGFw
ZVRyYWNrZXItPnJlc2hhcGVDYWxsZWQoKSk7CiB9CiAKK2NsYXNzIFBhcnRpYWxTd2FwVHJhY2tl
ckNvbnRleHQgOiBwdWJsaWMgRmFrZVdlYkdyYXBoaWNzQ29udGV4dDNEIHsKK3B1YmxpYzoKKyAg
ICB2aXJ0dWFsIGJvb2wgaW5pdGlhbGl6ZShBdHRyaWJ1dGVzLCBXZWJWaWV3KiwgYm9vbCByZW5k
ZXJEaXJlY3RseVRvV2ViVmlldykgeyByZXR1cm4gdHJ1ZTsgfQorCisgICAgdmlydHVhbCB2b2lk
IHBvc3RTdWJCdWZmZXJDSFJPTUlVTShpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdo
dCkKKyAgICB7CisgICAgICAgIG1fcGFydGlhbFN3YXBSZWN0ID0gSW50UmVjdCh4LCB5LCB3aWR0
aCwgaGVpZ2h0KTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIFdlYlN0cmluZyBnZXRTdHJpbmcoV0dD
M0RlbnVtIG5hbWUpCisgICAgeworICAgICAgICBpZiAobmFtZSA9PSBHcmFwaGljc0NvbnRleHQz
RDo6RVhURU5TSU9OUykKKyAgICAgICAgICAgIHJldHVybiBXZWJTdHJpbmcoIkdMX0NIUk9NSVVN
X3Bvc3Rfc3ViX2J1ZmZlciIpOworCisgICAgICAgIHJldHVybiBXZWJTdHJpbmcoKTsKKyAgICB9
CisKKyAgICBJbnRSZWN0IHBhcnRpYWxTd2FwUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFydGlh
bFN3YXBSZWN0OyB9CisKK3ByaXZhdGU6CisgICAgSW50UmVjdCBtX3BhcnRpYWxTd2FwUmVjdDsK
K307CisKKy8vIE1ha2Ugc3VyZSBkYW1hZ2UgdHJhY2tpbmcgcHJvcGFnYXRlcyBhbGwgdGhlIHdh
eSB0byB0aGUgZ3JhcGhpY3MgY29udGV4dCwKKy8vIHdoZXJlIGl0IHNob3VsZCByZXF1ZXN0IHRv
IHN3YXAgb25seSB0aGUgc3ViQnVmZmVyIHRoYXQgaXMgZGFtYWdlZC4KK1RFU1RfRihDQ0xheWVy
VHJlZUhvc3RJbXBsVGVzdCwgcGFydGlhbFN3YXBSZWNlaXZlc0RhbWFnZVJlY3QpCit7CisgICAg
R3JhcGhpY3NDb250ZXh0M0Q6OkF0dHJpYnV0ZXMgYXR0cnM7CisgICAgUGFydGlhbFN3YXBUcmFj
a2VyQ29udGV4dCogcGFydGlhbFN3YXBUcmFja2VyID0gbmV3IFBhcnRpYWxTd2FwVHJhY2tlckNv
bnRleHQoKTsKKyAgICBSZWZQdHI8R3JhcGhpY3NDb250ZXh0M0Q+IGNvbnRleHQgPSBHcmFwaGlj
c0NvbnRleHQzRFByaXZhdGU6OmNyZWF0ZUdyYXBoaWNzQ29udGV4dEZyb21XZWJDb250ZXh0KGFk
b3B0UHRyKHBhcnRpYWxTd2FwVHJhY2tlciksIGF0dHJzLCAwLCBHcmFwaGljc0NvbnRleHQzRDo6
UmVuZGVyRGlyZWN0bHlUb0hvc3RXaW5kb3csIEdyYXBoaWNzQ29udGV4dDNEUHJpdmF0ZTo6Rm9y
VXNlT25UaGlzVGhyZWFkKTsKKworICAgIC8vIFRoaXMgdGVzdCBjcmVhdGVzIGl0cyBvd24gQ0NM
YXllclRyZWVIb3N0SW1wbCwgc28KKyAgICAvLyB0aGF0IHdlIGNhbiBmb3JjZSBwYXJ0aWFsIHN3
YXAgZW5hYmxlZC4KKyAgICBDQ1NldHRpbmdzIHNldHRpbmdzOworICAgIHNldHRpbmdzLnBhcnRp
YWxTd2FwRW5hYmxlZCA9IHRydWU7CisgICAgT3duUHRyPENDTGF5ZXJUcmVlSG9zdEltcGw+IGxh
eWVyVHJlZUhvc3RJbXBsID0gQ0NMYXllclRyZWVIb3N0SW1wbDo6Y3JlYXRlKHNldHRpbmdzLCB0
aGlzKTsKKyAgICBsYXllclRyZWVIb3N0SW1wbC0+aW5pdGlhbGl6ZUxheWVyUmVuZGVyZXIoY29u
dGV4dCk7CisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPnNldFZpZXdwb3J0KEludFNpemUoNTAwLCA1
MDApKTsKKworICAgIFJlZlB0cjxDQ0xheWVySW1wbD4gcm9vdCA9IGFkb3B0UmVmKG5ldyBGYWtl
RHJhd2FibGVDQ0xheWVySW1wbCgxKSk7CisgICAgUmVmUHRyPENDTGF5ZXJJbXBsPiBjaGlsZCA9
IGFkb3B0UmVmKG5ldyBGYWtlRHJhd2FibGVDQ0xheWVySW1wbCgyKSk7CisgICAgY2hpbGQtPnNl
dFBvc2l0aW9uKEZsb2F0UG9pbnQoMTIsIDEzKSk7CisgICAgY2hpbGQtPnNldEFuY2hvclBvaW50
KEZsb2F0UG9pbnQoMCwgMCkpOworICAgIGNoaWxkLT5zZXRCb3VuZHMoSW50U2l6ZSgxNCwgMTUp
KTsKKyAgICBjaGlsZC0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIHJvb3QtPnNldEFuY2hv
clBvaW50KEZsb2F0UG9pbnQoMCwgMCkpOworICAgIHJvb3QtPnNldEJvdW5kcyhJbnRTaXplKDUw
MCwgNTAwKSk7CisgICAgcm9vdC0+c2V0RHJhd3NDb250ZW50KHRydWUpOworICAgIHJvb3QtPmFk
ZENoaWxkKGNoaWxkKTsKKyAgICBsYXllclRyZWVIb3N0SW1wbC0+c2V0Um9vdExheWVyKHJvb3Qp
OworCisgICAgLy8gRmlyc3QgZnJhbWUsIHRoZSBlbnRpcmUgc2NyZWVuIHNob3VsZCBnZXQgc3dh
cHBlZC4KKyAgICBsYXllclRyZWVIb3N0SW1wbC0+ZHJhd0xheWVycygpOworICAgIGxheWVyVHJl
ZUhvc3RJbXBsLT5zd2FwQnVmZmVycygpOworICAgIEludFJlY3QgYWN0dWFsU3dhcFJlY3QgPSBw
YXJ0aWFsU3dhcFRyYWNrZXItPnBhcnRpYWxTd2FwUmVjdCgpOworICAgIEludFJlY3QgZXhwZWN0
ZWRTd2FwUmVjdCA9IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSg1MDAsIDUwMCkp
OworICAgIEVYUEVDVF9FUShleHBlY3RlZFN3YXBSZWN0LngoKSwgYWN0dWFsU3dhcFJlY3QueCgp
KTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRTd2FwUmVjdC55KCksIGFjdHVhbFN3YXBSZWN0Lnko
KSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkU3dhcFJlY3Qud2lkdGgoKSwgYWN0dWFsU3dhcFJl
Y3Qud2lkdGgoKSk7CisgICAgRVhQRUNUX0VRKGV4cGVjdGVkU3dhcFJlY3QuaGVpZ2h0KCksIGFj
dHVhbFN3YXBSZWN0LmhlaWdodCgpKTsKKworICAgIC8vIFNlY29uZCBmcmFtZSwgb25seSB0aGUg
ZGFtYWdlZCBhcmVhIHNob3VsZCBnZXQgc3dhcHBlZC4gRGFtYWdlIHNob3VsZCBiZSB0aGUgdW5p
b24KKyAgICAvLyBvZiBvbGQgYW5kIG5ldyBjaGlsZCByZWN0cy4KKyAgICAvLyBleHBlY3RlZCBk
YW1hZ2UgcmVjdDogSW50UmVjdChJbnRQb2ludDo6emVybygpLCBJbnRTaXplKDI2LCAyOCkpOwor
ICAgIC8vIGV4cGVjdGVkIHN3YXAgcmVjdDogdmVydGljYWxseSBmbGlwcGVkLCB3aXRoIG9yaWdp
biBhdCBib3R0b20gbGVmdCBjb3JuZXIuCisgICAgY2hpbGQtPnNldFBvc2l0aW9uKEZsb2F0UG9p
bnQoMCwgMCkpOworICAgIGxheWVyVHJlZUhvc3RJbXBsLT5kcmF3TGF5ZXJzKCk7CisgICAgbGF5
ZXJUcmVlSG9zdEltcGwtPnN3YXBCdWZmZXJzKCk7CisgICAgYWN0dWFsU3dhcFJlY3QgPSBwYXJ0
aWFsU3dhcFRyYWNrZXItPnBhcnRpYWxTd2FwUmVjdCgpOworICAgIGV4cGVjdGVkU3dhcFJlY3Qg
PSBJbnRSZWN0KEludFBvaW50KDAsIDUwMC0yOCksIEludFNpemUoMjYsIDI4KSk7CisgICAgRVhQ
RUNUX0VRKGV4cGVjdGVkU3dhcFJlY3QueCgpLCBhY3R1YWxTd2FwUmVjdC54KCkpOworICAgIEVY
UEVDVF9FUShleHBlY3RlZFN3YXBSZWN0LnkoKSwgYWN0dWFsU3dhcFJlY3QueSgpKTsKKyAgICBF
WFBFQ1RfRVEoZXhwZWN0ZWRTd2FwUmVjdC53aWR0aCgpLCBhY3R1YWxTd2FwUmVjdC53aWR0aCgp
KTsKKyAgICBFWFBFQ1RfRVEoZXhwZWN0ZWRTd2FwUmVjdC5oZWlnaHQoKSwgYWN0dWFsU3dhcFJl
Y3QuaGVpZ2h0KCkpOworCisgICAgLy8gTWFrZSBzdXJlIHRoYXQgcGFydGlhbCBzd2FwIGlzIGNv
bnN0cmFpbmVkIHRvIHRoZSB2aWV3cG9ydCBkaW1lbnNpb25zCisgICAgLy8gZXhwZWN0ZWQgZGFt
YWdlIHJlY3Q6IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSg1MDAsIDUwMCkpOwor
ICAgIC8vIGV4cGVjdGVkIHN3YXAgcmVjdDogZmxpcHBlZCBkYW1hZ2UgcmVjdCwgYnV0IGFsc28g
Y2xhbXBlZCB0byB2aWV3cG9ydAorICAgIGxheWVyVHJlZUhvc3RJbXBsLT5zZXRWaWV3cG9ydChJ
bnRTaXplKDEwLCAxMCkpOworICAgIHJvb3QtPnNldE9wYWNpdHkoMC43KTsgLy8gdGhpcyB3aWxs
IGRhbWFnZSBldmVyeXRoaW5nCisgICAgbGF5ZXJUcmVlSG9zdEltcGwtPmRyYXdMYXllcnMoKTsK
KyAgICBsYXllclRyZWVIb3N0SW1wbC0+c3dhcEJ1ZmZlcnMoKTsKKyAgICBhY3R1YWxTd2FwUmVj
dCA9IHBhcnRpYWxTd2FwVHJhY2tlci0+cGFydGlhbFN3YXBSZWN0KCk7CisgICAgZXhwZWN0ZWRT
d2FwUmVjdCA9IEludFJlY3QoSW50UG9pbnQ6Onplcm8oKSwgSW50U2l6ZSgxMCwgMTApKTsKKyAg
ICBFWFBFQ1RfRVEoZXhwZWN0ZWRTd2FwUmVjdC54KCksIGFjdHVhbFN3YXBSZWN0LngoKSk7Cisg
ICAgRVhQRUNUX0VRKGV4cGVjdGVkU3dhcFJlY3QueSgpLCBhY3R1YWxTd2FwUmVjdC55KCkpOwor
ICAgIEVYUEVDVF9FUShleHBlY3RlZFN3YXBSZWN0LndpZHRoKCksIGFjdHVhbFN3YXBSZWN0Lndp
ZHRoKCkpOworICAgIEVYUEVDVF9FUShleHBlY3RlZFN3YXBSZWN0LmhlaWdodCgpLCBhY3R1YWxT
d2FwUmVjdC5oZWlnaHQoKSk7Cit9CiAKIH0gLy8gbmFtZXNwYWNlCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>