<?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>92166</bug_id>
          
          <creation_ts>2012-07-24 15:14:35 -0700</creation_ts>
          <short_desc>[Chromium] [DumpRenderTree] IndexedDB: Clear backing store after each test</short_desc>
          <delta_ts>2013-04-11 09:14:20 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Tools / Tests</component>
          <version>523.x (Safari 3)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>WONTFIX</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="Joshua Bell">jsbell</reporter>
          <assigned_to name="Joshua Bell">jsbell</assigned_to>
          <cc>abarth</cc>
    
    <cc>alecflett</cc>
    
    <cc>dglazkov</cc>
    
    <cc>dgrogan</cc>
    
    <cc>fishd</cc>
    
    <cc>jamesr</cc>
    
    <cc>ojan</cc>
    
    <cc>tkent</cc>
    
    <cc>tkent+wkapi</cc>
    
    <cc>tony</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>677241</commentid>
    <comment_count>0</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-24 15:14:35 -0700</bug_when>
    <thetext>As mentioned in https://bugs.webkit.org/show_bug.cgi?id=89609 the introduction of an on-disk backing store for the Chromium DRT IndexedDB tests means that backing store state is preserved across tests. That can lead to bugs e.g.:

test1:
req = indexedDB.open(&apos;db&apos;, 1);
req.onupgradeneeded = function() { db = req.result; db.createObjectStore(&apos;foo&apos;); }
req.onsuccess = function() { shouldBeNonNull(&quot;db&quot;); }

test2:
req = indexedDB.open(&apos;db&apos;, 1);
req.onupgradeneeded = function() { db = req.result; db.createObjectStore(&apos;foo&apos;); }
req.onsuccess = function() { shouldBeNonNull(&quot;db&quot;); }

Since the database name and version is the same in the second test the &quot;upgradeneeded&quot; event will not fire, and hence &quot;db&quot; will never be assigned and the assertion will fail.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677376</commentid>
    <comment_count>1</comment_count>
      <attachid>154182</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-24 17:13:04 -0700</bug_when>
    <thetext>Created attachment 154182
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677379</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-07-24 17:15:14 -0700</bug_when>
    <thetext>Please wait for approval from abarth@webkit.org, dglazkov@chromium.org, fishd@chromium.org, jamesr@chromium.org or tkent@chromium.org before submitting, as this patch contains changes to the Chromium public API. See also https://trac.webkit.org/wiki/ChromiumWebKitAPI.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>677410</commentid>
    <comment_count>3</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-07-24 17:32:02 -0700</bug_when>
    <thetext>I came up with a handful of approaches for doing this - I&apos;m not sure which is best, and I&apos;m not sure about the best way to implement most of them because the route between the TestShell and things like GroupSettings is mysterious. Guidance appreciated.

As background, the current temp dir used in DRT is allocated via TestWebKitPlatformSupport::idbFactory() - but that WebIDBFactory instance is reused for the lifetime of the DRT instance, which is problematic.

Proposal #1: 

This is the included patch - it set a unique temp directory for each test via new static API on WebIDBFactory. The change is is modeled after http://trac.webkit.org/changeset/88358 (the migration tests for sqlite-&gt;leveldb), so it&apos;s at least got some precedent. However, it does this extra work for every layout test(!); and exposes more public API methods. It works, but I&apos;m not thrilled.

Proposal #2:

IDBFactory::open() already digs out a path via document-&gt;page()-&gt;group().groupSettings()-&gt;indexedDBDatabasePath() (there&apos;s similar plumbing for workers). Setting a new path for each test could be done via groupSettings()-&gt;setIndexedDBDatabasePath(). This has the advantage over Proposal #1 that it doesn&apos;t introduce new APIs, although it still requires per-test recycling of the temp directory. I&apos;m unsure how to get from the TestShell to the page to make this chain of calls, though.

Proposal #3:

The fundamental reason the WebIDBFactory instance is retained across tests is because the same PageGroup is retained across tests. That smells like a bug to me, but I have no idea how to approach that one.

Proposal #4: 

If retaining the PageGroup is intentional (see Proposal #2), reset the pagegroup&apos;s IDBFactoryBackendInterface; this could be done via a new method e.g. PageGroupIndexedDatabase::resetFactoryBackend() which releases m_factoryBackend. The next time there&apos;s a call through to DOMWindowIndexedDatabase::webkitIndexedDB a new call to TestWebKitPlatformSupport::idbFactory() will occur.

Thoughts?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>678345</commentid>
    <comment_count>4</comment_count>
    <who name="Tony Chang">tony</who>
    <bug_when>2012-07-25 12:40:35 -0700</bug_when>
    <thetext>One way to avoid a new public WebKit API method would be to add a function to Source/WebCore/testing/Internals.idl.  This is only exposed to testing.  This would likely work for something like proposal #2.

It&apos;s a bit unfortunate that we&apos;d have to create a directory between every layout test.  Maybe we could add a Internals or LayoutTestController method for resetting the database and call it at the start of each IDB test?  Alternately, maybe you could have IDBFactory::open mark a bit in webcore that says that it&apos;s been used and have the reset code check to see if that bit is set (and re set the bit to false).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690538</commentid>
    <comment_count>5</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-08 11:25:56 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Alternately, maybe you could have IDBFactory::open mark a bit in webcore that says that it&apos;s been used and have the reset code check to see if that bit is set (and re set the bit to false).

This would be my preference. This way the code only needs to be written once (not added to every test), avoiding a distributed burden.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690724</commentid>
    <comment_count>6</comment_count>
      <attachid>157291</attachid>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-08 14:21:06 -0700</bug_when>
    <thetext>Created attachment 157291
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690733</commentid>
    <comment_count>7</comment_count>
    <who name="Joshua Bell">jsbell</who>
    <bug_when>2012-08-08 14:25:14 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=157291) [details]
&gt; Patch

Latest version adds a &quot;dirty&quot; flag which can be tested. It&apos;s done in the chromium WebKit public API rather than in WebCore itself - reasonable?

The one bit of nastiness is around the static locals. They will be accessed by Workers that call open (etc), so can&apos;t be defended by an isMainThread() test.

Hrm, on second thought that isn&apos;t safe, as there&apos;s an initialization race. Bleah, r-. I think this really does need to be plumbed all the way through to the page group.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>690745</commentid>
    <comment_count>8</comment_count>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2012-08-08 14:31:13 -0700</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #4)
&gt; &gt; Alternately, maybe you could have IDBFactory::open mark a bit in webcore that says that it&apos;s been used and have the reset code check to see if that bit is set (and re set the bit to false).
&gt; 
&gt; This would be my preference. This way the code only needs to be written once (not added to every test), avoiding a distributed burden.

The disadvantage to this approach is that we need to make sure every port does this. Seems like we should have a WebCore hook in general that does all the WebCore-related reseting that we need to do per test. Then every port can call that method and we don&apos;t need to have all these one-off changes for each port.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>154182</attachid>
            <date>2012-07-24 17:13:04 -0700</date>
            <delta_ts>2012-08-08 14:21:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92166-20120724171254.patch</filename>
            <type>text/plain</type>
            <size>7653</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTIzMzQ2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IGRhMDU4ZmU1YjJjNmNlZjlkZDI1ODFiMjg0YmY4NDJkNDdmOTc5MDMuLjZiMjkyODdkODAwNjJm
NDUwYWYzMzViYTFkMTM5YTYwYTBkYmJkMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjIgQEAKKzIwMTItMDctMjQgIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFtEdW1wUmVuZGVyVHJlZV0gSW5kZXhlZERCOiBD
bGVhciBiYWNraW5nIHN0b3JlIGFmdGVyIGVhY2ggdGVzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgV2ViS2l0IEFQSSBmb3Igc2V0dGluZyBh
IHRlbXAgYmFja2luZyBzdG9yZSBkaXJlY3RvcnkgZm9yIHRlc3RzLCBzbworICAgICAgICBpdCBj
YW4gYmUgcmVjeWNsZWQgYWZ0ZXIgZWFjaCB0ZXN0LgorCisgICAgICAgICogcHVibGljL1dlYklE
QkZhY3RvcnkuaDoKKyAgICAgICAgKFdlYklEQkZhY3RvcnkpOgorICAgICAgICAqIHNyYy9XZWJJ
REJGYWN0b3J5SW1wbC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojp0
ZW1wRGF0YWJhc2VGb2xkZXIpOgorICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5SW1wbDo6
b3Blbik6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3RvcnlJbXBsOjpkZWxldGVEYXRhYmFz
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZhY3Rvcnk6OnNldFRlbXBvcmFyeURhdGFiYXNl
Rm9sZGVyKToKKwogMjAxMi0wNy0yMyAgUGV0ZXIgQmV2ZXJsb28gIDxwZXRlckBjaHJvbWl1bS5v
cmc+CiAKICAgICAgICAgW0Nocm9taXVtXSBCdWlsZGZpeCBmb3IgZml4aW5nIGdjbGllbnQgb24g
dGhlIENocm9taXVtIFdpbmRvd3MgYm90CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJJREJGYWN0b3J5LmgKaW5kZXggZTk1NmViZGVkOGM0NTllN2VmZTYzMjM3MWY2ZTZkMjRh
ZGE4MDlmMi4uZmFkNjUxOTFmZjI1ZTI1MTY5MWUzYTIyYzRiZmZjZWU4NDMxMGRkMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCisrKyBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaApAQCAtNTcsNiAr
NTcsOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG9wZW4oY29uc3QgV2ViU3RyaW5nJiBu
YW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJpdHlPcmlnaW4m
IG9yaWdpbiwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpIHsgV0VC
S0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICAgICB2aXJ0dWFsIHZvaWQgZGVsZXRlRGF0
YWJhc2UoY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqLCBjb25zdCBXZWJT
ZWN1cml0eU9yaWdpbiYsIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKSB7IFdF
QktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorCisgICAgLy8gVXNlZCBmb3IgRHVtcFJlbmRl
clRyZWUgdGVzdHMuCisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgdm9pZCBzZXRUZW1wb3JhcnlE
YXRhYmFzZUZvbGRlcihjb25zdCBXZWJTdHJpbmcmIHBhdGgpOwogfTsKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJG
YWN0b3J5SW1wbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJJREJGYWN0b3J5
SW1wbC5jcHAKaW5kZXggZDg3NWUxMWJjNjVlZjU4OGUwNmUyYjVmNTFkYWMxNmQyNmI2MDhlYy4u
N2QxMzA1YzgyMDQ3ZjAxZTI1MWI0MmUwYWRkMDMzZmM1N2I2Y2JkMSAxMDA3NTUKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViSURCRmFjdG9yeUltcGwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcApAQCAtMzgsMTIgKzM4
LDIxIEBACiAjaW5jbHVkZSAiSURCRmFjdG9yeUJhY2tlbmRJbXBsLmgiCiAjaW5jbHVkZSAiU2Vj
dXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJXZWJJREJEYXRhYmFzZUVycm9yLmgiCisjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKIHVzaW5nIG5h
bWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorLy8gVXNlZCBmb3IgRHVt
cFJlbmRlclRyZWUgdGVzdHMuCitzdGF0aWMgV2ViU3RyaW5nJiB0ZW1wRGF0YWJhc2VGb2xkZXIo
KQoreworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NB
TChXZWJTdHJpbmcsIGluc3RhbmNlLCAoKSk7CisgICAgcmV0dXJuIGluc3RhbmNlOworfQorCiBX
ZWJJREJGYWN0b3J5KiBXZWJJREJGYWN0b3J5OjpjcmVhdGUoKQogewogICAgIHJldHVybiBuZXcg
V2ViSURCRmFjdG9yeUltcGwoKTsKQEAgLTY2LDEyICs3NSwxOSBAQCB2b2lkIFdlYklEQkZhY3Rv
cnlJbXBsOjpnZXREYXRhYmFzZU5hbWVzKFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25z
dCBXZWJTZQogCiB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVuKGNvbnN0IFdlYlN0cmluZyYg
bmFtZSwgV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2lu
JiBvcmlnaW4sIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKQogewotICAgIG1f
aWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4obmFtZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShh
ZG9wdFB0cihjYWxsYmFja3MpKS5nZXQoKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKKyAgICBXZWJT
dHJpbmcgcGF0aCA9IGRhdGFEaXIuaXNFbXB0eSgpID8gdGVtcERhdGFiYXNlRm9sZGVyKCkgOiBk
YXRhRGlyOworICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPm9wZW4obmFtZSwgSURCQ2FsbGJhY2tz
UHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKS5nZXQoKSwgb3JpZ2luLCAwLCBwYXRo
KTsKIH0KIAogdm9pZCBXZWJJREJGYWN0b3J5SW1wbDo6ZGVsZXRlRGF0YWJhc2UoY29uc3QgV2Vi
U3RyaW5nJiBuYW1lLCBXZWJJREJDYWxsYmFja3MqIGNhbGxiYWNrcywgY29uc3QgV2ViU2VjdXJp
dHlPcmlnaW4mIG9yaWdpbiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIpCiB7
Ci0gICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+ZGVsZXRlRGF0YWJhc2UobmFtZSwgSURCQ2FsbGJh
Y2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgb3JpZ2luLCAwLCBkYXRhRGly
KTsKKyAgICBXZWJTdHJpbmcgcGF0aCA9IGRhdGFEaXIuaXNFbXB0eSgpID8gdGVtcERhdGFiYXNl
Rm9sZGVyKCkgOiBkYXRhRGlyOworICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPmRlbGV0ZURhdGFi
YXNlKG5hbWUsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSks
IG9yaWdpbiwgMCwgcGF0aCk7Cit9CisKK3ZvaWQgV2ViSURCRmFjdG9yeTo6c2V0VGVtcG9yYXJ5
RGF0YWJhc2VGb2xkZXIoY29uc3QgV2ViU3RyaW5nJiBwYXRoKQoreworICAgIHRlbXBEYXRhYmFz
ZUZvbGRlcigpID0gcGF0aDsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRpZmYgLS1naXQg
YS9Ub29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggOGUyNzFlNzY5NDVlOWYw
YzQ4M2VjZmNhNjM1ZDBmOWFmZGU5MjljMy4uOWJkZDczZWNjMTJiZGQ4MjZkN2I5MjcxZDJiYTQ0
OGQ0Y2VhMDA2MCAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIwIEBACisyMDEyLTA3LTI0ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBj
aHJvbWl1bS5vcmc+CisKKyAgICAgICAgW0Nocm9taXVtXSBbRHVtcFJlbmRlclRyZWVdIEluZGV4
ZWREQjogQ2xlYXIgYmFja2luZyBzdG9yZSBhZnRlciBlYWNoIHRlc3QKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTkyMTY2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXNlIGEgbmV3IHNjb3BlZCB0ZW1wIGRp
ciBmb3IgZWFjaCB0ZXN0LgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIER1bXBSZW5kZXJUcmVlL2Nocm9taXVt
L0xheW91dFRlc3RDb250cm9sbGVyLmg6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFNoZWxsLmNwcDoKKyAgICAgICAgKFRlc3RTaGVsbDo6cmVzZXRUZXN0Q29udHJvbGxl
cik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6CisgICAg
ICAgICh3ZWJraXRfc3VwcG9ydCk6CisgICAgICAgIChUZXN0U2hlbGwpOgorCiAyMDEyLTA3LTIz
ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcuYm90QGdtYWlsLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCByb2xsaW5nIG91dCByMTIzMzM5LgpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwIGIvVG9vbHMvRHVtcFJl
bmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCmluZGV4IGQ1YzkwMTli
OGJhN2UxYmRkYTMwNzMyMjM5MDAwOWMwZDdjZTVhMTUuLjA4ZTg1YWRmZmI5OTUyY2YyYmFkNGI3
OGQ2YjY4ZDQ1YjJlNjljYjEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9t
aXVtL0xheW91dFRlc3RDb250cm9sbGVyLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9j
aHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKQEAgLTQ2LDcgKzQ2LDYgQEAKICNpbmNs
dWRlICJXZWJGaW5kT3B0aW9ucy5oIgogI2luY2x1ZGUgIldlYkZyYW1lLmgiCiAjaW5jbHVkZSAi
V2ViR2VvbG9jYXRpb25DbGllbnRNb2NrLmgiCi0jaW5jbHVkZSAiV2ViSURCRmFjdG9yeS5oIgog
I2luY2x1ZGUgIldlYklucHV0RWxlbWVudC5oIgogI2luY2x1ZGUgIldlYkludGVudC5oIgogI2lu
Y2x1ZGUgIldlYkludGVudFJlcXVlc3QuaCIKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9sbGVyLmggYi9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5oCmluZGV4IDA4YzcyNDQxMDEwZDk1ZWYw
ZDEyNDQzM2Q3MThiNTgzMzNhZmJkMDQuLjU4NTI2ODQwYWU2MWE0ZDM4OTliOTU3NjJjOWU1ZjRh
ZjczOTA5YTYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91
dFRlc3RDb250cm9sbGVyLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5
b3V0VGVzdENvbnRyb2xsZXIuaApAQCAtNTUsMTAgKzU1LDYgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s7CiB9CiAKLW5hbWVzcGFjZSB3ZWJraXRf
c3VwcG9ydCB7Ci1jbGFzcyBTY29wZWRUZW1wRGlyZWN0b3J5OwotfQotCiBjbGFzcyBUZXN0U2hl
bGw7CiAKIGNsYXNzIExheW91dFRlc3RDb250cm9sbGVyIDogcHVibGljIENwcEJvdW5kQ2xhc3Mg
ewpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVsbC5jcHAKaW5kZXggYjQx
NDJlYWNmMDczZTY0ODNkYTllZWE1YjIxOTc0ZDk3Yzg3ZjE1Yy4uYmRlMDY1N2VjN2ZkMjUwNGI4
ZmYxNzI2MWY3ZDUxYzFiOGVlM2M5NiAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsLmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuY3BwCkBAIC0zMTEsNiArMzExLDEzIEBAIHZvaWQgVGVzdFNoZWxsOjpyZXNl
dFRlc3RDb250cm9sbGVyKCkKICAgICB3ZWJWaWV3KCktPnNldEZpeGVkTGF5b3V0U2l6ZShXZWJT
aXplKDAsIDApKTsKICAgICB3ZWJWaWV3KCktPm1haW5GcmFtZSgpLT5jbGVhck9wZW5lcigpOwog
ICAgIFdlYlRlc3RpbmdTdXBwb3J0OjpyZXNldEludGVybmFsc09iamVjdCh3ZWJWaWV3KCktPm1h
aW5GcmFtZSgpKTsKKyNpZiBFTkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBtX2luZGV4ZWRE
YXRhYmFzZUZvbGRlciA9IGFkb3B0UHRyKHdlYmtpdF9zdXBwb3J0OjpDcmVhdGVTY29wZWRUZW1w
RGlyZWN0b3J5KCkpOworICAgIGlmIChtX2luZGV4ZWREYXRhYmFzZUZvbGRlcikgeworICAgICAg
ICBpZiAobV9pbmRleGVkRGF0YWJhc2VGb2xkZXItPkNyZWF0ZVVuaXF1ZVRlbXBEaXIoKSkKKyAg
ICAgICAgICAgIFdlYklEQkZhY3Rvcnk6OnNldFRlbXBvcmFyeURhdGFiYXNlRm9sZGVyKFdlYlN0
cmluZzo6ZnJvbVVURjgobV9pbmRleGVkRGF0YWJhc2VGb2xkZXItPnBhdGgoKS5jX3N0cigpKSk7
CisgICAgfQorI2VuZGlmCiB9CiAKIHZvaWQgVGVzdFNoZWxsOjpsb2FkVVJMKGNvbnN0IFdlYlVS
TCYgdXJsKQpkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNo
ZWxsLmggYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAppbmRleCA3
ZWE1NzkwNTY1YWI4ZjllNWI2MTAyMDI5YjU2ZWI3ZDhiZjI0YmRiLi40OTlkYzcwMzAyMDBlMTQ3
ZWYyYWYzZDJhMzBiM2E4YWIxYTM2OGZlIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9UZXN0U2hlbGwuaAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1
bS9UZXN0U2hlbGwuaApAQCAtNTcsNiArNTcsMTAgQEAgY2xhc3MgV2ViVmlldzsKIGNsYXNzIFdl
YlVSTDsKIH0KIAorbmFtZXNwYWNlIHdlYmtpdF9zdXBwb3J0IHsKK2NsYXNzIFNjb3BlZFRlbXBE
aXJlY3Rvcnk7Cit9CisKIGNsYXNzIERSVERldlRvb2xzQWdlbnQ7CiBjbGFzcyBEUlREZXZUb29s
c0NhbGxBcmdzOwogY2xhc3MgRFJURGV2VG9vbHNDbGllbnQ7CkBAIC0yMjcsNiArMjMxLDkgQEAg
cHJpdmF0ZToKICNpZiBFTkFCTEUoTElOS19QUkVSRU5ERVIpCiAgICAgT3duUHRyPE1vY2tXZWJQ
cmVyZW5kZXJpbmdTdXBwb3J0PiBtX3ByZXJlbmRlcmluZ1N1cHBvcnQ7CiAjZW5kaWYKKyNpZiBF
TkFCTEUoSU5ERVhFRF9EQVRBQkFTRSkKKyAgICBPd25QdHI8d2Via2l0X3N1cHBvcnQ6OlNjb3Bl
ZFRlbXBEaXJlY3Rvcnk+IG1faW5kZXhlZERhdGFiYXNlRm9sZGVyOworI2VuZGlmCiAKICAgICBU
ZXN0UGFyYW1zIG1fcGFyYW1zOwogICAgIGludCBtX3RpbWVvdXQ7IC8vIHRpbWVvdXQgdmFsdWUg
aW4gbWlsbGlzZWNvbmQK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>157291</attachid>
            <date>2012-08-08 14:21:06 -0700</date>
            <delta_ts>2012-08-08 14:25:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-92166-20120808152039.patch</filename>
            <type>text/plain</type>
            <size>14523</size>
            <attacher name="Joshua Bell">jsbell</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI1MDA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDM3OTEwMzVmMzM4OTU0NzM3YjEyYzNkZGYxNGE4Yjc0NjczZThhNWEuLjI4OWEzZTc0NjViM2Uw
OWI5MGIxYzhlZjhlMGQ4NzUwYzA3YmQxZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMjUgQEAKKzIwMTItMDgtMDggIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVt
Lm9yZz4KKworICAgICAgICBbQ2hyb21pdW1dIFtEdW1wUmVuZGVyVHJlZV0gSW5kZXhlZERCOiBD
bGVhciBiYWNraW5nIHN0b3JlIGFmdGVyIGVhY2ggdGVzdAorICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTIxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFeHBvc2UgQVBJcyBmb3IgVGVzdFNoZWxsIHRvIHNl
dCBhIHRlbXBvcmFyeSBkYXRhIHN0b3JlIHBhdGggYW5kIHJlc2V0IGl0CisgICAgICAgIGlmIGRp
cnR5LgorCisgICAgICAgICogcHVibGljL1dlYklEQkZhY3RvcnkuaDoKKyAgICAgICAgKFdlYklE
QkZhY3RvcnkpOgorICAgICAgICAqIHNyYy9XZWJJREJGYWN0b3J5SW1wbC5jcHA6CisgICAgICAg
IChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0Ojp0ZW1wRGF0YWJhc2VGb2xkZXIpOgorICAgICAg
ICAoV2ViS2l0OjpiYWNraW5nU3RvcmVEaXJ0eSk6CisgICAgICAgIChXZWJLaXQ6OldlYklEQkZh
Y3RvcnlJbXBsOjpnZXREYXRhYmFzZU5hbWVzKTogTWFyayBzdG9yZSBkaXJ0eSBpZiB1c2VkLgor
ICAgICAgICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5SW1wbDo6b3Blbik6IERpdHRvLgorICAgICAg
ICAoV2ViS2l0OjpXZWJJREJGYWN0b3J5SW1wbDo6ZGVsZXRlRGF0YWJhc2UpOiBEaXR0by4KKyAg
ICAgICAgKFdlYktpdDo6V2ViSURCRmFjdG9yeTo6c2V0QmFja2luZ1N0b3JlUGF0aCk6CisgICAg
ICAgIChXZWJLaXQ6OldlYklEQkZhY3Rvcnk6OmlzQmFja2luZ1N0b3JlRGlydHkpOgorCiAyMDEy
LTA4LTA3ICBKb3NodWEgQmVsbCAgPGpzYmVsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgTGF5
b3V0IFRlc3Qgc3RvcmFnZS9pbmRleGVkZGIvaW50dmVyc2lvbi1vbWl0LXBhcmFtZXRlci5odG1s
IGlzIGZsYWt5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJ
REJGYWN0b3J5LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJJREJGYWN0b3J5
LmgKaW5kZXggZjEwYThlYjlhZTBmNDk3OTQxOGExZmIzZjgzZWE2NDc5ZjYwMjdhNy4uZDQ4ZjY1
M2YyOWRjZDRjZGQxMzAxZDcyYjlhNjJjNGI3ZWM2MTEwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViSURCRmFjdG9yeS5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYklEQkZhY3RvcnkuaApAQCAtNjUsNiArNjUsMTAgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBvcGVuKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25n
IHZlcnNpb24sIFdlYklEQkNhbGxiYWNrcyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9y
aWdpbiYgb3JpZ2luLCBXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikg
eyBXRUJLSVRfQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KIAogICAgIHZpcnR1YWwgdm9pZCBkZWxl
dGVEYXRhYmFzZShjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyosIGNvbnN0
IFdlYlNlY3VyaXR5T3JpZ2luJiwgV2ViRnJhbWUqLCBjb25zdCBXZWJTdHJpbmcmIGRhdGFEaXIp
IHsgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisKKyAgICAvLyBVc2VkIGJ5IFRlc3RT
aGVsbC4KKyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyB2b2lkIHNldEJhY2tpbmdTdG9yZVBhdGgo
Y29uc3QgV2ViU3RyaW5nJik7CisgICAgV0VCS0lUX0VYUE9SVCBzdGF0aWMgYm9vbCBpc0JhY2tp
bmdTdG9yZURpcnR5KCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcCBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYklEQkZhY3RvcnlJbXBsLmNwcAppbmRleCBkMTRhYzcx
ZTE4Yzg1OTMxNTJlZmRmZDVjODM5ZTAxNzIwZTNmZmRjLi42NDUyZDZhNmNlNGJjMDU5YzJkM2Uz
YWZmN2UwNDgyMWVjMzA0MzhkIDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJJREJGYWN0b3J5SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V2ViSURCRmFjdG9yeUltcGwuY3BwCkBAIC0zOCwxMiArMzgsMjcgQEAKICNpbmNsdWRlICJJREJG
YWN0b3J5QmFja2VuZEltcGwuaCIKICNpbmNsdWRlICJTZWN1cml0eU9yaWdpbi5oIgogI2luY2x1
ZGUgIldlYklEQkRhdGFiYXNlRXJyb3IuaCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgog
I2luY2x1ZGUgPHd0Zi9Pd25QdHIuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5h
bWVzcGFjZSBXZWJLaXQgewogCisvLyBVc2VkIGJ5IFRlc3RTaGVsbC4KK3N0YXRpYyBXZWJTdHJp
bmcmIHRlbXBEYXRhYmFzZUZvbGRlcigpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChXZWJT
dHJpbmcsIGluc3RhbmNlLCAoKSk7CisgICAgcmV0dXJuIGluc3RhbmNlOworfQorCisvLyBVc2Vk
IGJ5IFRlc3RTaGVsbC4KK3N0YXRpYyBib29sJiBiYWNraW5nU3RvcmVEaXJ0eSgpCit7CisgICAg
REVGSU5FX1NUQVRJQ19MT0NBTChib29sLCBpbnN0YW5jZSwgKCkpOworICAgIHJldHVybiBpbnN0
YW5jZTsKK30KKwogV2ViSURCRmFjdG9yeSogV2ViSURCRmFjdG9yeTo6Y3JlYXRlKCkKIHsKICAg
ICByZXR1cm4gbmV3IFdlYklEQkZhY3RvcnlJbXBsKCk7CkBAIC02MCwyNSArNzUsNDQgQEAgV2Vi
SURCRmFjdG9yeUltcGw6On5XZWJJREJGYWN0b3J5SW1wbCgpCiAKIHZvaWQgV2ViSURCRmFjdG9y
eUltcGw6OmdldERhdGFiYXNlTmFtZXMoV2ViSURCQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGNvbnN0
IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1lKiwgY29uc3QgV2ViU3RyaW5nJiBk
YXRhRGlyKQogewotICAgIG1faWRiRmFjdG9yeUJhY2tlbmQtPmdldERhdGFiYXNlTmFtZXMoSURC
Q2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihjYWxsYmFja3MpKSwgb3JpZ2luLCAwLCBk
YXRhRGlyKTsKKyAgICBXZWJTdHJpbmcgcGF0aCA9IHRlbXBEYXRhYmFzZUZvbGRlcigpLmlzRW1w
dHkoKSA/IGRhdGFEaXIgOiB0ZW1wRGF0YWJhc2VGb2xkZXIoKTsKKyAgICBtX2lkYkZhY3RvcnlC
YWNrZW5kLT5nZXREYXRhYmFzZU5hbWVzKElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQ
dHIoY2FsbGJhY2tzKSksIG9yaWdpbiwgMCwgcGF0aCk7CiB9CiAKIAogdm9pZCBXZWJJREJGYWN0
b3J5SW1wbDo6b3Blbihjb25zdCBXZWJTdHJpbmcmIG5hbWUsIFdlYklEQkNhbGxiYWNrcyogY2Fs
bGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSosIGNvbnN0
IFdlYlN0cmluZyYgZGF0YURpcikKIHsKLSAgICBtX2lkYkZhY3RvcnlCYWNrZW5kLT5vcGVuKG5h
bWUsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2FsbGJhY2tzKSkuZ2V0KCks
IG9yaWdpbiwgMCwgZGF0YURpcik7CisgICAgYmFja2luZ1N0b3JlRGlydHkoKSA9IHRydWU7Cisg
ICAgV2ViU3RyaW5nIHBhdGggPSB0ZW1wRGF0YWJhc2VGb2xkZXIoKS5pc0VtcHR5KCkgPyBkYXRh
RGlyIDogdGVtcERhdGFiYXNlRm9sZGVyKCk7CisgICAgbV9pZGJGYWN0b3J5QmFja2VuZC0+b3Bl
bihuYW1lLCBJREJDYWxsYmFja3NQcm94eTo6Y3JlYXRlKGFkb3B0UHRyKGNhbGxiYWNrcykpLmdl
dCgpLCBvcmlnaW4sIDAsIHBhdGgpOwogfQogCiB2b2lkIFdlYklEQkZhY3RvcnlJbXBsOjpvcGVu
KGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgbG9uZyBsb25nIHZlcnNpb24sIFdlYklEQkNhbGxiYWNr
cyogY2FsbGJhY2tzLCBjb25zdCBXZWJTZWN1cml0eU9yaWdpbiYgb3JpZ2luLCBXZWJGcmFtZSos
IGNvbnN0IFdlYlN0cmluZyYgZGF0YURpcikKIHsKKyAgICBiYWNraW5nU3RvcmVEaXJ0eSgpID0g
dHJ1ZTsKKyAgICBXZWJTdHJpbmcgcGF0aCA9IHRlbXBEYXRhYmFzZUZvbGRlcigpLmlzRW1wdHko
KSA/IGRhdGFEaXIgOiB0ZW1wRGF0YWJhc2VGb2xkZXIoKTsKICAgICAvLyBGSVhNRTogUGFzcyB2
ZXJzaW9uIGFsb25nIHdoZW4gV2ViQ29yZTo6SURCRmFjdG9yeUJhY2tlbmRJbnRlcmZhY2UKICAg
ICAvLyBoYXMgYW4gb3BlbiBtZXRob2QgdGhhdCBhY2NlcHRzIGl0LgotICAgIG1faWRiRmFjdG9y
eUJhY2tlbmQtPm9wZW4obmFtZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShhZG9wdFB0cihj
YWxsYmFja3MpKS5nZXQoKSwgb3JpZ2luLCAwLCBkYXRhRGlyKTsKKyAgICBtX2lkYkZhY3RvcnlC
YWNrZW5kLT5vcGVuKG5hbWUsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIoY2Fs
bGJhY2tzKSkuZ2V0KCksIG9yaWdpbiwgMCwgcGF0aCk7CiB9CiAKIHZvaWQgV2ViSURCRmFjdG9y
eUltcGw6OmRlbGV0ZURhdGFiYXNlKGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgV2ViSURCQ2FsbGJh
Y2tzKiBjYWxsYmFja3MsIGNvbnN0IFdlYlNlY3VyaXR5T3JpZ2luJiBvcmlnaW4sIFdlYkZyYW1l
KiwgY29uc3QgV2ViU3RyaW5nJiBkYXRhRGlyKQogewotICAgIG1faWRiRmFjdG9yeUJhY2tlbmQt
PmRlbGV0ZURhdGFiYXNlKG5hbWUsIElEQkNhbGxiYWNrc1Byb3h5OjpjcmVhdGUoYWRvcHRQdHIo
Y2FsbGJhY2tzKSksIG9yaWdpbiwgMCwgZGF0YURpcik7CisgICAgYmFja2luZ1N0b3JlRGlydHko
KSA9IHRydWU7CisgICAgV2ViU3RyaW5nIHBhdGggPSB0ZW1wRGF0YWJhc2VGb2xkZXIoKS5pc0Vt
cHR5KCkgPyBkYXRhRGlyIDogdGVtcERhdGFiYXNlRm9sZGVyKCk7CisgICAgbV9pZGJGYWN0b3J5
QmFja2VuZC0+ZGVsZXRlRGF0YWJhc2UobmFtZSwgSURCQ2FsbGJhY2tzUHJveHk6OmNyZWF0ZShh
ZG9wdFB0cihjYWxsYmFja3MpKSwgb3JpZ2luLCAwLCBwYXRoKTsKK30KKworLy8gVXNlZCBieSBU
ZXN0U2hlbGwuCit2b2lkIFdlYklEQkZhY3Rvcnk6OnNldEJhY2tpbmdTdG9yZVBhdGgoY29uc3Qg
V2ViU3RyaW5nJiBwYXRoKQoreworICAgIHRlbXBEYXRhYmFzZUZvbGRlcigpID0gcGF0aDsKK30K
KworLy8gVXNlZCBieSBUZXN0U2hlbGwuCitib29sIFdlYklEQkZhY3Rvcnk6OmlzQmFja2luZ1N0
b3JlRGlydHkoKQoreworICAgIHJldHVybiBiYWNraW5nU3RvcmVEaXJ0eSgpOwogfQogCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0No
YW5nZUxvZwppbmRleCAwNDdkNTI1ZmZkZjYyMGQ1M2ZiZWQ4NDM4OTUyOWRjZjMxNGQxZGU4Li5j
OGNlMDNkNDQxMDM3ZGExNTk0MTZmNjgxODhjM2YyZTc0MzIzZTJlIDEwMDY0NAotLS0gYS9Ub29s
cy9DaGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjAgQEAKKzIwMTIt
MDgtMDggIEpvc2h1YSBCZWxsICA8anNiZWxsQGNocm9taXVtLm9yZz4KKworICAgICAgICBbQ2hy
b21pdW1dIFtEdW1wUmVuZGVyVHJlZV0gSW5kZXhlZERCOiBDbGVhciBiYWNraW5nIHN0b3JlIGFm
dGVyIGVhY2ggdGVzdAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTIxNjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBJZiB0aGUgV2ViSURCRmFjdG9yeSBpbnN0YW5jZSBpcyBkaXJ0eSwgZ2l2ZSBpdCBhIG5l
dyB0ZW1wIGRpcmVjdG9yeSBzbworICAgICAgICB0aGF0IElEQiBkYXRhIGlzIG5vdCBwZXJzaXN0
ZWQgYWNyb3NzIERSVCBydW5zLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
TGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwOiBEZWxldGUgdW51c2VkIGluY2x1ZGUuCisgICAgICAg
ICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcDogU2V0LCBhbmQgcmVzZXQg
dG1wIGRpciBpZiBkaXJ0eS4KKyAgICAgICAgKFRlc3RTaGVsbDo6cmVzZXRUZXN0Q29udHJvbGxl
cik6CisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmg6IFNjb3Bl
ZCB0ZW1wIGRpciBmb3IgSURCLgorICAgICAgICAod2Via2l0X3N1cHBvcnQpOgorICAgICAgICAo
VGVzdFNoZWxsKToKKwogMjAxMi0wOC0wNyAgQ3NhYmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJr
aXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgdHlwbyBmaXggYWZ0ZXIgcjEyNDk4OC4KZGlm
ZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL0xheW91dFRlc3RDb250cm9s
bGVyLmNwcAppbmRleCAwNDZlMWVjMmQ3YmNkNmNkOTFmMDIyNGExOGE1OTk4YjJkYzMzMmU5Li43
OTYwMTE0ZTY4ODY0M2RiMjEwOWMyNWM0ZThkOTBmZDEyNjI0NTYyIDEwMDY0NAotLS0gYS9Ub29s
cy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9MYXlvdXRUZXN0Q29udHJvbGxlci5jcHAKKysrIGIv
VG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vTGF5b3V0VGVzdENvbnRyb2xsZXIuY3BwCkBA
IC00Niw3ICs0Niw2IEBACiAjaW5jbHVkZSAiV2ViRmluZE9wdGlvbnMuaCIKICNpbmNsdWRlICJX
ZWJGcmFtZS5oIgogI2luY2x1ZGUgIldlYkdlb2xvY2F0aW9uQ2xpZW50TW9jay5oIgotI2luY2x1
ZGUgIldlYklEQkZhY3RvcnkuaCIKICNpbmNsdWRlICJXZWJJbnB1dEVsZW1lbnQuaCIKICNpbmNs
dWRlICJXZWJJbnRlbnQuaCIKICNpbmNsdWRlICJXZWJJbnRlbnRSZXF1ZXN0LmgiCmRpZmYgLS1n
aXQgYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0U2hlbGwuY3BwIGIvVG9vbHMv
RHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmNwcAppbmRleCBlNTNhMWYyZDg3NjNm
MDY0NGNjM2I2MDdmNjEzOTdjYmY2ZmVlYjI1Li45YmNjYzA0MDljZDU1MTU1ZWUyZGZiNjFjOWE4
ZTY3NzgwODYyYzFiIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9U
ZXN0U2hlbGwuY3BwCisrKyBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bC5jcHAKQEAgLTMxNSw2ICszMTUsMTMgQEAgdm9pZCBUZXN0U2hlbGw6OnJlc2V0VGVzdENvbnRy
b2xsZXIoKQogICAgIHdlYlZpZXcoKS0+c2V0Rml4ZWRMYXlvdXRTaXplKFdlYlNpemUoMCwgMCkp
OwogICAgIHdlYlZpZXcoKS0+bWFpbkZyYW1lKCktPmNsZWFyT3BlbmVyKCk7CiAgICAgV2ViVGVz
dGluZ1N1cHBvcnQ6OnJlc2V0SW50ZXJuYWxzT2JqZWN0KHdlYlZpZXcoKS0+bWFpbkZyYW1lKCkp
OworI2lmIEVOQUJMRShJTkRFWEVEX0RBVEFCQVNFKQorICAgIGlmICghbV9pbmRleGVkRGF0YWJh
c2VGb2xkZXIgfHwgV2ViSURCRmFjdG9yeTo6aXNCYWNraW5nU3RvcmVEaXJ0eSgpKSB7CisgICAg
ICAgIG1faW5kZXhlZERhdGFiYXNlRm9sZGVyID0gYWRvcHRQdHIod2Via2l0X3N1cHBvcnQ6OkNy
ZWF0ZVNjb3BlZFRlbXBEaXJlY3RvcnkoKSk7CisgICAgICAgIGlmIChtX2luZGV4ZWREYXRhYmFz
ZUZvbGRlciAmJiBtX2luZGV4ZWREYXRhYmFzZUZvbGRlci0+Q3JlYXRlVW5pcXVlVGVtcERpcigp
KQorICAgICAgICAgICAgV2ViSURCRmFjdG9yeTo6c2V0QmFja2luZ1N0b3JlUGF0aChXZWJTdHJp
bmc6OmZyb21VVEY4KG1faW5kZXhlZERhdGFiYXNlRm9sZGVyLT5wYXRoKCkuY19zdHIoKSkpOwor
ICAgIH0KKyNlbmRpZgogfQogCiB2b2lkIFRlc3RTaGVsbDo6bG9hZFVSTChjb25zdCBXZWJVUkwm
IHVybCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RTaGVs
bC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFNoZWxsLmgKaW5kZXggMDA1
ZDM3NGEyOWE2MWM1MGUwYzcxNWM5ZWIzZjNjODUzYjA4ODMzOC4uMGFkNzJhYjE2ZTY1NDFmYzA2
M2Q3ODcwMGFjYWNlMGQ0OTc1YTQyYSAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
Y2hyb21pdW0vVGVzdFNoZWxsLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
VGVzdFNoZWxsLmgKQEAgLTU1LDYgKzU1LDEwIEBAIGNsYXNzIFdlYlZpZXc7CiBjbGFzcyBXZWJV
Ukw7CiB9CiAKK25hbWVzcGFjZSB3ZWJraXRfc3VwcG9ydCB7CitjbGFzcyBTY29wZWRUZW1wRGly
ZWN0b3J5OworfQorCiBjbGFzcyBEUlREZXZUb29sc0FnZW50OwogY2xhc3MgRFJURGV2VG9vbHND
YWxsQXJnczsKIGNsYXNzIERSVERldlRvb2xzQ2xpZW50OwpAQCAtMjIwLDYgKzIyNCw5IEBAIHBy
aXZhdGU6CiAjaWYgRU5BQkxFKExJTktfUFJFUkVOREVSKQogICAgIE93blB0cjxNb2NrV2ViUHJl
cmVuZGVyaW5nU3VwcG9ydD4gbV9wcmVyZW5kZXJpbmdTdXBwb3J0OwogI2VuZGlmCisjaWYgRU5B
QkxFKElOREVYRURfREFUQUJBU0UpCisgICAgT3duUHRyPHdlYmtpdF9zdXBwb3J0OjpTY29wZWRU
ZW1wRGlyZWN0b3J5PiBtX2luZGV4ZWREYXRhYmFzZUZvbGRlcjsKKyNlbmRpZgogCiAgICAgVGVz
dFBhcmFtcyBtX3BhcmFtczsKICAgICBib29sIG1fZHVtcFBpeGVsc0ZvckN1cnJlbnRUZXN0Owpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDYxZmQwMTllNWJhZDAzY2JmODZlYjM2OGIyNGNjM2YwMjMzZDlkOWEuLmJjYzQ5N2Vh
NjE0ODczNDI5MGI3ZmUxODg4MjNiZDBhMzgxMmFmMTQgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyMiBAQAor
MjAxMi0wOC0wOCAgSm9zaHVhIEJlbGwgIDxqc2JlbGxAY2hyb21pdW0ub3JnPgorCisgICAgICAg
IFtDaHJvbWl1bV0gW0R1bXBSZW5kZXJUcmVlXSBJbmRleGVkREI6IENsZWFyIGJhY2tpbmcgc3Rv
cmUgYWZ0ZXIgZWFjaCB0ZXN0CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD05MjE2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgor
CisgICAgICAgIFR3byB0ZXN0cyB0aGF0IGV4ZXJjaXNlIHRoZSBzYW1lIGRhdGFiYXNlLiBJZiBk
YXRhIGlzIG5vdCBjbGVhcmVkIGJldHdlZW4KKyAgICAgICAgcnVucyB0aGUgdGVzdHMgd2lsbCBm
YWlsLgorCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jbGVhcmVkLWJldHdlZW4t
cnVucy0xLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3RvcmFnZS9pbmRleGVkZGIv
ZGF0YS1jbGVhcmVkLWJldHdlZW4tcnVucy0xLmh0bWw6IEFkZGVkLgorICAgICAgICAqIHN0b3Jh
Z2UvaW5kZXhlZGRiL2RhdGEtY2xlYXJlZC1iZXR3ZWVuLXJ1bnMtMi1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHN0b3JhZ2UvaW5kZXhlZGRiL2RhdGEtY2xlYXJlZC1iZXR3ZWVuLXJ1
bnMtMi5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdG9yYWdlL2luZGV4ZWRkYi9yZXNvdXJjZXMv
ZGF0YS1jbGVhcmVkLWJldHdlZW4tcnVucy5qczogQWRkZWQuCisgICAgICAgICh0ZXN0LnJlcXVl
c3Qub25zdWNjZXNzLnJlcXVlc3Qub25zdWNjZXNzKToKKyAgICAgICAgKHRlc3QucmVxdWVzdC5v
bnN1Y2Nlc3MpOgorICAgICAgICAodGVzdCk6CisKIDIwMTItMDgtMDggIERvdWdsYXMgU3RvY2t3
ZWxsICA8ZHN0b2Nrd2VsbEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgJ2hpZ2hsaWdodCcgc2hv
dWxkIG5vdCBiZSBwYXJzZWQgZm9yIGEgY29tcG9zaXRlIG9wZXJhdGlvbgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jbGVhcmVkLWJldHdlZW4tcnVucy0x
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGEtY2xlYXJl
ZC1iZXR3ZWVuLXJ1bnMtMS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjRhZDc3ZGI3YzcwOTJk
ZTg4ZDdkMjQ5OGZkYjAyMTQ2ZDc4MjMyMwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGEtY2xlYXJlZC1iZXR3ZWVuLXJ1bnMtMS1leHBlY3RlZC50
eHQKQEAgLTAsMCArMSwxOSBAQAorRW5zdXJlIHRoYXQgZGF0YSBpcyBjbGVhcmVkIGJldHdlZW4g
RHVtcFJlbmRlclRyZWUgcnVucy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVz
IG9mICJQQVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK2lu
ZGV4ZWREQiA9IHNlbGYuaW5kZXhlZERCIHx8IHNlbGYud2Via2l0SW5kZXhlZERCIHx8IHNlbGYu
bW96SW5kZXhlZERCIHx8IHNlbGYubXNJbmRleGVkREIgfHwgc2VsZi5PSW5kZXhlZERCOworCitk
Ym5hbWUgPSAnbm90LXVuaXF1ZS1hY3Jvc3MtdGVzdHMnCityZXF1ZXN0ID0gaW5kZXhlZERCLm9w
ZW4oZGJuYW1lKQorZGIgPSByZXF1ZXN0LnJlc3VsdAorUEFTUyBkYi5vYmplY3RTdG9yZU5hbWVz
Lmxlbmd0aCBpcyAwCitkYi5zZXRWZXJzaW9uKCcxJykKK2RiLmNyZWF0ZU9iamVjdFN0b3JlKCdj
YW5hcnknKQorUEFTUyBkYi5vYmplY3RTdG9yZU5hbWVzLmxlbmd0aCBpcyAxCitkYi5jbG9zZSgp
CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jbGVhcmVkLWJldHdl
ZW4tcnVucy0xLmh0bWwgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhLWNsZWFy
ZWQtYmV0d2Vlbi1ydW5zLTEuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yY2Q1YWI3NzI4YTE0ZGU5MjRlN2Fk
YWY5ZTM5Nzk3OGQyNGFkMTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFn
ZS9pbmRleGVkZGIvZGF0YS1jbGVhcmVkLWJldHdlZW4tcnVucy0xLmh0bWwKQEAgLTAsMCArMSw1
IEBACis8IURPQ1RZUEUgaHRtbD4KKzxzY3JpcHQgc3JjPSIuLi8uLi9mYXN0L2pzL3Jlc291cmNl
cy9qcy10ZXN0LXByZS5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3NoYXJl
ZC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2RhdGEtY2xlYXJlZC1iZXR3
ZWVuLXJ1bnMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcG9zdC5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dG9yYWdlL2luZGV4ZWRkYi9kYXRhLWNsZWFyZWQtYmV0d2Vlbi1ydW5zLTItZXhwZWN0ZWQudHh0
IGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRleGVkZGIvZGF0YS1jbGVhcmVkLWJldHdlZW4tcnVu
cy0yLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iNGFkNzdkYjdjNzA5MmRlODhkN2QyNDk4ZmRi
MDIxNDZkNzgyMzIzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3RvcmFnZS9pbmRl
eGVkZGIvZGF0YS1jbGVhcmVkLWJldHdlZW4tcnVucy0yLWV4cGVjdGVkLnR4dApAQCAtMCwwICsx
LDE5IEBACitFbnN1cmUgdGhhdCBkYXRhIGlzIGNsZWFyZWQgYmV0d2VlbiBEdW1wUmVuZGVyVHJl
ZSBydW5zLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBBU1MiIG1l
c3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworaW5kZXhlZERCID0gc2Vs
Zi5pbmRleGVkREIgfHwgc2VsZi53ZWJraXRJbmRleGVkREIgfHwgc2VsZi5tb3pJbmRleGVkREIg
fHwgc2VsZi5tc0luZGV4ZWREQiB8fCBzZWxmLk9JbmRleGVkREI7CisKK2RibmFtZSA9ICdub3Qt
dW5pcXVlLWFjcm9zcy10ZXN0cycKK3JlcXVlc3QgPSBpbmRleGVkREIub3BlbihkYm5hbWUpCitk
YiA9IHJlcXVlc3QucmVzdWx0CitQQVNTIGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDAK
K2RiLnNldFZlcnNpb24oJzEnKQorZGIuY3JlYXRlT2JqZWN0U3RvcmUoJ2NhbmFyeScpCitQQVNT
IGRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIGlzIDEKK2RiLmNsb3NlKCkKK1BBU1Mgc3VjY2Vz
c2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9kYXRhLWNsZWFyZWQtYmV0d2Vlbi1ydW5zLTIuaHRt
bCBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL2RhdGEtY2xlYXJlZC1iZXR3ZWVuLXJ1
bnMtMi5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJjZDVhYjc3MjhhMTRkZTkyNGU3YWRhZjllMzk3OTc4ZDI0
YWQxNDcKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdG9yYWdlL2luZGV4ZWRkYi9k
YXRhLWNsZWFyZWQtYmV0d2Vlbi1ydW5zLTIuaHRtbApAQCAtMCwwICsxLDUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJl
LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvc2hhcmVkLmpzIj48L3Njcmlw
dD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvZGF0YS1jbGVhcmVkLWJldHdlZW4tcnVucy5qcyI+
PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0iLi4vLi4vZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhl
ZGRiL3Jlc291cmNlcy9kYXRhLWNsZWFyZWQtYmV0d2Vlbi1ydW5zLmpzIGIvTGF5b3V0VGVzdHMv
c3RvcmFnZS9pbmRleGVkZGIvcmVzb3VyY2VzL2RhdGEtY2xlYXJlZC1iZXR3ZWVuLXJ1bnMuanMK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uZGM2OWFmOTNkZjhhYmNhYzhjYjk0OTViOWZkNzgxNzFjZjVhZDM5MQotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N0b3JhZ2UvaW5kZXhlZGRiL3Jlc291cmNlcy9k
YXRhLWNsZWFyZWQtYmV0d2Vlbi1ydW5zLmpzCkBAIC0wLDAgKzEsMzIgQEAKK2lmICh0aGlzLmlt
cG9ydFNjcmlwdHMpIHsKKyAgICBpbXBvcnRTY3JpcHRzKCcuLi8uLi8uLi9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcycpOworICAgIGltcG9ydFNjcmlwdHMoJ3NoYXJlZC5qcycpOwor
fQorCitkZXNjcmlwdGlvbigiRW5zdXJlIHRoYXQgZGF0YSBpcyBjbGVhcmVkIGJldHdlZW4gRHVt
cFJlbmRlclRyZWUgcnVucy4iKTsKKwordGVzdCgpOworCitmdW5jdGlvbiB0ZXN0KCkKK3sKKyAg
ICByZW1vdmVWZW5kb3JQcmVmaXhlcygpOworICAgIGV2YWxBbmRMb2coImRibmFtZSA9ICdub3Qt
dW5pcXVlLWFjcm9zcy10ZXN0cyciKTsKKworICAgIGV2YWxBbmRMb2coInJlcXVlc3QgPSBpbmRl
eGVkREIub3BlbihkYm5hbWUpIik7CisgICAgcmVxdWVzdC5vbmVycm9yID0gdW5leHBlY3RlZEVy
cm9yQ2FsbGJhY2s7CisgICAgcmVxdWVzdC5vbnN1Y2Nlc3MgPSBmdW5jdGlvbigpIHsKKyAgICAg
ICAgZXZhbEFuZExvZygiZGIgPSByZXF1ZXN0LnJlc3VsdCIpOworICAgICAgICBzaG91bGRCZSgi
ZGIub2JqZWN0U3RvcmVOYW1lcy5sZW5ndGgiLCAiMCIpOworICAgICAgICByZXF1ZXN0ID0gZXZh
bEFuZExvZygiZGIuc2V0VmVyc2lvbignMScpIik7CisgICAgICAgIHJlcXVlc3Qub25ibG9ja2Vk
ID0gdW5leHBlY3RlZEJsb2NrZWRDYWxsYmFjazsKKyAgICAgICAgcmVxdWVzdC5vbmVycm9yID0g
dW5leHBlY3RlZEVycm9yQ2FsbGJhY2s7CisgICAgICAgIHJlcXVlc3Qub25zdWNjZXNzID0gZnVu
Y3Rpb24oKSB7CisgICAgICAgICAgICB2YXIgdHJhbnMgPSByZXF1ZXN0LnJlc3VsdDsKKyAgICAg
ICAgICAgIHRyYW5zLm9uYWJvcnQgPSB1bmV4cGVjdGVkQWJvcnRDYWxsYmFjazsKKyAgICAgICAg
ICAgIGV2YWxBbmRMb2coImRiLmNyZWF0ZU9iamVjdFN0b3JlKCdjYW5hcnknKSIpOworICAgICAg
ICAgICAgc2hvdWxkQmUoImRiLm9iamVjdFN0b3JlTmFtZXMubGVuZ3RoIiwgIjEiKTsKKyAgICAg
ICAgICAgIGV2YWxBbmRMb2coImRiLmNsb3NlKCkiKTsKKyAgICAgICAgICAgIHRyYW5zLm9uY29t
cGxldGUgPSBmaW5pc2hKU1Rlc3Q7CisgICAgICAgIH07CisgICAgfTsKK30K
</data>

          </attachment>
      

    </bug>

</bugzilla>