Browse our wide selection of Jeep Wrangler Side Decals and Fender Stickers to find the best prices for your Wrangler 2-Door or 4-Door. In this category you will find Wrangler Fender Decals and Jeep Side Stickers for all make and model Jeep Wranglers including Unlimited, Rubicon, Sahara, Sport, JK, JKU, LJ, TJ, YJ, CJ, etc. You can either select a product category or use our search box to find specific items in our store. Feel free to use our filtering options to sort by popularity, price or ratings within a category. The Jeep side decals and Wrangler fender stickers we carry include replacement fender decals, military themed decals, vinyl decal stickers, logo fender decals, Punisher decals, side fender decals and more.
Jeep Fender Decals and Side Stickers are designed to give your Wrangler a unique and custom look depending on your own preferences. We can help you deck out your Wrangler with cool fender Decals and Hood Sticker products sure to make your Jeep stand out from the rest. Lets admit it, one of the main reasons we love Jeeps is because of the vast array of customization's that can be done easily to make it one of a kind. We have a lot of different Jeep Wrangler fender Decal Stickers for the Wrangler owner to choose from. Stick around and browse awhile!


text:
Posted on May 4, 2002 by mwhybark
Sky Ships, a review
Sky Ships, a history of the airship in the United States Navy, published 1990 by Pacifica Press. By William Althoff, 304 pp.
Out of print. Buy it from the NAS Lakehurst gift shop online or used from Amazon. Here's an excerpt concerning the consruction of the Shenandoah at NAS Lakehurst, New Jersey.
Finally, it should be noted that Lakehurst is open for tours. If you live in New Jersey, you may want to visit (you know who you are).
I picked this book up in late summer 2000 at the Tillamook Air Museum, in Tillamook, Oregon, on the Oregon coast, an air museum housed in the surviving hangar of a former Navy blimp station (or NAS, Naval Air Station). If you're a Nova watcher, like me, you may recall a Nova (entited "the Blimp is Back") on blimps and alternative flight technology shot around 1991 in which a home-made rack of surplus Huey helicopters, all welded together, falls apart explosively on the airstrip, and later features an impossibly large building burning.
That building was the other hangar at Tillamook NAS. The buildings are huge, impossibly large. They have many interesting airplanes, and yet, the museum feels homey and small. It's definitely worth a visit if you ever hit the fantastically beautiful, and gratifyingly remote and isolated, Oregon coast. Portland dwellers, just drive west for an hour. Everyone else, buckle up.
The book itself is a fanatically detailed history of United States naval lighter-than-air aviation. The program began during world war one, but only began to see actual flight after the end of the war, with a British airship and the United States designed and built Shenandoah. There were also some soft-bag airships imported from the British, known as the B-type, which were effectively wingless American biplane fuselages slung under gasbags. Alas, I could find no images on the net of this incredble bit of jury-rig engineering.
You know, we have a car we're not using, and, I bet we could, like, um, soak, like, sheets in some, um, rubber cement, and um… unh, what? Oh, sorry, I, uh, drifted off there.
UPDATE: I was mistaken, somewhat, in characterizing the Shenandoah as United States designed – she was actually built using plans developed in Germany by the Zeppelin operation, and can be considered the direct forerunner of the great zeps we think of most commonly when the subject comes up, namely the Hindenburg and the Graf Zeppelin. She can be immediately recognized in photographs by her streamlined control fins; all the later ships employed more blockily shaped fins in order to increase control-surface area. She's clearly the ship seen on the cover of Sky Ships in today's graphic.
Sigh. And an update to the update. first, the cover of Sky Ships actually shows the Los Angeles, built in Germany by the Zeppelin company for the Navy immediately after the end of the war. The image is in fact of her coming into port at Lakehurst for the first time; Dr. Eckener is in command of the ship. The Shenandoah was in fact reverse-engineered from a zep brougt down over England, but was indeed built in the United States. A diagnostic distinction between Shenandoah and Los Angeles is the externally mounted control car of the Shenandoah.
The most surprising thing I gleaned from the book was the detailed internal politics of the US Navy from the end of World War One through the 1960's, when the LTA program was halted. The author spares no detail in recounting the byzantine posturings of the various service departments and interest groups as they jockey for position and for their share of the ever-growing, ever-more-astoundingly-huge defense budget of the United States of America.
Unfortunately, from the author's perspective, and, I suppose, from mine, LTA was a consistent loser in these lobbyist's wars. I believe that the author's intent in detailing the politicality of military budgeting is the soldier's intent in the oft-heard complaint "I'm a soldier, not a politician".
Naturally, such a statement, although fervently subscribed to by the utterer, is at best a misrepresentation of the facts, and persistently creates difficulty in public discourse concerning the military. It's my opinion that it's an effective defensive tactic deployed in democratic combat, and in point of fact, my reading of this book supports that view.
Nonetheless I found it fascinating, rather than a dirty shame. If military budgets are easily documentable as the result of political processes, then, the development of these budgets can and should be completely open to the public as all political processes should be in a democracy. The fact that much of the politicality of the process is documentable is in and of itself reason to toast our democracy and her traditions.
However, one of the most important tactical determinants of the political defeats of the naval LTA program is clearly the repeated loss, in the dramatic airship wrecks of the Shenandoah, Akron, and Macon (as I recall), of the senior airship brass within the Navy. If the most committed admirals died in peacetime as the consequence of the difficulty of safely operating a small number of large, rigid-construction lighter-than-air ships, one might reasonably conclude that ambitous younger leaders might prefer to explore such technology as, oh, the aircraft carrier.
Indeed, one of the lessons I drew from the book was that the reason we lack those fabled queens of the sky today is not due to the dim vision of evil bureaucrats, or due to the horrible, lingering publicity of the loss of the Hindenburg. It's physics.
Something that big, which moves slowly, has negative bouyancy, and retains the mass of any object the size of two football fields, is, first, hard to control, and second, at the mercy of, well, everything.
After the Los Angeles, the last of the great American dirigibles and the only one not lost in amazing wrecks (stay tuned for a piece on the wreck of the Shenandoah in Ohio!), the Navy refocused the program on smaller, soft-bag vessels, which operated successfully thoughout World War Two as convoy escort scouts. These vessels are the direct ancestor of today's Goodyear blimp, and in some cases are still in service with the Goodyear company. Goodyear, naturally, prays before candles nightly that a military LTA program will rise from the dead. In point of fact, their candles may be well burnt, if they know how to speak Boeingese.
At the tail end of the program in the early sixties, a new technology was emerging which tied a large, rigid keel to ever-larger soft lifting bodies. Within the lifting body itself? A long-range radar station. These ships were designed for high-altitude, near continuous service, something like a high-altitude geosynchronus satellite, but, duh, within the atmoshpere.
As noted earlier, Boeing and Cargolifter have just announced a partnership. One of the proposed uses? Long-range high-altitude surveillance.
Stay tuned! It's BLIMP WEEK!
Posted in Blimp Week, Reading
Previous Article BLIMP WEEK, part three
Next Article Getchya BLIMP RIDES heah!

redpajama_set_name: RedPajamaCommonCrawl


Here at Waverley Church, we value children.
We believe they are an important part of our community and because of that, place a high priority on having quality programs and caring leaders.
Our children's ministry is uniquely designed with your child in mind! Each Sunday, kids age 6 months – grade 6 experience safe, age-appropriate environments where the Bible is taught in a creative and relevant way. Join the fun and experience a world where kids meet Jesus on their level!
Each year during the summer, we put on our Vacation Bible School program, which runs each weekday mornings from 9am-12pm for 5 days. It's designed to help kids discover God's Word in a fun and unforgettable way!
Kids Spot is a free drop-in indoor play place for preschool children ages 0-5.
Discovery Time is a lunch hour program that happens each week at a school. Each week we teach children worship songs, a memory verse, and share a Bible story. We have the exciting privilege to be able to teach kids about God in two public schools.


text:
// Copyright 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package org.chromium.android_webview.test;

import android.os.Build;
import android.test.suitebuilder.annotation.SmallTest;
import android.util.Pair;

import org.chromium.android_webview.AwContents;
import org.chromium.android_webview.AwWebResourceResponse;
import org.chromium.android_webview.test.util.AwTestTouchUtils;
import org.chromium.android_webview.test.util.CommonResources;
import org.chromium.android_webview.test.util.JSUtils;
import org.chromium.base.test.util.Feature;
import org.chromium.base.test.util.MinAndroidSdkLevel;
import org.chromium.base.test.util.TestFileUtil;
import org.chromium.content.browser.test.util.CallbackHelper;
import org.chromium.content.browser.test.util.TestCallbackHelperContainer.OnReceivedErrorHelper;
import org.chromium.net.test.util.TestWebServer;

import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.concurrent.Callable;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CountDownLatch;

/**
 * Tests for the WebViewClient.shouldInterceptRequest() method.
 */
@MinAndroidSdkLevel(Build.VERSION_CODES.KITKAT)
public class AwContentsClientShouldInterceptRequestTest extends AwTestBase {

    private static class ShouldInterceptRequestClient extends TestAwContentsClient {

        public static class ShouldInterceptRequestHelper extends CallbackHelper {
            private List<String> mShouldInterceptRequestUrls = new ArrayList<String>();
            private ConcurrentHashMap<String, AwWebResourceResponse> mReturnValuesByUrls =
                    new ConcurrentHashMap<String, AwWebResourceResponse>();
            private ConcurrentHashMap<String, AwWebResourceRequest> mRequestsByUrls =
                    new ConcurrentHashMap<String, AwWebResourceRequest>();
            // This is read on another thread, so needs to be marked volatile.
            private volatile AwWebResourceResponse mShouldInterceptRequestReturnValue = null;
            void setReturnValue(AwWebResourceResponse value) {
                mShouldInterceptRequestReturnValue = value;
            }
            void setReturnValueForUrl(String url, AwWebResourceResponse value) {
                mReturnValuesByUrls.put(url, value);
            }
            public List<String> getUrls() {
                assert getCallCount() > 0;
                return mShouldInterceptRequestUrls;
            }
            public AwWebResourceResponse getReturnValue(String url) {
                AwWebResourceResponse value = mReturnValuesByUrls.get(url);
                if (value != null) return value;
                return mShouldInterceptRequestReturnValue;
            }
            public AwWebResourceRequest getRequestsForUrl(String url) {
                assert getCallCount() > 0;
                assert mRequestsByUrls.containsKey(url);
                return mRequestsByUrls.get(url);
            }
            public void notifyCalled(AwWebResourceRequest request) {
                mShouldInterceptRequestUrls.add(request.url);
                mRequestsByUrls.put(request.url, request);
                notifyCalled();
            }
        }

        public static class OnLoadResourceHelper extends CallbackHelper {
            private String mUrl;

            public String getUrl() {
                assert getCallCount() > 0;
                return mUrl;
            }

            public void notifyCalled(String url) {
                mUrl = url;
                notifyCalled();
            }
        }

        @Override
        public AwWebResourceResponse shouldInterceptRequest(AwWebResourceRequest request) {
            AwWebResourceResponse returnValue =
                    mShouldInterceptRequestHelper.getReturnValue(request.url);
            mShouldInterceptRequestHelper.notifyCalled(request);
            return returnValue;
        }

        @Override
        public void onLoadResource(String url) {
            super.onLoadResource(url);
            mOnLoadResourceHelper.notifyCalled(url);
        }

        private ShouldInterceptRequestHelper mShouldInterceptRequestHelper;
        private OnLoadResourceHelper mOnLoadResourceHelper;

        public ShouldInterceptRequestClient() {
            mShouldInterceptRequestHelper = new ShouldInterceptRequestHelper();
            mOnLoadResourceHelper = new OnLoadResourceHelper();
        }

        public ShouldInterceptRequestHelper getShouldInterceptRequestHelper() {
            return mShouldInterceptRequestHelper;
        }

        public OnLoadResourceHelper getOnLoadResourceHelper() {
            return mOnLoadResourceHelper;
        }
    }

    private static final int TEAPOT_STATUS_CODE = 418;
    private static final String TEAPOT_RESPONSE_PHRASE = "I'm a teapot";

    private String addPageToTestServer(TestWebServer webServer, String httpPath, String html) {
        List<Pair<String, String>> headers = new ArrayList<Pair<String, String>>();
        headers.add(Pair.create("Content-Type", "text/html"));
        headers.add(Pair.create("Cache-Control", "no-store"));
        return webServer.setResponse(httpPath, html, headers);
    }

    private String addAboutPageToTestServer(TestWebServer webServer) {
        return addPageToTestServer(webServer, "/" + CommonResources.ABOUT_FILENAME,
                CommonResources.ABOUT_HTML);
    }

    private AwWebResourceResponse stringToAwWebResourceResponse(String input) throws Throwable {
        final String mimeType = "text/html";
        final String encoding = "UTF-8";

        return new AwWebResourceResponse(
                mimeType, encoding, new ByteArrayInputStream(input.getBytes(encoding)));
    }

    private TestWebServer mWebServer;
    private ShouldInterceptRequestClient mContentsClient;
    private AwTestContainerView mTestContainerView;
    private AwContents mAwContents;
    private ShouldInterceptRequestClient.ShouldInterceptRequestHelper mShouldInterceptRequestHelper;

    @Override
    protected void setUp() throws Exception {
        super.setUp();

        mContentsClient = new ShouldInterceptRequestClient();
        mTestContainerView = createAwTestContainerViewOnMainSync(mContentsClient);
        mAwContents = mTestContainerView.getAwContents();
        mShouldInterceptRequestHelper = mContentsClient.getShouldInterceptRequestHelper();

        mWebServer = TestWebServer.start();
    }

    @Override
    protected void tearDown() throws Exception {
        mWebServer.shutdown();
        super.tearDown();
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledWithCorrectUrlParam() throws Throwable {
        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);

        int onPageFinishedCallCount = mContentsClient.getOnPageFinishedHelper().getCallCount();

        int callCount = mShouldInterceptRequestHelper.getCallCount();
        loadUrlAsync(mAwContents, aboutPageUrl);
        mShouldInterceptRequestHelper.waitForCallback(callCount);
        assertEquals(1, mShouldInterceptRequestHelper.getUrls().size());
        assertEquals(aboutPageUrl,
                mShouldInterceptRequestHelper.getUrls().get(0));

        mContentsClient.getOnPageFinishedHelper().waitForCallback(onPageFinishedCallCount);
        assertEquals(CommonResources.ABOUT_TITLE, getTitleOnUiThread(mAwContents));
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledWithCorrectIsMainFrameParam() throws Throwable {
        final String subframeUrl = addAboutPageToTestServer(mWebServer);
        final String pageWithIframeUrl = addPageToTestServer(mWebServer, "/page_with_iframe.html",
                CommonResources.makeHtmlPageFrom("",
                    "<iframe src=\"" + subframeUrl + "\"/>"));

        int callCount = mShouldInterceptRequestHelper.getCallCount();
        loadUrlAsync(mAwContents, pageWithIframeUrl);
        mShouldInterceptRequestHelper.waitForCallback(callCount, 2);
        assertEquals(2, mShouldInterceptRequestHelper.getUrls().size());
        assertEquals(false,
                mShouldInterceptRequestHelper.getRequestsForUrl(subframeUrl).isMainFrame);
        assertEquals(true,
                mShouldInterceptRequestHelper.getRequestsForUrl(pageWithIframeUrl).isMainFrame);
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledWithCorrectMethodParam() throws Throwable {
        final String pageToPostToUrl = addAboutPageToTestServer(mWebServer);
        final String pageWithFormUrl = addPageToTestServer(mWebServer, "/page_with_form.html",
                CommonResources.makeHtmlPageWithSimplePostFormTo(pageToPostToUrl));
        enableJavaScriptOnUiThread(mAwContents);

        int callCount = mShouldInterceptRequestHelper.getCallCount();
        loadUrlAsync(mAwContents, pageWithFormUrl);
        mShouldInterceptRequestHelper.waitForCallback(callCount);
        assertEquals("GET",
                mShouldInterceptRequestHelper.getRequestsForUrl(pageWithFormUrl).method);

        callCount = mShouldInterceptRequestHelper.getCallCount();
        JSUtils.clickOnLinkUsingJs(this, mAwContents,
                mContentsClient.getOnEvaluateJavaScriptResultHelper(), "link");
        mShouldInterceptRequestHelper.waitForCallback(callCount);
        assertEquals("POST",
                mShouldInterceptRequestHelper.getRequestsForUrl(pageToPostToUrl).method);
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledWithCorrectHasUserGestureParam() throws Throwable {
        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);
        final String pageWithLinkUrl = addPageToTestServer(mWebServer, "/page_with_link.html",
                CommonResources.makeHtmlPageWithSimpleLinkTo(aboutPageUrl));
        enableJavaScriptOnUiThread(mAwContents);

        int callCount = mShouldInterceptRequestHelper.getCallCount();
        loadUrlAsync(mAwContents, pageWithLinkUrl);
        mShouldInterceptRequestHelper.waitForCallback(callCount);
        assertEquals(false,
                mShouldInterceptRequestHelper.getRequestsForUrl(pageWithLinkUrl).hasUserGesture);

        waitForPixelColorAtCenterOfView(mAwContents,
                mTestContainerView, CommonResources.LINK_COLOR);
        callCount = mShouldInterceptRequestHelper.getCallCount();
        AwTestTouchUtils.simulateTouchCenterOfView(mTestContainerView);
        mShouldInterceptRequestHelper.waitForCallback(callCount);
        assertEquals(true,
                mShouldInterceptRequestHelper.getRequestsForUrl(aboutPageUrl).hasUserGesture);
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledWithCorrectRefererHeader() throws Throwable {
        final String refererHeaderName = "Referer";
        final String imageUrl = mWebServer.setResponseBase64(
                "/" + CommonResources.TEST_IMAGE_FILENAME,
                CommonResources.FAVICON_DATA_BASE64,
                CommonResources.getImagePngHeaders(true));
        final String pageUrl = addPageToTestServer(mWebServer, "/main.html",
                CommonResources.makeHtmlPageFrom(
                        "", "<img src=\'" + CommonResources.TEST_IMAGE_FILENAME + "\'>"));

        int callCount = mShouldInterceptRequestHelper.getCallCount();
        loadUrlAsync(mAwContents, pageUrl);
        mShouldInterceptRequestHelper.waitForCallback(callCount, 2);
        assertEquals(2, mShouldInterceptRequestHelper.getUrls().size());
        assertEquals(pageUrl,
                mShouldInterceptRequestHelper.getUrls().get(0));
        Map<String, String> headers =
                mShouldInterceptRequestHelper.getRequestsForUrl(pageUrl).requestHeaders;
        assertFalse(headers.containsKey(refererHeaderName));
        assertEquals(imageUrl,
                mShouldInterceptRequestHelper.getUrls().get(1));
        headers = mShouldInterceptRequestHelper.getRequestsForUrl(imageUrl).requestHeaders;
        assertTrue(headers.containsKey(refererHeaderName));
        assertEquals(pageUrl, headers.get(refererHeaderName));
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledWithCorrectHeadersParam() throws Throwable {
        final String headerName = "X-Test-Header-Name";
        final String headerValue = "TestHeaderValue";
        final String syncGetUrl = addPageToTestServer(mWebServer, "/intercept_me",
                CommonResources.ABOUT_HTML);
        final String mainPageUrl = addPageToTestServer(mWebServer, "/main",
                CommonResources.makeHtmlPageFrom("",
                "<script>"
                + "  var xhr = new XMLHttpRequest();"
                + "  xhr.open('GET', '" + syncGetUrl + "', false);"
                + "  xhr.setRequestHeader('" + headerName + "', '" + headerValue + "'); "
                + "  xhr.send(null);"
                + "</script>"));
        enableJavaScriptOnUiThread(mAwContents);

        int callCount = mShouldInterceptRequestHelper.getCallCount();
        loadUrlAsync(mAwContents, mainPageUrl);
        mShouldInterceptRequestHelper.waitForCallback(callCount, 2);

        Map<String, String> headers =
                mShouldInterceptRequestHelper.getRequestsForUrl(syncGetUrl).requestHeaders;
        assertTrue(headers.containsKey(headerName));
        assertEquals(headerValue, headers.get(headerName));
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testOnLoadResourceCalledWithCorrectUrl() throws Throwable {
        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);
        final ShouldInterceptRequestClient.OnLoadResourceHelper onLoadResourceHelper =
                mContentsClient.getOnLoadResourceHelper();

        int callCount = onLoadResourceHelper.getCallCount();

        loadUrlAsync(mAwContents, aboutPageUrl);

        onLoadResourceHelper.waitForCallback(callCount);
        assertEquals(aboutPageUrl, onLoadResourceHelper.getUrl());
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testDoesNotCrashOnInvalidData() throws Throwable {
        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);

        mShouldInterceptRequestHelper.setReturnValue(
                new AwWebResourceResponse("text/html", "UTF-8", null));
        int callCount = mShouldInterceptRequestHelper.getCallCount();
        loadUrlAsync(mAwContents, aboutPageUrl);
        mShouldInterceptRequestHelper.waitForCallback(callCount);

        mShouldInterceptRequestHelper.setReturnValue(
                new AwWebResourceResponse(null, null, new ByteArrayInputStream(new byte[0])));
        callCount = mShouldInterceptRequestHelper.getCallCount();
        loadUrlAsync(mAwContents, aboutPageUrl);
        mShouldInterceptRequestHelper.waitForCallback(callCount);

        mShouldInterceptRequestHelper.setReturnValue(
                new AwWebResourceResponse(null, null, null));
        callCount = mShouldInterceptRequestHelper.getCallCount();
        loadUrlAsync(mAwContents, aboutPageUrl);
        mShouldInterceptRequestHelper.waitForCallback(callCount);
    }

    private static class EmptyInputStream extends InputStream {
        @Override
        public int available() {
            return 0;
        }

        @Override
        public int read() throws IOException {
            return -1;
        }

        @Override
        public int read(byte b[]) throws IOException {
            return -1;
        }

        @Override
        public int read(byte b[], int off, int len) throws IOException {
            return -1;
        }

        @Override
        public long skip(long n) throws IOException {
            if (n < 0)
                throw new IOException("skipping negative number of bytes");
            return 0;
        }
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testDoesNotCrashOnEmptyStream() throws Throwable {
        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);

        mShouldInterceptRequestHelper.setReturnValue(
                new AwWebResourceResponse("text/html", "UTF-8", new EmptyInputStream()));
        int shouldInterceptRequestCallCount = mShouldInterceptRequestHelper.getCallCount();
        int onPageFinishedCallCount = mContentsClient.getOnPageFinishedHelper().getCallCount();

        loadUrlAsync(mAwContents, aboutPageUrl);

        mShouldInterceptRequestHelper.waitForCallback(shouldInterceptRequestCallCount);
        mContentsClient.getOnPageFinishedHelper().waitForCallback(onPageFinishedCallCount);
    }

    private static class ThrowingInputStream extends EmptyInputStream {
        @Override
        public int available() {
            return 100;
        }

        @Override
        public int read() throws IOException {
            throw new IOException("test exception");
        }

        @Override
        public int read(byte b[]) throws IOException {
            throw new IOException("test exception");
        }

        @Override
        public int read(byte b[], int off, int len) throws IOException {
            throw new IOException("test exception");
        }

        @Override
        public long skip(long n) throws IOException {
            return n;
        }
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testDoesNotCrashOnThrowingStream() throws Throwable {
        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);

        mShouldInterceptRequestHelper.setReturnValue(
                new AwWebResourceResponse("text/html", "UTF-8", new ThrowingInputStream()));
        int shouldInterceptRequestCallCount = mShouldInterceptRequestHelper.getCallCount();
        int onPageFinishedCallCount = mContentsClient.getOnPageFinishedHelper().getCallCount();

        loadUrlAsync(mAwContents, aboutPageUrl);

        mShouldInterceptRequestHelper.waitForCallback(shouldInterceptRequestCallCount);
        mContentsClient.getOnPageFinishedHelper().waitForCallback(onPageFinishedCallCount);
    }

    private static class SlowAwWebResourceResponse extends AwWebResourceResponse {
        private CallbackHelper mReadStartedCallbackHelper = new CallbackHelper();
        private CountDownLatch mLatch = new CountDownLatch(1);

        public SlowAwWebResourceResponse(String mimeType, String encoding, InputStream data) {
            super(mimeType, encoding, data);
        }

        @Override
        public InputStream getData() {
            mReadStartedCallbackHelper.notifyCalled();
            try {
                mLatch.await();
            } catch (InterruptedException e) {
                // ignore
            }
            return super.getData();
        }

        public void unblockReads() {
            mLatch.countDown();
        }

        public CallbackHelper getReadStartedCallbackHelper() {
            return mReadStartedCallbackHelper;
        }
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testDoesNotCrashOnSlowStream() throws Throwable {
        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);
        final String aboutPageData = makePageWithTitle("some title");
        final String encoding = "UTF-8";
        final SlowAwWebResourceResponse slowAwWebResourceResponse =
                new SlowAwWebResourceResponse("text/html", encoding,
                        new ByteArrayInputStream(aboutPageData.getBytes(encoding)));

        mShouldInterceptRequestHelper.setReturnValue(slowAwWebResourceResponse);
        int callCount = slowAwWebResourceResponse.getReadStartedCallbackHelper().getCallCount();
        loadUrlAsync(mAwContents, aboutPageUrl);
        slowAwWebResourceResponse.getReadStartedCallbackHelper().waitForCallback(callCount);

        // Now the AwContents is "stuck" waiting for the SlowInputStream to finish reading so we
        // delete it to make sure that the dangling 'read' task doesn't cause a crash. Unfortunately
        // this will not always lead to a crash but it should happen often enough for us to notice.

        runTestOnUiThread(new Runnable() {
            @Override
            public void run() {
                getActivity().removeAllViews();
            }
        });
        destroyAwContentsOnMainSync(mAwContents);
        pollOnUiThread(new Callable<Boolean>() {
            @Override
            public Boolean call() {
                return AwContents.getNativeInstanceCount() == 0;
            }
        });

        slowAwWebResourceResponse.unblockReads();
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testHttpStatusCodeAndText() throws Throwable {
        final String syncGetUrl = mWebServer.getResponseUrl("/intercept_me");
        final String syncGetJs =
                "(function() {"
                + "  var xhr = new XMLHttpRequest();"
                + "  xhr.open('GET', '" + syncGetUrl + "', false);"
                + "  xhr.send(null);"
                + "  console.info('xhr.status = ' + xhr.status);"
                + "  console.info('xhr.statusText = ' + xhr.statusText);"
                + "  return '[' + xhr.status + '][' + xhr.statusText + ']';"
                + "})();";
        enableJavaScriptOnUiThread(mAwContents);

        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);
        loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), aboutPageUrl);

        mShouldInterceptRequestHelper.setReturnValue(
                new AwWebResourceResponse("text/html", "UTF-8", null));
        assertEquals("\"[404][Not Found]\"",
                executeJavaScriptAndWaitForResult(mAwContents, mContentsClient, syncGetJs));

        mShouldInterceptRequestHelper.setReturnValue(
                new AwWebResourceResponse("text/html", "UTF-8", new EmptyInputStream()));
        assertEquals("\"[200][OK]\"",
                executeJavaScriptAndWaitForResult(mAwContents, mContentsClient, syncGetJs));

        mShouldInterceptRequestHelper.setReturnValue(
                new AwWebResourceResponse("text/html", "UTF-8", new EmptyInputStream(),
                        TEAPOT_STATUS_CODE, TEAPOT_RESPONSE_PHRASE, new HashMap<String, String>()));
        assertEquals("\"[" + TEAPOT_STATUS_CODE + "][" + TEAPOT_RESPONSE_PHRASE + "]\"",
                executeJavaScriptAndWaitForResult(mAwContents, mContentsClient, syncGetJs));
    }

    private String getHeaderValue(AwContents awContents, TestAwContentsClient contentsClient,
            String url, String headerName) throws Exception {
        final String syncGetJs =
                "(function() {"
                + "  var xhr = new XMLHttpRequest();"
                + "  xhr.open('GET', '" + url + "', false);"
                + "  xhr.send(null);"
                + "  console.info(xhr.getAllResponseHeaders());"
                + "  return xhr.getResponseHeader('" + headerName + "');"
                + "})();";
        String header = executeJavaScriptAndWaitForResult(awContents, contentsClient, syncGetJs);

        if (header.equals("null")) return null;
        // JSON stringification applied by executeJavaScriptAndWaitForResult adds quotes
        // around returned strings.
        assertTrue(header.length() > 2);
        assertEquals('"', header.charAt(0));
        assertEquals('"', header.charAt(header.length() - 1));
        return header.substring(1, header.length() - 1);
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testHttpResponseClientViaHeader() throws Throwable {
        final String clientResponseHeaderName = "Client-Via";
        final String clientResponseHeaderValue = "shouldInterceptRequest";
        final String syncGetUrl = mWebServer.getResponseUrl("/intercept_me");
        enableJavaScriptOnUiThread(mAwContents);

        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);
        loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), aboutPageUrl);

        // The response header is set regardless of whether the embedder has provided a
        // valid resource stream.
        mShouldInterceptRequestHelper.setReturnValue(
                new AwWebResourceResponse("text/html", "UTF-8", null));
        assertEquals(clientResponseHeaderValue,
                getHeaderValue(mAwContents, mContentsClient, syncGetUrl, clientResponseHeaderName));
        mShouldInterceptRequestHelper.setReturnValue(
                new AwWebResourceResponse("text/html", "UTF-8", new EmptyInputStream()));
        assertEquals(clientResponseHeaderValue,
                getHeaderValue(mAwContents, mContentsClient, syncGetUrl, clientResponseHeaderName));

    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testHttpResponseHeader() throws Throwable {
        final String clientResponseHeaderName = "X-Test-Header-Name";
        final String clientResponseHeaderValue = "TestHeaderValue";
        final String syncGetUrl = mWebServer.getResponseUrl("/intercept_me");
        final Map<String, String> headers = new HashMap<String, String>();
        headers.put(clientResponseHeaderName, clientResponseHeaderValue);
        enableJavaScriptOnUiThread(mAwContents);

        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);
        loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), aboutPageUrl);

        mShouldInterceptRequestHelper.setReturnValue(
                new AwWebResourceResponse("text/html", "UTF-8", null, 0, null, headers));
        assertEquals(clientResponseHeaderValue,
                getHeaderValue(mAwContents, mContentsClient, syncGetUrl, clientResponseHeaderName));
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testNullHttpResponseHeaders() throws Throwable {
        final String syncGetUrl = mWebServer.getResponseUrl("/intercept_me");
        enableJavaScriptOnUiThread(mAwContents);

        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);
        loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), aboutPageUrl);

        mShouldInterceptRequestHelper.setReturnValue(
                new AwWebResourceResponse("text/html", "UTF-8", null, 0, null, null));
        assertEquals(null, getHeaderValue(mAwContents, mContentsClient, syncGetUrl, "Some-Header"));
    }

    private String makePageWithTitle(String title) {
        return CommonResources.makeHtmlPageFrom("<title>" + title + "</title>",
                "<div> The title is: " + title + " </div>");
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCanInterceptMainFrame() throws Throwable {
        final String expectedTitle = "testShouldInterceptRequestCanInterceptMainFrame";
        final String expectedPage = makePageWithTitle(expectedTitle);

        mShouldInterceptRequestHelper.setReturnValue(
                stringToAwWebResourceResponse(expectedPage));

        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);

        loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), aboutPageUrl);

        assertEquals(expectedTitle, getTitleOnUiThread(mAwContents));
        assertEquals(0, mWebServer.getRequestCount("/" + CommonResources.ABOUT_FILENAME));
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testDoesNotChangeReportedUrl() throws Throwable {
        mShouldInterceptRequestHelper.setReturnValue(
                stringToAwWebResourceResponse(makePageWithTitle("some title")));

        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);

        loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), aboutPageUrl);

        assertEquals(aboutPageUrl, mContentsClient.getOnPageFinishedHelper().getUrl());
        assertEquals(aboutPageUrl, mContentsClient.getOnPageStartedHelper().getUrl());
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testNullInputStreamCausesErrorForMainFrame() throws Throwable {
        final OnReceivedErrorHelper onReceivedErrorHelper =
                mContentsClient.getOnReceivedErrorHelper();

        mShouldInterceptRequestHelper.setReturnValue(
                new AwWebResourceResponse("text/html", "UTF-8", null));

        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);
        final int callCount = onReceivedErrorHelper.getCallCount();
        loadUrlAsync(mAwContents, aboutPageUrl);
        onReceivedErrorHelper.waitForCallback(callCount);
        assertEquals(0, mWebServer.getRequestCount("/" + CommonResources.ABOUT_FILENAME));
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledForImage() throws Throwable {
        final String imagePath = "/" + CommonResources.FAVICON_FILENAME;
        mWebServer.setResponseBase64(imagePath,
                CommonResources.FAVICON_DATA_BASE64, CommonResources.getImagePngHeaders(true));
        final String pageWithImage =
                addPageToTestServer(mWebServer, "/page_with_image.html",
                        CommonResources.getOnImageLoadedHtml(CommonResources.FAVICON_FILENAME));

        int callCount = mShouldInterceptRequestHelper.getCallCount();
        loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), pageWithImage);
        mShouldInterceptRequestHelper.waitForCallback(callCount, 2);

        assertEquals(2, mShouldInterceptRequestHelper.getUrls().size());
        assertTrue(mShouldInterceptRequestHelper.getUrls().get(1).endsWith(
                CommonResources.FAVICON_FILENAME));
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testOnReceivedErrorCallback() throws Throwable {
        mShouldInterceptRequestHelper.setReturnValue(new AwWebResourceResponse(null, null, null));
        OnReceivedErrorHelper onReceivedErrorHelper = mContentsClient.getOnReceivedErrorHelper();
        int onReceivedErrorHelperCallCount = onReceivedErrorHelper.getCallCount();
        loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), "foo://bar");
        onReceivedErrorHelper.waitForCallback(onReceivedErrorHelperCallCount, 1);
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testNoOnReceivedErrorCallback() throws Throwable {
        final String imagePath = "/" + CommonResources.FAVICON_FILENAME;
        final String imageUrl = mWebServer.setResponseBase64(imagePath,
                CommonResources.FAVICON_DATA_BASE64, CommonResources.getImagePngHeaders(true));
        final String pageWithImage =
                addPageToTestServer(mWebServer, "/page_with_image.html",
                        CommonResources.getOnImageLoadedHtml(CommonResources.FAVICON_FILENAME));
        mShouldInterceptRequestHelper.setReturnValueForUrl(
                imageUrl, new AwWebResourceResponse(null, null, null));
        OnReceivedErrorHelper onReceivedErrorHelper = mContentsClient.getOnReceivedErrorHelper();
        int onReceivedErrorHelperCallCount = onReceivedErrorHelper.getCallCount();
        loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), pageWithImage);
        assertEquals(onReceivedErrorHelperCallCount, onReceivedErrorHelper.getCallCount());
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledForIframe() throws Throwable {
        final String aboutPageUrl = addAboutPageToTestServer(mWebServer);
        final String pageWithIframeUrl = addPageToTestServer(mWebServer, "/page_with_iframe.html",
                CommonResources.makeHtmlPageFrom("",
                    "<iframe src=\"" + aboutPageUrl + "\"/>"));

        int callCount = mShouldInterceptRequestHelper.getCallCount();
        loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), pageWithIframeUrl);
        mShouldInterceptRequestHelper.waitForCallback(callCount, 2);
        assertEquals(2, mShouldInterceptRequestHelper.getUrls().size());
        assertEquals(aboutPageUrl, mShouldInterceptRequestHelper.getUrls().get(1));
    }

    private void calledForUrlTemplate(final String url) throws Exception {
        int callCount = mShouldInterceptRequestHelper.getCallCount();
        int onPageStartedCallCount = mContentsClient.getOnPageStartedHelper().getCallCount();
        loadUrlAsync(mAwContents, url);
        mShouldInterceptRequestHelper.waitForCallback(callCount);
        assertEquals(url, mShouldInterceptRequestHelper.getUrls().get(0));

        mContentsClient.getOnPageStartedHelper().waitForCallback(onPageStartedCallCount);
        assertEquals(onPageStartedCallCount + 1,
                mContentsClient.getOnPageStartedHelper().getCallCount());
    }

    private void notCalledForUrlTemplate(final String url) throws Exception {
        int callCount = mShouldInterceptRequestHelper.getCallCount();
        loadUrlSync(mAwContents, mContentsClient.getOnPageFinishedHelper(), url);
        // The intercepting must happen before onPageFinished. Since the IPC messages from the
        // renderer should be delivered in order waiting for onPageFinished is sufficient to
        // 'flush' any pending interception messages.
        assertEquals(callCount, mShouldInterceptRequestHelper.getCallCount());
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledForUnsupportedSchemes() throws Throwable {
        calledForUrlTemplate("foobar://resource/1");
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledForNonexistentFiles() throws Throwable {
        calledForUrlTemplate("file:///somewhere/something");
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledForExistingFiles() throws Throwable {
        final String tmpDir = getInstrumentation().getTargetContext().getCacheDir().getPath();
        final String fileName = tmpDir + "/testfile.html";
        final String title = "existing file title";
        TestFileUtil.deleteFile(fileName);  // Remove leftover file if any.
        TestFileUtil.createNewHtmlFile(fileName, title, "");
        final String existingFileUrl = "file://" + fileName;

        int callCount = mShouldInterceptRequestHelper.getCallCount();
        int onPageFinishedCallCount = mContentsClient.getOnPageFinishedHelper().getCallCount();
        loadUrlAsync(mAwContents, existingFileUrl);
        mShouldInterceptRequestHelper.waitForCallback(callCount);
        assertEquals(existingFileUrl, mShouldInterceptRequestHelper.getUrls().get(0));

        mContentsClient.getOnPageFinishedHelper().waitForCallback(onPageFinishedCallCount);
        assertEquals(title, getTitleOnUiThread(mAwContents));
        assertEquals(onPageFinishedCallCount + 1,
                mContentsClient.getOnPageFinishedHelper().getCallCount());
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testNotCalledForExistingResource() throws Throwable {
        notCalledForUrlTemplate("file:///android_res/raw/resource_file.html");
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledForNonexistentResource() throws Throwable {
        calledForUrlTemplate("file:///android_res/raw/no_file.html");
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testNotCalledForExistingAsset() throws Throwable {
        notCalledForUrlTemplate("file:///android_asset/asset_file.html");
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledForNonexistentAsset() throws Throwable {
        calledForUrlTemplate("file:///android_res/raw/no_file.html");
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testNotCalledForExistingContentUrl() throws Throwable {
        final String contentResourceName = "target";
        final String existingContentUrl = TestContentProvider.createContentUrl(contentResourceName);

        notCalledForUrlTemplate(existingContentUrl);

        int contentRequestCount = TestContentProvider.getResourceRequestCount(
                getInstrumentation().getTargetContext(), contentResourceName);
        assertEquals(1, contentRequestCount);
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testCalledForNonexistentContentUrl() throws Throwable {
        calledForUrlTemplate("content://org.chromium.webview.NoSuchProvider/foo");
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testBaseUrlOfLoadDataSentInRefererHeader() throws Throwable {
        final String imageFile = "a.jpg";
        final String pageHtml = "<img src='" + imageFile + "'>";
        final String baseUrl = "http://localhost:666/";
        final String imageUrl = baseUrl + imageFile;
        final String refererHeaderName = "Referer";
        int callCount = mShouldInterceptRequestHelper.getCallCount();
        loadDataWithBaseUrlAsync(mAwContents, pageHtml, "text/html", false, baseUrl, null);
        mShouldInterceptRequestHelper.waitForCallback(callCount, 1);
        assertEquals(1, mShouldInterceptRequestHelper.getUrls().size());
        assertEquals(imageUrl, mShouldInterceptRequestHelper.getUrls().get(0));
        Map<String, String> headers =
                mShouldInterceptRequestHelper.getRequestsForUrl(imageUrl).requestHeaders;
        assertTrue(headers.containsKey(refererHeaderName));
        assertEquals(baseUrl, headers.get(refererHeaderName));
    }

    private static class DeadlockingAwContentsClient extends TestAwContentsClient {
        public DeadlockingAwContentsClient(CountDownLatch ready, CountDownLatch wait) {
            mReady = ready;
            mWait = wait;
        }

        @Override
        public AwWebResourceResponse shouldInterceptRequest(AwWebResourceRequest request) {
            mReady.countDown();
            try {
                mWait.await();
            } catch (InterruptedException e) {
                // ignore
            }
            return null;
        }

        private CountDownLatch mReady;
        private CountDownLatch mWait;
    }

    @SmallTest
    @Feature({"AndroidWebView"})
    public void testDeadlock() throws Throwable {
        // The client will lock shouldInterceptRequest to wait for the UI thread.
        // On the UI thread, we will try engaging the IO thread by executing
        // an action that causes IPC message sending. If the client callback
        // is executed on the IO thread, this will cause a deadlock.
        CountDownLatch waitForShouldInterceptRequest = new CountDownLatch(1);
        CountDownLatch signalAfterSendingIpc = new CountDownLatch(1);
        DeadlockingAwContentsClient client = new DeadlockingAwContentsClient(
                waitForShouldInterceptRequest, signalAfterSendingIpc);
        mTestContainerView = createAwTestContainerViewOnMainSync(client);
        mAwContents = mTestContainerView.getAwContents();
        loadUrlAsync(mAwContents, "http://www.example.com");
        waitForShouldInterceptRequest.await();
        // The following call will try to send an IPC and wait for a reply from renderer.
        // We do not check the actual result, because it can be bogus. The important
        // thing is that the call does not cause a deadlock.
        executeJavaScriptAndWaitForResult(mAwContents, client, "1+1");
        signalAfterSendingIpc.countDown();
    }
}

redpajama_set_name: RedPajamaGithub


text:
#ifndef CONTROLLER_H
#define CONTROLLER_H

#include "../globals.h"
#include "../Misc/XMLwrapper.h"

/**(Midi) Controllers implementation*/
class Controller
{
    public:
        Controller();
        ~Controller();
        void resetall();

        void add2XML(XMLwrapper *xml);
        void defaults();
        void getfromXML(XMLwrapper *xml);

        //Controllers functions
        void setpitchwheel(int value);
        void setpitchwheelbendrange(unsigned short int value);
        void setexpression(int value);
        void setpanning(int value);
        void setfiltercutoff(int value);
        void setfilterq(int value);
        void setbandwidth(int value);
        void setmodwheel(int value);
        void setfmamp(int value);
        void setvolume(int value);
        void setsustain(int value);
        /**Enable or disable portamento
         * @param value 0-127 MIDI value (greater than 64 enables)*/
        void setportamento(int value);
        void setresonancecenter(int value);
        void setresonancebw(int value);

        void setparameternumber(unsigned int type, int value); //used for RPN and NRPN's
        int getnrpn(int *parhi, int *parlo, int *valhi, int *vallo);

        /**
         * Initialize a portamento
         *
         * @param oldfreq Starting frequency of the portamento (Hz)
         * @param newfreq Ending frequency of the portamento (Hz)
         * @param legatoflag true when legato is in progress, false otherwise
         * @returns 1 if properly initialized, 0 otherwise*/
        int initportamento(float oldfreq, float newfreq, bool legatoflag);
        /**Update portamento's freqrap to next value based upon dx*/
        void updateportamento();

        // Controllers values
        struct { //Pitch Wheel
            int data;
            short int bendrange; //bendrange is in cents
            float     relfreq; //the relative frequency (default is 1.0f)
        } pitchwheel;

        struct { //Expression
            int   data;
            float relvolume;
            unsigned char receive;
        } expression;

        struct { //Panning
            int   data;
            float pan;
            unsigned char depth;
        } panning;

        struct { //Filter cutoff
            int   data;
            float relfreq;
            unsigned char depth;
        } filtercutoff;

        struct { //Filter Q
            int   data;
            float relq;
            unsigned char depth;
        } filterq;

        struct { //Bandwidth
            int   data;
            float relbw;
            unsigned char depth;
            unsigned char exponential;
        } bandwidth;

        struct { //Modulation Wheel
            int   data;
            float relmod;
            unsigned char depth;
            unsigned char exponential;
        } modwheel;

        struct { //FM amplitude
            int   data;
            float relamp;
            unsigned char receive;
        } fmamp;

        struct { //Volume
            int   data;
            float volume;
            unsigned char receive;
        } volume;

        struct { //Sustain
            int data, sustain;
            unsigned char receive;
        } sustain;

        struct { /**<Portamento*/
            //parameters
            int data;
            unsigned char portamento;
            /**Whether the portamento midi events are received or not*/
            unsigned char receive;
            /** The time that it takes for the portamento to complete
             *
             * Translates in an expontal fashion to 0 Seconds to 1.93f Seconds
             * of completion time*/
            unsigned char time;
            /**If the portamento is proportinal to the distance spanned
             *
             * 0 - constant time(default)
             * 1 - proportional*/
            unsigned char proportional;
            /**Rate of proportinal portamento*/
            unsigned char propRate;
            /**Depth of proportinal portamento*/
            unsigned char propDepth;
            /**pitchthresh is the threshold of enabling protamento*/
            unsigned char pitchthresh;
            /**enable the portamento only below(0)/above(1) the threshold*/
            unsigned char pitchthreshtype;

            /**this value represent how the portamento time is reduced
             * 0      - for down portamento
             * 1-63   - the up portamento's time is smaller than the down portamento
             * 64     - the portamento time is always the same
             * 64-126 - the down portamento's time is smaller than the up portamento
             * 127    - for upper portamento
             * 'up portamento'   means when the frequency is rising
             * (eg: the portamento is from 200Hz to 300 Hz)
             * 'down portamento' means when the frequency is lowering
             * (eg: the portamento is from 300Hz to 200 Hz)
             */
            unsigned char updowntimestretch;
            /**this value is used to compute the actual portamento
             *
             * This is a multiplyer to change the frequency of the newer
             * frequency to fit the profile of the portamento.
             * This will be linear with respect to x.*/
            float freqrap;
            /**this is used by the Part for knowing which note uses the portamento*/
            int noteusing;
            /**if a the portamento is used by a note
             * \todo see if this can be a bool*/
            int used;

            //Internal data

            /**x is from 0.0f (start portamento) to 1.0f (finished portamento)*/
            float x;
            /**dx is the increment to x when updateportamento is called*/
            float dx;
            /** this is used for computing oldfreq value from x*/
            float origfreqrap;
        } portamento;

        struct { //Resonance Center Frequency
            int   data;
            float relcenter;
            unsigned char depth;
        } resonancecenter;

        struct { //Resonance Bandwidth
            int   data;
            float relbw;
            unsigned char depth;
        } resonancebandwidth;

        /** RPN and NPRPN */
        struct { //nrpn
            int parhi, parlo;
            int valhi, vallo;
            unsigned char receive; //this is saved to disk by Master
        } NRPN;

    private:
};

#endif


text:
\section*{Introduction}
In modern cosmology, it is generally taken that an essential stage
in the time evolution of the universe is inflation [1-4].
Inflation is defined by the inequality
$\ddot{R}:=d^{2}R/dt^{2}>0$, which, in view of the so-called Raychaudhuri equation [5] $\ddot{R}/R=-(4\pi\varkappa/3)(\varrho+3p)$, reduces to $\varrho+3p<0$. ($R$ is the scale factor, or the radius of the universe, $\varrho$ is the energy density, $p$ is the pressure, and $\varkappa=t^{2}_{\mathrm{Planck}}$ is the gravitational constant, $c=\hbar=1.$)

In the simplest model ($-p=\varrho=\mathrm{const}>0$) [2a, 3],
$R(t)=R_{\mathrm{end}}\exp\{H(t-t_{\mathrm{end}})\},\;t<t_{\mathrm{end}
}\,, H=\sqrt{(8\pi\varkappa/3)\varrho}$\,, where  the
subscript $\mathrm{end}$ stands for the end of inflation. This
result is obtained as a solution to the Friedmann equation,
$\dot{R}^{2}+k=H^{2}R^{2}$, with $k=0$ (flat universe) or
$k=1$ (closed universe) and $H^{2}R^{2}\gg k$.

The idea of inflation has been introduced to overcome three classic cosmological problems [1]: flatness, horizons, monopoles. However, one of the most poignant problems that challenge cosmology is that of singularity [2].

For the FLRW universe, the singularity condition is of the form $\varrho+3p>0$ [5-7].
In the inflation regime, this condition is broken.

Next, equations which govern inflation are invariant under time reversal, so that they describe deflation as well.

Those two observations suggest that inflation may be extended to the following process: deflation ($t<0$)---$R_{\mathrm{minimum}}(0)>0$---inflation ($t>0$), where there is no singularity.

Indeed, for the closed universe, there exists an exact solution to the Friedmann equation, $R(t)=(1/H)\cosh Ht$, which describes the above process. This solution, to be sure, has been known [2a], which, however, has not brought about the idea of deflation: the solution has been considered only for $Ht\gg 1$ when $R(t)\propto \mathrm{e}^{Ht}$ (inflation).

In the present paper, a construction based on the above extension is carried out in the framework both of classical and of reductive semiclassical gravity [8] (the latter takes into account pseudomatter, which represents dark matter). Deflation-inflation is due to phase transitions in superdense matter, after which symmetry between the strong and electroweak interactions is restored/broken and a scalar field is created/annihilated. The energy density and pressure of the field $\varphi$ with potential $V(\varphi)$ are: $\varrho=(1/2)\dot{\varphi}^{2}+V(\varphi),\;\;p=(1/2)\dot{\varphi}^{2}-V(\varphi)$, so that $\varrho+3p=2[\dot{\varphi}^{2}-V(\varphi)]<0$. In the deflation-inflation regime, the symmetry holds and the inequality $\dot{\varphi}^{2}-V(\varphi)<0$ is fulfilled.

The construction results in an eternal ($-\infty<t<\infty$) contracting-expanding closed universe with no singularity at $t=0$ (or any other time). The closure of the universe is essential; it is the consequence of the continuity of $\dot{R}$ at $t=0$.

Sequential stages of time evolution are these:
\begin{eqnarray}
&&\Lambda:\,(-\infty,-t_{-}),\dot{R}<0,\ddot{R}>0;\quad\mathrm{perfect\;fluid}:\,
(-t_{-},-t_{+}),\dot{R}<0,\ddot{R}<0;\nonumber\\
&&\mathrm{scalar\;field}:\,(-t_{+},t_{+}),-\dot{R}(t_{+})<\dot{R}<\dot{R}(t_{+}),
\ddot{R}>0;\nonumber\\
&&\mathrm{perfect\;fluid}:\,
(t_{+},t_{-}),\dot{R}>0,\ddot{R}<0;\quad\Lambda :\,(t_{-},\infty),\dot{R}>0,\ddot{R}>0\nonumber
\end{eqnarray}
where $\Lambda$ is the cosmological constant.

\section{The Robertson-Walker metric and matter}

\subsection{The RW metric}

The standard models of modern cosmology are based on the assumption that the universe is isotropic about every point, which implies homogeneity. The resulting metric is the RW one:
\begin{equation
\mathrm{d}s^{2}=\mathrm{d}t^{2}-R^{2}(t)\left[\frac{\mathrm{d}r^{2}}{1-kr^{2}}
+r^{2}(\mathrm{d\theta}^{2}+\sin^{2}\theta\,\mathrm{d}\phi^{2})\right],\qquad k=1,0,-1
\end{equation}

\subsection{The energy-momentum tensor and matter equation}

The symmetry of spacetime results in the energy-momentum tensor of the form [1]
\begin{equation}
T_{\mu\nu}=(\varrho+p)u_{\mu}u_{\nu}-pg_{\mu\nu}\,,\quad \mu,\nu=0,1,2,3
\end{equation}
with
\begin{equation}
u_{i}=0,\quad i=1,2,3,\qquad u_{0}^{2}=u_{0}u^{0}=1
\end{equation}

The matter equation is of the form
\begin{equation}
\frac{\mathrm{d}}{\mathrm{d}t}(\varrho R^{3})=-p\frac{\mathrm{d}R^{3}}{\mathrm{d}t}
\end{equation}
or
\begin{equation}
R\dot{\varrho}+3(\varrho+p)\dot{R}=0
\end{equation}

\section{Deflation-inflation}

\subsection{Definition}

The deflation-inflation stage of dynamics is defined by the following conditions:
\begin{equation}
f(-t)=f(t),\quad f=R,\varrho,p
\end{equation}
\begin{equation}
\ddot{R}(t)>0\quad \mathrm{for}\;\;t\in(-t_{+},t_{+}),\;\;t_{+}>0
\end{equation}
\begin{equation}
R(0)=:R_{0}=R_{\mathrm{minimum}}>0
\end{equation}

\subsection{Conditions for time derivatives at $t=0$}

From (2.1.1) follows
\begin{equation}
\dot{f}(0)=0,\quad f=R,\varrho,p
\end{equation}

\subsection{Relations between $p$ and $\varrho$ and dynamical equations for matter}

According to grand unified theories, in superdense matter phase transitions occur, after which symmetry between the strong and electroweak interactions is restored/broken, with the result that a scalar field $\varphi$ is created/annihilated [2]. The energy density and pressure of a spatially homogeneous scalar field $\varphi(t)$ with potential $V(\varphi)$ in the RW spacetime take the form [1]
\begin{equation}
\varrho=\frac{1}{2}\dot{\varphi}^{2}+V(\varphi),\;\;p=\frac{1}{2}\dot{\varphi}^{2}-V(\varphi)
\end{equation}
In the deflation-inflation regime, the symmetry holds, so that pressure and density are related via the scalar field by (2.3.1).

The matter equation (1.2.4) reduces to
\begin{equation}
\dot{\varphi}[R\ddot{\varphi}+3\dot{R}\dot{\varphi}+RV'(\varphi)]=0
\end{equation}
where $V'(\varphi)=\mathrm{d}V/\mathrm{d}\varphi$. Thus, the dynamical equation for matter is either
\begin{equation}
\dot{\varphi}=0
\end{equation}
or
\begin{equation}
R\ddot{\varphi}+3\dot{R}\dot{\varphi}+RV'(\varphi)=0
\end{equation}
If both (2.3.4) and (2.3.3) hold, then
\begin{equation}
V'(\varphi)=0
\end{equation}
From (2.3.3), (2.3.1) follows
\begin{equation}
p=-\varrho=\mathrm{const}
\end{equation}

Conditions (2.1.1), (2.2.1) reduce to
\begin{equation}
R(-t)=R(t),\quad\varphi(-t)=\varphi(t)
\end{equation}
\begin{equation}
\dot{R}(0)=0,\quad \dot{\varphi}(0)=0
\end{equation}

In the regime outside of deflation-inflation, $p$ and $\varrho$ are related by a state equation,
\begin{equation}
p=p(\varrho)
\end{equation}
The dynamical equation for matter is (1.2.4) or the second order equation:
\begin{equation}
R\ddot{\varrho}+3(\varrho+p)\ddot{R}+\left(1+3\frac{\mathrm{d}p}{\mathrm{d}\varrho}\right)
\dot{R}\dot{\varrho}=0
\end{equation}

\newpage

\section{Dynamics in classical gravity}

\subsection{Dynamical equations and constraint}

The Einstein equations for the FLRW universe are [9]:
\begin{equation}
2R\ddot{R}+\dot{R}^{2}+k-\Lambda R^{2}+8\pi\varkappa pR^{2}=0
\end{equation}
\begin{equation}
3(\dot{R}^{2}+k)-\Lambda R^{2}-8\pi\varkappa \varrho R^{2}=0
\end{equation}
where $\Lambda$ is the cosmological constant. The dynamical equation is (3.1.1), and (3.1.2) is a constraint on initial conditions [10]. Another dynamical equation is the one for matter (Subsection 1.2).

Note that had (3.1.2), (1.2.3) been used as dynamical equations [in place of (3.1.1), (1.2.3)], for the solution
\begin{equation}
R=\mathrm{const},\quad \varrho=\frac{1}{8\pi\varkappa}\left(\frac{3k}{R^{2}}-\Lambda\right)
\end{equation}
the result
\begin{equation}
p=-\frac{1}{8\pi\varkappa}\left(\frac{k}{R^{2}}-\Lambda\right)
\end{equation}
would have failed. The point is that (3.1.1) follows from (3.1.2), (1.2.3) if and only if $\dot{R}=0$.

\subsection{Deflation-inflation stage. Closed universe}

For the deflation-inflation stage of time evolution, from (3.1.1), (3.1.2), and (2.3.1) follows
\begin{equation}
\ddot{R}=\Gamma^{2}R
\end{equation}
where
\begin{equation}
\Gamma^{2}=-\frac{8\pi\varkappa}{3}[\dot{\varphi}^{2}-V(\varphi)]+\frac{1}{3}\Lambda
\end{equation}
so that
\begin{equation}
\Gamma^{2}>0\quad\mathrm{for}\;t\in(-t_{+},t_{+})
\end{equation}
must hold.

From (3.1.2) at $t=0$ follows
\begin{equation}
R_{0}^{2}=\frac{3k}{\Lambda+8\pi\varkappa\varrho_{0}}=
\frac{3k}{\Lambda+8\pi\varkappa V(\varphi_{0})}=\frac{k}{\Gamma_{0}^{2}}
\end{equation}
Thus,
\begin{equation}
k=1\qquad(\mathrm{closed\;universe})
\end{equation}
---deflation-inflation is possible only in a closed universe. The closure condition is the consequence of the continuity of $\dot{R}$ at $t=0$. For $k=0$, we would obtain from (3.1.2) $-\dot{R}(-0)=\dot{R}(+0)>0$, which would result in $\ddot{R}(0)\propto \delta(0)$ in (3.1.1).

\newpage

The dynamical equations are:
\begin{equation}
2R\ddot{R}+\dot{R}^{2}+1-\Lambda R^{2}+8\pi\varkappa\left[\frac{1}{2}
\dot{\varphi}^{2}-V(\varphi)\right]R^{2}=0
\end{equation}
\begin{equation}
R\ddot{\varphi}+3\dot{R}\dot{\varphi}+RV'(\varphi)=0\qquad\mathrm{or}\quad
\dot{\varphi}=0
\end{equation}
with the initial conditions:
\begin{equation}
\varphi(0)=\varphi_{0},\;\;R_{0}=\frac{1}{\Gamma_{0}},\qquad\dot{\varphi}(0)=0,\;\;
\dot{R}(0)=0
\end{equation}

The constraint (3.1.2) is satisfied at $t=0$.

\subsection{Dynamics outside of deflation-inflation stage}

Dynamical equations for
\begin{equation}
t\in(-\infty,-t_{+}]\cup[t_{+},+\infty)
\end{equation}
are (3.1.1) and (1.2.4) [or (2.3.10)] with the constraint (3.1.2) and the state equation (2.3.9). Initial conditions at $t=t_{+}$ are:
\begin{equation}
R(t_{+})=R(t_{+}-0),\;\;\dot{R}(t_{+})=\dot{R}(t_{+}-0),\quad
\varrho(t_{+})=\varrho(t_{+}-0)=\frac{1}{2}[\dot{\varphi}(t_{+}-0)]^{2}+
V(\varphi(t_{+}-0))
\end{equation}
[If (2.3.10) is used, $\dot{\varrho}(t_{+})$ is determined by the constraint (1.2.4).] The constraint (3.1.2) is satisfied at $t=t_{+}$.

\subsection{The simplest model: $\Gamma$=const}

Put
\begin{equation}
\dot{\varphi}^{2}-V(\varphi)=-b^{2}=\mathrm{const}\quad\mathrm{for}\;\;
t\in(-t_{+}',t_{+}'),\;\;0<t_{+}'\leq t_{+}
\end{equation}
whence follows
\begin{equation}
[2\ddot{\varphi}-V'(\varphi)]\dot{\varphi}=0
\end{equation}
The equation
\begin{equation}
2\ddot{\varphi}-V'(\varphi)=0
\end{equation}
would result, in view of (3.2.7), in two equations for $\varphi$, so that we have
\begin{equation}
\dot{\varphi}=0,\quad\varphi=\varphi_{0}\quad b^{2}=V(\varphi_{0})
\end{equation}
and
\begin{equation}
V'(\varphi_{0})=0
\end{equation}

Now
\begin{equation}
\Gamma^{2}=\frac{8\pi\varkappa}{3}V(\varphi_{0})+\frac{1}{3}\Lambda
\end{equation}
and we obtain
\begin{equation}
R=\frac{1}{\Gamma}\cosh\Gamma t,\quad\dot{R}=\sinh\Gamma t\qquad\mathrm{for}\;
t\in(-t_{+}',t_{+}')
\end{equation}

\subsection{The $\Lambda$ stage}

Since
\begin{equation}\label{3.5.1}
\varrho R^{2}\rightarrow 0,\quad pR^{2}\rightarrow 0 \qquad
\mathrm{for}\;R\rightarrow \infty
\end{equation}
equations (3.1.1), (3.1.2) for $R\rightarrow \infty$ reduce to
\begin{equation}\label{3.5.2}
2R\ddot{R}+\dot{R}^{2}+1-\Lambda R^{2}=0
\end{equation}
\begin{equation}\label{3.5.3}
3(\dot{R}^{2}+1)-\Lambda R^{2}=0
\end{equation}
whence follows
\begin{equation}\label{3.5.4}
\ddot{R}-\frac{1}{3}\Lambda R=0
\end{equation}
so that
\begin{equation}\label{3.5.5}
R=c_{+}\mathrm{e}^{\sqrt{\Lambda/3}\;t}+c_{-}\mathrm{e}^{-\sqrt{\Lambda/3}\;t}
\end{equation}
and by the constraint (3.5.3)
\begin{equation}\label{3.5.6}
R=\frac{1}{\sqrt{\Lambda/3}}\cosh\sqrt{\Lambda/3}\;t\,,\quad
\dot{R}=\sinh\sqrt{\Lambda/3}\;t\qquad\mathrm{for}\;t\rightarrow\mp\infty
\end{equation}

\subsection {The conventional inflation}

In the framework of the simplest model, the conventional inflation
corresponds to
\begin{equation}\label{3.6.1}
\Lambda=0,\quad
H=\Gamma=\sqrt{\frac{8\pi\varkappa\varrho_{0}}{3}}\,,\quad \Gamma
t\gg 1
\end{equation}
\begin{equation}\label{3.6.2}
R(t)=\frac{1}{H}\mathrm{e}^{Ht}
\end{equation}
Thus, we have constructed an extension of the conventional
inflation.

\section{Dynamics in reductive semiclassical gravity}

\subsection{Dynamical equations, constraint, and pseudomatter}

The extended Einstein equations for the FLRW universe are [8]:
\begin{equation
2R\ddot{R}+\dot{R}^{2}+k-\Lambda R^{2}+8\pi\varkappa pR^{2}=0
\end{equation}
\begin{equation
3(\dot{R}^{2}+k)-\Lambda R^{2}-8\pi\varkappa (\varrho+\varepsilon)
R^{2}=0
\end{equation}
where $\varepsilon$ is the density of pseudomatter, which
represents dark matter.

From (4.1.1), (4.1.2) follows
\begin{equation
\frac{\mathrm{d}}{\mathrm{d}t}[(\varrho+\varepsilon)
R^{3}]=-p\frac{\mathrm{d}R^{3}}{\mathrm{d}t}
\end{equation}
which, in view of (1.2.3), results in
\begin{equation}
\varepsilon=\frac{B}{R^{3}},\quad B=\mathrm{const}
\end{equation}

In view of (4.1.3) and (1.2.3), the only possibility for $\varepsilon$ is (4.1.4), so that (4.1.3) is, in fact, independent of the Einstein equations. Therefore the dynamical equation is (4.1.1), whereas (4.1.2) is a constraint on initial conditions. Another dynamical equation is that for matter (Subsection 2.3).

\subsection{Deflation-inflation stage. Closed universe}

From (4.1.1), (4.1.2), and (2.3.1) follows
\begin{equation}
\ddot{R}=\Gamma^{2}R
\end{equation}
with
\begin{equation}
\Gamma^{2}=-\frac{4\pi\varkappa}{3}[(\rho+\varepsilon)+3p]+\frac{1}{3}\Lambda=-\frac{4\pi\varkappa}{3}
\left\{2[\dot{\varphi}^{2}-V(\varphi)]+\frac{B}{R^{3}}\right\}+\frac{1}{3}\Lambda
\end{equation}
The inequality
\begin{equation}
\Gamma^{2}>0\qquad\mathrm{for}\;\;t\in(-t_{+},t_{+})
\end{equation}
must hold.

From (4.1.2) at $t=0$ follows
\begin{equation}
R_{0}^{2}=\frac{3k}{\Lambda+8\pi\varkappa(\varrho_{0}+\varepsilon_{0})}
=\frac{3k}{\Lambda+8\pi\varkappa[V(\varphi_{0})+B/R_{0}^{3}]}
\end{equation}
Thus, $k\neq 0$ and, since $k=-1$ is of no interest,
\begin{equation}
k=1\qquad(\mathrm{closed\;universe})
\end{equation}
i.e., deflation-inflation is possible only in a closed universe.

In fact, (4.2.4) determines $B$:
\begin{equation}
B=R_{0}\left[\frac{3-R_{0}^{2}\Lambda}{8\pi\varkappa}-
R_{0}^{2}V(\varphi_{0})\right]
\end{equation}

The dynamical equations are:
\begin{equation}
2R\ddot{R}+\dot{R}^{2}+1-\Lambda R^{2}+
8\pi\varkappa\left[\frac{1}{2}\dot{\varphi}^{2}-V(\varphi)\right]R^{2}=0
\end{equation}
\begin{equation}
R\ddot{\varphi}+3\dot{R}\dot{\varphi}+RV'(\varphi)=0\qquad\mathrm{or}\;\;
\dot{\varphi}=0
\end{equation}
with the initial conditions:
\begin{equation}
\varphi(0)=\varphi_{0},\;\;\dot{\varphi}(0)=0,\qquad
R(0)=R_{0},\;\;\dot{R}(0)=0
\end{equation}
The constraint (4.1.2) is satisfied at $t=0$.

The pseudomatter density is:
\begin{equation}
\varepsilon=\frac{B}{R^{3}}
\end{equation}
where $B$ is given by (4.2.6).
\subsection{Dynamics outside of deflation-inflation stage}

Dynamical equations for
\begin{equation}
t\in(-\infty,-t_{+}]\cup[t_{+},+\infty)
\end{equation}
are (4.1.1) and (1.2.4) [or (2.3.10)] with the constraint (4.1.2) and the state equation (2.3.9). Initial conditions for $t=\pm t_{+}$ are:
\begin{eqnarray}
R(\pm t_{+})=R(\pm t_{+}\mp 0),\;\;\dot{R}(\pm t_{+})=\dot{R}(\pm t_{+}\mp 0),\nonumber\\
\varrho(\pm t_{+})=\varrho(\pm t_{+}\mp 0)=\frac{1}{2}[\dot{\varphi}(\pm t_{+}\mp 0)]^{2}+
V(\varphi(\pm t_{+}\mp 0))
\end{eqnarray}
The constraint (4.1.2) is satisfied at $t=\pm t_{+}$.

The pseudomatter density is:
\begin{equation}
\varepsilon=\frac{B}{R^{3}}
\end{equation}
with $B$ given by (4.2.6).

\subsection{On the model with $\Gamma$=const}

Consider the possibility of the equality
\begin{equation}
\varrho+\varepsilon+3p=-b=\mathrm{const}
\end{equation}
in which case
\begin{equation}
\Gamma^{2}=\mathrm{const}
\end{equation}
From (4.1.3) we obtain
\begin{equation}
\dot{p}R+(b+2p)\dot{R}=0
\end{equation}
or
\begin{equation}
\frac{\mathrm{d}p}{b+2p}+\frac{\mathrm{d}R}{R}=0
\end{equation}
whence
\begin{equation}
p=\frac{a}{R^{2}}-\frac{b}{2}
\end{equation}
Now, from (4.4.1) and (4.4.5) follows
\begin{equation}
(\varrho+p)+\frac{B}{R^{3}}+\frac{2a}{R^{2}}=0
\end{equation}
i.e.,
\begin{equation}
\dot{\varphi}^{2}+\frac{B}{R^{3}}+\frac{2a}{R^{2}}=0
\end{equation}
We have (4.2.8) and (4.4.7): two equations for $\varphi$ [if $\Gamma$=const, then $R=(1/\Gamma)\cosh\Gamma t$]. Thus, (4.4.1) is impossible.

Now consider the case
\begin{equation}
\dot{\varphi}=0,\quad\varphi=\varphi_{0},\quad V'(\varphi_{0})=0\qquad\mathrm{for}\;\,
t\in(-t'_{+},t'_{+}),\;\,0<t'_{+}\leq t_{+}
\end{equation}
The dynamical equation (4.1.1) reduces to
\begin{equation}
2R\ddot{R}+\dot{R}^{2}+1-\Lambda R^{2}-8\pi\varkappa V(\varphi_{0})R^{2}=0
\end{equation}
Equivalently, from (4.1.1), (4.1.2) we obtain
\begin{equation}
\ddot{R}=\left[\frac{8\pi\varkappa}{3}V(\varphi_{0})+\frac{1}{3}\Lambda\right]R-
\frac{4\pi\varkappa B}{3R^{2}}
\end{equation}
with
\begin{equation}
R(0)=R_{0},\quad\dot{R}(0)=0
\end{equation}

If
\begin{equation}
B\ll 2V(\varphi_{0})R_{0}^{3}
\end{equation}
then
\begin{equation}
R(t)\approx \bar{R}(t)
\end{equation}
\begin{equation}
\bar{R}(t)=\frac{1}{\bar{\Gamma}}\coth\bar{\Gamma}t,\quad
\bar{\Gamma}^{2}=\frac{8\pi\varkappa}{3}V(\varphi_{0})+\frac{1}{3}\Lambda
\end{equation}

Note that (4.4.9) is satisfied by (4.4.14), but (4.4.2) is satisfied only if $B=0$.

\subsection{The $\Lambda$ stage}

We have
\begin{equation}\label{4.5.1}
\varrho R^{2}\rightarrow 0,\quad \frac{B}{R^{3}}R^{2}\rightarrow 0
,\quad pR^{2}\rightarrow 0\qquad\mathrm{for} R\rightarrow\infty
\end{equation}
so that (4.1.1), (4.1.2) for $R\rightarrow\infty$ reduce to
\begin{equation}\label{4.5.2}
2R\ddot{R}+\dot{R}^{2}+1-\Lambda R^{2}=0
\end{equation}
\begin{equation}\label{4.5.3}
3(\dot{R}^{2}+1)-\Lambda R^{2}=0
\end{equation}
whence it follows that
\begin{equation}\label{4.5.4}
R=\frac{1}{\sqrt{\Lambda/3}}\cosh\sqrt{\Lambda/3}\;t\,,\quad
\dot{R}=\sinh\sqrt{\Lambda/3}\;t\qquad\mathrm{for}\;t\rightarrow\mp\infty
\end{equation}

\section{Dynamics of the eternal closed universe}

\subsection{Stages of time evolution}

The closed universe with deflation-inflation is eternal with $R(t)>0$. Sequential stages of its time evolution are these:
\begin{eqnarray}
&&\Lambda:\,(-\infty,-t_{-}),\dot{R}<0,\ddot{R}>0;\quad\mathrm{perfect\;fluid}:\,
(-t_{-},-t_{+}),\dot{R}<0,\ddot{R}<0;\nonumber\\
&&\mathrm{scalar\;field}:\,(-t_{+},t_{+}),-\dot{R}(t_{+})<\dot{R}<\dot{R}(t_{+}),
\ddot{R}>0;\nonumber\\
&&\mathrm{perfect\;fluid}:\,
(t_{+},t_{-}),\dot{R}>0,\ddot{R}<0;\quad\Lambda:\,(t_{-},\infty),\dot{R}>0,\ddot{R}>0
\end{eqnarray}

\subsection{No singularity and no quantum gravity epoch}

Since
\begin{equation}
R_{\mathrm{minimum}}=R(0)>0\quad \mathrm{and}\quad R(t)<\infty \;\;
\mathrm{for}\;-\infty<t<\infty
\end{equation}
there is no singularity at $t=0$ or any other time.

According to the present epoch data,
\begin{equation}
\varepsilon(t_{+})\ll\varrho(t_{+})
\end{equation}
so that, by (4.4.14),
\begin{equation}
R_{\mathrm{minimum}}\approx\frac{1}{\bar{\Gamma}}\approx
\sqrt{\frac{3}{8\pi\varkappa V(\varphi_{0})}}=
\sqrt{\frac{3}{8\pi\varkappa\varrho_{0}}}
\end{equation}
Put [1]
\begin{equation}
\varrho_{0}=(10^{16}\mathrm{GeV})^{4}
\end{equation}
then
\begin{equation}
R_{\mathrm{minimum}}=2.78\times 10^{-38}\,\mathrm{sec}\gg 5.39\times
10^{-44}\,\mathrm{sec}=t_{\mathrm{Planck}}
\end{equation}
In this sense, there has been no quantum gravity epoch; the entire spacetime is described classically.

\subsection{Initial conditions at $t\rightarrow-\infty$}

We have exploited initial conditions at $t=0$. It may be of interest to relate them to $-\infty$, when $R\rightarrow\infty$.

In reductive semiclassical gravity, the dynamical equations are:
\begin{equation}
2R\ddot{R}+\dot{R}^{2}+k-\Lambda R^{2}+8\pi\varkappa pR^{2}=0
\end{equation}
\begin{equation}
\frac{\mathrm{d}}{\mathrm{d}t}(\varrho R^{3})=-p\frac{\mathrm{d}R^{3}}{\mathrm{d}t}
\end{equation}
and the constraint is:
\begin{equation
3(\dot{R}^{2}+k)-\Lambda R^{2}-8\pi\varkappa (\varrho+\frac{B}{R^{3}})
R^{2}=0
\end{equation}
(In classical gravity, $B=0$.)

From (5.3.2) follows
\begin{equation}
p=-\frac{1}{3R^{2}}\frac{\mathrm{d}(\varrho R^{3})}{\mathrm{d}R}
\end{equation}
and we need to determine $\varrho(R)$. [$\varrho(R)$ and $p(R)$ imply a state equation, $p=p(\varrho)$.]

We have for a particle energy [7]:
\begin{equation}
\omega=\sqrt{m^{2}+\left(\frac{\xi}{R}\right)^{2}}
\end{equation}
whence
\begin{equation}
\omega=m+\frac{1}{2m}\left(\frac{\xi}{R}\right)^{2}\quad (m\neq 0),
\qquad \omega=\frac{\xi}{R}\quad (m=0)\qquad \mathrm{for}\;R\rightarrow\infty\quad
(\mathrm{Big\;Cold})
\end{equation}
We obtain
\begin{equation}
\varrho=\varrho_{\mathrm{mass}}+\varrho_{\mathrm{massless}}=
\left(\frac{\alpha^{2}}{R^{3}}+\frac{\gamma^{2}}{R^{5}}\right)+
\frac{\beta^{2}}{R^{4}}\quad\mathrm{for}\;R\rightarrow\infty\quad
(\mathrm{Big\; Cold\; Void})
\end{equation}
and
\begin{equation}
p=\frac{2\gamma^{2}}{3R^{5}}+\frac{\beta^{2}}{3R^{4}}\quad\mathrm{for}\;R\rightarrow\infty
\end{equation}

Now, introduce
\begin{equation}
t_{\mathrm{in}}:=t_{\mathrm{initial}}<0,\quad|t_{\mathrm{in}}|\rightarrow\infty,\quad
R_{\mathrm{in}}:=R(t_{\mathrm{in}})\rightarrow\infty
\end{equation}
From (5.3.3) follows
\begin{equation}
\dot{R}_{\mathrm{in}}=-\left\{\frac{1}{3}\left[\Lambda R_{\mathrm{in}}^{2}
+8\pi\varkappa\left(\varrho_{\mathrm{in}}+\frac{B}{R_{\mathrm{in}}^{3}}\right)\right]-1
\right\}^{1/2}
\end{equation}
Denote by $R(t,t_{\mathrm{in}})$ the solution to (5.3.1) with $p$ (5.3.8) and the initial conditions $(R_{\mathrm{in}},\dot{R}_{\mathrm{in}})$.

Again, determine $R_{\mathrm{in}}$ by the condition
\begin{equation}
\dot{R}(0,t_{\mathrm{in}})=0
\end{equation}
An actual dynamics is this:
\begin{equation}
R(t)=R(t,-\infty):=\lim_{t_{\mathrm{in}}\rightarrow-\infty}R(t,t_{\mathrm{in}})
\end{equation}

\section*{Acknowledgments}

I would like to thank Alex A. Lisyansky for support and Stefan V.
Mashkevich for helpful discussions.

redpajama_set_name: RedPajamaArXiv


text:
Object property names found at: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object

[assign]()

[create]()

[defineProperty]()

[defineProperties]()

[entries]()

[freeze]()

[fromEntries]()

[getOwnPropertyDescriptor]()

[getOwnPropertyDescriptors]()

[getOwnPropertyNames]()

[getOwnPropertySymbols]()

[getPrototypeOf]()

[is]()

[isExtensible]()

[isFrozen]()

[isSealed]()

[keys]()

[preventExtensions]()

[seal]()

[setPrototypeOf]()

[values]()

[prototype.constructor]()

[prototype.__proto__]()

[prototype.__defineGetter__]()

[prototype.__defineSetter__]()

[prototype.__lookupGetter__]()

[prototype.__lookupSetter__]()

[prototype.hasOwnProperty]()

[prototype.isPrototypeOf]()

[prototype.propertyIsEnumerable]()

[prototype.toLocaleString]()

[prototype.toString]()

[prototype.valueOf]()

[constructor]()

[__proto__]()

[__defineGetter__]()

[__defineSetter__]()

[__lookupGetter__]()

[__lookupSetter__]()

[hasOwnProperty]()

[isPrototypeOf]()

[propertyIsEnumerable]()

[toLocaleString]()

[toString]()

[valueOf]()


One of the things I look most forward to is chatting on the phone with my nephew, Tate. The little guy is a 2-year-old genius!!! He's so fun to talk to - it always brightens my day!
This picture was taken when he was just a tiny baby! It was love at first sight. Last summer at a carnival.
What a doll! I mean dolls!
Cute! Why does he have scared eyes in the teeny picture?


No make tank angry. Tank no like be angry.
WASD or Arrows = Move Mouse = Aim Left-Click = Shoot To complete a level, destroy all targets before time runs out and without losing too much health. (Time and Health are shown at the bottom of the screen.) Use the minimap in the top right corner to find targets.


text:
Arirang – North Korea's first smartphone (6 pictures)
North Korea announced that their manufacture own mobile phone, based on the Android operating system. Korean Central News Agency (KCNA) released new photos of leader Kim Jong Un examining the nation's first smartphone on-site, at a factory.
Unfortunately specifications of this smartphone is not known . Experts say that the pictures of the factory are part of propaganda. The frames shown by KCNA shows workers checking and packing equipment, but there is no production lines. We only know that his name was taken from one of the North Korean folk song.
Mobile telephony in North Korea was introduced in 2008 by the Egyptian operator Orascom. The country has two million mobile phone users, who, however, can not call abroad. The Internet is used in North Korea by only 5 percent of the population of 24 million people.
Tags: politicstechnologyworld
Next story Why do we have to wear sunscreen?
Previous story Real life Leopard Man (10 pictures)
Volleyball match across the US/Mexico border in 1979
Join Russia and USA by Rail Tunnels under the Bering Strait?
Unforgettable Mug Shots
This machine helps find veins
Sometimes You Just Need A Nap
10 Biological Anomalies Science Can't Explain!
Unhappily Ever After: Art Series Showing Us What Happens When Fantasy Meets Reality
Articles / Money
What You Need to Know Before Buying a New Water Heater
People can be amazingly stupid (35 pictures)
Hyperloop: truly a new mode of transport?
Doomed Star Eta Carinae
How Power Washing Changes Cities
40 Amazing pictures from past
The Cast Of Home Alone, Where Are They Now?
The Wings of the Seagull Nebula
True Stories That Will Restore Your Faith in Humanity in 2013
The Strangest Driving Laws Around The World
The Mystery of the Earth's Core Explained
What will Look Like the Sagrada Familia Once Completed
Guillermo del Toro's Simpsons Treehouse of Horror Couch Gag