private async void WebView_ScriptNotify(object sender, NotifyEventArgs e)
        {
            string[] urlParts    = e.Value.Split('?');
            string   docLocation = urlParts[0];

            Uri docUri = new Uri("ms-appx:///" + docLocation);
            var file   = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(docUri);

            var props = await file.GetBasicPropertiesAsync();

            var fileSize = props.Size;

            string range = urlParts[1];

            string[] rangeParts = range.Split('&');

            string originalRangeStart = rangeParts[0];
            ulong  rangeStart;

            // if the range start is negative then read from the end of the file
            if (originalRangeStart.StartsWith("-"))
            {
                ulong rangeStartPositive = (ulong)Math.Abs(Convert.ToInt64(originalRangeStart));
                rangeStart = fileSize - rangeStartPositive;
            }
            else
            {
                rangeStart = Convert.ToUInt64(originalRangeStart);
            }

            // if the end range is not specified then it goes to the end of the file
            ulong rangeEnd = (rangeParts[1].Length == 0) ? fileSize : Convert.ToUInt64(rangeParts[1]);

            var stream = await file.OpenReadAsync();

            stream.Seek(rangeStart);

            // get the number of bytes to read
            uint count = (uint)(rangeEnd - rangeStart);
            var  bytes = new byte[count];

            using (var dataReader = new DataReader(stream))
            {
                await dataReader.LoadAsync(count);

                dataReader.ReadBytes(bytes);
            }

            string successFunction = string.Format("setTimeout(function() {{ window.CoreControls.PartRetrievers.WinRTPartRetriever.partSuccess('{0}', '{1}'); }}, 0);", Convert.ToBase64String(bytes), originalRangeStart);

            MyWebView.InvokeScript("eval", new string[] { successFunction });
        }