<?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>240216</bug_id>
          
          <creation_ts>2022-05-08 09:38:33 -0700</creation_ts>
          <short_desc>Safari corrupts already-rendered blobs after saving to IndexedDB</short_desc>
          <delta_ts>2026-01-25 21:47:48 -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>Website Storage</component>
          <version>Safari 15</version>
          <rep_platform>Mac (Intel)</rep_platform>
          <op_sys>macOS 12</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>165889</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Micah">micah.millereshleman</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>karlcow</cc>
    
    <cc>marcosc</cc>
    
    <cc>sihui_liu</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1867528</commentid>
    <comment_count>0</comment_count>
      <attachid>459014</attachid>
    <who name="Micah">micah.millereshleman</who>
    <bug_when>2022-05-08 09:38:33 -0700</bug_when>
    <thetext>Created attachment 459014
Exported codepen (use dist folder)

At befunky.com, we save image Blobs in IndexedDB so we can recover a user&apos;s photo editing progress if WebGL crashes. This often fails for returning users in Safari, and we finally figured out why.

Here are the exact steps to take to reproduce:

1. Save an image Blob in IndexedDB
2. Reload the page
3. Grab that image Blob and render it to a canvas (e.g. via  + ObjectURL)
4. Save the image Blob in IndexedDB again.

(sometimes) Repeat steps 2-4
You&apos;ll eventually reach a state where the image blob from IndexedDB cannot be read by FileReader, even though it has correct properties otherwise (e.g. size). To consistently replicate, it&apos;s important that:

- The page is refreshed between saving &amp; getting blob
- The blob is rendered to Canvas before saving
- The blob is saved over itself (same IndexedDB key)

This is a bit tricky to replicate, so I created a reduced-test-case in a Codepen.
https://codepen.io/pranksinatra/pen/MWjRZOq?editors=1010

Alternative, you can download the attached zip file (use dist) folder to replicate on your local machine, or download it here:
https://codepen-api-export-production.s3.us-west-2.amazonaws.com/zip/PEN/MWjRZOq/1611347502267/safari-indexeddb-blob-bug.zip

Really appreciate the Safari/Webkit team looking into this. We&apos;ve tried for years to pin down this issue and it causes a lot of user pain!

The original WebCompat report is here: https://github.com/webcompat/web-bugs/issues/66063#issuecomment-765870592</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1867785</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-05-09 14:45:01 -0700</bug_when>
    <thetext>&lt;rdar://problem/92987277&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>459014</attachid>
            <date>2022-05-08 09:38:33 -0700</date>
            <delta_ts>2022-05-08 09:38:33 -0700</delta_ts>
            <desc>Exported codepen (use dist folder)</desc>
            <filename>pen-export-MWjRZOq.zip</filename>
            <type>application/zip</type>
            <size>9290</size>
            <attacher name="Micah">micah.millereshleman</attacher>
            
              <data encoding="base64">UEsDBBQACAAAAD2EqFQAAAAAAAAAAAAAAAAcAAkAcGVuLWV4cG9ydC1NV2pSWk9xL1JFQURNRS5t
ZFVUBQAB9/B3YiMgU2FmYXJpIEluZGV4ZWREQiBCbG9iIGJ1ZwoKQSBQZW4gY3JlYXRlZCBvbiBD
b2RlUGVuLmlvLiBPcmlnaW5hbCBVUkw6IFtodHRwczovL2NvZGVwZW4uaW8vcHJhbmtzaW5hdHJh
L3Blbi9NV2pSWk9xXShodHRwczovL2NvZGVwZW4uaW8vcHJhbmtzaW5hdHJhL3Blbi9NV2pSWk9x
KS4KClBLBwgJDOGmpQAAAKUAAABQSwMEFAAIAAAAPYSoVAAAAAAAAAAAAAAAAB4ACQBwZW4tZXhw
b3J0LU1XalJaT3EvTElDRU5TRS50eHRVVAUAAffwd2JUaGUgTUlUIExpY2Vuc2UgKE1JVCkKCkNv
cHlyaWdodCAoYykgMjAyMiBieSBNaWNhaCBFbmdsZS1Fc2hsZW1hbiAoaHR0cHM6Ly9jb2RlcGVu
LmlvL3ByYW5rc2luYXRyYS9wZW4vTVdqUlpPcSkKClBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50
ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHkKb2YgdGhp
cyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3
YXJlIiksIHRvIGRlYWwKaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1
ZGluZyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cwp0byB1c2UsIGNvcHksIG1vZGlmeSwg
bWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsCmNvcGll
cyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0
d2FyZSBpcwpmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zOgoKVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBu
b3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCmNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0
aW9ucyBvZiB0aGUgU29mdHdhcmUuCgpUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwg
V0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgpJTVBMSUVELCBJTkNMVURJ
TkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwK
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFCkFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxF
IEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKTElBQklMSVRZLCBXSEVUSEVSIElOIEFO
IEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwKT1VU
IE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhF
UiBERUFMSU5HUyBJTiBUSEUKU09GVFdBUkUuUEsHCEK1/WlvBAAAbwQAAFBLAwQUAAgAAAA9hKhU
AAAAAAAAAAAAAAAAIQAJAHBlbi1leHBvcnQtTVdqUlpPcS9zcmMvaW5kZXguaHRtbFVUBQAB9/B3
YjxoMz4xLiBDaG9vc2UgYW4gaW1hZ2UgZmlsZS4gSXQgd2lsbCBiZSBzdG9yZWQgaW4gSW5kZXhl
ZERCPC9oMz4KCjxpbnB1dCB0eXBlPSJmaWxlIj4KCjxwIGlkPSJpbnN0cnVjdGlvbnMxIj48L3A+
Cgo8aDM+Mi4gUmVsb2FkIHRoZSBwYWdlPC9oMz4KICAKPGgzPjMuIENsaWNrIGJ1dHRvbjwvaDM+
CiAgCjxidXR0b24+R2V0IEJsb2IsIFJlbmRlciBpdCwgU3RvcmUgaXQgYWdhaW48L2J1dHRvbj48
YnI+Cgo8Y2FudmFzIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCI+PC9jYW52YXM+Cgo8cCBpZD0i
aW5zdHJ1Y3Rpb25zMiI+PC9wPlBLBwh08ZmMLwEAAC8BAABQSwMEFAAIAAAAPYSoVAAAAAAAAAAA
AAAAACAACQBwZW4tZXhwb3J0LU1XalJaT3Evc3JjL3NjcmlwdC5qc1VUBQAB9/B3Yi8vIGh0dHBz
Oi8vZ2l0aHViLmNvbS9qYWtlYXJjaGliYWxkL2lkYi1rZXl2YWwKY29uc3QgeyBnZXQsIHNldCB9
ID0gaWRiS2V5dmFsOwoKY29uc3QgaW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1
dCcpOwpjb25zdCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKTsKY29u
c3QgY29udGV4dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwpjb25zdCBpbnN0cnVjdGlvbnMx
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2luc3RydWN0aW9uczEnKTsKY29uc3QgaW5zdHJ1
Y3Rpb25zMiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0cnVjdGlvbnMyJyk7CmNvbnN0
IGJ1dHRvbiA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpOwoKaW5wdXQuYWRkRXZl
bnRMaXN0ZW5lcignY2hhbmdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgY29uc3QgW2ZpbGVdID0g
ZXZlbnQudGFyZ2V0LmZpbGVzOwoKICAvLyAxLiBTYXZlIGZpbGUgdG8gSW5kZXhlZERCCiAgY29u
c29sZS5sb2coJ1NhdmluZyBpbWFnZSBmaWxlIGluIEluZGV4ZWREQicpCiAgYXdhaXQgc2V0KCdp
bWFnZScsIGZpbGUpOwoKICAvLyAyLiBSZWxvYWQgdGhlIHBhZ2UKICBpbnN0cnVjdGlvbnMxLnRl
eHRDb250ZW50ID0gJ1JlZnJlc2ggcGFnZSBhbmQgdGhlbiBjbGljayB0aGUgYnV0dG9uJzsKfSk7
CgpidXR0b24uYWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyBmdW5jdGlvbiAoKSB7Cgog
IC8vIENsZWFyIGNhbnZhcyAoanVzdCBzbyB2aXN1YWxseSB3ZSBjYW4gc2VlIHdoZW4gaW1hZ2Ug
aXMgbm90IHJlbmRlcmVkKQogIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwg
Y2FudmFzLmhlaWdodCk7CgogIC8vIDMuIEdyYWIgYmxvYiBmcm9tIEluZGV4ZWREQgogIGNvbnNv
bGUubG9nKCdHZXR0aW5nIGltYWdlIGJsb2IgZnJvbSBJbmRleGVkREInKQogIGNvbnN0IGJsb2Ig
PSBhd2FpdCBnZXQoJ2ltYWdlJyk7CgogIGlmIChibG9iIGluc3RhbmNlb2YgQmxvYikgewogICAg
Y29uc29sZS5sb2coJ0dvdCBCbG9iJywgYmxvYi5zaXplKTsKICB9IGVsc2UgewogICAgY29uc29s
ZS5lcnJvcignQmxvYiBtaXNzaW5nIGluIEluZGV4ZWREQicsIGJsb2IpOwogICAgaW5zdHJ1Y3Rp
b25zMi50ZXh0Q29udGVudCA9ICdCbG9iIG1pc3NpbmcgaW4gSW5kZXhlZERCJzsKICAgIHJldHVy
bjsKICB9CgogIC8vIDQuIEVuc3VyZSBCbG9iIGlzIHJlYWRhYmxlCiAgdHJ5IHsKICAgIGF3YWl0
IHJlYWRCbG9iKGJsb2IpOwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICBjb25zb2xlLmVycm9yKCdC
bG9iIGZyb20gSW5kZXhlZERCIGlzIG5vdCByZWFkYWJsZTonLCBibG9iLCBlcnJvcik7CiAgICBp
bnN0cnVjdGlvbnMyLnRleHRDb250ZW50ID0gJ0Jsb2IgZnJvbSBJbmRleGVkREIgaXMgbm90IHJl
YWRhYmxlJzsKICAgIHJldHVybjsKICB9CgogIC8vIDUuIEdldCBpbWFnZSB3aXRoIE9iamVjdFVS
TCBzb3VyY2UgYW5kIHJlbmRlciB0byBjYW52YXMKICBjb25zb2xlLmxvZygnR2VuZXJhdGUgSW1h
Z2VFbGVtZW50IHdpdGggT2JqZWN0VVJMIHNvdXJjZScpCiAgY29uc3QgaW1hZ2VFbGVtZW50ID0g
YXdhaXQgYmxvYlRvSW1hZ2UoYmxvYik7CgogIGNvbnNvbGUubG9nKCdSZW5kZXIgSW1hZ2VFbGVt
ZW50IHRvIGNhbnZhcycpCgogIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgMCwgMCk7
CgogIC8vIDYuIFNhdmUgYmxvYiB0byBJbmRleGVkREIgYWdhaW4KICBjb25zb2xlLmxvZygnU2F2
ZSBibG9iIHRvIEluZGV4ZWREQiBhZ2FpbicpOwogIGF3YWl0IHNldCgnaW1hZ2UnLCBibG9iKTsK
CiAgLy8gNy4gRW5zdXJlIEJsb2IgaXMgc3RpbGwgcmVhZGFibGUKICB0cnkgewogICAgYXdhaXQg
cmVhZEJsb2IoYmxvYik7CiAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnNvbGUuZXJyb3IoJ0lu
LW1lbW9yeSBibG9iIGlzIG5vIGxvbmdlciByZWFkYWJsZSBhZnRlciBzYXZpbmc6JywgYmxvYiwg
ZXJyb3IpOwogICAgaW5zdHJ1Y3Rpb25zMi50ZXh0Q29udGVudCA9ICdJbi1tZW1vcnkgYmxvYiBp
cyBubyBsb25nZXIgcmVhZGFibGUgYWZ0ZXIgc2F2aW5nJzsKICAgIHJldHVybjsKICB9CgogIC8v
IDguIEJsb2IgaXMgcmVhZGFibGUuIEhvdyBhYm91dCBhZnRlciBhIHJlZnJlc2g/CiAgaW5zdHJ1
Y3Rpb25zMi50ZXh0Q29udGVudCA9ICdFdmVyeXRoaW5nIHdvcmtlZC4gQ2xpY2sgYnV0dG9uIGFn
YWluIC1vci0gcmVmcmVzaCBhbmQgdGhlbiBjbGljayB0aGUgYnV0dG9uIHRvIHRyeSBhZ2Fpbi4n
OwoKfSk7CgpmdW5jdGlvbiBibG9iVG9JbWFnZShibG9iKSB7CiAgcmV0dXJuIG5ldyBQcm9taXNl
KChyZXNvbHZlLCByZWplY3QpID0+IHsKCiAgICBjb25zb2xlLmxvZygnQ3JlYXRpbmcgT2JqZWN0
VVJMIGZvciBibG9iJykKICAgIGNvbnN0IG9iamVjdFVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwo
YmxvYik7CiAgICBjb25zb2xlLmxvZyh7IG9iamVjdFVSTCB9KTsKICAgIGNvbnN0IGltYWdlID0g
bmV3IEltYWdlKCk7CiAgICBpbWFnZS5zcmMgPSBvYmplY3RVUkw7CiAgICBpbWFnZS5vbmxvYWQg
PSBmdW5jdGlvbiAoKSB7CiAgICAgIHJlc29sdmUoaW1hZ2UpOwogICAgICBVUkwucmV2b2tlT2Jq
ZWN0VVJMKG9iamVjdFVSTCk7CiAgICB9CiAgICBpbWFnZS5vbmVycm9yID0gZnVuY3Rpb24gKCkg
ewogICAgICByZWplY3QoaW1hZ2UpOwogICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVS
TCk7CiAgICB9CiAgfSk7Cn0KCmZ1bmN0aW9uIHJlYWRCbG9iKGJsb2IpIHsKICByZXR1cm4gbmV3
IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgdmFyIHJlYWRlciA9IG5ldyBGaWxl
UmVhZGVyKCk7CgogICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3Vs
dCk7CiAgICByZWFkZXIub25lcnJvciA9IHJlamVjdDsKCiAgICByZWFkZXIucmVhZEFzQXJyYXlC
dWZmZXIoYmxvYik7CiAgfSk7Cn1QSwcImj9oxLALAACwCwAAUEsDBBQACAAAAD2EqFQAAAAAAAAA
AAAAAAAiAAkAcGVuLWV4cG9ydC1NV2pSWk9xL2Rpc3QvaW5kZXguaHRtbFVUBQAB9/B3YjwhRE9D
VFlQRSBodG1sPgo8aHRtbCBsYW5nPSJlbiIgPgo8aGVhZD4KICA8bWV0YSBjaGFyc2V0PSJVVEYt
OCI+CiAgPHRpdGxlPkNvZGVQZW4gLSBTYWZhcmkgSW5kZXhlZERCIEJsb2IgYnVnPC90aXRsZT4K
ICAKCjwvaGVhZD4KPGJvZHk+CjwhLS0gcGFydGlhbDppbmRleC5wYXJ0aWFsLmh0bWwgLS0+Cjxo
Mz4xLiBDaG9vc2UgYW4gaW1hZ2UgZmlsZS4gSXQgd2lsbCBiZSBzdG9yZWQgaW4gSW5kZXhlZERC
PC9oMz4KCjxpbnB1dCB0eXBlPSJmaWxlIj4KCjxwIGlkPSJpbnN0cnVjdGlvbnMxIj48L3A+Cgo8
aDM+Mi4gUmVsb2FkIHRoZSBwYWdlPC9oMz4KICAKPGgzPjMuIENsaWNrIGJ1dHRvbjwvaDM+CiAg
CjxidXR0b24+R2V0IEJsb2IsIFJlbmRlciBpdCwgU3RvcmUgaXQgYWdhaW48L2J1dHRvbj48YnI+
Cgo8Y2FudmFzIHN0eWxlPSJib3JkZXI6IDFweCBzb2xpZCI+PC9jYW52YXM+Cgo8cCBpZD0iaW5z
dHJ1Y3Rpb25zMiI+PC9wPgo8IS0tIHBhcnRpYWwgLS0+CiAgPHNjcmlwdCBzcmM9J2h0dHBzOi8v
Y2RuanMuY2xvdWRmbGFyZS5jb20vYWpheC9saWJzL2lkYi1rZXl2YWwvNi4xLjAvdW1kLm1pbi5q
cyc+PC9zY3JpcHQ+PHNjcmlwdCAgc3JjPSIuL3NjcmlwdC5qcyI+PC9zY3JpcHQ+Cgo8L2JvZHk+
CjwvaHRtbD4KUEsHCN/qGyGBAgAAgQIAAFBLAwQUAAgAAAA9hKhUAAAAAAAAAAAAAAAAIQAJAHBl
bi1leHBvcnQtTVdqUlpPcS9kaXN0L3NjcmlwdC5qc1VUBQAB9/B3Yi8vIGh0dHBzOi8vZ2l0aHVi
LmNvbS9qYWtlYXJjaGliYWxkL2lkYi1rZXl2YWwKY29uc3QgeyBnZXQsIHNldCB9ID0gaWRiS2V5
dmFsOwoKY29uc3QgaW5wdXQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdpbnB1dCcpOwpjb25z
dCBjYW52YXMgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdjYW52YXMnKTsKY29uc3QgY29udGV4
dCA9IGNhbnZhcy5nZXRDb250ZXh0KCcyZCcpOwpjb25zdCBpbnN0cnVjdGlvbnMxID0gZG9jdW1l
bnQuZ2V0RWxlbWVudEJ5SWQoJ2luc3RydWN0aW9uczEnKTsKY29uc3QgaW5zdHJ1Y3Rpb25zMiA9
IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdpbnN0cnVjdGlvbnMyJyk7CmNvbnN0IGJ1dHRvbiA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJ2J1dHRvbicpOwoKaW5wdXQuYWRkRXZlbnRMaXN0ZW5l
cignY2hhbmdlJywgYXN5bmMgKGV2ZW50KSA9PiB7CiAgY29uc3QgW2ZpbGVdID0gZXZlbnQudGFy
Z2V0LmZpbGVzOwoKICAvLyAxLiBTYXZlIGZpbGUgdG8gSW5kZXhlZERCCiAgY29uc29sZS5sb2co
J1NhdmluZyBpbWFnZSBmaWxlIGluIEluZGV4ZWREQicpCiAgYXdhaXQgc2V0KCdpbWFnZScsIGZp
bGUpOwoKICAvLyAyLiBSZWxvYWQgdGhlIHBhZ2UKICBpbnN0cnVjdGlvbnMxLnRleHRDb250ZW50
ID0gJ1JlZnJlc2ggcGFnZSBhbmQgdGhlbiBjbGljayB0aGUgYnV0dG9uJzsKfSk7CgpidXR0b24u
YWRkRXZlbnRMaXN0ZW5lcignY2xpY2snLCBhc3luYyBmdW5jdGlvbiAoKSB7CgogIC8vIENsZWFy
IGNhbnZhcyAoanVzdCBzbyB2aXN1YWxseSB3ZSBjYW4gc2VlIHdoZW4gaW1hZ2UgaXMgbm90IHJl
bmRlcmVkKQogIGNvbnRleHQuY2xlYXJSZWN0KDAsIDAsIGNhbnZhcy53aWR0aCwgY2FudmFzLmhl
aWdodCk7CgogIC8vIDMuIEdyYWIgYmxvYiBmcm9tIEluZGV4ZWREQgogIGNvbnNvbGUubG9nKCdH
ZXR0aW5nIGltYWdlIGJsb2IgZnJvbSBJbmRleGVkREInKQogIGNvbnN0IGJsb2IgPSBhd2FpdCBn
ZXQoJ2ltYWdlJyk7CgogIGlmIChibG9iIGluc3RhbmNlb2YgQmxvYikgewogICAgY29uc29sZS5s
b2coJ0dvdCBCbG9iJywgYmxvYi5zaXplKTsKICB9IGVsc2UgewogICAgY29uc29sZS5lcnJvcign
QmxvYiBtaXNzaW5nIGluIEluZGV4ZWREQicsIGJsb2IpOwogICAgaW5zdHJ1Y3Rpb25zMi50ZXh0
Q29udGVudCA9ICdCbG9iIG1pc3NpbmcgaW4gSW5kZXhlZERCJzsKICAgIHJldHVybjsKICB9Cgog
IC8vIDQuIEVuc3VyZSBCbG9iIGlzIHJlYWRhYmxlCiAgdHJ5IHsKICAgIGF3YWl0IHJlYWRCbG9i
KGJsb2IpOwogIH0gY2F0Y2ggKGVycm9yKSB7CiAgICBjb25zb2xlLmVycm9yKCdCbG9iIGZyb20g
SW5kZXhlZERCIGlzIG5vdCByZWFkYWJsZTonLCBibG9iLCBlcnJvcik7CiAgICBpbnN0cnVjdGlv
bnMyLnRleHRDb250ZW50ID0gJ0Jsb2IgZnJvbSBJbmRleGVkREIgaXMgbm90IHJlYWRhYmxlJzsK
ICAgIHJldHVybjsKICB9CgogIC8vIDUuIEdldCBpbWFnZSB3aXRoIE9iamVjdFVSTCBzb3VyY2Ug
YW5kIHJlbmRlciB0byBjYW52YXMKICBjb25zb2xlLmxvZygnR2VuZXJhdGUgSW1hZ2VFbGVtZW50
IHdpdGggT2JqZWN0VVJMIHNvdXJjZScpCiAgY29uc3QgaW1hZ2VFbGVtZW50ID0gYXdhaXQgYmxv
YlRvSW1hZ2UoYmxvYik7CgogIGNvbnNvbGUubG9nKCdSZW5kZXIgSW1hZ2VFbGVtZW50IHRvIGNh
bnZhcycpCgogIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlRWxlbWVudCwgMCwgMCk7CgogIC8vIDYu
IFNhdmUgYmxvYiB0byBJbmRleGVkREIgYWdhaW4KICBjb25zb2xlLmxvZygnU2F2ZSBibG9iIHRv
IEluZGV4ZWREQiBhZ2FpbicpOwogIGF3YWl0IHNldCgnaW1hZ2UnLCBibG9iKTsKCiAgLy8gNy4g
RW5zdXJlIEJsb2IgaXMgc3RpbGwgcmVhZGFibGUKICB0cnkgewogICAgYXdhaXQgcmVhZEJsb2Io
YmxvYik7CiAgfSBjYXRjaCAoZXJyb3IpIHsKICAgIGNvbnNvbGUuZXJyb3IoJ0luLW1lbW9yeSBi
bG9iIGlzIG5vIGxvbmdlciByZWFkYWJsZSBhZnRlciBzYXZpbmc6JywgYmxvYiwgZXJyb3IpOwog
ICAgaW5zdHJ1Y3Rpb25zMi50ZXh0Q29udGVudCA9ICdJbi1tZW1vcnkgYmxvYiBpcyBubyBsb25n
ZXIgcmVhZGFibGUgYWZ0ZXIgc2F2aW5nJzsKICAgIHJldHVybjsKICB9CgogIC8vIDguIEJsb2Ig
aXMgcmVhZGFibGUuIEhvdyBhYm91dCBhZnRlciBhIHJlZnJlc2g/CiAgaW5zdHJ1Y3Rpb25zMi50
ZXh0Q29udGVudCA9ICdFdmVyeXRoaW5nIHdvcmtlZC4gQ2xpY2sgYnV0dG9uIGFnYWluIC1vci0g
cmVmcmVzaCBhbmQgdGhlbiBjbGljayB0aGUgYnV0dG9uIHRvIHRyeSBhZ2Fpbi4nOwoKfSk7Cgpm
dW5jdGlvbiBibG9iVG9JbWFnZShibG9iKSB7CiAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZl
LCByZWplY3QpID0+IHsKCiAgICBjb25zb2xlLmxvZygnQ3JlYXRpbmcgT2JqZWN0VVJMIGZvciBi
bG9iJykKICAgIGNvbnN0IG9iamVjdFVSTCA9IFVSTC5jcmVhdGVPYmplY3RVUkwoYmxvYik7CiAg
ICBjb25zb2xlLmxvZyh7IG9iamVjdFVSTCB9KTsKICAgIGNvbnN0IGltYWdlID0gbmV3IEltYWdl
KCk7CiAgICBpbWFnZS5zcmMgPSBvYmplY3RVUkw7CiAgICBpbWFnZS5vbmxvYWQgPSBmdW5jdGlv
biAoKSB7CiAgICAgIHJlc29sdmUoaW1hZ2UpOwogICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9i
amVjdFVSTCk7CiAgICB9CiAgICBpbWFnZS5vbmVycm9yID0gZnVuY3Rpb24gKCkgewogICAgICBy
ZWplY3QoaW1hZ2UpOwogICAgICBVUkwucmV2b2tlT2JqZWN0VVJMKG9iamVjdFVSTCk7CiAgICB9
CiAgfSk7Cn0KCmZ1bmN0aW9uIHJlYWRCbG9iKGJsb2IpIHsKICByZXR1cm4gbmV3IFByb21pc2Uo
KHJlc29sdmUsIHJlamVjdCkgPT4gewogICAgdmFyIHJlYWRlciA9IG5ldyBGaWxlUmVhZGVyKCk7
CgogICAgcmVhZGVyLm9ubG9hZCA9ICgpID0+IHJlc29sdmUocmVhZGVyLnJlc3VsdCk7CiAgICBy
ZWFkZXIub25lcnJvciA9IHJlamVjdDsKCiAgICByZWFkZXIucmVhZEFzQXJyYXlCdWZmZXIoYmxv
Yik7CiAgfSk7Cn1QSwcImj9oxLALAACwCwAAUEsBAhQDFAAIAAAAPYSoVAkM4aalAAAApQAAABwA
CQAAAAAAAAAAAP+BAAAAAHBlbi1leHBvcnQtTVdqUlpPcS9SRUFETUUubWRVVAUAAffwd2JQSwEC
FAMUAAgAAAA9hKhUQrX9aW8EAABvBAAAHgAJAAAAAAAAAAAA/4H4AAAAcGVuLWV4cG9ydC1NV2pS
Wk9xL0xJQ0VOU0UudHh0VVQFAAH38HdiUEsBAhQDFAAIAAAAPYSoVHTxmYwvAQAALwEAACEACQAA
AAAAAAAAAP+BvAUAAHBlbi1leHBvcnQtTVdqUlpPcS9zcmMvaW5kZXguaHRtbFVUBQAB9/B3YlBL
AQIUAxQACAAAAD2EqFSaP2jEsAsAALALAAAgAAkAAAAAAAAAAAD/gUMHAABwZW4tZXhwb3J0LU1X
alJaT3Evc3JjL3NjcmlwdC5qc1VUBQAB9/B3YlBLAQIUAxQACAAAAD2EqFTf6hshgQIAAIECAAAi
AAkAAAAAAAAAAAD/gUoTAABwZW4tZXhwb3J0LU1XalJaT3EvZGlzdC9pbmRleC5odG1sVVQFAAH3
8HdiUEsBAhQDFAAIAAAAPYSoVJo/aMSwCwAAsAsAACEACQAAAAAAAAAAAP+BJBYAAHBlbi1leHBv
cnQtTVdqUlpPcS9kaXN0L3NjcmlwdC5qc1VUBQAB9/B3YlBLBQYAAAAABgAGAAgCAAAsIgAAAAA=
</data>

          </attachment>
      

    </bug>

</bugzilla>