rojo-rbx / rojo

Rojo enables Roblox developers to use professional-grade software engineering tools
https://rojo.space
Mozilla Public License 2.0
939 stars 176 forks source link

rojo upload #596

Closed lightman210567 closed 1 year ago

lightman210567 commented 2 years ago

when i try to use the rojo upload command, it says that "The Roblox API returned an unexpected error: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">"

Boegie19 commented 2 years ago

@lightman210567 Can you give more information about the error and the arguments you used aka did you use --asset_id as the only argument or did you also use --api_key also did it give you any more information after "The Roblox API returned an unexpected error: "?

lightman210567 commented 2 years ago

i was using both the --asset_id and --cookie arguments.

After "The Roblox API returned and unexpected error" the following was printed to the command line

[ERROR rojo] The Roblox API returned an unexpected error:

        <!DOCTYPE html>
        <!--[if IE 8]><html class="ie8" ng-app="robloxApp"><![endif]-->
        <!--[if gt IE 8]><!-->
        <html>
        <!--<![endif]-->
        <head data-machine-id="CHI2-WEB374">
            <!-- MachineID: CHI2-WEB374 -->
            <title>Roblox</title>

        <meta http-equiv="X-UA-Compatible" content="IE=edge,requiresActiveX=true" />
        <meta charset="UTF-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <meta name="author" content="Roblox Corporation" />
        <meta name="description" content="Roblox is a global platform that brings people together through play." />
        <meta name="keywords" content="free games, online games, building games, virtual worlds, free mmo, gaming cloud, physics engine" />

            <meta name="apple-itunes-app" content="app-id=431946152" />

        <script type="application/ld+json">
            {
            "@context" : "http://schema.org",
            "@type" : "Organization",
            "name" : "Roblox",
            "url" : "https://www.roblox.com/",
            "logo": "https://images.rbxcdn.com/cece570e37aa8f95a450ab0484a18d91",
            "sameAs" : [
            "https://www.facebook.com/roblox/",
            "https://twitter.com/roblox",
            "https://www.linkedin.com/company/147977",
            "https://www.instagram.com/roblox/",
            "https://www.youtube.com/user/roblox",
            "https://plus.google.com/+roblox",
            "https://www.twitch.tv/roblox"
            ]
            }
        </script>
            <meta ng-csp="no-unsafe-eval">

        <meta name="locale-data"
              data-language-code="en_us"
              data-language-name="English" /><meta name="device-meta"
              data-device-type="computer"
              data-is-in-app="false"
              data-is-desktop="true"
              data-is-phone="false"
              data-is-tablet="false"
              data-is-console="false"
              data-is-android-app="false"
              data-is-ios-app="false"
              data-is-uwp-app="false"
              data-is-xbox-app="false"
              data-is-amazon-app="false"
              data-is-win32-app="true"
              data-is-studio="false"
              data-is-game-client-browser="true"
              data-is-ios-device="false"
              data-is-android-device="false"
              data-is-universal-app="false"
              data-app-type="win32"
        />
        <meta name="environment-meta"
              data-is-testing-site="false" />

        <meta id="roblox-display-names" data-enabled="true"></meta>
        <meta name="page-meta" data-internal-page-name="" />

        <script type="text/javascript">
            var Roblox = Roblox || {};

            Roblox.BundleVerifierConstants = {
                isMetricsApiEnabled: true,
                eventStreamUrl: "//ecsv2.roblox.com/pe?t=diagnostic",
                deviceType: "Computer",
                cdnLoggingEnabled: JSON.parse("true")
            };
        </script>        <script type="text/javascript">
                    var Roblox = Roblox || {};

        Roblox.BundleDetector = (function () {
            var isMetricsApiEnabled = Roblox.BundleVerifierConstants && Roblox.BundleVerifierConstants.isMetricsApiEnabled;

            var loadStates = {
                loadSuccess: "loadSuccess",
                loadFailure: "loadFailure",
                executionFailure: "executionFailure"
            };

            var bundleContentTypes = {
                javascript: "javascript",
                css: "css"
            };

            var ephemeralCounterNames = {
                cdnPrefix: "CDNBundleError_",
                unknown: "CDNBundleError_unknown",
                cssError: "CssBundleError",
                jsError: "JavascriptBundleError",
                jsFileError: "JsFileExecutionError",
                resourceError: "ResourcePerformance_Error",
                resourceLoaded: "ResourcePerformance_Loaded"
            };

            return {
                jsBundlesLoaded: {},
                bundlesReported: {},

                counterNames: ephemeralCounterNames,
                loadStates: loadStates,
                bundleContentTypes: bundleContentTypes,

                timing: undefined,

                setTiming: function (windowTiming) {
                    this.timing = windowTiming;
                },

                getLoadTime: function () {
                    if (this.timing && this.timing.domComplete) {
                        return this.getCurrentTime() - this.timing.domComplete;
                    }
                },

                getCurrentTime: function () {
                    return new Date().getTime();
                },

                getCdnProviderName: function (bundleUrl, callBack) {
                    if (Roblox.BundleVerifierConstants.cdnLoggingEnabled) {
                        var xhr = new XMLHttpRequest();
                        xhr.open('GET', bundleUrl, true);

                        xhr.onreadystatechange = function () {
                            if (xhr.readyState === xhr.HEADERS_RECEIVED) {
                                try {
                                    var headerValue = xhr.getResponseHeader("rbx-cdn-provider");
                                    if (headerValue) {
                                        callBack(headerValue);
                                    } else {
                                        callBack();
                                    }
                                } catch (e) {
                                    callBack();
                                }
                            }
                        };

                        xhr.onerror = function () {
                            callBack();
                        };

                        xhr.send();
                    } else {
                        callBack();
                    }
                },

                getCdnProviderAndReportMetrics: function (bundleUrl, bundleName, loadState, bundleContentType) {
                    this.getCdnProviderName(bundleUrl, function (cdnProviderName) {
                        Roblox.BundleDetector.reportMetrics(bundleUrl, bundleName, loadState, bundleContentType, cdnProviderName);
                    });
                },

                reportMetrics: function (bundleUrl, bundleName, loadState, bundleContentType, cdnProviderName) {
                    if (!isMetricsApiEnabled
                        || !bundleUrl
                        || !loadState
                        || !loadStates.hasOwnProperty(loadState)
                        || !bundleContentType
                        || !bundleContentTypes.hasOwnProperty(bundleContentType)) {
                        return;
                    }

                    var xhr = new XMLHttpRequest();
                    var metricsApiUrl = (Roblox.EnvironmentUrls && Roblox.EnvironmentUrls.metricsApi) || "https://metrics.roblox.com";

                    xhr.open("POST", metricsApiUrl + "/v1/bundle-metrics/report", true);
                    xhr.setRequestHeader("Content-Type", "application/json");
                    xhr.withCredentials = true;
                    xhr.send(JSON.stringify({
                        bundleUrl: bundleUrl,
                        bundleName: bundleName || "",
                        bundleContentType: bundleContentType,
                        loadState: loadState,
                        cdnProviderName: cdnProviderName,
                        loadTimeInMilliseconds: this.getLoadTime() || 0
                    }));
                },

                logToEphemeralStatistics: function (sequenceName, value) {
                    var deviceType = Roblox.BundleVerifierConstants.deviceType;
                    sequenceName += "_" + deviceType;

                    var xhr = new XMLHttpRequest();
                    xhr.open('POST', '/game/report-stats?name=' + sequenceName + "&value=" + value, true);
                    xhr.withCredentials = true;
                    xhr.send();
                },

                logToEphemeralCounter: function (ephemeralCounterName) {
                    var deviceType = Roblox.BundleVerifierConstants.deviceType;
                    ephemeralCounterName += "_" + deviceType;
                    //log to ephemeral counters - taken from ET.js
                    var xhr = new XMLHttpRequest();
                    xhr.open('POST', '/game/report-event?name=' + ephemeralCounterName, true);
                    xhr.withCredentials = true;
                    xhr.send();
                },

                logToEventStream: function (failedBundle, ctx, cdnProvider, status) {
                    var esUrl = Roblox.BundleVerifierConstants.eventStreamUrl,
                        currentPageUrl = encodeURIComponent(window.location.href);

                    var deviceType = Roblox.BundleVerifierConstants.deviceType;
                    ctx += "_" + deviceType;
                    //try and grab performance data.
                    //Note that this is the performance of the xmlhttprequest rather than the original resource load.
                    var duration = 0;
                    if (window.performance) {
                        var perfTiming = window.performance.getEntriesByName(failedBundle);
                        if (perfTiming.length > 0) {
                            var data = perfTiming[0];
                            duration = data.duration || 0;
                        }
                    }
                    //log to event stream (diagnostic)
                    var params = "&evt=webBundleError&url=" + currentPageUrl +
                        "&ctx=" + ctx + "&fileSourceUrl=" + encodeURIComponent(failedBundle) +
                        "&cdnName=" + (cdnProvider || "unknown") +
                        "&statusCode=" + (status || "unknown") +
                        "&loadDuration=" + Math.floor(duration);
                    var img = new Image();
                    img.src = esUrl + params;
                },

                getCdnInfo: function (failedBundle, ctx, fileType) {
                    if (Roblox.BundleVerifierConstants.cdnLoggingEnabled) {
                        var xhr = new XMLHttpRequest();
                        var counter = this.counterNames;
                        xhr.open('GET', failedBundle, true);
                        var cdnProvider;

                        //succesful request
                        xhr.onreadystatechange = function () {
                            if (xhr.readyState === xhr.HEADERS_RECEIVED) {
                                cdnProvider = xhr.getResponseHeader("rbx-cdn-provider");
                                if (cdnProvider && cdnProvider.length > 0) {
                                    Roblox.BundleDetector.logToEphemeralCounter(counter.cdnPrefix + cdnProvider + "_" + fileType);
                                }
                                else {
                                    Roblox.BundleDetector.logToEphemeralCounter(counter.unknown + "_" + fileType);
                                }
                            }
                            else if (xhr.readyState === xhr.DONE) {
                                // append status to cdn provider so we know its not related to network error.
                                Roblox.BundleDetector.logToEventStream(failedBundle, ctx, cdnProvider, xhr.status);
                            }
                        };

                        //attach to possible things that can go wrong with the request.
                        //additionally a network error will trigger this callback
                        xhr.onerror = function () {
                            Roblox.BundleDetector.logToEphemeralCounter(counter.unknown + "_" + fileType);
                            Roblox.BundleDetector.logToEventStream(failedBundle, ctx, counter.unknown);
                        };

                        xhr.send();
                    }
                    else {
                        this.logToEventStream(failedBundle, ctx);
                    }
                },

                reportResourceError: function (resourceName) {
                    var ephemeralCounterName = this.counterNames.resourceError + "_" + resourceName;
                    this.logToEphemeralCounter(ephemeralCounterName);
                },

                reportResourceLoaded: function (resourceName) {
                    var loadTimeInMs = this.getLoadTime();
                    if (loadTimeInMs) {
                        var sequenceName = this.counterNames.resourceLoaded + "_" + resourceName;
                        this.logToEphemeralStatistics(sequenceName, loadTimeInMs);
                    }
                },

                reportBundleError: function (bundleTag) {
                    var ephemeralCounterName, failedBundle, ctx, contentType;
                    if (bundleTag.rel && bundleTag.rel === "stylesheet") {
                        ephemeralCounterName = this.counterNames.cssError;
                        failedBundle = bundleTag.href;
                        ctx = "css";
                        contentType = bundleContentTypes.css;
                    } else {
                        ephemeralCounterName = this.counterNames.jsError;
                        failedBundle = bundleTag.src;
                        ctx = "js";
                        contentType = bundleContentTypes.javascript;
                    }

                    //mark that we logged this bundle
                    this.bundlesReported[failedBundle] = true;

                    //e.g. javascriptBundleError_Computer
                    this.logToEphemeralCounter(ephemeralCounterName);
                    //this will also log to event stream
                    this.getCdnInfo(failedBundle, ctx, ctx);

                    var bundleName;
                    if (bundleTag.dataset) {
                        bundleName = bundleTag.dataset.bundlename;
                    }
                    else {
                        bundleName = bundleTag.getAttribute('data-bundlename');
                    }

                    this.getCdnProviderAndReportMetrics(failedBundle, bundleName, loadStates.loadFailure, contentType);
                },

                bundleDetected: function (bundleName) {
                    this.jsBundlesLoaded[bundleName] = true;
                },

                verifyBundles: function (document) {
                    var ephemeralCounterName = this.counterNames.jsFileError,
                        eventContext = ephemeralCounterName;
                    //grab all roblox script tags in the page.
                    var scripts = (document && document.scripts) || window.document.scripts;
                    var errorsList = [];
                    var bundleName;
                    var monitor;
                    for (var i = 0; i < scripts.length; i++) {
                        var item = scripts[i];

                        if (item.dataset) {
                            bundleName = item.dataset.bundlename;
                            monitor = item.dataset.monitor;
                        }
                        else {
                            bundleName = item.getAttribute('data-bundlename');
                            monitor = item.getAttribute('data-monitor');
                        }

                        if (item.src && monitor && bundleName) {
                            if (!Roblox.BundleDetector.jsBundlesLoaded.hasOwnProperty(bundleName)) {
                                errorsList.push(item);
                            }
                        }
                    }
                    if (errorsList.length > 0) {
                        for (var j = 0; j < errorsList.length; j++) {
                            var script = errorsList[j];
                            if (!this.bundlesReported[script.src]) {
                                //log the counter only if the file is actually corrupted, not just due to failure to load
                                //e.g. JsFileExecutionError_Computer
                                this.logToEphemeralCounter(ephemeralCounterName);
                                this.getCdnInfo(script.src, eventContext, 'js');

                                if (script.dataset) {
                                    bundleName = script.dataset.bundlename;
                                }
                                else {
                                    bundleName = script.getAttribute('data-bundlename');
                                }

                                this.getCdnProviderAndReportMetrics(script.src, bundleName, loadStates.executionFailure, bundleContentTypes.javascript);
                            }
                        }
                    }
                }
            };
        })();

        window.addEventListener("load", function (evt) {
            Roblox.BundleDetector.verifyBundles();
        });

        Roblox.BundleDetector.setTiming(window.performance.timing);
                    //# sourceURL=somename.js
                </script>

        <link href="https://images.rbxcdn.com/23421382939a9f4ae8bbe60dbe2a3e7e.ico.gzip" rel="icon" />

            <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="StyleGuide" data-bundle-source="Main" href="https://css.rbxcdn.com/326fca2796428ab8b1ba2429f38b91a25aec9c9698c14918f34afdeb0d894a01.css" />
        <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="Thumbnails" data-bundle-source="Main" href="https://css.rbxcdn.com/9517d686dc47015c200496d77e2b18146ee37652d18e25ecf9e1ed230310ea13.css" />
        <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="CookieBannerV3" data-bundle-source="Main" href="https://css.rbxcdn.com/2c2a709240897ce382b7ff55be4347cd0994ab1e2d6ed3b56649e54b0e97e13a.css" />
        <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="Footer" data-bundle-source="Main" href="https://css.rbxcdn.com/6edb2191aa318f963253361b43d2657a04b3d16e9c28fe7b22d4a4d5686f1cb4.css" />
        <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="ConfigureWebApps" data-bundle-source="Main" href="https://css.rbxcdn.com/08def520152a575438e73a81aa9a310c2415c327df7b624a24aa6e794d24dba3.css" />

            <link rel="canonical" href="https://www.roblox.com/request-error?code=400&amp;400;http://data.roblox.com:80/Data/Upload.ashx?assetid=10388311177" />

        <link onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' rel='stylesheet'  href='https://static.rbxcdn.com/css/leanbase___5e469c309d1eeddf42cc9d36a50f82e0_m.css/fetch' />

        <link onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' rel='stylesheet'  href='https://static.rbxcdn.com/css/page___9197a032540db2f85d129304d93df200_m.css/fetch' />

            <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="RobuxIcon" data-bundle-source="Main" href="https://css.rbxcdn.com/4fdd2f554b7d7bdd9491b4857be91acb07abfdf5514a73d93ea8f14ce78b6401.css" />

        <link rel="stylesheet" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-bundlename="UserAgreementsChecker" data-bundle-source="Main" href="https://css.rbxcdn.com/d5a3728b78be729b693aadf79a1f45f0fa49c15fe863a0d7dd631b75f9e82207.css" />

        <script type="text/javascript">
            var Roblox = Roblox || {};
            Roblox.EnvironmentUrls = Roblox.EnvironmentUrls || {};
            Roblox.EnvironmentUrls = {"abtestingApiSite":"https://abtesting.roblox.com","accountInformationApi":"https://accountinformation.roblox.com","accountSettingsApi":"https://accountsettings.roblox.com","adConfigurationApi":"https://adconfiguration.roblox.com","adsApi":"https://ads.roblox.com","apiGatewayCdnUrl":"https://apis.rbxcdn.com","apiGatewayUrl":"https://apis.roblox.com","apiProxyUrl":"https://api.roblox.com","assetDeliveryApi":"https://assetdelivery.roblox.com","authApi":"https://auth.roblox.com","avatarApi":"https://avatar.roblox.com","badgesApi":"https://badges.roblox.com","billingApi":"https://billing.roblox.com","captchaApi":"https://captcha.roblox.com","catalogApi":"https://catalog.roblox.com","chatApi":"https://chat.roblox.com","chatModerationApi":"https://chatmoderation.roblox.com","contactsApi":"https://contacts.roblox.com","contentStoreApi":"https://contentstore.roblox.com","developApi":"https://develop.roblox.com","domain":"roblox.com","economyApi":"https://economy.roblox.com","economycreatorstatsApi":"https://economycreatorstats.roblox.com","engagementPayoutsApi":"https://engagementpayouts.roblox.com","followingsApi":"https://followings.roblox.com","friendsApi":"https://friends.roblox.com","gameInternationalizationApi":"https://gameinternationalization.roblox.com","gamesApi":"https://games.roblox.com","groupsApi":"https://groups.roblox.com","groupsModerationApi":"https://groupsmoderation.roblox.com","helpSite":"http://help.roblox.com","inventoryApi":"https://inventory.roblox.com","itemConfigurationApi":"https://itemconfiguration.roblox.com","localeApi":"https://locale.roblox.com","localizationTablesApi":"https://localizationtables.roblox.com","metricsApi":"https://metrics.roblox.com","midasApi":"https://midas.roblox.com","notificationApi":"https://notifications.roblox.com","premiumFeaturesApi":"https://premiumfeatures.roblox.com","presenceApi":"https://presence.roblox.com","privateMessagesApi":"https://privatemessages.roblox.com","publishApi":"https://publish.roblox.com","restrictedHoursServiceApi":"https://apis.roblox.com/restricted-hours-service","screenTimeApi":"https://apis.rcs.roblox.com/screen-time-api","shareApi":"https://share.roblox.com","thumbnailsApi":"https://thumbnails.roblox.com","tradesApi":"https://trades.roblox.com","translationRolesApi":"https://translationroles.roblox.com","twoStepVerificationApi":"https://twostepverification.roblox.com","universalAppConfigurationApi":"https://apis.roblox.com/universal-app-configuration","userAgreementsServiceApi":"https://apis.roblox.com/user-agreements","userModerationApi":"https://usermoderation.roblox.com","usersApi":"https://users.roblox.com","userSettingsApi":"https://apis.roblox.com/user-settings-api","voiceApi":"https://voice.roblox.com","websiteUrl":"https://www.roblox.com"};

            // please keep the list in alphabetical order
            var additionalUrls = {
                amazonStoreLink: "https://www.amazon.com/Roblox-Corporation/dp/B00NUF4YOA",
                amazonWebStoreLink: "https%3a%2f%2fwww.amazon.com%2froblox%3f%26_encoding%3dUTF8%26tag%3dr05d13-20%26linkCode%3dur2%26linkId%3d5562fc29c05b45562a86358c198356eb%26camp%3d1789%26creative%3d9325",
                appProtocolUrl: "robloxmobile://",
                appStoreLink: "https://itunes.apple.com/us/app/roblox-mobile/id431946152",
                googlePlayStoreLink: "https://play.google.com/store/apps/details?id=com.roblox.client&amp;hl=en",
                iosAppStoreLink: "https://itunes.apple.com/us/app/roblox-mobile/id431946152",
                windowsStoreLink: "https://www.microsoft.com/en-us/store/games/roblox/9nblgggzm6wm",
                xboxStoreLink: "https://www.microsoft.com/en-us/p/roblox/bq1tn1t79v9k"
            }

            for (var urlName in additionalUrls) {
                Roblox.EnvironmentUrls[urlName] = additionalUrls[urlName];
            }

        </script>

        <script type="text/javascript">
            var Roblox = Roblox || {};
            Roblox.GaEventSettings = {
                gaDFPPreRollEnabled: "false" === "true",
                gaLaunchAttemptAndLaunchSuccessEnabled: "false" === "true",
                gaPerformanceEventEnabled: "false" === "true"
            };
        </script>

            <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='headerinit' type='text/javascript' src='https://js.rbxcdn.com/9a8e801ded8f85d03f096a4b3fd5ee65.js'></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Polyfill" data-bundle-source="Main" src="https://js.rbxcdn.com/772034db167d3f4260047db4a7f2b8a58cf448709327013541e47c8962b6e556.js"></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="XsrfProtection" data-bundle-source="Main" src="https://js.rbxcdn.com/4db2f741b7a3ec36d11fec999ce33f708ae85641cabfd27e11e0935928f7d9c4.js"></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="HeaderScripts" data-bundle-source="Main" src="https://js.rbxcdn.com/97cb9ac7262155c329a259fce9f940f9bcfa852a6a1ccb44bd8a41c31e84e54b.js"></script>

        <meta name="sentry-meta"
              data-env-name="production"
              data-dsn="https://6750adeb1b1348e4a10b13e726d5c10b@sentry.io/1539367"
              data-sample-rate="0" /><script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Sentry" data-bundle-source="Main" src="https://js.rbxcdn.com/edc66704bd1974195d8c60f4a163441bec82f1bcb11c492e7df07c43f45a4d49.js"></script>

        <meta name="roblox-tracer-meta-data"
              data-access-token="S3EXjCZQQr6OixnmKu+hoa3OSfpvPP5qgU0esiWgwreFUUMBnPhEaoS5yIIrf9bdYlSgW0XKCb1So9Rhtj1eMzt/MJWcyKZ4TwIckHVj"
              data-service-name="Web"
              data-tracer-enabled="false"
              data-api-sites-request-allow-list="friends.roblox.com,chat.roblox.com,thumbnails.roblox.com,games.roblox.com,gameinternationalization.roblox.com,localizationtables.roblox.com"
              data-sample-rate="5"
              data-is-instrument-page-performance-enabled="true"/><script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="RobloxTracer" data-bundle-source="Main" src="https://js.rbxcdn.com/adeccc658a8d5ddc63fb224cc0bcd3e29b73d70db3847c0379426bfa128d9381.js"></script>

                <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=0" />

        <script type="text/javascript">
            var Roblox = Roblox || {};
            Roblox.AdsHelper = Roblox.AdsHelper || {};
            Roblox.AdsLibrary = Roblox.AdsLibrary || {};

            Roblox.AdsHelper.toggleAdsSlot = function (slotId, GPTRandomSlotIdentifier) {
                var gutterAdsEnabled = false;
                if (gutterAdsEnabled) {
                    googletag.display(GPTRandomSlotIdentifier);
                    return;
                }

                if (typeof slotId !== 'undefined' && slotId && slotId.length > 0) {
                    var slotElm = $("#"+slotId);
                    if (slotElm.is(":visible")) {
                        googletag.display(GPTRandomSlotIdentifier);
                    }else {
                        var adParam = Roblox.AdsLibrary.adsParameters[slotId];
                        if (adParam) {
                            adParam.template = slotElm.html();
                            slotElm.empty();
                        }
                    }
                }
            }
        </script>

            <!--[if lt IE 9]>
                <script src="//oss.maxcdn.com/html5shiv/3.7.2/html5shiv.min.js"></script>
                <script src="//oss.maxcdn.com/respond/1.4.2/respond.min.js"></script>
            <![endif]-->

        <script>
            //Set if it browser's do not track flag is enabled
            var Roblox = Roblox || {};
            (function() {
                var dnt = navigator.doNotTrack || window.doNotTrack || navigator.msDoNotTrack;
                if (typeof window.external !== "undefined" &&
                    typeof window.external.msTrackingProtectionEnabled !== "undefined") {
                    dnt = dnt || window.external.msTrackingProtectionEnabled();
                }
                Roblox.browserDoNotTrack = dnt == "1" || dnt == "yes" || dnt === true;
            })();
        </script>

            <script type="text/javascript">

                var _gaq = _gaq || [];

                        window.GoogleAnalyticsDisableRoblox2 = true;
                _gaq.push(['b._setAccount', 'UA-486632-1']);
                    _gaq.push(['b._setSampleRate', '10']);
                _gaq.push(['b._setCampSourceKey', 'rbx_source']);
                _gaq.push(['b._setCampMediumKey', 'rbx_medium']);
                _gaq.push(['b._setCampContentKey', 'rbx_campaign']);

                    _gaq.push(['b._setDomainName', 'roblox.com']);

                    _gaq.push(['b._setCustomVar', 1, 'Visitor', 'Anonymous', 2]);
                    _gaq.push(['b._trackPageview']);

                _gaq.push(['c._setAccount', 'UA-26810151-2']);
                    _gaq.push(['c._setSampleRate', '1']);
                            _gaq.push(['c._setDomainName', 'roblox.com']);

                    (function() {
                        if (!Roblox.browserDoNotTrack) {
                            var ga = document.createElement('script');
                            ga.type = 'text/javascript';
                            ga.async = true;
                            ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
                            var s = document.getElementsByTagName('script')[0];
                            s.parentNode.insertBefore(ga, s);
                        }
                })();

             </script>
                <script async src='https://www.googletagmanager.com/gtag/js?id=AW-1065449093'></script>
                <script type="text/javascript">
                    var accountCode = "AW-1065449093";
                    var signupConversionEventKey = "wmuJCO3CZBCF7YX8Aw";
                    var webPurchaseConversionEventKey = "XDQ_CJme6s0BEIXthfwD";
                    window.dataLayer = window.dataLayer || [];

                    function gtag() { dataLayer.push(arguments); }
                    gtag.conversionEvents = {
                        signupConversionEvent: accountCode + '/' + signupConversionEventKey,
                        webPurchaseConversionEvent: accountCode + '/' + webPurchaseConversionEventKey
                    }
                    gtag ('set', 'allow_ad_personalization_signals', false) ;
                    gtag('js', new Date());
                    gtag('config', accountCode);
                </script>

                    <script type="text/javascript">
                    if (Roblox && Roblox.EventStream) {
                        Roblox.EventStream.Init("//ecsv2.roblox.com/www/e.png",
                            "//ecsv2.roblox.com/www/e.png",
                            "//ecsv2.roblox.com/pe?t=studio",
                            "//ecsv2.roblox.com/pe?t=diagnostic");
                    }
                </script>

        <script type="text/javascript">
            if (Roblox && Roblox.PageHeartbeatEvent) {
                Roblox.PageHeartbeatEvent.Init([2,8,20,60]);
            }
        </script>
            <script type="text/javascript">
        if (typeof(Roblox) === "undefined") { Roblox = {}; }
        Roblox.Endpoints = Roblox.Endpoints || {};
        Roblox.Endpoints.Urls = Roblox.Endpoints.Urls || {};
        Roblox.Endpoints.Urls['/asset/'] = 'https://assetgame.roblox.com/asset/';
        Roblox.Endpoints.Urls['/client-status/set'] = 'https://www.roblox.com/client-status/set';
        Roblox.Endpoints.Urls['/client-status'] = 'https://www.roblox.com/client-status';
        Roblox.Endpoints.Urls['/game/'] = 'https://assetgame.roblox.com/game/';
        Roblox.Endpoints.Urls['/game/edit.ashx'] = 'https://assetgame.roblox.com/game/edit.ashx';
        Roblox.Endpoints.Urls['/game/placelauncher.ashx'] = 'https://assetgame.roblox.com/game/placelauncher.ashx';
        Roblox.Endpoints.Urls['/game/preloader'] = 'https://assetgame.roblox.com/game/preloader';
        Roblox.Endpoints.Urls['/game/report-stats'] = 'https://assetgame.roblox.com/game/report-stats';
        Roblox.Endpoints.Urls['/game/report-event'] = 'https://assetgame.roblox.com/game/report-event';
        Roblox.Endpoints.Urls['/game/updateprerollcount'] = 'https://assetgame.roblox.com/game/updateprerollcount';
        Roblox.Endpoints.Urls['/login/default.aspx'] = 'https://www.roblox.com/login/default.aspx';
        Roblox.Endpoints.Urls['/my/avatar'] = 'https://www.roblox.com/my/avatar';
        Roblox.Endpoints.Urls['/my/money.aspx'] = 'https://www.roblox.com/my/money.aspx';
        Roblox.Endpoints.Urls['/navigation/userdata'] = 'https://www.roblox.com/navigation/userdata';
        Roblox.Endpoints.Urls['/chat/chat'] = 'https://www.roblox.com/chat/chat';
        Roblox.Endpoints.Urls['/chat/data'] = 'https://www.roblox.com/chat/data';
        Roblox.Endpoints.Urls['/friends/list'] = 'https://www.roblox.com/friends/list';
        Roblox.Endpoints.Urls['/navigation/getcount'] = 'https://www.roblox.com/navigation/getCount';
        Roblox.Endpoints.Urls['/regex/email'] = 'https://www.roblox.com/regex/email';
        Roblox.Endpoints.Urls['/catalog/browse.aspx'] = 'https://www.roblox.com/catalog/browse.aspx';
        Roblox.Endpoints.Urls['/catalog/html'] = 'https://search.roblox.com/catalog/html';
        Roblox.Endpoints.Urls['/catalog/json'] = 'https://search.roblox.com/catalog/json';
        Roblox.Endpoints.Urls['/catalog/contents'] = 'https://search.roblox.com/catalog/contents';
        Roblox.Endpoints.Urls['/catalog/lists.aspx'] = 'https://search.roblox.com/catalog/lists.aspx';
        Roblox.Endpoints.Urls['/catalog/items'] = 'https://search.roblox.com/catalog/items';
        Roblox.Endpoints.Urls['/asset-hash-thumbnail/image'] = 'https://assetgame.roblox.com/asset-hash-thumbnail/image';
        Roblox.Endpoints.Urls['/asset-hash-thumbnail/json'] = 'https://assetgame.roblox.com/asset-hash-thumbnail/json';
        Roblox.Endpoints.Urls['/asset-thumbnail-3d/json'] = 'https://assetgame.roblox.com/asset-thumbnail-3d/json';
        Roblox.Endpoints.Urls['/asset-thumbnail/image'] = 'https://assetgame.roblox.com/asset-thumbnail/image';
        Roblox.Endpoints.Urls['/asset-thumbnail/json'] = 'https://assetgame.roblox.com/asset-thumbnail/json';
        Roblox.Endpoints.Urls['/asset-thumbnail/url'] = 'https://assetgame.roblox.com/asset-thumbnail/url';
        Roblox.Endpoints.Urls['/asset/request-thumbnail-fix'] = 'https://assetgame.roblox.com/asset/request-thumbnail-fix';
        Roblox.Endpoints.Urls['/avatar-thumbnail-3d/json'] = 'https://www.roblox.com/avatar-thumbnail-3d/json';
        Roblox.Endpoints.Urls['/avatar-thumbnail/image'] = 'https://www.roblox.com/avatar-thumbnail/image';
        Roblox.Endpoints.Urls['/avatar-thumbnail/json'] = 'https://www.roblox.com/avatar-thumbnail/json';
        Roblox.Endpoints.Urls['/avatar-thumbnails'] = 'https://www.roblox.com/avatar-thumbnails';
        Roblox.Endpoints.Urls['/avatar/request-thumbnail-fix'] = 'https://www.roblox.com/avatar/request-thumbnail-fix';
        Roblox.Endpoints.Urls['/bust-thumbnail/json'] = 'https://www.roblox.com/bust-thumbnail/json';
        Roblox.Endpoints.Urls['/headshot-thumbnail/json'] = 'https://www.roblox.com/headshot-thumbnail/json';
        Roblox.Endpoints.Urls['/item-thumbnails'] = 'https://www.roblox.com/item-thumbnails';
        Roblox.Endpoints.Urls['/outfit-thumbnail/json'] = 'https://www.roblox.com/outfit-thumbnail/json';
        Roblox.Endpoints.Urls['/place-thumbnails'] = 'https://www.roblox.com/place-thumbnails';
        Roblox.Endpoints.Urls['/thumbnail/asset/'] = 'https://www.roblox.com/thumbnail/asset/';
        Roblox.Endpoints.Urls['/thumbnail/avatar-headshot'] = 'https://www.roblox.com/thumbnail/avatar-headshot';
        Roblox.Endpoints.Urls['/thumbnail/avatar-headshots'] = 'https://www.roblox.com/thumbnail/avatar-headshots';
        Roblox.Endpoints.Urls['/thumbnail/user-avatar'] = 'https://www.roblox.com/thumbnail/user-avatar';
        Roblox.Endpoints.Urls['/thumbnail/resolve-hash'] = 'https://www.roblox.com/thumbnail/resolve-hash';
        Roblox.Endpoints.Urls['/thumbnail/place'] = 'https://www.roblox.com/thumbnail/place';
        Roblox.Endpoints.Urls['/thumbnail/get-asset-media'] = 'https://www.roblox.com/thumbnail/get-asset-media';
        Roblox.Endpoints.Urls['/thumbnail/remove-asset-media'] = 'https://www.roblox.com/thumbnail/remove-asset-media';
        Roblox.Endpoints.Urls['/thumbnail/set-asset-media-sort-order'] = 'https://www.roblox.com/thumbnail/set-asset-media-sort-order';
        Roblox.Endpoints.Urls['/thumbnail/place-thumbnails'] = 'https://www.roblox.com/thumbnail/place-thumbnails';
        Roblox.Endpoints.Urls['/thumbnail/place-thumbnails-partial'] = 'https://www.roblox.com/thumbnail/place-thumbnails-partial';
        Roblox.Endpoints.Urls['/thumbnail_holder/g'] = 'https://www.roblox.com/thumbnail_holder/g';
        Roblox.Endpoints.Urls['/users/{id}/profile'] = 'https://www.roblox.com/users/{id}/profile';
        Roblox.Endpoints.Urls['/service-workers/push-notifications'] = 'https://www.roblox.com/service-workers/push-notifications';
        Roblox.Endpoints.Urls['/notification-stream/notification-stream-data'] = 'https://www.roblox.com/notification-stream/notification-stream-data';
        Roblox.Endpoints.Urls['/api/friends/acceptfriendrequest'] = 'https://www.roblox.com/api/friends/acceptfriendrequest';
        Roblox.Endpoints.Urls['/api/friends/declinefriendrequest'] = 'https://www.roblox.com/api/friends/declinefriendrequest';
        Roblox.Endpoints.Urls['/authentication/is-logged-in'] = 'https://www.roblox.com/authentication/is-logged-in';
        Roblox.Endpoints.addCrossDomainOptionsToAllRequests = true;
        </script>

            <script type="text/javascript">
        if (typeof(Roblox) === "undefined") { Roblox = {}; }
        Roblox.Endpoints = Roblox.Endpoints || {};
        Roblox.Endpoints.Urls = Roblox.Endpoints.Urls || {};
        </script>

            <script>
            Roblox = Roblox || {};
            Roblox.AbuseReportPVMeta = {
                desktopEnabled: false,
                phoneEnabled: false,
                inAppEnabled: false
            };
        </script>

        <meta name="thumbnail-meta-data"
              data-is-webapp-cache-enabled="False"
              data-webapp-cache-expirations-timespan="00:01:00"
              data-request-min-cooldown="1000"
              data-request-max-cooldown="30000"
              data-request-max-retry-attempts="3"
              data-request-batch-size="100"
              data-thumbnail-metrics-sample-size="20"
              data-concurrent-thumbnail-request-count="4"/>

        </head>
        <body id="rbx-body"
              class="rbx-body   light-theme gotham-font"
              data-performance-relative-value="0.005"
              data-internal-page-name=""
              data-send-event-percentage="0">

            <meta name="csrf-token" data-token="Q7Rm8VXHi//E" />

        <div id="roblox-linkify" data-enabled="true" data-regex="(https?\:\/\/)?(?:www\.)?([a-z0-9-]{2,}\.)*(((m|de|www|web|api|blog|wiki|corp|polls|bloxcon|developer|devforum|forum|status)\.roblox\.com|robloxlabs\.com)|(www\.shoproblox\.com)|(roblox\.status\.io)|(rblx\.co)|help\.roblox\.com(?![A-Za-z0-9\/.]*\/attachments\/))(?!\/[A-Za-z0-9-+&amp;@#\/=~_|!:,.;]*%)((\/[A-Za-z0-9-+&amp;@#\/%?=~_|!:,.;]*)|(?=\s|\b))" data-regex-flags="gm" data-as-http-regex="(([^.]help|polls)\.roblox\.com)"></div>

        <div id="image-retry-data"
             data-image-retry-max-times="30"
             data-image-retry-timer="500"
             data-ga-logging-percent="10">
        </div>
        <div id="http-retry-data"
             data-http-retry-max-timeout="0"
             data-http-retry-base-timeout="0"
             data-http-retry-max-times="1">
        </div>

        <div id="fb-root"></div>

        <div id="wrap" class="wrap no-gutter-ads logged-out"
             data-gutter-ads-enabled="false">
            <div class="container-main no-header-nav

                        "
                 id="container-main" tabindex="-1">
                    <script type="text/javascript">
                        if (top.location != self.location) {
                            top.location = self.location.href;
                        }
                    </script>

                <div class="alert-container">
                    <noscript><div><div class="alert-info" role="alert">Please enable Javascript to use all the features on this site.</div></div></noscript>

                </div>

                <div class="content">

        <div class="request-error-page-content">
            <div class="default-error-page">
                <div class="message-container">
                    <h3 class="error-title">Bad Request</h3>
                    <h4 class="error-message">400 <span>|</span>There was a problem with your request</h4>
                </div>
                <img src="https://images.rbxcdn.com/52b5e003c896c50caec4ab1027168cc6.png" class="error-image " alt="Error Image" />
                <div class="action-buttons">
                    <a class="btn-primary-md btn-min-width" title="Go to the Previous Page" onclick="history.back();return false;" href="#">Back</a>
                    <a class="btn-control-md btn-min-width" title="Return Home" href="https://www.roblox.com/">Home</a>
                </div>
            </div>
        </div>

                </div>

        <div class="divider-top" id="GameClientBrowsing">
        </div>    </div>
        </div>

            <div id="user-agreements-checker-container"></div>

            <script type="text/javascript">function urchinTracker() {}</script>

        <script type="text/javascript">
            if (typeof Roblox === "undefined") {
                Roblox = {};
            }
            if (typeof Roblox.PlaceLauncher === "undefined") {
                Roblox.PlaceLauncher = {};
            }
            var isRobloxIconEnabledForRetheme = "True";
            var robloxIcon = isRobloxIconEnabledForRetheme === 'True' ? "<span class='icon-logo-r-95'></span>" : "<img src='https://images.rbxcdn.com/6304dfebadecbb3b338a79a6a528936c.svg.gzip' width='90' height='90' alt='R'/>";
            Roblox.PlaceLauncher.Resources = {
                RefactorEnabled: "True",
                IsProtocolHandlerBaseUrlParamEnabled: "False",
                ProtocolHandlerAreYouInstalled: {
                    play: {
                        content: robloxIcon + "<p>You&#39;re moments away from getting into the experience!</p>",
                        buttonText: "Download and Install Roblox",
                        footerContent: "<a href='https://assetgame.roblox.com/game/help'class= 'text-name small' target='_blank' >Click here for help</a> "
                    },
                    studio: {
                        content: "<img src='https://images.rbxcdn.com/f25e4cadae29ae9a57a962126b2d2e2a.png' width='95' height='95' alt='R' /><p>Get started creating your own experiences!</p>",
                        buttonText: "Download Studio"
                    }
                },
                ProtocolHandlerStartingDialog: {
                    play: {
                        content: robloxIcon + "<p>Roblox is now loading. Get ready!</p>"
                    },
                    studio: {
                        content: "<img src='https://images.rbxcdn.com/f25e4cadae29ae9a57a962126b2d2e2a.png' width='95' height='95' alt='R' /><p>Checking for Roblox Studio...</p>"
                    },
                    loader: "<span class='spinner spinner-default'></span>"
                }
            };
        </script>
        <div id="PlaceLauncherStatusPanel" style="display:none;width:300px"
             data-new-plugin-events-enabled="True"
             data-event-stream-for-plugin-enabled="True"
             data-event-stream-for-protocol-enabled="True"
             data-is-studio-auth-ticket-enabled="True"
             data-is-studio-sso-params-enabled="True"
             data-is-game-launch-interface-enabled="True"
             data-is-protocol-handler-launch-enabled="True"
             data-is-duar-auto-opt-in-enabled="false"
             data-is-duar-opt-out-disabled="false"
             data-is-user-logged-in="False"
             data-os-name="Windows"
             data-protocol-name-for-client="roblox-player"
             data-protocol-name-for-studio="roblox-studio"
             data-protocol-roblox-locale="en_us"
             data-protocol-game-locale="en_us"
             data-protocol-url-includes-launchtime="true"
             data-protocol-detection-enabled="true"
             data-protocol-separate-script-parameters-enabled="true"
             data-protocol-avatar-parameter-enabled="false"
             data-protocol-channel-name="LIVE"
             data-protocol-studio-channel-name=""
             data-protocol-player-channel-name="">
            <div class="modalPopup blueAndWhite PlaceLauncherModal" style="min-height: 160px">
                <div id="Spinner" class="Spinner" style="padding:20px 0;">
                    <img data-delaysrc="https://images.rbxcdn.com/e998fb4c03e8c2e30792f2f3436e9416.gif" height="32" width="32" alt="Progress" />
                </div>
                <div id="status" style="min-height:40px;text-align:center;margin:5px 20px">
                    <div id="Starting" class="PlaceLauncherStatus MadStatusStarting" style="display:block">
                        Starting Roblox...
                    </div>
                    <div id="Waiting" class="PlaceLauncherStatus MadStatusField">Connecting to People...</div>
                    <div id="StatusBackBuffer" class="PlaceLauncherStatus PlaceLauncherStatusBackBuffer MadStatusBackBuffer"></div>
                </div>
                <div style="text-align:center;margin-top:1em">
                    <input type="button" class="Button CancelPlaceLauncherButton translate" value="Cancel" />
                </div>
            </div>
        </div>
        <div id="ProtocolHandlerClickAlwaysAllowed"
             class="ph-clickalwaysallowed"

             style="display:none;">
            <p class="larger-font-size">
                <span class="icon-moreinfo"></span>

                            Check <strong>Remember my choice</strong> and click <img data-delaysrc="https://images.rbxcdn.com/7c8d7a39b4335931221857cca2b5430b.png" alt="Launch Application" /> in the dialog box above to join experiences faster in the future!

            </p>
        </div>

        <script type="text/javascript">
        function checkRobloxInstall() {
                     window.location = 'https://www.roblox.com/unsupported?osx=10.5'; return false;
        }
        </script>

            <div id="InstallationInstructions" class="" style="display:none;">
                <div class="ph-installinstructions">
                    <div class="ph-modal-header">
                            <span class="icon-close simplemodal-close"></span>
                            <h3 class="title">Thanks for visiting Roblox</h3>
                    </div>
                    <div class="modal-content-container">
                        <div class="ph-installinstructions-body ">

                <ul class="modal-col-4">
                    <li class="step1-of-4">
                        <h2>1</h2>
                        <p class="larger-font-size">Click <strong>RobloxPlayer.exe</strong> to run the Roblox installer, which just downloaded via your web browser.</p>
                        <img data-delaysrc="https://images.rbxcdn.com/28eaa93b899b93461399aebf21c5346f.png" />
                    </li>
                    <li class="step2-of-4">
                        <h2>2</h2>
                        <p class="larger-font-size">Click <strong>Run</strong> when prompted by your computer to begin the installation process.</p>
                        <img data-delaysrc="https://images.rbxcdn.com/51328932dedb5d8d61107272cc1a27db.png" />
                    </li>
                    <li class="step3-of-4">
                        <h2>3</h2>
                        <p class="larger-font-size">Click <strong>Ok</strong> once you've successfully installed Roblox.</p>
                        <img data-delaysrc="https://images.rbxcdn.com/3797745629baca2d1b9496b76bc9e6dc.png" />
                    </li>
                    <li class="step4-of-4">
                        <h2>4</h2>
                        <p class="larger-font-size">After installation, click <strong>Join</strong> below to join the action!</p>
                        <div class="VisitButton VisitButtonContinueGLI">
                            <a class="btn btn-primary-lg disabled btn-full-width">Join</a>
                        </div>
                    </li>
                </ul>

                        </div>
                    </div>
                    <div class="xsmall">
                        The Roblox installer should download shortly. If it doesnÔÇÖt, start the <a id="GameLaunchManualInstallLink" href="#" class="text-link">download now.</a>
                    </div>
                </div>
            </div>
            <div class="InstallInstructionsImage" data-modalwidth="970" style="display:none;"></div>

        <div id="pluginObjDiv" style="height:1px;width:1px;visibility:hidden;position: absolute;top: 0;"></div>
        <iframe id="downloadInstallerIFrame" name="downloadInstallerIFrame" style="visibility:hidden;height:0;width:1px;position:absolute"></iframe>

        <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='clientinstaller' type='text/javascript' src='https://js.rbxcdn.com/f424a786e3d883cff747a034605fa09d.js'></script>

        <script type="text/javascript">
            Roblox.Client._skip = '/unsupported';
            Roblox.Client._CLSID = '';
            Roblox.Client._installHost = '';
            Roblox.Client.ImplementsProxy = false;
            Roblox.Client._silentModeEnabled = false;
            Roblox.Client._bringAppToFrontEnabled = false;
            Roblox.Client._currentPluginVersion = '';
            Roblox.Client._eventStreamLoggingEnabled = false;

                Roblox.Client._installSuccess = function() {
                    if(GoogleAnalyticsEvents){
                        GoogleAnalyticsEvents.ViewVirtual('InstallSuccess');
                        GoogleAnalyticsEvents.FireEvent(['Plugin','Install Success']);
                        if (Roblox.Client._eventStreamLoggingEnabled && typeof Roblox.GamePlayEvents != "undefined") {
                            Roblox.GamePlayEvents.SendInstallSuccess(Roblox.Client._launchMode, play_placeId);
                        }
                    }
                }

            </script>

        <div class="ConfirmationModal modalPopup unifiedModal smallModal" data-modal-handle="confirmation" style="display:none;">
            <a class="genericmodal-close ImageButton closeBtnCircle_20h"></a>
            <div class="Title"></div>
            <div class="GenericModalBody">
                <div class="TopBody">
                    <div class="ImageContainer roblox-item-image" data-image-size="small" data-no-overlays data-no-click>
                        <img class="GenericModalImage" alt="generic image" />
                    </div>
                    <div class="Message"></div>
                </div>
                <div class="ConfirmationModalButtonContainer GenericModalButtonContainer">
                    <a href id="roblox-confirm-btn"><span></span></a>
                    <a href id="roblox-decline-btn"><span></span></a>
                </div>
                <div class="ConfirmationModalFooter">

                </div>
            </div>
            <script type="text/javascript">
                Roblox = Roblox || {};
                Roblox.Resources = Roblox.Resources || {};

                Roblox.Resources.GenericConfirmation = {
                    yes: "Yes",
                    No: "No",
                    Confirm: "Confirm",
                    Cancel: "Cancel"
                };
            </script>
        </div>

        <div id="modal-confirmation" class="modal-confirmation" data-modal-type="confirmation">
            <div id="modal-dialog"  class="modal-dialog">
                <div class="modal-content">
                    <div class="modal-header">
                        <button type="button" class="close" data-dismiss="modal">
                            <span aria-hidden="true"><span class="icon-close"></span></span><span class="sr-only">Close</span>
                        </button>
                        <h5 class="modal-title"></h5>
                    </div>

                    <div class="modal-body">
                        <div class="modal-top-body">
                            <div class="modal-message"></div>
                            <div class="modal-image-container roblox-item-image" data-image-size="medium" data-no-overlays data-no-click>
                                <img class="modal-thumb" alt="generic image"/>
                            </div>
                            <div class="modal-checkbox checkbox">
                                <input id="modal-checkbox-input" type="checkbox"/>
                                <label for="modal-checkbox-input"></label>
                            </div>
                        </div>
                        <div class="modal-btns">
                            <a href id="confirm-btn"><span></span></a>
                            <a href id="decline-btn"><span></span></a>
                        </div>
                        <div class="loading modal-processing">
                            <img class="loading-default" src='https://images.rbxcdn.com/4bed93c91f909002b1f17f05c0ce13d1.gif' alt="Processing..." />
                        </div>
                    </div>
                    <div class="modal-footer text-footer">

                    </div>
                </div>
            </div>
        </div>

        <script type="text/javascript">
            var Roblox = Roblox || {};
            Roblox.jsConsoleEnabled = false;
        </script>

            <script type="text/javascript">
                $(function () {
                    Roblox.CookieUpgrader.domain = 'roblox.com';
                    Roblox.CookieUpgrader.upgrade("GuestData", { expires: Roblox.CookieUpgrader.thirtyYearsFromNow });
                    Roblox.CookieUpgrader.upgrade("RBXSource", { expires: function (cookie) { return Roblox.CookieUpgrader.getExpirationFromCookieValue("rbx_acquisition_time", cookie); } });
                    Roblox.CookieUpgrader.upgrade("RBXViralAcquisition", { expires: function (cookie) { return Roblox.CookieUpgrader.getExpirationFromCookieValue("time", cookie); } });

                        Roblox.CookieUpgrader.upgrade("RBXMarketing", { expires: Roblox.CookieUpgrader.thirtyYearsFromNow });

                        Roblox.CookieUpgrader.upgrade("RBXSessionTracker", { expires: Roblox.CookieUpgrader.fourHoursFromNow });

                        Roblox.CookieUpgrader.upgrade("RBXEventTrackerV2", {expires: Roblox.CookieUpgrader.thirtyYearsFromNow});

                });
            </script>

            <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='intl-polyfill' type='text/javascript' src='https://js.rbxcdn.com/d44520f7da5ec476cfb1704d91bab327.js'></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="InternationalCore" data-bundle-source="Main" src="https://js.rbxcdn.com/95044be3ff42e3dc429313faca1316cea62f328a39e29689ffeda9002f3a8bc6.js"></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="TranslationResources" data-bundle-source="Main" src="https://js.rbxcdn.com/83d836a661ff433d5b7ce719c489e43af590ff75ab39ccc6d393546fe91b766a.js"></script>

            <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='leanbase' type='text/javascript' src='https://js.rbxcdn.com/f4efce5815e08050fd91c838f2d0e8bb.js'></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CoreUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/b8f73eea6b6a8602f787da463c88858dbb1aedeffeb2d07479af47dbda222aae.js"></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CoreRobloxUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/756693ec44d3b0e3e359ea8a4bdc54d10f3134ce6e8b88f5e0667d3cd930624b.js"></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="React" data-bundle-source="Main" src="https://js.rbxcdn.com/b79589d3dfb2446936aac95605deaa507ce5bc3e09073bac7dd04872880694c2.js"></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ReactUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/cf340fb618d9a73913b30dfc624ae60d68b9e59723746e6c08d06d14ebdd6dca.js"></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ReactStyleGuide" data-bundle-source="Main" src="https://js.rbxcdn.com/0346acf635cbe0dc3b71af9a6be331830c5b9a2505bebc4dba6299d1f463de61.js"></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ConfigureWebApps" data-bundle-source="Main" src="https://js.rbxcdn.com/5259cfe8a3e36118bd61120693dbba3ba87f2c3641f84bb07e29f1d69fe87523.js"></script>

            <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='angular' type='text/javascript' src='https://js.rbxcdn.com/ae3d621886e736e52c97008e085fa286.js'></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="AngularJsUtilities" data-bundle-source="Main" src="https://js.rbxcdn.com/c1300ec424eab695a3fd12fcaed2ef4f1365d575cb029ee094254ddbcc3396ff.js"></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="InternationalAngularJs" data-bundle-source="Main" src="https://js.rbxcdn.com/90f18784a43a70553e967191b948f70b0193df565f1605762c3c1e245ab4b55a.js"></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Thumbnails" data-bundle-source="Main" src="https://js.rbxcdn.com/d5ea02ab1f95cb8aefa0a3f4cd0151b4220841fc448c2072d3481d95017db6ab.js"></script>

            <div ng-modules="baseTemplateApp">
                <script type="text/javascript" src="https://js.rbxcdn.com/ffcc04436179c6b2a6668fdfcfbf62b1.js"></script>
            </div>

            <div ng-modules="pageTemplateApp">
                <!-- Template bundle: page -->
        <script type="text/javascript">
        "use strict"; angular.module("pageTemplateApp", []).run(['$templateCache', function($templateCache) {

         }]);
        </script>

            </div>

            <script type='text/javascript'>Roblox.config.externalResources = [];Roblox.config.paths['Pages.Catalog'] = 'https://js.rbxcdn.com/109d883fe3988fca757e26e341ed0fe8.js';Roblox.config.paths['Pages.CatalogShared'] = 'https://js.rbxcdn.com/bcba3a83febab35eb41f3a0b8b96db37.js';Roblox.config.paths['Widgets.AvatarImage'] = 'https://js.rbxcdn.com/7d49ac94271bd506077acc9d0130eebb.js';Roblox.config.paths['Widgets.DropdownMenu'] = 'https://js.rbxcdn.com/da553e6b77b3d79bec37441b5fb317e7.js';Roblox.config.paths['Widgets.HierarchicalDropdown'] = 'https://js.rbxcdn.com/4a0af9989732810851e9e12809aeb8ad.js';Roblox.config.paths['Widgets.ItemImage'] = 'https://js.rbxcdn.com/61a0490ba23afa17f9ecca2a079a6a57.js';Roblox.config.paths['Widgets.PlaceImage'] = 'https://js.rbxcdn.com/a6df74a754523e097cab747621643c98.js';</script>

                <script>
                    $(function () {
                        Roblox.DeveloperConsoleWarning.showWarning();
                    });
                </script>

        <script type="text/javascript">
            $(function(){
                function trackReturns() {
                    function dayDiff(d1, d2) {
                        return Math.floor((d1-d2)/86400000);
                    }
                    if (!localStorage) {
                        return false;
                    }

                    var cookieName = 'RBXReturn';
                    var cookieOptions = {expires:9001};
                    var cookieStr = localStorage.getItem(cookieName) || "";
                    var cookie = {};

                    try {
                        cookie = JSON.parse(cookieStr);
                    } catch (ex) {
                        // busted cookie string from old previous version of the code
                    }

                    try {
                        if (typeof cookie.ts === "undefined" || isNaN(new Date(cookie.ts))) {
                            localStorage.setItem(cookieName, JSON.stringify({ ts: new Date().toDateString() }));
                            return false;
                        }
                    } catch (ex) {
                        return false;
                    }

                    var daysSinceFirstVisit = dayDiff(new Date(), new Date(cookie.ts));
                    if (daysSinceFirstVisit == 1 && typeof cookie.odr === "undefined") {
                        RobloxEventManager.triggerEvent('rbx_evt_odr', {});
                        cookie.odr = 1;
                    }
                    if (daysSinceFirstVisit >= 1 && daysSinceFirstVisit <= 7 && typeof cookie.sdr === "undefined") {
                        RobloxEventManager.triggerEvent('rbx_evt_sdr', {});
                        cookie.sdr = 1;
                    }
                    try {
                        localStorage.setItem(cookieName, JSON.stringify(cookie));
                    } catch (ex) {
                        return false;
                    }
                }

                GoogleListener.init();

                RobloxEventManager.initialize(true);
                RobloxEventManager.triggerEvent('rbx_evt_pageview');
                trackReturns();

                RobloxEventManager._idleInterval = 450000;
                RobloxEventManager.registerCookieStoreEvent('rbx_evt_initial_install_start');
                RobloxEventManager.registerCookieStoreEvent('rbx_evt_ftp');
                RobloxEventManager.registerCookieStoreEvent('rbx_evt_initial_install_success');
                RobloxEventManager.registerCookieStoreEvent('rbx_evt_fmp');

            });

        </script>

        <script type="text/javascript">
            var Roblox = Roblox || {};
            Roblox.UpsellAdModal = Roblox.UpsellAdModal || {};

            Roblox.UpsellAdModal.Resources = {
                title: "Remove Ads Like This",
                body: "Builders Club members do not see external ads like these.",
                accept: "Upgrade Now",
                decline: "No, thanks"
            };
        </script>

            <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='page' type='text/javascript' src='https://js.rbxcdn.com/be565770a50c380ed248bc36651ee555.js'></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="StyleGuide" data-bundle-source="Main" src="https://js.rbxcdn.com/504b13e9d52c1a094ac6c2f89d9f89d347ecdceda9cda792c79b237040416e95.js"></script>

        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="CookieBannerV3" data-bundle-source="Main" src="https://js.rbxcdn.com/7693d98990f875a88c91c0385e1b0542bb51913fb34b23f414b6890d90353c40.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Messages" data-bundle-source="Unknown" src="https://js.rbxcdn.com/5b148ca445e1fd4ef905bc3665b2e29d065ab357cc88fd68be95b519f6e2da0d.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Messages" data-bundle-source="Unknown" src="https://js.rbxcdn.com/18dede93de3aac02225e1e6e9957d98d6983c39fc9e76eb0cdb05090e5551f95.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Tracking" data-bundle-source="Unknown" src="https://js.rbxcdn.com/ce6a4105a4d28cac59aa57a3d6615d56ba63526569ebfd88d49ac363d61caddb.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Tracking" data-bundle-source="Unknown" src="https://js.rbxcdn.com/fb47e86d6d7deaf62c7c5c8a62d915361b3f9b47503976e24e4fdd44710a492e.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="Footer" data-bundle-source="Main" src="https://js.rbxcdn.com/bffafd994791f59d1efb67723313fc0f59b58fef8dec7cf83535c8f4d1d1ebd9.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.AlertsAndOptions" data-bundle-source="Unknown" src="https://js.rbxcdn.com/385a62cb16e1c8524da81c17728733d79e3ad9ccbc342d982fe79352f8785dba.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.AlertsAndOptions" data-bundle-source="Unknown" src="https://js.rbxcdn.com/57d1b7776de993a3bf8ace38e6efd8f8ce5b9a294362c029990f0cf131548531.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Features" data-bundle-source="Unknown" src="https://js.rbxcdn.com/c629f6739d6903fec0d935d26a9cea02ff757856d4ed73a83fd1535affea0300.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Features" data-bundle-source="Unknown" src="https://js.rbxcdn.com/5370e5e55fc9993ec53b0a4195e82290b8c1c5f95a1fb5cd11a2ec82d5d07809.js"></script>

            <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="ItemPurchase" data-bundle-source="Main" src="https://js.rbxcdn.com/5804331763d8dd8d8fb671924b73023bd1feddd205229569f18413e6f0190f93.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Item" data-bundle-source="Unknown" src="https://js.rbxcdn.com/9cf047a292f5735b2ce9c1896e1951a873acc17e0d794deddde210b8bd91d6d4.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.Item" data-bundle-source="Unknown" src="https://js.rbxcdn.com/0eb9f3bc4309642fdf241b8263d8987cbe07add49b9342084cdc23be4e042d93.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Purchasing.PurchaseDialog" data-bundle-source="Unknown" src="https://js.rbxcdn.com/7918ac8b721b946f2800652b084166ae795408706e447c98a9af8ca3e8a0cbc0.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Purchasing.PurchaseDialog" data-bundle-source="Unknown" src="https://js.rbxcdn.com/4e1037868737fa797b0e3248bc05479c925d8029ec146d6633aeebd9e0bb6c71.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.ItemModel" data-bundle-source="Unknown" src="https://js.rbxcdn.com/97b99d5ea1fd09bf3fa4aed595502676b5c6d366675698913916b7b0f1b33a30.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.ItemModel" data-bundle-source="Unknown" src="https://js.rbxcdn.com/8f8d451cbe04b730d167b5ce92019da934a5c2da928ca13d9b3eb15cbe2ff5d5.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="IdVerification" data-bundle-source="Main" src="https://js.rbxcdn.com/6fb6e995f12e838d8f66c5e1ab8a5b60557dc6e1cd355ecbcff835358590ab90.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.VerificationUpsell" data-bundle-source="Unknown" src="https://js.rbxcdn.com/ac18954a9be17173b1dd2338337648e1d8c219e2be61ebacdc2464bc01a39397.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.VerificationUpsell" data-bundle-source="Unknown" src="https://js.rbxcdn.com/5298210691b2bad66e2235484470a78cfd7ed8ba0b547aa1af5bbfc94be8dab0.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Verification.Identity" data-bundle-source="Unknown" src="https://js.rbxcdn.com/6ca23c4bef0b8c2ee82d1bcf9bb3c52c2d8c6b1c6c69ad40ed2d03d0887335e2.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Verification.Identity" data-bundle-source="Unknown" src="https://js.rbxcdn.com/3f6cf43ba9cc024bb84a85caee38f7c5b98ce5a2e3006d197f21eecc25f495c7.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Controls" data-bundle-source="Unknown" src="https://js.rbxcdn.com/1e9c21f67e9901f767acd1db03c4a5c6029d4bc0862424e80c746d6e3cf5b99c.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.Controls" data-bundle-source="Unknown" src="https://js.rbxcdn.com/5c44d71f75449192684a6558fdffae735d08a0a29e18c656dc0374df397a0050.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="GameLaunch" data-bundle-source="Main" src="https://js.rbxcdn.com/c8a5a277ce6a0cbc4f7b673d7d59e93c63a62a2d86e68d32eac55af32a553945.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.VisitGame" data-bundle-source="Unknown" src="https://js.rbxcdn.com/f5964480d72a66fed298d36e9ad7c0a033020f0f488a49773b129905e4390e60.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Common.VisitGame" data-bundle-source="Unknown" src="https://js.rbxcdn.com/d720f5c5c32eb353fd76c5a101f47e529363a19bf44c18b01b501e0c648c81b4.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.GameLaunchGuestMode" data-bundle-source="Unknown" src="https://js.rbxcdn.com/f41ec06eeae79fa94e6ae9f435b0a1c6743085e898884eddb4d4025ca3af8a44.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_Feature.GameLaunchGuestMode" data-bundle-source="Unknown" src="https://js.rbxcdn.com/6852af8f7df15395ccb3d121a914ee7301a7162f5afb3395575c6075c617923f.js"></script>

        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="UserAgreementsChecker" data-bundle-source="Main" src="https://js.rbxcdn.com/a411b4655a0c97ad1d8209c2daa1e92b0dfc5d66716efcfea310f491aabf1ef6.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.UserAgreements" data-bundle-source="Unknown" src="https://js.rbxcdn.com/c46b4fb03550b521b63f90cdca3214e620c53f676987f9c644dc3ed60a9d74c9.js"></script>
        <script type="text/javascript" onerror="Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)" data-monitor="true" data-bundlename="DynamicLocalizationResourceScript_CommonUI.UserAgreements" data-bundle-source="Unknown" src="https://js.rbxcdn.com/358e6ae5bebb0fa9326d0de99d3ee229ee63236bf44ed11b9ab1d314c7972e79.js"></script>

            <script onerror='Roblox.BundleDetector && Roblox.BundleDetector.reportBundleError(this)' data-monitor='true' data-bundlename='pageEnd' type='text/javascript' src='https://js.rbxcdn.com/0369b2c602f43079582397be3c8a0b5e.js'></script>

        </body>
        </html>
lightman210567 commented 2 years ago

i think i might have forgotten to put quotation marks around the cookie or some other user error. The upload command works fine now.

However when i try to use the rojo upload command in github actions, i get OS error 36. is there any way to fix the OS error?