ErrorException (E_NOTICE)
Trying to get property 'id' of non-object ErrorException thrown with message "Trying to get property 'id' of non-object" Stacktrace: #43 ErrorException in /home/emxmotors/public_html/app/Http/Controllers/Web/IndexController.php:521 #42 Illuminate\Foundation\Bootstrap\HandleExceptions:handleError in /home/emxmotors/public_html/app/Http/Controllers/Web/IndexController.php:521 #41 App\Http\Controllers\Web\IndexController:torrotdetail in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54 #40 call_user_func_array in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php:54 #39 Illuminate\Routing\Controller:callAction in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php:45 #38 Illuminate\Routing\ControllerDispatcher:dispatch in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Route.php:219 #37 Illuminate\Routing\Route:runController in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Route.php:176 #36 Illuminate\Routing\Route:run in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php:680 #35 Illuminate\Routing\Router:Illuminate\Routing\{closure} in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:130 #34 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/app/Http/Middleware/Installation.php:21 #33 App\Http\Middleware\Installation:handle in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:171 #32 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php:41 #31 Illuminate\Routing\Middleware\SubstituteBindings:handle in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:171 #30 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php:75 #29 Illuminate\Foundation\Http\Middleware\VerifyCsrfToken:handle in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:171 #28 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php:49 #27 Illuminate\View\Middleware\ShareErrorsFromSession:handle in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:171 #26 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/app/Http/Middleware/Language.php:33 #25 App\Http\Middleware\language:handle in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:171 #24 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php:56 #23 Illuminate\Session\Middleware\StartSession:handle in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:171 #22 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php:37 #21 Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse:handle in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:171 #20 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php:66 #19 Illuminate\Cookie\Middleware\EncryptCookies:handle in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:171 #18 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:105 #17 Illuminate\Pipeline\Pipeline:then in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php:682 #16 Illuminate\Routing\Router:runRouteWithinStack in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php:657 #15 Illuminate\Routing\Router:runRoute in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php:623 #14 Illuminate\Routing\Router:dispatchToRoute in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php:612 #13 Illuminate\Routing\Router:dispatch in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:176 #12 Illuminate\Foundation\Http\Kernel:Illuminate\Foundation\Http\{closure} in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:130 #11 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/vendor/fideloper/proxy/src/TrustProxies.php:57 #10 Fideloper\Proxy\TrustProxies:handle in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:171 #9 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21 #8 Illuminate\Foundation\Http\Middleware\TransformsRequest:handle in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:171 #7 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php:21 #6 Illuminate\Foundation\Http\Middleware\TransformsRequest:handle in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:171 #5 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php:27 #4 Illuminate\Foundation\Http\Middleware\ValidatePostSize:handle in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:171 #3 Illuminate\Pipeline\Pipeline:Illuminate\Pipeline\{closure} in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php:105 #2 Illuminate\Pipeline\Pipeline:then in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:151 #1 Illuminate\Foundation\Http\Kernel:sendRequestThroughRouter in /home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php:116 #0 Illuminate\Foundation\Http\Kernel:handle in /home/emxmotors/public_html/public/index.php:55
43
ErrorException
/app/Http/Controllers/Web/IndexController.php521
42
Illuminate\Foundation\Bootstrap\HandleExceptions handleError
/app/Http/Controllers/Web/IndexController.php521
41
App\Http\Controllers\Web\IndexController torrotdetail
/vendor/laravel/framework/src/Illuminate/Routing/Controller.php54
40
call_user_func_array
/vendor/laravel/framework/src/Illuminate/Routing/Controller.php54
39
Illuminate\Routing\Controller callAction
/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php45
38
Illuminate\Routing\ControllerDispatcher dispatch
/vendor/laravel/framework/src/Illuminate/Routing/Route.php219
37
Illuminate\Routing\Route runController
/vendor/laravel/framework/src/Illuminate/Routing/Route.php176
36
Illuminate\Routing\Route run
/vendor/laravel/framework/src/Illuminate/Routing/Router.php680
35
Illuminate\Routing\Router Illuminate\Routing\{closure}
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php130
34
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/app/Http/Middleware/Installation.php21
33
App\Http\Middleware\Installation handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php171
32
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php41
31
Illuminate\Routing\Middleware\SubstituteBindings handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php171
30
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php75
29
Illuminate\Foundation\Http\Middleware\VerifyCsrfToken handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php171
28
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php49
27
Illuminate\View\Middleware\ShareErrorsFromSession handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php171
26
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/app/Http/Middleware/Language.php33
25
App\Http\Middleware\language handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php171
24
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php56
23
Illuminate\Session\Middleware\StartSession handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php171
22
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php37
21
Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php171
20
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php66
19
Illuminate\Cookie\Middleware\EncryptCookies handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php171
18
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php105
17
Illuminate\Pipeline\Pipeline then
/vendor/laravel/framework/src/Illuminate/Routing/Router.php682
16
Illuminate\Routing\Router runRouteWithinStack
/vendor/laravel/framework/src/Illuminate/Routing/Router.php657
15
Illuminate\Routing\Router runRoute
/vendor/laravel/framework/src/Illuminate/Routing/Router.php623
14
Illuminate\Routing\Router dispatchToRoute
/vendor/laravel/framework/src/Illuminate/Routing/Router.php612
13
Illuminate\Routing\Router dispatch
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php176
12
Illuminate\Foundation\Http\Kernel Illuminate\Foundation\Http\{closure}
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php130
11
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/fideloper/proxy/src/TrustProxies.php57
10
Fideloper\Proxy\TrustProxies handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php171
9
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php21
8
Illuminate\Foundation\Http\Middleware\TransformsRequest handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php171
7
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php21
6
Illuminate\Foundation\Http\Middleware\TransformsRequest handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php171
5
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php27
4
Illuminate\Foundation\Http\Middleware\ValidatePostSize handle
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php171
3
Illuminate\Pipeline\Pipeline Illuminate\Pipeline\{closure}
/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php105
2
Illuminate\Pipeline\Pipeline then
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php151
1
Illuminate\Foundation\Http\Kernel sendRequestThroughRouter
/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php116
0
Illuminate\Foundation\Http\Kernel handle
/public/index.php55
/home/emxmotors/public_html/app/Http/Controllers/Web/IndexController.php
            ->where('image_categories2.image_type','=',"ACTUAL")
            ->groupBy('torrot_products.id')->first();
            // foreach ($data as $key => $value) {
                // dd($value);
            $products_images = DB::table('torrot_gallery_images')
              ->LeftJoin('image_categories', function ($join) {
 
                  $join->on('image_categories.image_id', '=', 'torrot_gallery_images.image_id')
                      ->where(function ($query) {
                          $query->where('image_categories.image_type', '=', 'THUMBNAIL')
                              ->where('image_categories.image_type', '!=', 'THUMBNAIL')
                              ->orWhere('image_categories.image_type', '=', 'ACTUAL');
                      });
 
              })
              ->select('torrot_gallery_images.*', 'image_categories.path')
              ->where('torrot_gallery_images.torrot_product_id','=',$id)
              ->get();
              
                $spescification=DB::table('torrot_specification')->where('torrot_product_id',$data->id)->get();
                if(!empty($spescification)){
                    foreach ($spescification as $key => $value2) {
                        $data->spescification[]=$value2;
                    }
                }
                $torrot_key_feature=DB::table('torrot_key_feature')->where('torrot_product_id','=',$data->id)->first();
                        $data->key_feature=$torrot_key_feature;
                        // $data
                    $torrot_products=$data;
            // }
        $result['torrot_product']  = $torrot_products;
        $result['products_images']  = $products_images;
         return view("web.torrot-detail", ['title' => $title, 'final_theme' => $final_theme])->with('result', $result);
    }
//processContactUs
    // public function processContactUs(Request $request)
    // {
 
    //     $name = $request->name;
    //     $email = $request->email;
Arguments
  1. "Trying to get property 'id' of non-object"
    
/home/emxmotors/public_html/app/Http/Controllers/Web/IndexController.php
            ->where('image_categories2.image_type','=',"ACTUAL")
            ->groupBy('torrot_products.id')->first();
            // foreach ($data as $key => $value) {
                // dd($value);
            $products_images = DB::table('torrot_gallery_images')
              ->LeftJoin('image_categories', function ($join) {
 
                  $join->on('image_categories.image_id', '=', 'torrot_gallery_images.image_id')
                      ->where(function ($query) {
                          $query->where('image_categories.image_type', '=', 'THUMBNAIL')
                              ->where('image_categories.image_type', '!=', 'THUMBNAIL')
                              ->orWhere('image_categories.image_type', '=', 'ACTUAL');
                      });
 
              })
              ->select('torrot_gallery_images.*', 'image_categories.path')
              ->where('torrot_gallery_images.torrot_product_id','=',$id)
              ->get();
              
                $spescification=DB::table('torrot_specification')->where('torrot_product_id',$data->id)->get();
                if(!empty($spescification)){
                    foreach ($spescification as $key => $value2) {
                        $data->spescification[]=$value2;
                    }
                }
                $torrot_key_feature=DB::table('torrot_key_feature')->where('torrot_product_id','=',$data->id)->first();
                        $data->key_feature=$torrot_key_feature;
                        // $data
                    $torrot_products=$data;
            // }
        $result['torrot_product']  = $torrot_products;
        $result['products_images']  = $products_images;
         return view("web.torrot-detail", ['title' => $title, 'final_theme' => $final_theme])->with('result', $result);
    }
//processContactUs
    // public function processContactUs(Request $request)
    // {
 
    //     $name = $request->name;
    //     $email = $request->email;
Arguments
  1. 8
    
  2. "Trying to get property 'id' of non-object"
    
  3. "/home/emxmotors/public_html/app/Http/Controllers/Web/IndexController.php"
    
  4. 521
    
  5. array:7 [
      "request" => Illuminate\Http\Request {#51
        #json: null
        #convertedFiles: null
        #userResolver: Closure($guard = null) {#967 …4}
        #routeResolver: Closure() {#971 …4}
        +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
        +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
        +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
        +server: Symfony\Component\HttpFoundation\ServerBag {#55}
        +files: Symfony\Component\HttpFoundation\FileBag {#56}
        +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
        +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
        #content: null
        #languages: null
        #charsets: null
        #encodings: null
        #acceptableContentTypes: array:1 [
          0 => "*/*"
        ]
        #pathInfo: "/torrot_detail/about"
        #requestUri: "/torrot_detail/about"
        #baseUrl: ""
        #basePath: null
        #method: "GET"
        #format: null
        #session: Illuminate\Session\Store {#1063}
        #locale: null
        #defaultLocale: "en"
        -preferredFormat: null
        -isHostValid: true
        -isForwardedValid: true
        basePath: ""
        format: "html"
      }
      "id" => "about"
      "title" => array:1 [
        "pageTitle" => "website.Career"
      ]
      "result" => array:1 [
        "commonContent" => array:23 [
          "currency" => {#1357}
          "top_offers" => {#1369}
          "menus" => array:9 [
            0 => {#1342}
            1 => {#1373}
            2 => {#1339}
            3 => {#1313}
            4 => {#1160}
            5 => {#1302}
            6 => {#1314}
            7 => {#1159}
            8 => {#1116}
          ]
          "menusRecursive" => """
            <li class="nav-item dropdown AboutUs-menu"><a  href="/about" >About Us</a></li><li class="nav-item dropdown MXkids-menu"><a href="javascript:" >MX kids</a><ul class="sub-menu" >\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"   href="javascript:">\n
                                Torrot Bikes\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/1">\n
                                SUPERMOTARD ONE\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/11">\n
                                SUPERMOTARD TWO\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/3">\n
                                MOTOCROSS ONE\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/2">\n
                                MOTOCROSS TWO\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/5">\n
                                TRIAL ONE\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/4">\n
                                TRIAL TWO\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/torrot">Show More</a></li></ul></li><li class="nav-item dropdown MXBikes-menu"><a  href="#" >MX Bikes</a><ul class="sub-menu" >\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Drillone Bikes\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=73">\n
                                Drillone Enduro\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=73">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Talaria Bikes\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=85">\n
                                Talaria Bikes\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=85">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                BHR Bikes\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/bhr_bikes">\n
                                BHR Bikes\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/bhr_bikes">Show More</a></li></ul></li><li class="nav-item dropdown E-Bikes-menu"><a  href="https://emxmotors.com/#our-collection-sec" >E-Bikes</a><ul class="sub-menu" >\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Urbet Bikes\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=69">\n
                                Urbet Nura\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=70">\n
                                Urbet Gadiro\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=71">\n
                                Urbet Ego\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=72">\n
                                Urbet Riazor\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/category-detail?slidercategory=urbet-bikes">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Delfast Bikes\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=74">\n
                                Delfast Top 3.0\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=74">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Silverback\n
                            </a>\n
                        <a class="show-more-btn" href="javascript:">Coming Soon</a></li></ul></li><li class="nav-item dropdown E-scooters-menu"><a  href="javascript:;" >E-scooters</a><ul class="sub-menu" >\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Fidico E-scooters\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=89">\n
                                Black Knight ( 11-40AH )\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=90">\n
                                Black Knight ( 11-45Ah )\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=91">\n
                                Black Knight ( 11P-40Ah )\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=92">\n
                                Black Knight ( 11P-60Ah )\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=93">\n
                                Light Speed ( 13-40AH )\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=94">\n
                                Light Speed (13-60AH)\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/category-detail?slidercategory=fidico-escooters">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Nami E-scooters\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=95">\n
                                Nami Burn E\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=96">\n
                                Burn E-2   Max\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/category-detail?slidercategory=nami">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Numo E-scooters\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=97">\n
                                Slack\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=97">Show More</a></li></ul></li><li class="nav-item dropdown Products-menu"><a  href="https://emxmotors.com/products" >Products</a><ul class="sub-menu" >\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/shop?category=helmets">\n
                                Helmets\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/sb-34-zorro-white">\n
                                SB-34 zorro white\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/blade-helmet">\n
                                blade helmet\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/shop?category=helmets">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/shop?category=accessories">\n
                                Accessories\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/gloves">\n
                                gloves\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/shoes">\n
                                Shoes\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/shop?category=accessories">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/shop?category=mod-shop">\n
                                Mod Shop\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/ebmx">\n
                                EBMX\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                KO\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Kaniwaba\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/shop?category=mod-shop">Show More</a></li></ul></li><li class="nav-item dropdown Services-menu"><a  href="javascript:;" >Services</a><ul class="sub-menu" >\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=e-bike-repairing-services">\n
                                e-bike repairing services\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=e-bike-and-e-motor-services">\n
                                e-bike and e-motor services\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=e-bike-services">\n
                                custom e-bike services\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=ride-testing-experience">\n
                                ride testing experience\n
                            </a>\n
                        </ul></li><li class="nav-item dropdown Blogs-menu"><a  href="http://emxmotors.com/blogs" >Blogs</a></li><li class="nav-item dropdown Contact-menu"><a  href="/contact" >Contact</a></li>
            """
          "menusRecursiveMobile" => """
            <li class="nav-item dropdown "><a class="nav-link  "  href="https://emxmotors.com//about" >About Us</a></li><li class="nav-item dropdown "><a class="nav-link  dropdown-toggle" href="javascript:" >MX kids</a><div class="dropdown-menu deskMenu" >\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"   href="javascript:">\n
                                Torrot Bikes\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/1">\n
                                SUPERMOTARD ONE\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/11">\n
                                SUPERMOTARD TWO\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/3">\n
                                MOTOCROSS ONE\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/2">\n
                                MOTOCROSS TWO\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/5">\n
                                TRIAL ONE\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/4">\n
                                TRIAL TWO\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/torrot">Show More</a></li></div></li><li class="nav-item dropdown "><a class="nav-link  dropdown-toggle"  href="https://emxmotors.com/#" >MX Bikes</a><div class="dropdown-menu deskMenu" >\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Drillone Bikes\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=73">\n
                                Drillone Enduro\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=73">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Talaria Bikes\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=85">\n
                                Talaria Bikes\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=85">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                BHR Bikes\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/bhr_bikes">\n
                                BHR Bikes\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/bhr_bikes">Show More</a></li></div></li><li class="nav-item dropdown "><a href="javascript:">E-Bikes</a><ul class="sub-menu"><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=black-knight">Black Knight</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=92">BlackKnight BK11P-60Ah</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=91">BlackKnight BK11P-40Ah</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=90">BlackKnight BK11-45Ah</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=89">BlackKnight BK11-40AH</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=74">delfast bikes</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=74">DELFAST Top 3.0</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=73">drillone bikes</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=73">Drillone Enduro</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=fidico-escooters">Fidico E-scooters</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=87">Lightspeed Knight</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=86">Black Knight</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=94">Lightspeed LK13-60AH</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=93">Lightspeed LK13-40AH</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=92">BlackKnight BK11P-60Ah</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=91">BlackKnight BK11P-40Ah</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=90">BlackKnight BK11-45Ah</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=89">BlackKnight BK11-40AH</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=lightspeed">Lightspeed</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=94">Lightspeed LK13-60AH</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=93">Lightspeed LK13-40AH</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=nami">Nami</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=96">Nami Burn E-2 Max</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=95">Nami Burn E</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=numo">Numo</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=97">NUMO Core 920R</a></li></ul></li><li class="nav-item dropdown"><a href="javascript:">Silverback Bikes</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=talaria">Talaria Bikes</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=85">Talaria Bikes</a></li></ul></li><li class="nav-item dropdown"><a href="javascript:">TORROT BIKES</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=urbet-bikes">urbet bikes</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=69">urbet nura</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=72">urbet riazor</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=71">urbet ego</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=70">urbet gadiro</a></li></ul></li></ul></li><div class="dropdown-menu deskMenu" >\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Urbet Bikes\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=69">\n
                                Urbet Nura\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=70">\n
                                Urbet Gadiro\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=71">\n
                                Urbet Ego\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=72">\n
                                Urbet Riazor\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/category-detail?slidercategory=urbet-bikes">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Delfast Bikes\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=74">\n
                                Delfast Top 3.0\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=74">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Silverback\n
                            </a>\n
                        <a class="show-more-btn" href="javascript:">Coming Soon</a></li></div></li><li class="nav-item dropdown "><a class="nav-link  dropdown-toggle"  href="https://emxmotors.com/javascript:;" >E-scooters</a><div class="dropdown-menu deskMenu" >\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Fidico E-scooters\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=89">\n
                                Black Knight ( 11-40AH )\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=90">\n
                                Black Knight ( 11-45Ah )\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=91">\n
                                Black Knight ( 11P-40Ah )\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=92">\n
                                Black Knight ( 11P-60Ah )\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=93">\n
                                Light Speed ( 13-40AH )\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=94">\n
                                Light Speed (13-60AH)\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/category-detail?slidercategory=fidico-escooters">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Nami E-scooters\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=95">\n
                                Nami Burn E\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=96">\n
                                Burn E-2   Max\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/category-detail?slidercategory=nami">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Numo E-scooters\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=97">\n
                                Slack\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=97">Show More</a></li></div></li><li class="nav-item dropdown"><a href="javascript:">Products</a><ul class="sub-menu"><li class="nav-item dropdown"><a href="https://emxmotors.com/shop?category=helmets" >Helmets</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="product-detail/blade-helmet">Blade Helmet</a></li><li class="nav-item dropdown"><a href="product-detail/sb-34-zorro-white">SB-34 ZORRO WHITE</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/shop?category=accessories" >Accessories</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="product-detail/gloves">Gloves</a></li><li class="nav-item dropdown"><a href="product-detail/shoes">Shoes</a></li></ul></li></ul><div class="dropdown-menu deskMenu" >\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/shop?category=helmets">\n
                                Helmets\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/sb-34-zorro-white">\n
                                SB-34 zorro white\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/blade-helmet">\n
                                blade helmet\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/shop?category=helmets">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/shop?category=accessories">\n
                                Accessories\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/gloves">\n
                                gloves\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/shoes">\n
                                Shoes\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/shop?category=accessories">Show More</a></li>\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/shop?category=mod-shop">\n
                                Mod Shop\n
                            </a>\n
                        \n
                            <ul class="sub-menu-child">\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/ebmx">\n
                                EBMX\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                KO\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                                Kaniwaba\n
                            </a>\n
                        </ul><a class="show-more-btn" href="https://emxmotors.com/shop?category=mod-shop">Show More</a></li></div></li><li class="nav-item dropdown"><a href="javascript:">Services</a><ul class="sub-menu"><li class="nav-item dropdown"><a href="https://emxmotors.com/shop?category=helmets" >Helmets</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="product-detail/blade-helmet">Blade Helmet</a></li><li class="nav-item dropdown"><a href="product-detail/sb-34-zorro-white">SB-34 ZORRO WHITE</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/shop?category=accessories" >Accessories</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="product-detail/gloves">Gloves</a></li><li class="nav-item dropdown"><a href="product-detail/shoes">Shoes</a></li></ul></li></ul><div class="dropdown-menu deskMenu" >\n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=e-bike-repairing-services">\n
                                e-bike repairing services\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=e-bike-and-e-motor-services">\n
                                e-bike and e-motor services\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=e-bike-services">\n
                                custom e-bike services\n
                            </a>\n
                        \n
                            <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=ride-testing-experience">\n
                                ride testing experience\n
                            </a>\n
                        </div></li><li class="nav-item dropdown "><a class="nav-link  "  href="https://emxmotors.com/http://emxmotors.com/blogs" >Blogs</a></li><li class="nav-item dropdown "><a class="nav-link  "  href="https://emxmotors.com//contact" >Contact</a></li>
            """
          "newsCategories" => array:5 [
            0 => {#1185}
            1 => {#1148}
            2 => {#1404}
            3 => {#1306}
            4 => {#1241}
          ]
          "featuredNews" => array:4 [
            "success" => "1"
            "news_data" => array:3 [
              0 => {#1267}
              1 => {#1265}
              2 => {#1239}
            ]
            "message" => "Returned all news."
            "total_record" => 3
          ]
          "testimonial" => array:4 [
            0 => {#1131}
            1 => {#1280}
            2 => {#1377}
            3 => {#1126}
          ]
          "cart" => []
          "setting" => Illuminate\Support\Collection {#1220}
          "settings" => array:128 [
            "facebook_app_id" => "FB_CLIENT_ID"
            "facebook_secret_id" => "FB_SECRET_KEY"
            "facebook_login" => "0"
            "contact_us_email" => "emx.motorsme@gmail.com"
            "address" => "USA - 100 N Central Expressway 613, Richardson, TX 75080 ."
            "city" => ""
            "state" => ""
            "zip" => "71000"
            "country" => "United Arab Emirates"
            "latitude" => "(04) 345 0700"
            "longitude" => "Longitude"
            "phone_no" => "+971 56 555 2200"
            "fcm_android" => ""
            "fcm_ios" => null
            "fcm_desktop" => null
            "website_logo" => "images/media/2022/01/T2Fqj03409.png"
            "fcm_android_sender_id" => null
            "fcm_ios_sender_id" => ""
            "app_name" => "EMX Motors"
            "currency_symbol" => "$"
            "new_product_duration" => "20"
            "notification_title" => "Ionic Ecommerce"
            "notification_text" => "A bundle of products waiting for you!"
            "lazzy_loading_effect" => "Detail"
            "footer_button" => "1"
            "cart_button" => "1"
            "featured_category" => null
            "notification_duration" => "year"
            "home_style" => "1"
            "wish_list_page" => "1"
            "edit_profile_page" => "1"
            "shipping_address_page" => "1"
            "my_orders_page" => "1"
            "contact_us_page" => "1"
            "about_us_page" => "1"
            "news_page" => "1"
            "intro_page" => "1"
            "setting_page" => "1"
            "share_app" => "1"
            "rate_app" => "1"
            "site_url" => "URL"
            "admob" => "0"
            "admob_id" => "ID"
            "ad_unit_id_banner" => "Unit ID"
            "ad_unit_id_interstitial" => "Indestrial"
            "category_style" => "4"
            "package_name" => "package name"
            "google_analytic_id" => "test"
            "themes" => "themeone"
            "company_name" => "#"
            "facebook_url" => "https://www.facebook.com/emxmotorsuae/"
            "google_url" => "https://www.youtube.com/channel/UC92lCaRzfimi_Hrw3MQo7TQ"
            "twitter_url" => "https://www.twitter.com"
            "linked_in" => "https://www.instagram.com/emxmotorsme/"
            "default_notification" => "onesignal"
            "onesignal_app_id" => "6053d948-b8f6-472a-87e4-379fa89f78d8"
            "onesignal_sender_id" => ""
            "ios_admob" => "0"
            "ios_admob_id" => "AdMob ID"
            "ios_ad_unit_id_banner" => "Unit ID Banner"
            "ios_ad_unit_id_interstitial" => "ID Interstitial"
            "google_login" => "0"
            "google_app_id" => null
            "google_secret_id" => null
            "google_callback_url" => null
            "facebook_callback_url" => null
            "is_app_purchased" => "0"
            "is_web_purchased" => "1"
            "consumer_key" => "dadb7a7c1557917902724bbbf5"
            "consumer_secret" => "3ba77f821557917902b1d57373"
            "order_email" => "emx.motorsme@gmail.com"
            "website_themes" => "1"
            "seo_title" => "EMX Motors LLC | Electric motorbikes in Dubai UAE"
            "seo_metatag" => "Bikes, electronic bikes, emx motors, emx,"
            "seo_keyword" => "Bikes, electronic bikes, emx motors, emx,"
            "seo_description" => "<p><span id=\"docs-internal-guid-7fcec0c0-7fff-c729-66ef-aaaf235acf73\"></span></p><p dir=\"ltr\" style=\"line-height:1.38;margin-top:0pt;margin-bottom:10pt;\"><span style=\"font-size: 12pt; font-family: Calibri, sans-serif; font-weight: 400; font-style: normal; font-variant: normal; text-decoration: none; vertical-align: baseline; white-space: pre-wrap; background-color: rgb(255, 255, 255);\"><font color=\"#000000\" style=\"\">EMX Motors LLC deals with a wide range of electric motorbikes in Dubai. Check out our finest bike collections and get them now.</font></span></p>"
            "before_head_tag" => ""
            "end_body_tag" => "name"
            "sitename_logo" => "logo"
            "website_name" => "EMX Motors"
            "web_home_pages_style" => "two"
            "web_color_style" => "app"
            "free_shipping_limit" => "400"
            "app_icon_image" => "icon"
            "twilio_status" => "0"
            "twilio_authy_api_id" => ""
            "favicon" => "images/media/2021/11/uoPj528203.png"
            "Thumbnail_height" => "150"
            "Thumbnail_width" => "150"
            "Medium_height" => "400"
            "Medium_width" => "400"
            "Large_height" => "900"
            "Large_width" => "900"
            "environmentt" => "local"
            "maintenance_text" => "Website is under maintenance"
            "package_charge_taxt" => "0"
            "order_commission" => "0"
            "all_items_price_included_tax" => "yes"
            "all_items_price_included_tax_value" => "0"
            "driver_accept_multiple_order" => "1"
            "min_order_price" => "20"
            "youtube_link" => "0"
            "external_website_link" => "https://EMX Motors L.L.C.com"
            "google_map_api" => ""
            "is_pos_purchased" => "0"
            "admin_version" => "4.0.17"
            "app_version" => "4.0.17"
            "web_version" => "4.0.17"
            "pos_version" => "0"
            "android_app_link" => "#"
            "iphone_app_link" => "#"
            "about_content" => "#"
            "contact_content" => "Established in 1988, our family business has built strong networks with partners globally and locally. With branches in Canada and Sri Lanka"
            "contents" => null
            "fb_redirect_url" => "http://YOUR_DOMAIN_NAME/login/facebook/callback"
            "google_client_id" => "GOOGLE_CLIENT_ID"
            "google_client_secret" => "GOOGLE_SECRET_KEY"
            "google_redirect_url" => "http://YOUR_DOMAIN_NAME/login/google/callback"
            "newsletter" => "0"
            "allow_cookies" => "0"
            "card_style" => "1"
            "banner_style" => "1"
            "mail_chimp_api" => ""
            "mail_chimp_list_id" => ""
            "newsletter_image" => "images/media/2019/10/newsletter.jpg"
            "instauserid" => ""
            "web_card_style" => "1"
            "file" => null
          ]
          "homeBanners" => Illuminate\Support\Collection {#1124}
          "pages" => Illuminate\Support\Collection {#1099}
          "categories" => array:3 [
            0 => {#1380}
            1 => {#1091}
            2 => {#1396}
          ]
          "allcategories" => Illuminate\Support\Collection {#1400}
          "manufacturers" => Illuminate\Support\Collection {#1233}
          "total_wishlist" => 0
          "homepagebanners" => Illuminate\Support\Collection {#1156}
          "commercialBanners" => Illuminate\Support\Collection {#1383}
          "serviceBanners" => Illuminate\Support\Collection {#1353}
          "echosmartBanners" => Illuminate\Support\Collection {#1251}
          "shippingBanners" => Illuminate\Support\Collection {#1167}
          "driedfishBanners" => Illuminate\Support\Collection {#1379}
        ]
      ]
      "final_theme" => array:16 [
        "top_offer" => """
          <div class="alert alert-warning alert-dismissible fade show" role="alert">\n
              <div class="container">\n
                  <div class="pro-description">\n
                    <div class="pro-info">\n
                      Get<strong> UPTO 40% OFF </strong>on your 1st order\r\n
           <div class="pro-link-dropdown js-toppanel-link-dropdown">\r\n
           <a href="/shop" class="pro-dropdown-toggle">\r\n
          SHOP NOW\r\n
          </a>\r\n
          </div>          </div>\n
                    <button type="button" class="close" data-dismiss="alert" aria-label="Close">\n
                        <span aria-hidden="true">×</span>\n
                      </button>\n
                  </div>\n
          \n
              </div>\n
            </div>\n
            
          """
        "header" => """
          <header class="header-main" id="inner-header">\n
                <div class="nav-area-full">\n
                  <div class="container">\n
                    <div class="row">\n
                      <div class="col-lg-3 logo-area">\n
                        <div class="logo"><a href="https://emxmotors.com"> <img class="img-fluid" src="https://emxmotors.com/images/media/2022/01/T2Fqj03409.png" alt="*" /> <!-- <span>a</span>l <span>a</span>zhar <strong>motors</strong> --></a></div>\n
                      </div>\n
                      <div class="col-lg-9 d-flex">\n
                        <div class="main-menu align-self-center d-none d-lg-block">\n
                          <ul>\n
                               <li class="nav-item dropdown AboutUs-menu"><a  href="/about" >About Us</a></li><li class="nav-item dropdown MXkids-menu"><a href="javascript:" >MX kids</a><ul class="sub-menu" >\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"   href="javascript:">\n
                              Torrot Bikes\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/1">\n
                              SUPERMOTARD ONE\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/11">\n
                              SUPERMOTARD TWO\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/3">\n
                              MOTOCROSS ONE\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/2">\n
                              MOTOCROSS TWO\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/5">\n
                              TRIAL ONE\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/4">\n
                              TRIAL TWO\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/torrot">Show More</a></li></ul></li><li class="nav-item dropdown MXBikes-menu"><a  href="#" >MX Bikes</a><ul class="sub-menu" >\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Drillone Bikes\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=73">\n
                              Drillone Enduro\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=73">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Talaria Bikes\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=85">\n
                              Talaria Bikes\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=85">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              BHR Bikes\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/bhr_bikes">\n
                              BHR Bikes\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/bhr_bikes">Show More</a></li></ul></li><li class="nav-item dropdown E-Bikes-menu"><a  href="https://emxmotors.com/#our-collection-sec" >E-Bikes</a><ul class="sub-menu" >\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Urbet Bikes\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=69">\n
                              Urbet Nura\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=70">\n
                              Urbet Gadiro\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=71">\n
                              Urbet Ego\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=72">\n
                              Urbet Riazor\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/category-detail?slidercategory=urbet-bikes">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Delfast Bikes\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=74">\n
                              Delfast Top 3.0\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=74">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Silverback\n
                          </a>\n
                      <a class="show-more-btn" href="javascript:">Coming Soon</a></li></ul></li><li class="nav-item dropdown E-scooters-menu"><a  href="javascript:;" >E-scooters</a><ul class="sub-menu" >\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Fidico E-scooters\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=89">\n
                              Black Knight ( 11-40AH )\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=90">\n
                              Black Knight ( 11-45Ah )\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=91">\n
                              Black Knight ( 11P-40Ah )\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=92">\n
                              Black Knight ( 11P-60Ah )\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=93">\n
                              Light Speed ( 13-40AH )\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=94">\n
                              Light Speed (13-60AH)\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/category-detail?slidercategory=fidico-escooters">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Nami E-scooters\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=95">\n
                              Nami Burn E\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=96">\n
                              Burn E-2   Max\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/category-detail?slidercategory=nami">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Numo E-scooters\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=97">\n
                              Slack\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=97">Show More</a></li></ul></li><li class="nav-item dropdown Products-menu"><a  href="https://emxmotors.com/products" >Products</a><ul class="sub-menu" >\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/shop?category=helmets">\n
                              Helmets\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/sb-34-zorro-white">\n
                              SB-34 zorro white\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/blade-helmet">\n
                              blade helmet\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/shop?category=helmets">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/shop?category=accessories">\n
                              Accessories\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/gloves">\n
                              gloves\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/shoes">\n
                              Shoes\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/shop?category=accessories">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/shop?category=mod-shop">\n
                              Mod Shop\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/ebmx">\n
                              EBMX\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              KO\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Kaniwaba\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/shop?category=mod-shop">Show More</a></li></ul></li><li class="nav-item dropdown Services-menu"><a  href="javascript:;" >Services</a><ul class="sub-menu" >\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=e-bike-repairing-services">\n
                              e-bike repairing services\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=e-bike-and-e-motor-services">\n
                              e-bike and e-motor services\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=e-bike-services">\n
                              custom e-bike services\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=ride-testing-experience">\n
                              ride testing experience\n
                          </a>\n
                      </ul></li><li class="nav-item dropdown Blogs-menu"><a  href="http://emxmotors.com/blogs" >Blogs</a></li><li class="nav-item dropdown Contact-menu"><a  href="/contact" >Contact</a></li>\n
                            <!-- <li><a href="javascript:;">Home</a></li>\n
                            <li><a href="javascript:;">Bikes</a></li>\n
                            <li><a href="javascript:;">Products</a></li>\n
                            <li><a href="javascript:;">Blogs</a></li> -->\n
                            <li id="top-search"><a href="javascript:;" id="showBtn">\n
                              <ul id="list-dots">\n
                                <li></li>\n
                                <li></li>\n
                                <li></li>\n
                                <li></li>\n
                                <li></li>\n
                                <li></li>\n
                                <li></li>\n
                                <li></li>\n
                                <li></li>\n
                              </ul>\n
                            </a></li>\n
                            <li id="top-icon"><a href="javascript:;"  onclick="openSearch()"><span></span></a></li>\n
                          </ul>\n
                        </div>\n
                      </div>\n
                    </div>\n
                  </div>\n
                </div>\n
              </header>
          """
        "mobile_header" => """
          <header id="headerMobile" class="header-area header-mobile d-lg-none d-xl-none">\n
              <div class="header-mini bg-top-bar">\n
                <div class="container">\n
                  <div class="row align-items-center">\n
                    <div class="col-12">\n
          \n
                      <nav id="navbar_0" class="navbar navbar-expand-md navbar-dark navbar-0">\n
                        <div class="navbar-lang">\n
          \n
                                          \n
                                          <div class="select-control currency" >\n
                            <select class="form-control " onchange="myFunction2(this.options[this.selectedIndex].value)">\n
                                                <option  selected  value="1">\n
                              \n
                              USD\n
                                                      ($)</span>\n
                                                      \n
                              </option>\n
                                                <option  value="9">\n
                              \n
                              AED\n
                                                      (د.إ)\n
                                                      \n
                              </option>\n
                                                </select> \n
                          </div>\n
                                              <!-- END  Currency LANGUAGE CODE SECTION -->                \n
                      </nav>\n
                    </div>\n
                  </div>\n
                </div>\n
              </div>\n
              <div class="header-maxi bg-header-bar ">\n
                <div class="container">\n
          \n
                  <div class="row align-items-center">\n
                    <div class="col-2 pr-0">\n
                        <div class="navigation-mobile-container">\n
                            <a href="javascript:void(0)" class="navigation-mobile-toggler">\n
                                <span class="fas fa-bars"></span>\n
                            </a>\n
                            <nav id="navigation-mobile">\n
                                <div class="logout-main">\n
                                    <div class="welcome">\n
                                      <span> </span>\n
                                    </div>\n
                                                          </div>\n
          \n
                                <li class="nav-item dropdown "><a class="nav-link  "  href="https://emxmotors.com//about" >About Us</a></li><li class="nav-item dropdown "><a class="nav-link  dropdown-toggle" href="javascript:" >MX kids</a><div class="dropdown-menu deskMenu" >\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"   href="javascript:">\n
                              Torrot Bikes\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/1">\n
                              SUPERMOTARD ONE\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/11">\n
                              SUPERMOTARD TWO\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/3">\n
                              MOTOCROSS ONE\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/2">\n
                              MOTOCROSS TWO\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/5">\n
                              TRIAL ONE\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/torrot_detail/4">\n
                              TRIAL TWO\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/torrot">Show More</a></li></div></li><li class="nav-item dropdown "><a class="nav-link  dropdown-toggle"  href="https://emxmotors.com/#" >MX Bikes</a><div class="dropdown-menu deskMenu" >\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Drillone Bikes\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=73">\n
                              Drillone Enduro\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=73">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Talaria Bikes\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=85">\n
                              Talaria Bikes\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=85">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              BHR Bikes\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/bhr_bikes">\n
                              BHR Bikes\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/bhr_bikes">Show More</a></li></div></li><li class="nav-item dropdown "><a href="javascript:">E-Bikes</a><ul class="sub-menu"><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=black-knight">Black Knight</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=92">BlackKnight BK11P-60Ah</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=91">BlackKnight BK11P-40Ah</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=90">BlackKnight BK11-45Ah</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=89">BlackKnight BK11-40AH</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=74">delfast bikes</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=74">DELFAST Top 3.0</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=73">drillone bikes</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=73">Drillone Enduro</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=fidico-escooters">Fidico E-scooters</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=87">Lightspeed Knight</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=86">Black Knight</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=94">Lightspeed LK13-60AH</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=93">Lightspeed LK13-40AH</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=92">BlackKnight BK11P-60Ah</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=91">BlackKnight BK11P-40Ah</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=90">BlackKnight BK11-45Ah</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=89">BlackKnight BK11-40AH</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=lightspeed">Lightspeed</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=94">Lightspeed LK13-60AH</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=93">Lightspeed LK13-40AH</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=nami">Nami</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=96">Nami Burn E-2 Max</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=95">Nami Burn E</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=numo">Numo</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=97">NUMO Core 920R</a></li></ul></li><li class="nav-item dropdown"><a href="javascript:">Silverback Bikes</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=talaria">Talaria Bikes</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=85">Talaria Bikes</a></li></ul></li><li class="nav-item dropdown"><a href="javascript:">TORROT BIKES</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/category-detail?slidercategory=urbet-bikes">urbet bikes</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=69">urbet nura</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=72">urbet riazor</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=71">urbet ego</a></li><li class="nav-item dropdown"><a href="https://emxmotors.com/sliderproduct-detail?sliderproduct=70">urbet gadiro</a></li></ul></li></ul></li><div class="dropdown-menu deskMenu" >\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Urbet Bikes\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=69">\n
                              Urbet Nura\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=70">\n
                              Urbet Gadiro\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=71">\n
                              Urbet Ego\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=72">\n
                              Urbet Riazor\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/category-detail?slidercategory=urbet-bikes">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Delfast Bikes\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=74">\n
                              Delfast Top 3.0\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=74">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Silverback\n
                          </a>\n
                      <a class="show-more-btn" href="javascript:">Coming Soon</a></li></div></li><li class="nav-item dropdown "><a class="nav-link  dropdown-toggle"  href="https://emxmotors.com/javascript:;" >E-scooters</a><div class="dropdown-menu deskMenu" >\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Fidico E-scooters\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=89">\n
                              Black Knight ( 11-40AH )\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=90">\n
                              Black Knight ( 11-45Ah )\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=91">\n
                              Black Knight ( 11P-40Ah )\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=92">\n
                              Black Knight ( 11P-60Ah )\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=93">\n
                              Light Speed ( 13-40AH )\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=94">\n
                              Light Speed (13-60AH)\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/category-detail?slidercategory=fidico-escooters">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Nami E-scooters\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=95">\n
                              Nami Burn E\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=96">\n
                              Burn E-2   Max\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/category-detail?slidercategory=nami">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Numo E-scooters\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/sliderproduct-detail?sliderproduct=97">\n
                              Slack\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/sliderproduct-detail?sliderproduct=97">Show More</a></li></div></li><li class="nav-item dropdown"><a href="javascript:">Products</a><ul class="sub-menu"><li class="nav-item dropdown"><a href="https://emxmotors.com/shop?category=helmets" >Helmets</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="product-detail/blade-helmet">Blade Helmet</a></li><li class="nav-item dropdown"><a href="product-detail/sb-34-zorro-white">SB-34 ZORRO WHITE</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/shop?category=accessories" >Accessories</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="product-detail/gloves">Gloves</a></li><li class="nav-item dropdown"><a href="product-detail/shoes">Shoes</a></li></ul></li></ul><div class="dropdown-menu deskMenu" >\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/shop?category=helmets">\n
                              Helmets\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/sb-34-zorro-white">\n
                              SB-34 zorro white\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/blade-helmet">\n
                              blade helmet\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/shop?category=helmets">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/shop?category=accessories">\n
                              Accessories\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/gloves">\n
                              gloves\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/product-detail/shoes">\n
                              Shoes\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/shop?category=accessories">Show More</a></li>\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/shop?category=mod-shop">\n
                              Mod Shop\n
                          </a>\n
                      \n
                          <ul class="sub-menu-child">\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  target="_blank" href="https://emxmotors.com/ebmx">\n
                              EBMX\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              KO\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="javascript:;">\n
                              Kaniwaba\n
                          </a>\n
                      </ul><a class="show-more-btn" href="https://emxmotors.com/shop?category=mod-shop">Show More</a></li></div></li><li class="nav-item dropdown"><a href="javascript:">Services</a><ul class="sub-menu"><li class="nav-item dropdown"><a href="https://emxmotors.com/shop?category=helmets" >Helmets</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="product-detail/blade-helmet">Blade Helmet</a></li><li class="nav-item dropdown"><a href="product-detail/sb-34-zorro-white">SB-34 ZORRO WHITE</a></li></ul></li><li class="nav-item dropdown"><a href="https://emxmotors.com/shop?category=accessories" >Accessories</a><ul class="sub-menu-child"><li class="nav-item dropdown"><a href="product-detail/gloves">Gloves</a></li><li class="nav-item dropdown"><a href="product-detail/shoes">Shoes</a></li></ul></li></ul><div class="dropdown-menu deskMenu" >\n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=e-bike-repairing-services">\n
                              e-bike repairing services\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=e-bike-and-e-motor-services">\n
                              e-bike and e-motor services\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=e-bike-services">\n
                              custom e-bike services\n
                          </a>\n
                      \n
                          <li class="nav-item dropdown"><a class="dropdown-item ascasc"  href="https://emxmotors.com/customwork?page_name=ride-testing-experience">\n
                              ride testing experience\n
                          </a>\n
                      </div></li><li class="nav-item dropdown "><a class="nav-link  "  href="https://emxmotors.com/http://emxmotors.com/blogs" >Blogs</a></li><li class="nav-item dropdown "><a class="nav-link  "  href="https://emxmotors.com//contact" >Contact</a></li>\n
                               \n
                                                        <div class="nav-link">Welcome!</div>\n
                                   <a href="https://emxmotors.com/login" class="main-manu btn btn-primary"><i class="fa fa-lock" aria-hidden="true"></i>&nbsp;Login/Register</a>\n
                                                   </nav>\n
                        </div>\n
          \n
                    </div>\n
          \n
          \n
          \n
                    <div class="col-8">\n
                      <a href="https://emxmotors.com" class="logo">\n
                        \n
                                      <img class="img-fluid" src="https://emxmotors.com/images/media/2022/01/T2Fqj03409.png" alt="EMX Motors">\n
                                   </a>\n
                    </div>\n
          \n
                    <div class="col-2 pl-0">              \n
                        <ul class="pro-header-right-options" id="resposive-header-cart">\n
                          <li class="dropdown">\n
          \n
                        \n
              <button class="btn dropdown-toggle" type="button" id="headerOneCartButton" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false"> \n
              <div class="cart-left">\n
                <i class="fas fa-shopping-bag"></i>\n
                <span class="badge badge-secondary">0</span>\n
              </div>\n
            \n
              </button> \n
              \n
                \n
                    <div class="dropdown-menu dropdown-menu-right" aria-labelledby="headerOneCartButton">\n
                        <ul class="shopping-cart-items">\n
                            <li>You have no items in your shopping cart.</li>\n
                        </ul>\n
                    </div>\n
                      \n
            \n
            \n
            \n
            \n
          <!--\n
            <script src="https://code.jquery.com/jquery-1.9.1.js"></script>\n
            <script src="https://code.jquery.com/ui/1.11.0/jquery-ui.js"></script>\n
          -->\n
                          </ul> \n
                    </div>\n
                    </div>\n
                  </div>\n
                </div>\n
              </div>\n
            </div>\n
                <div class="header-navbar bg-menu-bar">\n
                <div class="container">\n
                  <form class="form-inline" action="https://emxmotors.com/shop" method="get">\n
                    <div class="search">\n
                      <div class="select-control">\n
                        <select class="form-control" name="category">\n
                          <option value="">Categories</option><option value="helmets" >Helmets</option><option value="accessories" >Accessories</option><option value="mod-shop" >Mod Shop</option><option value="ebmx" >-EBMX</option><option value="ko" >-KO</option><option value="kaniwaba" >-Kaniwaba</option>              </select>\n
                      </div>\n
                      <input  type="search" name="search" placeholder="Search Products..."  value="">\n
                      <button class="btn btn-secondary" type="submit">\n
                      <i class="fa fa-search"></i></button>\n
                    </div>\n
                  </form>\n
                </div>\n
              </div>\n
          </header>\n
          """
        "carousel" => """
          <!-- Bootstrap Carousel Content Full Screen -->\n
          \n
          <section class="carousel-content">\n
            <div class="container-fuild">\n
              <div id="carouselExampleIndicators1" class="carousel slide" data-ride="carousel">\n
              <ol class="carousel-indicators">\n
          \n
                \n
              </ol>\n
              <div class="carousel-inner">\n
                     \n
              </div>\n
          \n
              <a class="carousel-control-prev" href="#carouselExampleIndicators1" role="button" data-slide="prev">\n
                <span class="sr-only"></span>\n
              </a>\n
              <a class="carousel-control-next" href="#carouselExampleIndicators1" role="button" data-slide="next">\n
                <span class="sr-only"></span>\n
              </a>\n
            </div>\n
            </div>\n
          </section>\n
          """
        "banner" => """
          <!-- //banner three -->\n
          <div class="banner-three">\n
                    \n
            <div class="container">\n
                <div class="group-banners">\n
                    <div class="row">\n
                        <div class="col-12 col-md-4">\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                      <figure class="banner-image ">\n
                              <a href="/shop"><img class="img-fluid" src="https://emxmotors.com/images/media/2019/09/4iGAB10408.jpg" alt="Banner Image"></a>\n
                            </figure>\n
                                                                                                                                                          </div>\n
                      <div class="col-12 col-md-8">\n
                      \n
                        <div class="row">\n
                          <div class="col-12 col-md-6">\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  <figure class="banner-image ">\n
                                <a href="/shop"><img class="img-fluid" src="https://emxmotors.com/images/media/2019/09/MImPw10908.jpg" alt="Banner Image"></a>\n
                              </figure>\n
                                                                                                                                </div>\n
                          <div class="col-12 col-md-6">\n
          \n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <figure class="banner-image ">\n
                             <a href="/shop"><img class="img-fluid" src="https://emxmotors.com/images/media/2019/09/X2FFc10408.jpg" alt="Banner Image"></a>\n
                           </figure>\n
                                                                          </div>\n
                        </div>\n
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  <figure class="banner-image " style="margin-top: 30px;">\n
                                <a href="/shop"><img class="img-fluid" src="https://emxmotors.com/images/media/2019/09/pc7OR10108.jpg" alt="Banner Image"></a>\n
                              </figure>\n
                                                                                                                                                                                                          </div>\n
                      \n
                                                    \n
                    </div>\n
                  </div>\n
            </div>\n
          \n
          </div> \n
          """
        "footer" => """
          <!--Footer Section Start -->\n
          <footer class="footer">\n
            <div class="container">\n
              <div class="row">\n
                <div class="col-lg-3 wow fadeInLeft" data-wow-duration="1s" data-wow-delay="0.3s">\n
                  <div class="footer-one">\n
                    <ul>\n
                                  <li><a href="tel:(04) 345 0700">(04) 345 0700</a></li>\n
                      \n
                      <li><a href="tel:+971 56 555 2200">+971 56 555 2200</a></li>\n
                      <li><a href="mailto:emx.motorsme@gmail.com">emx.motorsme@gmail.com</a></li>\n
                        <li class="locIconn"><a target="_blank" href="https://maps.google.com/maps?q=25.12298011779785%2C55.20968246459961&z=17&hl=en">\n
                        EMX MOTORS LLC Al Quoz Industrial Area 3 Plot: 253-0 Makani: 19533-79750 Warehouse #1 Dubai - United Arab Emirates\n
                        </a></li>\n
                                    <li class="locIconn"><a target="_blank" href="https://www.google.com/maps/place/Al+Quoz+-+Al+Quoz+4+-+Dubai+-+United+Arab+Emirates/@25.1526941,55.2424443,15z/data=!3m1!4b1!4m5!3m4!1s0x3e5f69984282d957:0xb3f17e05e0d607ae!8m2!3d25.1514047!4d55.250782">\n
                        USA - 100 N Central Expressway 613, Richardson, TX 75080 . \n
                        </a></li>\n
                      \n
                      \n
                    </ul>\n
                  </div>\n
                </div>\n
                <div class="col-lg-4 offset-lg-1 wow fadeInUp" data-wow-duration="1s" data-wow-delay="0.3s">\n
                  <div class="footer-two">\n
                    <div class="fotoer-logo">\n
                      <img src="https://emxmotors.com/images/al-azhar-logo-footer.png" class="img-fluid">\n
                    </div>\n
                    <ul class="footer-menu-links">\n
                      <li><a href="https://emxmotors.com">Home</a></li>\n
                      <li><a href="https://emxmotors.com/about">About Us</a></li>\n
                      <li><a href="https://emxmotors.com/#our-collection-sec">Bikes</a></li>\n
                      <!-- <li><a href="https://emxmotors.com/products">Products</a></li> -->\n
                      <li><a href="https://emxmotors.com/news">Blogs</a></li>\n
                      <li><a href="https://emxmotors.com/contact">Contact</a></li>\n
                    </ul>\n
                    <div class="newsletter-box">\n
                    <h6>Get the freshest Offers and News</h6>\n
                      <form action="">\n
                        <input type="text" placeholder="Your email here">\n
                        <div class="ct-btn">\n
                          <input type="submit" value="Subscribe">\n
                        </div>\n
                      </form>\n
                    </div>\n
                    \n
          \n
                    <div class="follow-us-box">\n
                      <h5>Follow Us</h5>\n
                      <ul>\n
                        <li><a href="https://www.facebook.com/emxmotorsuae/" target="blank"><i class="fa fa-facebook"></i></a></li>\n
                        <li><a href="https://www.instagram.com/emxmotorsme/" target="blank"><i class="fa fa-instagram"></i></a></li>\n
                        <!-- <li><a href="https://www.twitter.com" target="blank"><i class="fa fa-twitter"></i></a></li> -->\n
                        <li><a href="https://www.youtube.com/channel/UC92lCaRzfimi_Hrw3MQo7TQ" target="blank"><i class="fa fa-youtube-play"></i></a></li>\n
                      </ul>\n
                    </div>\n
                  </div>\n
                </div>\n
                <div class="col-lg-3 offset-lg-1 wow fadeInRight">\n
                  <div class="rss-feed-box">\n
          <script src="https://apps.elfsight.com/p/platform.js" defer></script>\n
          <div class="elfsight-app-91a789a2-e7fb-42bf-a07a-0e5b6595b145"></div>\n
                   \n
                  </div>\n
                </div>\n
          \n
                <div class="disclaimer">\n
                  <div class="row">\n
                    <div class="col-lg-3">\n
                    <!-- <div class="col-lg-3 wow  bounceInUp"   data-wow-duration="2s" data-wow-delay="0.3s"> -->\n
                      <ul class="disclaimer-links">\n
                        <li><a href="https://emxmotors.com/page?name=privacy-policy">Privacy  Policy</a></li>\n
                        <li><a href="https://emxmotors.com/page?name=term-services">Terms Of Services</a></li>\n
                      </ul>\n
                    </div>\n
                    <div class="col-lg-6">\n
                      <p>© <span id="year"></span> EMX Motors L.L.C, ALL RIGHTS RESERVED</p>\n
                    </div>\n
                    <div class="col-lg-3">\n
                      <h6>Designed and Developed By :  \n
                          <!-- <a href="https://www.digitalsetgo.com/" target="blank">DigitalsetGo</a> -->\n
                          DigitalsetGo\n
                      </h6>\n
                    </div>\n
                  </div>\n
                </div>\n
              </div>\n
            </div>\n
          </footer>\n
          <!-- Footer Section End -->\n
          \n
          \n
          \n
          \n
          </main>\n
          <script src="https://emxmotors.com/assets/js/jquery.min.js"></script> \n
          <!-- <script type="text/javascript" src="https://emxmotors.com/assets/js/bootstrap.min.js"></script>  -->\n
          \n
          <script src="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0/js/bootstrap.min.js" integrity="sha384-JZR6Spejh4U02d8jOt6vLEHfe/JQGiRRSQQxSfFWpi1MquVdAyjUar5+76PVCmYl" crossorigin="anonymous" data-pagespeed-no-defer></script>\n
          <script type="text/javascript" src="https://emxmotors.com/assets/js/jquery.fancybox.min.js" data-pagespeed-no-defer></script> \n
          <script type="text/javascript" src="https://emxmotors.com/assets/js/wow.js" data-pagespeed-no-defer></script> \n
          <script type="text/javascript" src="https://emxmotors.com/assets/js/functions.js" data-pagespeed-no-defer></script> \n
          <script type="text/javascript" src="https://emxmotors.com/assets/js/slick.js" data-pagespeed-no-defer></script> \n
          <script>\n
          $(document).ready(function(){\n
              $('#hideBtn').click(function(){\n
                $('#box').fadeOut('slow');\n
              });\n
              $('#showBtn').click(function(){\n
                $('#box').fadeIn('slow');\n
              });\n
          \n
               $('#three-btn').click(function(){\n
                $('#three-btn-div').toggle();\n
              });\n
          \n
          $('.devTab ul li:first-child a').addClass('active');\n
          $('.tabArea .tabPnl:first-child').fadeIn();\n
              $('.devTab li a').click(function () {\n
                  var datSrc = $(this).data('tab');\n
                    $('.devTab li a').removeClass('active');\n
                    $(this).addClass('active');\n
                    $('.tabArea .tabPnl').hide();\n
                    $('.tabArea .tabPnl'+datSrc).fadeIn();\n
                });   \n
          \n
          \n
          \n
            });\n
          \n
          \n
          function openSearch() {\n
            document.getElementById("myOverlay").style.display = "block";\n
          }\n
          \n
          function closeSearch() {\n
            document.getElementById("myOverlay").style.display = "none";\n
          }\n
          \n
          \n
          //load more products\n
          jQuery(document).on('click', '#load_products', function(e){\n
            jQuery('#loader').css('display','flex');\n
            var page_number = jQuery('#page_number').val();\n
            var total_record = jQuery('#total_record').val();\n
            var products_style = jQuery('#products_style').val();\n
            var pagelayout = jQuery('#pagelayout').val();\n
            \n
            var formData = jQuery("#load_products_form").serialize();\n
            jQuery.ajax({\n
              headers: {'X-CSRF-TOKEN': jQuery('meta[name="csrf-token"]').attr('content')},\n
              url: 'https://emxmotors.com/filterProducts',\n
              type: "POST",\n
              data: formData,\n
              success: function (res) {\n
                if(jQuery.trim().res==0){\n
                  // jQuery('#load_products').hide();\n
                  // jQuery('#loaded_content').show();\n
                }else{\n
                  page_number++;\n
                  jQuery('#page_number').val(page_number);\n
                  jQuery('.swap .row').html(res);\n
                      // jQuery('.swap .row').html(res);\n
                  jQuery('.swap2 .row').html(res);\n
                  var record_limit = jQuery('#filter_total_record').val();\n
          \n
                  var showing_record = record_limit;\n
                  if(total_record<=showing_record){\n
            \n
                    jQuery('.showing_record').html(total_record);\n
                    jQuery('#load_products').hide();\n
                    jQuery('#loaded_content').show();\n
                  }else{\n
                    jQuery('.showing_record').html(showing_record);\n
                  }\n
                }\n
          \n
                \n
                if(pagelayout !== undefined){\n
                  if(products_style == 'list'){\n
                    jQuery( '#swap2 .col-12' ).removeClass( 'griding' );\n
                    jQuery( '#swap2 .col-12' ).removeClass( 'col-md-6' );\n
                    jQuery( '#swap2 .col-12' ).removeClass( 'col-lg-3' );\n
                    jQuery( '#swap2 .col-12' ).addClass( 'listing' );\n
          \n
                  }else{\n
                    jQuery( '#swap2 .col-12' ).addClass( 'griding' );\n
                    jQuery( '#swap2 .col-12' ).addClass( 'col-md-6' );\n
                    jQuery( '#swap2 .col-12' ).addClass( 'col-lg-3' );\n
                    jQuery( '#swap2 .col-12' ).removeClass( 'listing' );\n
                  }\n
                }else{\n
                  if(products_style == 'list'){\n
                    jQuery( '#swap .col-12' ).removeClass( 'griding' );\n
                    jQuery( '#swap .col-12' ).removeClass( 'col-lg-4' );\n
                    jQuery( '#swap .col-12' ).removeClass( 'col-sm-6' );\n
                    jQuery( '#swap .col-12' ).addClass( 'listing' );\n
          \n
                  }else{\n
                    jQuery( '#swap .col-12' ).removeClass( 'listing' );\n
                    jQuery( '#swap .col-12' ).addClass( 'col-lg-4' );\n
                    jQuery( '#swap .col-12' ).addClass( 'col-sm-6' );       \n
                    jQuery( '#swap .col-12' ).addClass( 'griding' );\n
                  }\n
                }\n
          \n
                \n
          \n
                jQuery('#loader').hide();\n
              },\n
            });\n
          });\n
          \n
          </script>\n
          \n
          <!-- <script src='https://unpkg.com/spritespin@x.x.x/release/spritespin.js' type='text/javascript'></script> -->\n
          \n
          \n
          <script type="text/javascript">\n
          (function (global, factory) {\n
            typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :\n
            typeof define === 'function' && define.amd ? define(['exports'], factory) :\n
            (factory((global.SpriteSpin = {})));\n
          }(this, (function (exports) { 'use strict';\n
          \n
          /**\n
           * @internal\n
           */\n
          var Api = /** @class  */ (function () {\n
              function Api(data) {\n
                  this.data = data;\n
              }\n
              return Api;\n
          }());\n
          /**\n
           * Adds methods to the SpriteSpin api\n
           *\n
           * @public\n
           */\n
          function extendApi(methods) {\n
              var api = Api.prototype;\n
              for (var key in methods) {\n
                  if (methods.hasOwnProperty(key)) {\n
                      if (api[key]) {\n
                          throw new Error('API method is already defined: ' + key);\n
                      }\n
                      else {\n
                          api[key] = methods[key];\n
                      }\n
                  }\n
              }\n
              return api;\n
          }\n
          \n
          var $$1 = window.jQuery || window.$;\n
          \n
          function getCursorPosition(event) {\n
              var touches = event.touches;\n
              var source = event;\n
              // jQuery Event normalization does not preserve the 'event.touches'\n
              // try to grab touches from the original event\n
              if (event.touches === undefined && event.originalEvent !== undefined) {\n
                  touches = event.originalEvent.touches;\n
              }\n
              // get current touch or mouse position\n
              if (touches !== undefined && touches.length > 0) {\n
                  source = touches[0];\n
              }\n
              return {\n
                  x: source.clientX || 0,\n
                  y: source.clientY || 0\n
              };\n
          }\n
          \n
          var canvas;\n
          var context;\n
          function detectionContext() {\n
              if (context) {\n
                  return context;\n
              }\n
              if (!canvas) {\n
                  canvas = document.createElement('canvas');\n
              }\n
              if (!canvas || !canvas.getContext) {\n
                  return null;\n
              }\n
              context = canvas.getContext('2d');\n
              return context;\n
          }\n
          /**\n
           * Idea taken from https://github.com/stomita/ios-imagefile-megapixel\n
           * Detects whether the image has been sub sampled by the browser and does not have its original dimensions.\n
           * This method unfortunately does not work for images that have transparent background.\n
           */\n
          function detectSubsampling(img, width, height) {\n
              if (!detectionContext()) {\n
                  return false;\n
              }\n
              // sub sampling happens on images above 1 megapixel\n
              if (width * height <= 1024 * 1024) {\n
                  return false;\n
              }\n
              // set canvas to 1x1 pixel size and fill it with magenta color\n
              canvas.width = canvas.height = 1;\n
              context.fillStyle = '#FF00FF';\n
              context.fillRect(0, 0, 1, 1);\n
              // render the image with a negative offset to the left so that it would\n
              // fill the canvas pixel with the top right pixel of the image.\n
              context.drawImage(img, -width + 1, 0);\n
              // check color value to confirm image is covering edge pixel or not.\n
              // if color still magenta, the image is assumed to be sub sampled.\n
              try {\n
                  var dat = context.getImageData(0, 0, 1, 1).data;\n
                  return (dat[0] === 255) && (dat[1] === 0) && (dat[2] === 255);\n
              }\n
              catch (err) {\n
                  // avoids cross origin exception for chrome when code runs without a server\n
                  return false;\n
              }\n
          }\n
          \n
          /**\n
           *\n
           */\n
          function getOuterSize(data) {\n
              var width = Math.floor(data.width || data.frameWidth || data.target.innerWidth());\n
              var height = Math.floor(data.height || data.frameHeight || data.target.innerHeight());\n
              return {\n
                  aspect: width / height,\n
                  height: height,\n
                  width: width\n
              };\n
          }\n
          function getComputedSize(data) {\n
              var size = getOuterSize(data);\n
              if (typeof window.getComputedStyle !== 'function') {\n
                  return size;\n
              }\n
              var style = window.getComputedStyle(data.target[0]);\n
              if (!style.width) {\n
                  return size;\n
              }\n
              size.width = Math.floor(Number(style.width.replace('px', '')));\n
              size.height = Math.floor(size.width / size.aspect);\n
              return size;\n
          }\n
          /**\n
           *\n
           */\n
          function getInnerSize(data) {\n
              var width = Math.floor(data.frameWidth || data.width || data.target.innerWidth());\n
              var height = Math.floor(data.frameHeight || data.height || data.target.innerHeight());\n
              return {\n
                  aspect: width / height,\n
                  height: height,\n
                  width: width\n
              };\n
          }\n
          /**\n
           *\n
           */\n
          function getInnerLayout(mode, inner, outer) {\n
              // get mode\n
              var isFit = mode === 'fit';\n
              var isFill = mode === 'fill';\n
              var isMatch = mode === 'stretch';\n
              // resulting layout\n
              var layout = {\n
                  width: '100%',\n
                  height: '100%',\n
                  top: 0,\n
                  left: 0,\n
                  bottom: 0,\n
                  right: 0,\n
                  position: 'absolute',\n
                  overflow: 'hidden'\n
              };\n
              // no calculation here\n
              if (!mode || isMatch) {\n
                  return layout;\n
              }\n
              // get size and aspect\n
              var aspectIsGreater = inner.aspect >= outer.aspect;\n
              // mode == original\n
              var width = inner.width;\n
              var height = inner.height;\n
              // keep aspect ratio but fit/fill into container\n
              if (isFit && aspectIsGreater || isFill && !aspectIsGreater) {\n
                  width = outer.width;\n
                  height = outer.width / inner.aspect;\n
              }\n
              if (isFill && aspectIsGreater || isFit && !aspectIsGreater) {\n
                  height = outer.height;\n
                  width = outer.height * inner.aspect;\n
              }\n
              // floor the numbers\n
              width = Math.floor(width);\n
              height = Math.floor(height);\n
              // position in center\n
              layout.width = width;\n
              layout.height = height;\n
              layout.top = Math.floor((outer.height - height) / 2);\n
              layout.left = Math.floor((outer.width - width) / 2);\n
              layout.right = layout.left;\n
              layout.bottom = layout.top;\n
              return layout;\n
          }\n
          \n
          var img;\n
          /**\n
           * gets the original width and height of an image element\n
           */\n
          function naturalSize(image) {\n
              // for browsers that support naturalWidth and naturalHeight properties\n
              if (image.naturalWidth) {\n
                  return {\n
                      height: image.naturalHeight,\n
                      width: image.naturalWidth\n
                  };\n
              }\n
              // browsers that do not support naturalWidth and naturalHeight properties have to fall back to the width and\n
              // height properties. However, the image might have a css style applied so width and height would return the\n
              // css size. To avoid that create a new Image object that is free of css rules and grab width and height\n
              // properties\n
              //\n
              // assume that the src has already been downloaded, so no onload callback is needed.\n
              img = img || new Image();\n
              img.crossOrigin = image.crossOrigin;\n
              img.src = image.src;\n
              return {\n
                  height: img.height,\n
                  width: img.width\n
              };\n
          }\n
          \n
          /**\n
           * Measures the image frames that are used in the given data object\n
           */\n
          function measure(images, options) {\n
              if (images.length === 1) {\n
                  return [measureSheet(images[0], options)];\n
              }\n
              else if (options.framesX && options.framesY) {\n
                  return measureMutipleSheets(images, options);\n
              }\n
              else {\n
                  return measureFrames(images, options);\n
              }\n
          }\n
          function measureSheet(image, options) {\n
              var result = { id: 0, sprites: [] };\n
              measureImage(image, options, result);\n
              var frames = options.frames;\n
              var framesX = Number(options.framesX) || frames;\n
              var framesY = Math.ceil(frames / framesX);\n
              var frameWidth = Math.floor(result.width / framesX);\n
              var frameHeight = Math.floor(result.height / framesY);\n
              var divisor = result.isSubsampled ? 2 : 1;\n
              for (var i = 0; i < frames; i++) {\n
                  var x = (i % framesX) * frameWidth;\n
                  var y = Math.floor(i / framesX) * frameHeight;\n
                  result.sprites.push({\n
                      id: i,\n
                      x: x, y: y,\n
                      width: frameWidth,\n
                      height: frameHeight,\n
                      sampledX: x / divisor,\n
                      sampledY: y / divisor,\n
                      sampledWidth: frameWidth / divisor,\n
                      sampledHeight: frameHeight / divisor\n
                  });\n
              }\n
              return result;\n
          }\n
          function measureFrames(images, options) {\n
              var result = [];\n
              for (var id = 0; id < images.length; id++) {\n
                  // TODO: optimize\n
                  // don't measure images with same size twice\n
                  var sheet = measureSheet(images[id], { frames: 1, framesX: 1, detectSubsampling: options.detectSubsampling });\n
                  sheet.id = id;\n
                  result.push(sheet);\n
              }\n
              return result;\n
          }\n
          function measureMutipleSheets(images, options) {\n
              var result = [];\n
              for (var id = 0; id < images.length; id++) {\n
                  // TODO: optimize\n
                  // don't measure images with same size twice\n
                  var sheet = measureSheet(images[id], {\n
                      frames: undefined,\n
                      framesX: options.framesX,\n
                      framesY: options.framesY,\n
                      detectSubsampling: options.detectSubsampling\n
                  });\n
                  sheet.id = id;\n
                  result.push(sheet);\n
              }\n
              return result;\n
          }\n
          function measureImage(image, options, result) {\n
              var size = naturalSize(image);\n
              result.isSubsampled = options.detectSubsampling && detectSubsampling(image, size.width, size.height);\n
              result.width = size.width;\n
              result.height = size.height;\n
              result.sampledWidth = size.width / (result.isSubsampled ? 2 : 1);\n
              result.sampledHeight = size.height / (result.isSubsampled ? 2 : 1);\n
              return result;\n
          }\n
          function findSpecs(metrics, frames, frame, lane) {\n
              var spriteId = lane * frames + frame;\n
              var sheetId = 0;\n
              var sprite = null;\n
              var sheet = null;\n
              while (true) {\n
                  sheet = metrics[sheetId];\n
                  if (!sheet) {\n
                      break;\n
                  }\n
                  if (spriteId >= sheet.sprites.length) {\n
                      spriteId -= sheet.sprites.length;\n
                      sheetId++;\n
                      continue;\n
                  }\n
                  sprite = sheet.sprites[spriteId];\n
                  break;\n
              }\n
              return { sprite: sprite, sheet: sheet };\n
          }\n
          \n
          function indexOf(element, arr) {\n
              for (var i = 0; i < arr.length; i++) {\n
                  if (arr[i] === element) {\n
                      return i;\n
                  }\n
              }\n
          }\n
          function noop() {\n
              //\n
          }\n
          function preload(opts) {\n
              var src;\n
              var input = opts.source;\n
              src = typeof input === 'string' ? [input] : input;\n
              // const src: string[] =  ? [opts.source] : opts.source\n
              var images = [];\n
              var targetCount = (opts.preloadCount || src.length);\n
              var onInitiated = opts.initiated || noop;\n
              var onProgress = opts.progress || noop;\n
              var onComplete = opts.complete || noop;\n
              var count = 0;\n
              var completed = false;\n
              var firstLoaded = false;\n
              var tick = function () {\n
                  count += 1;\n
                  onProgress({\n
                      index: indexOf(this, images),\n
                      loaded: count,\n
                      total: src.length,\n
                      percent: Math.round((count / src.length) * 100)\n
                  });\n
                  firstLoaded = firstLoaded || (this === images[0]);\n
                  if (firstLoaded && !completed && (count >= targetCount)) {\n
                      completed = true;\n
                      onComplete(images);\n
                  }\n
              };\n
              for (var _i = 0, src_1 = src; _i < src_1.length; _i++) {\n
                  var url = src_1[_i];\n
                  var img = new Image();\n
                  // push result\n
                  images.push(img);\n
                  // https://developer.mozilla.org/en-US/docs/Web/HTML/CORS_enabled_image\n
                  img.crossOrigin = opts.crossOrigin;\n
                  // bind logic, don't care about abort/errors\n
                  img.onload = img.onabort = img.onerror = tick;\n
                  // begin load\n
                  img.src = url;\n
              }\n
              onInitiated(images);\n
          }\n
          \n
          function padNumber(num, length, pad) {\n
              var result = String(num);\n
              while (result.length < length) {\n
                  result = String(pad) + result;\n
              }\n
              return result;\n
          }\n
          /**\n
           * Generates an array of source strings\n
           *\n
           * @remarks\n
           * Takes a template string and generates an array of strings by interpolating {lane} and {frame} placeholders.\n
           *\n
           * ```\n
           * sourceArray('http://example.com/image_{frame}.jpg, { frame: [1, 3], digits: 2 })\n
           * // gives:\n
           * // [ 'http://example.com/image_01.jpg', 'http://example.com/image_02.jpg', 'http://example.com/image_03.jpg' ]\n
           *\n
           * sourceArray('http://example.com/image_FRAME.jpg, { frame: [1, 3], digits: 2, framePlacer: 'FRAME' })\n
           * // gives:\n
           * // [ 'http://example.com/image_01.jpg', 'http://example.com/image_02.jpg', 'http://example.com/image_03.jpg' ]\n
           * ```\n
           *\n
           * @param  template - The template string\n
           * @param  opts - Interpolation options\n
           *\n
           * @public\n
           */\n
          function sourceArray(template, opts) {\n
              var digits = opts.digits || 2;\n
              var lPlacer = opts.lanePlacer || '{lane}';\n
              var fPlacer = opts.framePlacer || '{frame}';\n
              var fStart = 0;\n
              var fEnd = 0;\n
              if (opts.frame) {\n
                  fStart = opts.frame[0];\n
                  fEnd = opts.frame[1];\n
              }\n
              var lStart = 0;\n
              var lEnd = 0;\n
              if (opts.lane) {\n
                  lStart = opts.lane[0];\n
                  lEnd = opts.lane[1];\n
              }\n
              var result = [];\n
              for (var lane = lStart; lane <= lEnd; lane += 1) {\n
                  for (var frame = fStart; frame <= fEnd; frame += 1) {\n
                      result.push(template\n
                          .replace(lPlacer, padNumber(lane, digits, '0'))\n
                          .replace(fPlacer, padNumber(frame, digits, '0')));\n
                  }\n
              }\n
              return result;\n
          }\n
          \n
          /**\n
           * The namespace that is used to bind functions to DOM events and store the data object\n
           */\n
          var namespace = 'spritespin';\n
          /**\n
           * Event names that are recognized by SpriteSpin. A module can implement any of these and they will be bound\n
           * to the target element on which the plugin is called.\n
           */\n
          var eventNames = [\n
              'mousedown',\n
              'mousemove',\n
              'mouseup',\n
              'mouseenter',\n
              'mouseover',\n
              'mouseleave',\n
              'mousewheel',\n
              'wheel',\n
              'click',\n
              'dblclick',\n
              'touchstart',\n
              'touchmove',\n
              'touchend',\n
              'touchcancel',\n
              'selectstart',\n
              'gesturestart',\n
              'gesturechange',\n
              'gestureend'\n
          ];\n
          /**\n
           *\n
           */\n
          var callbackNames = [\n
              'onInit',\n
              'onProgress',\n
              'onLoad',\n
              'onFrameChanged',\n
              'onFrame',\n
              'onDraw',\n
              'onComplete',\n
              'onDestroy'\n
          ];\n
          /**\n
           * Names of events for that the default behavior should be prevented.\n
           */\n
          var eventsToPrevent = [\n
              'dragstart'\n
          ];\n
          /**\n
           * Default set of SpriteSpin options. This also represents the majority of data attributes that are used during the\n
           * lifetime of a SpriteSpin instance. The data is stored inside the target DOM element on which the plugin is called.\n
           */\n
          var defaults = {\n
              source: undefined,\n
              width: undefined,\n
              height: undefined,\n
              frames: undefined,\n
              framesX: undefined,\n
              lanes: 1,\n
              sizeMode: undefined,\n
              renderer: 'canvas',\n
              lane: 0,\n
              frame: 0,\n
              frameTime: 40,\n
              animate: true,\n
              retainAnimate: false,\n
              reverse: false,\n
              loop: true,\n
              stopFrame: 0,\n
              wrap: true,\n
              wrapLane: false,\n
              sense: 1,\n
              senseLane: undefined,\n
              orientation: 'horizontal',\n
              detectSubsampling: true,\n
              preloadCount: undefined,\n
              touchScrollTimer: [200, 1500],\n
              responsive: undefined,\n
              plugins: undefined\n
          };\n
          \n
          function noop$1() {\n
              // noop\n
          }\n
          function wrapConsole(type) {\n
              return console && console[type] ? function () {\n
                  var args = [];\n
                  for (var _i = 0; _i < arguments.length; _i++) {\n
                      args[_i] = arguments[_i];\n
                  }\n
                  return console.log.apply(console, args);\n
              } : noop$1;\n
          }\n
          var log = wrapConsole('log');\n
          var warn = wrapConsole('warn');\n
          var error = wrapConsole('error');\n
          function toArray(value) {\n
              return Array.isArray(value) ? value : [value];\n
          }\n
          /**\n
           * clamps the given value by the given min and max values\n
           */\n
          function clamp(value, min, max) {\n
              return (value > max ? max : (value < min ? min : value));\n
          }\n
          /**\n
           *\n
           */\n
          function wrap(value, min, max, size) {\n
              while (value > max) {\n
                  value -= size;\n
              }\n
              while (value < min) {\n
                  value += size;\n
              }\n
              return value;\n
          }\n
          /**\n
           * prevents default action on the given event\n
           */\n
          function prevent(e) {\n
              e.preventDefault();\n
              return false;\n
          }\n
          /**\n
           * Binds on the given target and event the given function.\n
           * The SpriteSpin namespace is attached to the event name\n
           */\n
          function bind(target, event, func) {\n
              if (func) {\n
                  target.bind(event + '.' + namespace, function (e) {\n
                      func.apply(target, [e, target.spritespin('data')]);\n
                  });\n
              }\n
          }\n
          /**\n
           * Unbinds all SpriteSpin events from given target element\n
           */\n
          function unbind(target) {\n
              target.unbind('.' + namespace);\n
          }\n
          /**\n
           * Checks if given object is a function\n
           */\n
          function isFunction(fn) {\n
              return typeof fn === 'function';\n
          }\n
          function pixelRatio(context) {\n
              var devicePixelRatio = window.devicePixelRatio || 1;\n
              var backingStoreRatio = context.webkitBackingStorePixelRatio ||\n
                  context.mozBackingStorePixelRatio ||\n
                  context.msBackingStorePixelRatio ||\n
                  context.oBackingStorePixelRatio ||\n
                  context.backingStorePixelRatio || 1;\n
              return devicePixelRatio / backingStoreRatio;\n
          }\n
          \n
          /**\n
           * Applies css attributes to layout the SpriteSpin containers.\n
           *\n
           * @internal\n
           */\n
          function applyLayout(data) {\n
              // disable selection\n
              data.target\n
                  .attr('unselectable', 'on')\n
                  .css({\n
                  width: '',\n
                  height: '',\n
                  '-ms-user-select': 'none',\n
                  '-moz-user-select': 'none',\n
                  '-khtml-user-select': 'none',\n
                  '-webkit-user-select': 'none',\n
                  'user-select': 'none'\n
              });\n
              var size = data.responsive ? getComputedSize(data) : getOuterSize(data);\n
              var layout = getInnerLayout(data.sizeMode, getInnerSize(data), size);\n
              // apply layout on target\n
              data.target.css({\n
                  width: size.width,\n
                  height: size.height,\n
                  position: 'relative',\n
                  overflow: 'hidden'\n
              });\n
              // apply layout on stage\n
              data.stage\n
                  .css(layout)\n
                  .hide();\n
              if (!data.canvas) {\n
                  return;\n
              }\n
              // apply layout on canvas\n
              data.canvas.css(layout).hide();\n
              // apply pixel ratio on canvas\n
              data.canvasRatio = data.canvasRatio || pixelRatio(data.context);\n
              if (typeof layout.width === 'number' && typeof layout.height === 'number') {\n
                  data.canvas[0].width = (layout.width * data.canvasRatio) || size.width;\n
                  data.canvas[0].height = (layout.height * data.canvasRatio) || size.height;\n
              }\n
              else {\n
                  data.canvas[0].width = (size.width * data.canvasRatio);\n
                  data.canvas[0].height = (size.height * data.canvasRatio);\n
              }\n
              // width and height must be set before calling scale\n
              data.context.scale(data.canvasRatio, data.canvasRatio);\n
          }\n
          \n
          /**\n
           * Gets a state object by name.\n
           * @internal\n
           * @param  data - The SpriteSpin instance data\n
           * @param  name - The name of the state object\n
           */\n
          function getState(data, name) {\n
              data.state = data.state || {};\n
              data.state[name] = data.state[name] || {};\n
              return data.state[name];\n
          }\n
          /**\n
           * Gets a plugin state object by name.\n
           *\n
           * @remarks\n
           * Plugins should use this method to get or create a state object where they can\n
           * store any instance variables.\n
           *\n
           * @public\n
           * @param  data - The SpriteSpin instance data\n
           * @param  name - The name of the plugin\n
           */\n
          function getPluginState(data, name) {\n
              var state = getState(data, 'plugin');\n
              state[name] = state[name] || {};\n
              return state[name];\n
          }\n
          /**\n
           * Checks whether a flag is set. See {@link  flag}.\n
           *\n
           * @public\n
           * @param  data - The SpriteSpin instance data\n
           * @param  key - The name of the flag\n
           */\n
          function is(data, key) {\n
              return !!getState(data, 'flags')[key];\n
          }\n
          /**\n
           * Sets a flag value. See {@link  is}.\n
           *\n
           * @public\n
           * @param  data - The SpriteSpin instance data\n
           * @param  key - The name of the flag\n
           * @param  value - The value to set\n
           */\n
          function flag(data, key, value) {\n
              getState(data, 'flags')[key] = !!value;\n
          }\n
          \n
          /**\n
           * Gets the playback state\n
           *\n
           * @public\n
           * @param  data - The SpriteSpin instance data\n
           */\n
          function getPlaybackState(data) {\n
              return getState(data, 'playback');\n
          }\n
          function updateLane(data, lane) {\n
              data.lane = data.wrapLane\n
                  ? wrap(lane, 0, data.lanes - 1, data.lanes)\n
                  : clamp(lane, 0, data.lanes - 1);\n
          }\n
          function updateAnimationFrame(data) {\n
              data.frame += (data.reverse ? -1 : 1);\n
              // wrap the frame value to fit in range [0, data.frames)\n
              data.frame = wrap(data.frame, 0, data.frames - 1, data.frames);\n
              // stop animation if loop is disabled and the stopFrame is reached\n
              if (!data.loop && (data.frame === data.stopFrame)) {\n
                  stopAnimation(data);\n
              }\n
          }\n
          function updateInputFrame(data, frame) {\n
              data.frame = Number(frame);\n
              data.frame = data.wrap\n
                  ? wrap(data.frame, 0, data.frames - 1, data.frames)\n
                  : clamp(data.frame, 0, data.frames - 1);\n
          }\n
          function updateAnimation(data) {\n
              var state = getPlaybackState(data);\n
              if (state.handler) {\n
                  updateBefore(data);\n
                  updateAnimationFrame(data);\n
                  updateAfter(data);\n
              }\n
          }\n
          function updateBefore(data) {\n
              var state = getPlaybackState(data);\n
              state.lastFrame = data.frame;\n
              state.lastLane = data.lane;\n
          }\n
          function updateAfter(data) {\n
              var state = getPlaybackState(data);\n
              if (state.lastFrame !== data.frame || state.lastLane !== data.lane) {\n
                  data.target.trigger('onFrameChanged.' + namespace, data);\n
              }\n
              data.target.trigger('onFrame.' + namespace, data);\n
              data.target.trigger('onDraw.' + namespace, data);\n
          }\n
          /**\n
           * Updates the frame or lane number of the SpriteSpin data.\n
           *\n
           * @public\n
           * @param  data - The SpriteSpin instance data\n
           * @param  frame - The frame number to set\n
           * @param  lane - The lane number to set\n
           */\n
          function updateFrame(data, frame, lane) {\n
              updateBefore(data);\n
              if (frame != null) {\n
                  updateInputFrame(data, frame);\n
              }\n
              if (lane != null) {\n
                  updateLane(data, lane);\n
              }\n
              updateAfter(data);\n
          }\n
          /**\n
           * Stops the running animation.\n
           *\n
           * @public\n
           * @param  data - The SpriteSpin instance data\n
           */\n
          function stopAnimation(data) {\n
              data.animate = false;\n
              var state = getPlaybackState(data);\n
              if (state.handler != null) {\n
                  window.clearInterval(state.handler);\n
                  state.handler = null;\n
              }\n
          }\n
          /**\n
           * Starts animation playback if needed.\n
           *\n
           * @remarks\n
           * Starts animation playback if `animate` property is `true` and the animation is not yet running.\n
           *\n
           * @public\n
           * @param  data - The SpriteSpin instance data\n
           */\n
          function applyAnimation(data) {\n
              var state = getPlaybackState(data);\n
              if (state.handler && (!data.animate || state.frameTime !== data.frameTime)) {\n
                  stopAnimation(data);\n
              }\n
              if (data.animate && !state.handler) {\n
                  state.frameTime = data.frameTime;\n
                  state.handler = window.setInterval(function () { return updateAnimation(data); }, state.frameTime);\n
              }\n
          }\n
          /**\n
           * Starts the animation playback\n
           *\n
           * @remarks\n
           * Starts the animation playback and also sets the `animate` property to `true`\n
           *\n
           * @public\n
           * @param  data - The SpriteSpin instance data\n
           */\n
          function startAnimation(data) {\n
              data.animate = true;\n
              applyAnimation(data);\n
          }\n
          \n
          var plugins = {};\n
          /**\n
           * Registers a plugin.\n
           *\n
           * @remarks\n
           * Use this to add custom Rendering or Updating modules that can be addressed with the 'module' option.\n
           *\n
           * @public\n
           * @param  name - The name of the plugin\n
           * @param  plugin - The plugin implementation\n
           */\n
          function registerPlugin(name, plugin) {\n
              if (plugins[name]) {\n
                  error("Plugin name \"" + name + "\" is already taken");\n
                  return;\n
              }\n
              plugin = plugin || {};\n
              plugins[name] = plugin;\n
              return plugin;\n
          }\n
          /**\n
           * Registers a plugin.\n
           *\n
           * @public\n
           * @deprecated  Use {@link  registerPlugin} instead\n
           * @param  name - The name of the plugin\n
           * @param  plugin - The plugin implementation\n
           */\n
          function registerModule(name, plugin) {\n
              warn('"registerModule" is deprecated, use "registerPlugin" instead');\n
              registerPlugin(name, plugin);\n
          }\n
          /**\n
           * Gets an active plugin by name\n
           *\n
           * @internal\n
           * @param  name - The name of the plugin\n
           */\n
          function getPlugin(name) {\n
              return plugins[name];\n
          }\n
          /**\n
           * Replaces module names on given SpriteSpin data and replaces them with actual implementations.\n
           * @internal\n
           */\n
          function applyPlugins(data) {\n
              fixPlugins(data);\n
              for (var i = 0; i < data.plugins.length; i += 1) {\n
                  var name_1 = data.plugins[i];\n
                  if (typeof name_1 !== 'string') {\n
                      continue;\n
                  }\n
                  var plugin = getPlugin(name_1);\n
                  if (!plugin) {\n
                      error('No plugin found with name ' + name_1);\n
                      continue;\n
                  }\n
                  data.plugins[i] = plugin;\n
              }\n
          }\n
          function fixPlugins(data) {\n
              // tslint:disable no-string-literal\n
              if (data['mods']) {\n
                  warn('"mods" option is deprecated, use "plugins" instead');\n
                  data.plugins = data['mods'];\n
                  delete data['mods'];\n
              }\n
              if (data['behavior']) {\n
                  warn('"behavior" option is deprecated, use "plugins" instead');\n
                  data.plugins.push(data['behavior']);\n
                  delete data['behavior'];\n
              }\n
              if (data['module']) {\n
                  warn('"module" option is deprecated, use "plugins" instead');\n
                  data.plugins.push(data['module']);\n
                  delete data['module'];\n
              }\n
          }\n
          \n
          var $$2 = $$1;\n
          var counter = 0;\n
          /**\n
           * Collection of all SpriteSpin instances\n
           */\n
          var instances = {};\n
          function pushInstance(data) {\n
              counter += 1;\n
              data.id = String(counter);\n
              instances[data.id] = data;\n
          }\n
          function popInstance(data) {\n
              delete instances[data.id];\n
          }\n
          function eachInstance(cb) {\n
              for (var id in instances) {\n
                  if (instances.hasOwnProperty(id)) {\n
                      cb(instances[id]);\n
                  }\n
              }\n
          }\n
          var lazyinit = function () {\n
              // replace function with a noop\n
              // this logic must run only once\n
              lazyinit = function () { };\n
              function onEvent(eventName, e) {\n
                  eachInstance(function (data) {\n
                      for (var _i = 0, _a = data.plugins; _i < _a.length; _i++) {\n
                          var module_1 = _a[_i];\n
                          if (typeof module_1[eventName] === 'function') {\n
                              module_1[eventName].apply(data.target, [e, data]);\n
                          }\n
                      }\n
                  });\n
              }\n
              function onResize() {\n
                  eachInstance(function (data) {\n
                      if (data.responsive) {\n
                          boot(data);\n
                      }\n
                  });\n
              }\n
              var _loop_1 = function (eventName) {\n
                  $$2(window.document).bind(eventName + '.' + namespace, function (e) {\n
                      onEvent('document' + eventName, e);\n
                  });\n
              };\n
              for (var _i = 0, eventNames_1 = eventNames; _i < eventNames_1.length; _i++) {\n
                  var eventName = eventNames_1[_i];\n
                  _loop_1(eventName);\n
              }\n
              var resizeTimeout = null;\n
              $$2(window).on('resize', function () {\n
                  window.clearTimeout(resizeTimeout);\n
                  resizeTimeout = window.setTimeout(onResize, 100);\n
              });\n
          };\n
          /**\n
           * (re)binds all spritespin events on the target element\n
           *\n
           * @internal\n
           */\n
          function applyEvents(data) {\n
              var target = data.target;\n
              // Clear all SpriteSpin events on the target element\n
              unbind(target);\n
              // disable all default browser behavior on the following events\n
              // mainly prevents image drag operation\n
              for (var _i = 0, eventsToPrevent_1 = eventsToPrevent; _i < eventsToPrevent_1.length; _i++) {\n
                  var eName = eventsToPrevent_1[_i];\n
                  bind(target, eName, prevent);\n
              }\n
              // Bind module functions to SpriteSpin events\n
              for (var _a = 0, _b = data.plugins; _a < _b.length; _a++) {\n
                  var plugin = _b[_a];\n
                  for (var _c = 0, eventNames_2 = eventNames; _c < eventNames_2.length; _c++) {\n
                      var eName = eventNames_2[_c];\n
                      bind(target, eName, plugin[eName]);\n
                  }\n
                  for (var _d = 0, callbackNames_1 = callbackNames; _d < callbackNames_1.length; _d++) {\n
                      var eName = callbackNames_1[_d];\n
                      bind(target, eName, plugin[eName]);\n
                  }\n
              }\n
              // bind auto start function to load event.\n
              // bind(target, 'onLoad', function (e, d) {\n
              //     applyAnimation(d);\n
              // });\n
              // bind all user events that have been passed on initialization\n
              for (var _e = 0, callbackNames_2 = callbackNames; _e < callbackNames_2.length; _e++) {\n
                  var eName = callbackNames_2[_e];\n
                  bind(target, eName, data[eName]);\n
              }\n
          }\n
          function applyMetrics(data) {\n
              if (!data.images) {\n
                  data.metrics = [];\n
              }\n
              data.metrics = measure(data.images, data);\n
              var spec = findSpecs(data.metrics, data.frames, 0, 0);\n
              if (spec.sprite) {\n
                  // TODO: try to remove frameWidth/frameHeight\n
                  data.frameWidth = spec.sprite.width;\n
                  data.frameHeight = spec.sprite.height;\n
              }\n
          }\n
          /**\n
           * Runs the boot process.\n
           *\n
           * @remarks\n
           * (re)initializes plugins, (re)initializes the layout, (re)binds events and loads source images.\n
           *\n
           * @internal\n
           */\n
          function boot(data) {\n
              applyPlugins(data);\n
              applyEvents(data);\n
              applyLayout(data);\n
              data.source = toArray(data.source);\n
              data.loading = true;\n
              data.target\n
                  .addClass('loading')\n
                  .trigger('onInit.' + namespace, data);\n
              preload({\n
                  source: data.source,\n
                  crossOrigin: data.crossOrigin,\n
                  preloadCount: data.preloadCount,\n
                  progress: function (progress) {\n
                      data.progress = progress;\n
                      data.target.trigger('onProgress.' + namespace, data);\n
                  },\n
                  complete: function (images) {\n
                      data.images = images;\n
                      data.loading = false;\n
                      data.frames = data.frames || images.length;\n
                      applyMetrics(data);\n
                      applyLayout(data);\n
                      data.stage.show();\n
                      data.target\n
                          .removeClass('loading')\n
                          .trigger('onLoad.' + namespace, data)\n
                          .trigger('onFrame.' + namespace, data)\n
                          .trigger('onDraw.' + namespace, data)\n
                          .trigger('onComplete.' + namespace, data);\n
                  }\n
              });\n
          }\n
          /**\n
           * Creates a new SpriteSpin instance\n
           *\n
           * @public\n
           */\n
          function create(options) {\n
              var _this = this;\n
              var target = options.target;\n
              // SpriteSpin is not initialized\n
              // Create default settings object and extend with given options\n
              var data = $$2.extend(true, {}, defaults, options);\n
              // ensure source is set\n
              data.source = data.source || [];\n
              // ensure plugins are set\n
              data.plugins = data.plugins || [\n
                  '360',\n
                  'drag'\n
              ];\n
              // if image tags are contained inside this DOM element\n
              // use these images as the source files\n
              target.find('img').each(function () {\n
                  if (!Array.isArray(data.source)) {\n
                      data.source = [];\n
                  }\n
                  data.source.push($$2(_this).attr('src'));\n
              });\n
              // build inner html\n
              // <div>\n
              //   <div class='spritespin-stage'></div>\n
              //   <canvas class='spritespin-canvas'></canvas>\n
              // </div>\n
              target\n
                  .empty()\n
                  .addClass('spritespin-instance')\n
                  .append("<div class='spritespin-stage'></div>");\n
              // add the canvas element if canvas rendering is enabled and supported\n
              if (data.renderer === 'canvas') {\n
                  var canvas = document.createElement('canvas');\n
                  if (!!(canvas.getContext && canvas.getContext('2d'))) {\n
                      data.canvas = $$2(canvas).addClass('spritespin-canvas');\n
                      data.context = canvas.getContext('2d');\n
                      target.append(data.canvas);\n
                      target.addClass('with-canvas');\n
                  }\n
                  else {\n
                      // fallback to image rendering mode\n
                      data.renderer = 'image';\n
                  }\n
              }\n
              // setup references to DOM elements\n
              data.target = target;\n
              data.stage = target.find('.spritespin-stage');\n
              // store the data\n
              target.data(namespace, data);\n
              pushInstance(data);\n
              return data;\n
          }\n
          /**\n
           * Creates a new SpriteSpin instance, or updates an existing one\n
           *\n
           * @public\n
           */\n
          function createOrUpdate(options) {\n
              lazyinit();\n
              var data = options.target.data(namespace);\n
              if (!data) {\n
                  data = create(options);\n
              }\n
              else {\n
                  $$2.extend(data, options);\n
              }\n
              boot(data);\n
              return data;\n
          }\n
          /**\n
           * Destroys the SpriteSpin instance\n
           *\n
           * @remarks\n
           * - stops running animation\n
           * - unbinds all events\n
           * - deletes the data on the target element\n
           *\n
           * @public\n
           */\n
          function destroy(data) {\n
              popInstance(data);\n
              stopAnimation(data);\n
              data.target\n
                  .trigger('onDestroy', data)\n
                  .html(null)\n
                  .attr('style', null)\n
                  .attr('unselectable', null)\n
                  .removeClass(['spritespin-instance', 'with-canvas']);\n
              unbind(data.target);\n
              data.target.removeData(namespace);\n
          }\n
          \n
          /**\n
           * Gets the current input state\n
           *\n
           * @public\n
           * @param  data - The SpriteSpin instance data\n
           */\n
          function getInputState(data) {\n
              return getState(data, 'input');\n
          }\n
          /**\n
           * Updates the input state using a mouse or touch event.\n
           *\n
           * @public\n
           * @param  e - The input event\n
           * @param  data - The SpriteSpin instance data\n
           */\n
          function updateInput(e, data) {\n
              var cursor = getCursorPosition(e);\n
              var state = getInputState(data);\n
              // cache positions from previous frame\n
              state.oldX = state.currentX;\n
              state.oldY = state.currentY;\n
              state.currentX = cursor.x;\n
              state.currentY = cursor.y;\n
              // Fix old position.\n
              if (state.oldX === undefined || state.oldY === undefined) {\n
                  state.oldX = state.currentX;\n
                  state.oldY = state.currentY;\n
              }\n
              // Cache the initial click/touch position and store the frame number at which the click happened.\n
              // Useful for different behavior implementations. This must be restored when the click/touch is released.\n
              if (state.startX === undefined || state.startY === undefined) {\n
                  state.startX = state.currentX;\n
                  state.startY = state.currentY;\n
                  state.clickframe = data.frame;\n
                  state.clicklane = data.lane;\n
              }\n
              // Calculate the vector from start position to current pointer position.\n
              state.dX = state.currentX - state.startX;\n
              state.dY = state.currentY - state.startY;\n
              // Calculate the vector from last frame position to current pointer position.\n
              state.ddX = state.currentX - state.oldX;\n
              state.ddY = state.currentY - state.oldY;\n
              // Normalize vectors to range [-1:+1]\n
              state.ndX = state.dX / data.target.innerWidth();\n
              state.ndY = state.dY / data.target.innerHeight();\n
              state.nddX = state.ddX / data.target.innerWidth();\n
              state.nddY = state.ddY / data.target.innerHeight();\n
          }\n
          /**\n
           * Resets the input state.\n
           *\n
           * @public\n
           */\n
          function resetInput(data) {\n
              var input = getInputState(data);\n
              input.startX = input.startY = undefined;\n
              input.currentX = input.currentY = undefined;\n
              input.oldX = input.oldY = undefined;\n
              input.dX = input.dY = 0;\n
              input.ddX = input.ddY = 0;\n
              input.ndX = input.ndY = 0;\n
              input.nddX = input.nddY = 0;\n
          }\n
          \n
          function extension(option, value) {\n
              var $target = $$1(this);\n
              if (option === 'data') {\n
                  return $target.data(namespace);\n
              }\n
              if (option === 'api') {\n
                  var data = $target.data(namespace);\n
                  data.api = data.api || new Api(data);\n
                  return data.api;\n
              }\n
              if (option === 'destroy') {\n
                  return $target.each(function () {\n
                      var data = $target.data(namespace);\n
                      if (data) {\n
                          destroy(data);\n
                      }\n
                  });\n
              }\n
              if (arguments.length === 2 && typeof option === 'string') {\n
                  option = (_a = {}, _a[option] = value, _a);\n
              }\n
              if (typeof option === 'object') {\n
                  return createOrUpdate($$1.extend(true, { target: $target }, option)).target;\n
              }\n
              throw new Error('Invalid call to spritespin');\n
              var _a;\n
          }\n
          $$1.fn[namespace] = extension;\n
          \n
          // tslint:disable:object-literal-shorthand\n
          // tslint:disable:only-arrow-functions\n
          extendApi({\n
              // Gets a value indicating whether the animation is currently running.\n
              isPlaying: function () {\n
                  return getPlaybackState(this.data).handler != null;\n
              },\n
              // Gets a value indicating whether the animation looping is enabled.\n
              isLooping: function () {\n
                  return this.data.loop;\n
              },\n
              // Starts/Stops the animation playback\n
              toggleAnimation: function () {\n
                  if (this.isPlaying()) {\n
                      this.stopAnimation();\n
                  }\n
                  else {\n
                      this.startAnimation();\n
                  }\n
              },\n
              // Stops animation playback\n
              stopAnimation: function () {\n
                  this.data.animate = false;\n
                  stopAnimation(this.data);\n
              },\n
              // Starts animation playback\n
              startAnimation: function () {\n
                  this.data.animate = true;\n
                  applyAnimation(this.data);\n
              },\n
              // Sets a value indicating whether the animation should be looped or not.\n
              // This might start the animation (if the 'animate' data attribute is set to true)\n
              loop: function (value) {\n
                  this.data.loop = value;\n
                  applyAnimation(this.data);\n
                  return this;\n
              },\n
              // Gets the current frame number\n
              currentFrame: function () {\n
                  return this.data.frame;\n
              },\n
              // Updates SpriteSpin to the specified frame.\n
              updateFrame: function (frame) {\n
                  updateFrame(this.data, frame);\n
                  return this;\n
              },\n
              // Skips the given number of frames\n
              skipFrames: function (step) {\n
                  var data = this.data;\n
                  updateFrame(data, data.frame + (data.reverse ? -step : +step));\n
                  return this;\n
              },\n
              // Updates SpriteSpin so that the next frame is shown\n
              nextFrame: function () {\n
                  return this.skipFrames(1);\n
              },\n
              // Updates SpriteSpin so that the previous frame is shown\n
              prevFrame: function () {\n
                  return this.skipFrames(-1);\n
              },\n
              // Starts the animations that will play until the given frame number is reached\n
              // options:\n
              //   force [boolean] starts the animation, even if current frame is the target frame\n
              //   nearest [boolean] animates to the direction with minimum distance to the target frame\n
              playTo: function (frame, options) {\n
                  var data = this.data;\n
                  options = options || {};\n
                  if (!options.force && data.frame === frame) {\n
                      return;\n
                  }\n
                  if (options.nearest) {\n
                      // distance to the target frame\n
                      var a = frame - data.frame;\n
                      // distance to last frame and the to target frame\n
                      var b = frame > data.frame ? a - data.frames : a + data.frames;\n
                      // minimum distance\n
                      var c = Math.abs(a) < Math.abs(b) ? a : b;\n
                      data.reverse = c < 0;\n
                  }\n
                  data.animate = true;\n
                  data.loop = false;\n
                  data.stopFrame = frame;\n
                  applyAnimation(data);\n
                  return this;\n
              }\n
          });\n
          \n
          function pick(target, names) {\n
              for (var _i = 0, names_1 = names; _i < names_1.length; _i++) {\n
                  var name_1 = names_1[_i];\n
                  if (target[name_1] || name_1 in target) {\n
                      return name_1;\n
                  }\n
              }\n
              return names[0];\n
          }\n
          var browser = {\n
              requestFullscreen: pick(document.documentElement, [\n
                  'requestFullscreen',\n
                  'webkitRequestFullScreen',\n
                  'mozRequestFullScreen',\n
                  'msRequestFullscreen'\n
              ]),\n
              exitFullscreen: pick(document, [\n
                  'exitFullscreen',\n
                  'webkitExitFullscreen',\n
                  'webkitCancelFullScreen',\n
                  'mozCancelFullScreen',\n
                  'msExitFullscreen'\n
              ]),\n
              fullscreenElement: pick(document, [\n
                  'fullscreenElement',\n
                  'webkitFullscreenElement',\n
                  'webkitCurrentFullScreenElement',\n
                  'mozFullScreenElement',\n
                  'msFullscreenElement'\n
              ]),\n
              fullscreenEnabled: pick(document, [\n
                  'fullscreenEnabled',\n
                  'webkitFullscreenEnabled',\n
                  'mozFullScreenEnabled',\n
                  'msFullscreenEnabled'\n
              ]),\n
              fullscreenchange: pick(document, [\n
                  'onfullscreenchange',\n
                  'onwebkitfullscreenchange',\n
                  'onmozfullscreenchange',\n
                  'onMSFullscreenChange'\n
              ]).replace(/^on/, ''),\n
              fullscreenerror: pick(document, [\n
                  'onfullscreenerror',\n
                  'onwebkitfullscreenerror',\n
                  'onmozfullscreenerror',\n
                  'onMSFullscreenError'\n
              ]).replace(/^on/, '')\n
          };\n
          var changeEvent = browser.fullscreenchange + '.' + namespace + '-fullscreen';\n
          function unbindChangeEvent() {\n
              $$1(document).unbind(changeEvent);\n
          }\n
          function bindChangeEvent(callback) {\n
              unbindChangeEvent();\n
              $$1(document).bind(changeEvent, callback);\n
          }\n
          var orientationEvent = 'orientationchange.' + namespace + '-fullscreen';\n
          function unbindOrientationEvent() {\n
              $$1(window).unbind(orientationEvent);\n
          }\n
          function bindOrientationEvent(callback) {\n
              unbindOrientationEvent();\n
              $$1(window).bind(orientationEvent, callback);\n
          }\n
          function requestFullscreenNative(e) {\n
              e = e || document.documentElement;\n
              e[browser.requestFullscreen]();\n
          }\n
          function exitFullscreen() {\n
              return document[browser.exitFullscreen]();\n
          }\n
          function fullscreenEnabled() {\n
              return document[browser.fullscreenEnabled];\n
          }\n
          function fullscreenElement() {\n
              return document[browser.fullscreenElement];\n
          }\n
          function isFullscreen() {\n
              return !!fullscreenElement();\n
          }\n
          function toggleFullscreen(data, opts) {\n
              if (isFullscreen()) {\n
                  this.apiRequestFullscreen(opts);\n
              }\n
              else {\n
                  this.exitFullscreen();\n
              }\n
          }\n
          function requestFullscreen(data, opts) {\n
              opts = opts || {};\n
              var oWidth = data.width;\n
              var oHeight = data.height;\n
              var oSource = data.source;\n
              var oSize = data.sizeMode;\n
              var oResponsive = data.responsive;\n
              var enter = function () {\n
                  data.width = window.screen.width;\n
                  data.height = window.screen.height;\n
                  data.source = (opts.source || oSource);\n
                  data.sizeMode = opts.sizeMode || 'fit';\n
                  data.responsive = false;\n
                  boot(data);\n
              };\n
              var exit = function () {\n
                  data.width = oWidth;\n
                  data.height = oHeight;\n
                  data.source = oSource;\n
                  data.sizeMode = oSize;\n
                  data.responsive = oResponsive;\n
                  boot(data);\n
              };\n
              bindChangeEvent(function () {\n
                  if (isFullscreen()) {\n
                      enter();\n
                      bindOrientationEvent(enter);\n
                  }\n
                  else {\n
                      unbindChangeEvent();\n
                      unbindOrientationEvent();\n
                      exit();\n
                  }\n
              });\n
              requestFullscreenNative(data.target[0]);\n
          }\n
          extendApi({\n
              fullscreenEnabled: fullscreenEnabled,\n
              fullscreenElement: fullscreenElement,\n
              exitFullscreen: exitFullscreen,\n
              toggleFullscreen: function (opts) {\n
                  toggleFullscreen(this.data, opts);\n
              },\n
              requestFullscreen: function (opts) {\n
                  requestFullscreen(this.data, opts);\n
              }\n
          });\n
          \n
          (function () {\n
              var NAME = 'click';\n
              function click(e, data) {\n
                  if (data.loading || !data.stage.is(':visible')) {\n
                      return;\n
                  }\n
                  updateInput(e, data);\n
                  var input = getInputState(data);\n
                  var half, pos;\n
                  var target = data.target, offset = target.offset();\n
                  if (data.orientation === 'horizontal') {\n
                      half = target.innerWidth() / 2;\n
                      pos = input.currentX - offset.left;\n
                  }\n
                  else {\n
                      half = target.innerHeight() / 2;\n
                      pos = input.currentY - offset.top;\n
                  }\n
                  updateFrame(data, data.frame + (pos > half ? 1 : -1));\n
              }\n
              registerPlugin(NAME, {\n
                  name: NAME,\n
                  mouseup: click,\n
                  touchend: click\n
              });\n
          })();\n
          \n
          (function () {\n
              var NAME = 'drag';\n
              function getState$$1(data) {\n
                  return getPluginState(data, NAME);\n
              }\n
              function getAxis(data) {\n
                  if (typeof data.orientation === 'number') {\n
                      return data.orientation * Math.PI / 180;\n
                  }\n
                  if (data.orientation === 'horizontal') {\n
                      return 0;\n
                  }\n
                  return Math.PI / 2;\n
              }\n
              function onInit(e, data) {\n
                  var state = getState$$1(data);\n
                  var d = [200, 1500];\n
                  var t = data.touchScrollTimer || d;\n
                  state.minTime = t[0] || d[0];\n
                  state.maxTime = t[1] || d[1];\n
              }\n
              function dragStart(e, data) {\n
                  var state = getState$$1(data);\n
                  if (data.loading || is(data, 'dragging') || data['zoomPinFrame'] && !data.stage.is(':visible')) {\n
                      return;\n
                  }\n
                  // Touch scroll can only be disabled by cancelling the 'touchstart' event.\n
                  // If we would try to cancel the 'touchmove' event during a scroll\n
                  // chrome browser raises an error\n
                  //\n
                  // When a user interacts with sprite spin, we don't know whether the intention\n
                  // is to scroll the page or to roll the spin.\n
                  //\n
                  // On first interaction with SpriteSpin the scroll is not disabled\n
                  // On double tap within 200ms the scroll is not disabled\n
                  // Scroll is only disabled if there was an interaction with SpriteSpin in the past 1500ms\n
                  var now = new Date().getTime();\n
                  if (state.endAt && (now - state.endAt > state.maxTime)) {\n
                      // reset timer if the user has no interaction with spritespin within 1500ms\n
                      state.startAt = null;\n
                      state.endAt = null;\n
                  }\n
                  if (state.startAt && (now - state.startAt > state.minTime)) {\n
                      // disable scroll only if there was already an interaction with spritespin\n
                      // however, allow scrolling on double tab within 200ms\n
                      e.preventDefault();\n
                  }\n
                  state.startAt = now;\n
                  state.wasPlaying = !!getPlaybackState(data).handler;\n
                  state.frame = data.frame || 0;\n
                  state.lane = data.lane || 0;\n
                  flag(data, 'dragging', true);\n
                  updateInput(e, data);\n
              }\n
              function dragEnd(e, data) {\n
                  if (is(data, 'dragging')) {\n
                      getState$$1(data).endAt = new Date().getTime();\n
                      flag(data, 'dragging', false);\n
                      resetInput(data);\n
                      if (data.retainAnimate && getState$$1(data).wasPlaying) {\n
                          startAnimation(data);\n
                      }\n
                  }\n
              }\n
              function drag(e, data) {\n
                  var state = getState$$1(data);\n
                  var input = getInputState(data);\n
                  if (!is(data, 'dragging')) {\n
                      return;\n
                  }\n
                  updateInput(e, data);\n
                  var rad = getAxis(data);\n
                  var sn = Math.sin(rad);\n
                  var cs = Math.cos(rad);\n
                  var x = ((input.nddX * cs - input.nddY * sn) * data.sense) || 0;\n
                  var y = ((input.nddX * sn + input.nddY * cs) * (data.senseLane || data.sense)) || 0;\n
                  // accumulate\n
                  state.frame += data.frames * x;\n
                  state.lane += data.lanes * y;\n
                  // update spritespin\n
                  var oldFrame = data.frame;\n
                  var oldLane = data.lane;\n
                  updateFrame(data, Math.floor(state.frame), Math.floor(state.lane));\n
                  stopAnimation(data);\n
              }\n
              function mousemove(e, data) {\n
                  dragStart(e, data);\n
                  drag(e, data);\n
              }\n
              registerPlugin('drag', {\n
                  name: 'drag',\n
                  onInit: onInit,\n
                  mousedown: dragStart,\n
                  mousemove: drag,\n
                  mouseup: dragEnd,\n
                  documentmousemove: drag,\n
                  documentmouseup: dragEnd,\n
                  touchstart: dragStart,\n
                  touchmove: drag,\n
                  touchend: dragEnd,\n
                  touchcancel: dragEnd\n
              });\n
              registerPlugin('move', {\n
                  name: 'move',\n
                  onInit: onInit,\n
                  mousemove: mousemove,\n
                  mouseleave: dragEnd,\n
                  touchstart: dragStart,\n
                  touchmove: drag,\n
                  touchend: dragEnd,\n
                  touchcancel: dragEnd\n
              });\n
          })();\n
          \n
          (function () {\n
              var NAME = 'hold';\n
              function getState$$1(data) {\n
                  return getPluginState(data, NAME);\n
              }\n
              function rememberOptions(data) {\n
                  var state = getState$$1(data);\n
                  state.frameTime = data.frameTime;\n
                  state.animate = data.animate;\n
                  state.reverse = data.reverse;\n
              }\n
              function restoreOptions(data) {\n
                  var state = getState$$1(data);\n
                  data.frameTime = state.frameTime;\n
                  data.animate = state.animate;\n
                  data.reverse = state.reverse;\n
              }\n
              function start(e, data) {\n
                  if (is(data, 'loading') || is(data, 'dragging') || !data.stage.is(':visible')) {\n
                      return;\n
                  }\n
                  rememberOptions(data);\n
                  updateInput(e, data);\n
                  flag(data, 'dragging', true);\n
                  data.animate = true;\n
                  applyAnimation(data);\n
              }\n
              function stop(e, data) {\n
                  flag(data, 'dragging', false);\n
                  resetInput(data);\n
                  stopAnimation(data);\n
                  restoreOptions(data);\n
                  applyAnimation(data);\n
              }\n
              function update(e, data) {\n
                  if (!is(data, 'dragging')) {\n
                      return;\n
                  }\n
                  updateInput(e, data);\n
                  var input = getInputState(data);\n
                  var half, delta;\n
                  var target = data.target, offset = target.offset();\n
                  if (data.orientation === 'horizontal') {\n
                      half = target.innerWidth() / 2;\n
                      delta = (input.currentX - offset.left - half) / half;\n
                  }\n
                  else {\n
                      half = (data.height / 2);\n
                      delta = (input.currentY - offset.top - half) / half;\n
                  }\n
                  data.reverse = delta < 0;\n
                  delta = delta < 0 ? -delta : delta;\n
                  data.frameTime = 80 * (1 - delta) + 20;\n
                  if (((data.orientation === 'horizontal') && (input.dX < input.dY)) ||\n
                      ((data.orientation === 'vertical') && (input.dX < input.dY))) {\n
                      e.preventDefault();\n
                  }\n
              }\n
              function onFrame(e, data) {\n
                  data.animate = true;\n
                  applyAnimation(data);\n
              }\n
              registerPlugin(NAME, {\n
                  name: NAME,\n
                  mousedown: start,\n
                  mousemove: update,\n
                  mouseup: stop,\n
                  mouseleave: stop,\n
                  touchstart: start,\n
                  touchmove: update,\n
                  touchend: stop,\n
                  touchcancel: stop,\n
                  onFrame: onFrame\n
              });\n
          })();\n
          \n
          (function () {\n
              var NAME = 'swipe';\n
              function getState$$1(data) {\n
                  return getPluginState(data, NAME);\n
              }\n
              function getOption(data, name, fallback) {\n
                  return data[name] || fallback;\n
              }\n
              function init(e, data) {\n
                  var state = getState$$1(data);\n
                  state.fling = getOption(data, 'swipeFling', 10);\n
                  state.snap = getOption(data, 'swipeSnap', 0.50);\n
              }\n
              function start(e, data) {\n
                  if (!data.loading && !is(data, 'dragging')) {\n
                      updateInput(e, data);\n
                      flag(data, 'dragging', true);\n
                  }\n
              }\n
              function update(e, data) {\n
                  if (!is(data, 'dragging')) {\n
                      return;\n
                  }\n
                  updateInput(e, data);\n
                  var frame = data.frame;\n
                  var lane = data.lane;\n
                  updateFrame(data, frame, lane);\n
              }\n
              function end(e, data) {\n
                  if (!is(data, 'dragging')) {\n
                      return;\n
                  }\n
                  flag(data, 'dragging', false);\n
                  var state = getState$$1(data);\n
                  var input = getInputState(data);\n
                  var frame = data.frame;\n
                  var lane = data.lane;\n
                  var snap = state.snap;\n
                  var fling = state.fling;\n
                  var dS, dF;\n
                  if (data.orientation === 'horizontal') {\n
                      dS = input.ndX;\n
                      dF = input.ddX;\n
                  }\n
                  else {\n
                      dS = input.ndY;\n
                      dF = input.ddY;\n
                  }\n
                  if (dS >= snap || dF >= fling) {\n
                      frame = data.frame - 1;\n
                  }\n
                  else if (dS <= -snap || dF <= -fling) {\n
                      frame = data.frame + 1;\n
                  }\n
                  resetInput(data);\n
                  updateFrame(data, frame, lane);\n
                  stopAnimation(data);\n
              }\n
              registerPlugin(NAME, {\n
                  name: NAME,\n
                  onLoad: init,\n
                  mousedown: start,\n
                  mousemove: update,\n
                  mouseup: end,\n
                  mouseleave: end,\n
                  touchstart: start,\n
                  touchmove: update,\n
                  touchend: end,\n
                  touchcancel: end\n
              });\n
          })();\n
          \n
          (function () {\n
              var NAME = 'wheel';\n
              function wheel(e, data) {\n
                  if (!data.loading && data.stage.is(':visible')) {\n
                      e.preventDefault();\n
                      var we = e.originalEvent;\n
                      var signX = we.deltaX === 0 ? 0 : we.deltaX > 0 ? 1 : -1;\n
                      var signY = we.deltaY === 0 ? 0 : we.deltaY > 0 ? 1 : -1;\n
                      updateFrame(data, data.frame + signY, data.lane + signX);\n
                  }\n
              }\n
              registerPlugin(NAME, {\n
                  name: NAME,\n
                  wheel: wheel\n
              });\n
          })();\n
          \n
          (function () {\n
              var template = "\n<div class='spritespin-progress'>\n  <div class='spritespin-progress-label'></div>\n  <div class='spritespin-progress-bar'></div>\n</div>\n";\n
              function getState$$1(data) {\n
                  return getPluginState(data, NAME);\n
              }\n
              var NAME = 'progress';\n
              function onInit(e, data) {\n
                  var state = getState$$1(data);\n
                  if (!state.stage) {\n
                      state.stage = $$1(template);\n
                      state.stage.appendTo(data.target);\n
                  }\n
                  state.stage.find('.spritespin-progress-label')\n
                      .text("0%")\n
                      .css({ 'text-align': 'center' });\n
                  state.stage.find('.spritespin-progress-bar').css({\n
                      width: "0%"\n
                  });\n
                  state.stage.hide().fadeIn();\n
              }\n
              function onProgress(e, data) {\n
                  var state = getState$$1(data);\n
                  state.stage.find('.spritespin-progress-label')\n
                      .text(data.progress.percent + "%")\n
                      .css({ 'text-align': 'center' });\n
                  state.stage.find('.spritespin-progress-bar').css({\n
                      width: data.progress.percent + "%"\n
                  });\n
              }\n
              function onLoad(e, data) {\n
                  $$1(getState$$1(data).stage).fadeOut();\n
              }\n
              function onDestroy(e, data) {\n
                  $$1(getState$$1(data).stage).remove();\n
              }\n
              registerPlugin(NAME, {\n
                  name: NAME,\n
                  onInit: onInit,\n
                  onProgress: onProgress,\n
                  onLoad: onLoad,\n
                  onDestroy: onDestroy\n
              });\n
          })();\n
          \n
          (function () {\n
              var NAME = '360';\n
              function onLoad(e, data) {\n
                  data.stage.find('.spritespin-frames').detach();\n
                  if (data.renderer === 'image') {\n
                      $(data.images).addClass('spritespin-frames').appendTo(data.stage);\n
                  }\n
              }\n
              function onDraw(e, data) {\n
                  var specs = findSpecs(data.metrics, data.frames, data.frame, data.lane);\n
                  var sheet = specs.sheet;\n
                  var sprite = specs.sprite;\n
                  if (!sheet || !sprite) {\n
                      return;\n
                  }\n
                  var src = data.source[sheet.id];\n
                  var image = data.images[sheet.id];\n
                  if (data.renderer === 'canvas') {\n
                      data.canvas.show();\n
                      var w = data.canvas[0].width / data.canvasRatio;\n
                      var h = data.canvas[0].height / data.canvasRatio;\n
                      data.context.clearRect(0, 0, w, h);\n
                      data.context.drawImage(image, sprite.sampledX, sprite.sampledY, sprite.sampledWidth, sprite.sampledHeight, 0, 0, w, h);\n
                      return;\n
                  }\n
                  var scaleX = data.stage.innerWidth() / sprite.sampledWidth;\n
                  var scaleY = data.stage.innerHeight() / sprite.sampledHeight;\n
                  var top = Math.floor(-sprite.sampledY * scaleY);\n
                  var left = Math.floor(-sprite.sampledX * scaleX);\n
                  var width = Math.floor(sheet.sampledWidth * scaleX);\n
                  var height = Math.floor(sheet.sampledHeight * scaleY);\n
                  if (data.renderer === 'background') {\n
                      data.stage.css({\n
                          'background-image': "url('" + src + "')",\n
                          'background-position': left + "px " + top + "px",\n
                          'background-repeat': 'no-repeat',\n
                          // set custom background size to enable responsive rendering\n
                          '-webkit-background-size': width + "px " + height + "px",\n
                          '-moz-background-size': width + "px " + height + "px",\n
                          '-o-background-size': width + "px " + height + "px",\n
                          'background-size': width + "px " + height + "px" /* Chrome, Firefox 4+, IE 9+, Opera, Safari 5+ */\n
                      });\n
                      return;\n
                  }\n
                  $(data.images).hide();\n
                  $(image).show().css({\n
                      position: 'absolute',\n
                      top: top,\n
                      left: left,\n
                      'max-width': 'initial',\n
                      width: width,\n
                      height: height\n
                  });\n
              }\n
              registerPlugin(NAME, {\n
                  name: NAME,\n
                  onLoad: onLoad,\n
                  onDraw: onDraw\n
              });\n
          })();\n
          \n
          (function () {\n
              var NAME = 'blur';\n
              function getState$$1(data) {\n
                  return getPluginState(data, NAME);\n
              }\n
              function getOption(data, name, fallback) {\n
                  return data[name] || fallback;\n
              }\n
              function init(e, data) {\n
                  var state = getState$$1(data);\n
                  state.canvas = state.canvas || $$1("<canvas class='blur-layer'></canvas>");\n
                  state.context = state.context || state.canvas[0].getContext('2d');\n
                  state.steps = state.steps || [];\n
                  state.fadeTime = Math.max(getOption(data, 'blurFadeTime', 200), 1);\n
                  state.frameTime = Math.max(getOption(data, 'blurFrameTime', data.frameTime), 16);\n
                  state.trackTime = null;\n
                  state.cssBlur = !!getOption(data, 'blurCss', false);\n
                  var inner = getInnerSize(data);\n
                  var outer = data.responsive ? getComputedSize(data) : getOuterSize(data);\n
                  var css = getInnerLayout(data.sizeMode, inner, outer);\n
                  state.canvas[0].width = data.width * data.canvasRatio;\n
                  state.canvas[0].height = data.height * data.canvasRatio;\n
                  state.canvas.css(css).show();\n
                  state.context.scale(data.canvasRatio, data.canvasRatio);\n
                  data.target.append(state.canvas);\n
              }\n
              function onFrame(e, data) {\n
                  var state = getState$$1(data);\n
                  trackFrame(data);\n
                  if (state.timeout == null) {\n
                      loop(data);\n
                  }\n
              }\n
              function trackFrame(data) {\n
                  var state = getState$$1(data);\n
                  var ani = getPlaybackState(data);\n
                  // distance between frames\n
                  var d = Math.abs(data.frame - ani.lastFrame);\n
                  // shortest distance\n
                  d = d >= data.frames / 2 ? data.frames - d : d;\n
                  state.steps.unshift({\n
                      frame: data.frame,\n
                      lane: data.lane,\n
                      live: 1,\n
                      step: state.frameTime / state.fadeTime,\n
                      d: d,\n
                      alpha: 0\n
                  });\n
              }\n
              var toRemove = [];\n
              function removeOldFrames(frames) {\n
                  toRemove.length = 0;\n
                  for (var i = 0; i < frames.length; i += 1) {\n
                      if (frames[i].alpha <= 0) {\n
                          toRemove.push(i);\n
                      }\n
                  }\n
                  for (var _i = 0, toRemove_1 = toRemove; _i < toRemove_1.length; _i++) {\n
                      var item = toRemove_1[_i];\n
                      frames.splice(item, 1);\n
                  }\n
              }\n
              function loop(data) {\n
                  var state = getState$$1(data);\n
                  state.timeout = window.setTimeout(function () { tick(data); }, state.frameTime);\n
              }\n
              function killLoop(data) {\n
                  var state = getState$$1(data);\n
                  window.clearTimeout(state.timeout);\n
                  state.timeout = null;\n
              }\n
              function applyCssBlur(canvas, d) {\n
                  var amount = Math.min(Math.max((d / 2) - 4, 0), 2.5);\n
                  var blur = "blur(" + amount + "px)";\n
                  canvas.css({\n
                      '-webkit-filter': blur,\n
                      filter: blur\n
                  });\n
              }\n
              function clearFrame(data, state) {\n
                  state.canvas.show();\n
                  var w = state.canvas[0].width / data.canvasRatio;\n
                  var h = state.canvas[0].height / data.canvasRatio;\n
                  // state.context.clearRect(0, 0, w, h)\n
              }\n
              function drawFrame(data, state, step) {\n
                  if (step.alpha <= 0) {\n
                      return;\n
                  }\n
                  var specs = findSpecs(data.metrics, data.frames, step.frame, step.lane);\n
                  var sheet = specs.sheet;\n
                  var sprite = specs.sprite;\n
                  if (!sheet || !sprite) {\n
                      return;\n
                  }\n
                  var src = data.source[sheet.id];\n
                  var image = data.images[sheet.id];\n
                  if (image.complete === false) {\n
                      return;\n
                  }\n
                  state.canvas.show();\n
                  var w = state.canvas[0].width / data.canvasRatio;\n
                  var h = state.canvas[0].height / data.canvasRatio;\n
                  state.context.globalAlpha = step.alpha;\n
                  state.context.drawImage(image, sprite.sampledX, sprite.sampledY, sprite.sampledWidth, sprite.sampledHeight, 0, 0, w, h);\n
              }\n
              function tick(data) {\n
                  var state = getState$$1(data);\n
                  killLoop(data);\n
                  if (!state.context) {\n
                      return;\n
                  }\n
                  var d = 0;\n
                  clearFrame(data, state);\n
                  state.context.clearRect(0, 0, data.width, data.height);\n
                  for (var _i = 0, _a = state.steps; _i < _a.length; _i++) {\n
                      var step = _a[_i];\n
                      step.live = Math.max(step.live - step.step, 0);\n
                      step.alpha = Math.max(step.live - 0.25, 0);\n
                      drawFrame(data, state, step);\n
                      d += step.alpha + step.d;\n
                  }\n
                  if (state.cssBlur) {\n
                      applyCssBlur(state.canvas, d);\n
                  }\n
                  removeOldFrames(state.steps);\n
                  if (state.steps.length) {\n
                      loop(data);\n
                  }\n
              }\n
              registerPlugin(NAME, {\n
                  name: NAME,\n
                  onLoad: init,\n
                  onFrameChanged: onFrame\n
              });\n
          })();\n
          \n
          (function () {\n
              var max = Math.max;\n
              var min = Math.min;\n
              var NAME = 'ease';\n
              function getState$$1(data) {\n
                  return getPluginState(data, NAME);\n
              }\n
              function getOption(data, name, fallback) {\n
                  return data[name] || fallback;\n
              }\n
              function init(e, data) {\n
                  var state = getState$$1(data);\n
                  state.maxSamples = max(getOption(data, 'easeMaxSamples', 5), 0);\n
                  state.damping = max(min(getOption(data, 'easeDamping', 0.9), 0.999), 0);\n
                  state.abortTime = max(getOption(data, 'easeAbortTime', 250), 16);\n
                  state.updateTime = max(getOption(data, 'easeUpdateTime', data.frameTime), 16);\n
                  state.samples = [];\n
                  state.steps = [];\n
              }\n
              function update(e, data) {\n
                  if (is(data, 'dragging')) {\n
                      killLoop(data);\n
                      sampleInput(data);\n
                  }\n
              }\n
              function end(e, data) {\n
                  var state = getState$$1(data);\n
                  var samples = state.samples;\n
                  var last;\n
                  var lanes = 0;\n
                  var frames = 0;\n
                  var time = 0;\n
                  for (var _i = 0, samples_1 = samples; _i < samples_1.length; _i++) {\n
                      var sample = samples_1[_i];\n
                      if (!last) {\n
                          last = sample;\n
                          continue;\n
                      }\n
                      var dt = sample.time - last.time;\n
                      if (dt > state.abortTime) {\n
                          lanes = frames = time = 0;\n
                          return killLoop(data);\n
                      }\n
                      frames += sample.frame - last.frame;\n
                      lanes += sample.lane - last.lane;\n
                      time += dt;\n
                      last = sample;\n
                  }\n
                  samples.length = 0;\n
                  if (!time) {\n
                      return;\n
                  }\n
                  state.lane = data.lane;\n
                  state.lanes = 0;\n
                  state.laneStep = lanes / time * state.updateTime;\n
                  state.frame = data.frame;\n
                  state.frames = 0;\n
                  state.frameStep = frames / time * state.updateTime;\n
                  loop(data);\n
              }\n
              function sampleInput(data) {\n
                  var state = getState$$1(data);\n
                  // add a new sample\n
                  state.samples.push({\n
                      time: new Date().getTime(),\n
                      frame: data.frame,\n
                      lane: data.lane\n
                  });\n
                  // drop old samples\n
                  while (state.samples.length > state.maxSamples) {\n
                      state.samples.shift();\n
                  }\n
              }\n
              function killLoop(data) {\n
                  var state = getState$$1(data);\n
                  if (state.handler != null) {\n
                      window.clearTimeout(state.handler);\n
                      state.handler = null;\n
                  }\n
              }\n
              function loop(data) {\n
                  var state = getState$$1(data);\n
                  state.handler = window.setTimeout(function () { tick(data); }, state.updateTime);\n
              }\n
              function tick(data) {\n
                  var state = getState$$1(data);\n
                  state.lanes += state.laneStep;\n
                  state.frames += state.frameStep;\n
                  state.laneStep *= state.damping;\n
                  state.frameStep *= state.damping;\n
                  var frame = Math.floor(state.frame + state.frames);\n
                  var lane = Math.floor(state.lane + state.lanes);\n
                  updateFrame(data, frame, lane);\n
                  if (is(data, 'dragging')) {\n
                      killLoop(data);\n
                  }\n
                  else if (Math.abs(state.frameStep) > 0.005 || Math.abs(state.laneStep) > 0.005) {\n
                      loop(data);\n
                  }\n
                  else {\n
                      killLoop(data);\n
                  }\n
              }\n
              registerPlugin(NAME, {\n
                  name: NAME,\n
                  onLoad: init,\n
                  mousemove: update,\n
                  mouseup: end,\n
                  mouseleave: end,\n
                  touchmove: update,\n
                  touchend: end,\n
                  touchcancel: end\n
              });\n
          })();\n
          \n
          (function () {\n
              var NAME = 'gallery';\n
              function getState$$1(data) {\n
                  return getPluginState(data, NAME);\n
              }\n
              function getOption(data, name, fallback) {\n
                  return data[name] || fallback;\n
              }\n
              function load(e, data) {\n
                  var state = getState$$1(data);\n
                  state.images = [];\n
                  state.offsets = [];\n
                  state.frame = data.frame;\n
                  state.speed = getOption(data, 'gallerySpeed', 500);\n
                  state.opacity = getOption(data, 'galleryOpacity', 0.25);\n
                  state.stage = getOption(data, 'galleryStage', $$1('<div></div>'));\n
                  state.stage.empty().addClass('gallery-stage').prependTo(data.stage);\n
                  var size = 0;\n
                  for (var _i = 0, _a = data.images; _i < _a.length; _i++) {\n
                      var image = _a[_i];\n
                      var naturalSize$$1 = naturalSize(image);\n
                      var scale = data.height / naturalSize$$1.height;\n
                      var img = $$1(image);\n
                      state.stage.append(img);\n
                      state.images.push(img);\n
                      state.offsets.push(-size + (data.width - image.width * scale) / 2);\n
                      size += data.width;\n
                      img.css({\n
                          'max-width': 'initial',\n
                          opacity: state.opacity,\n
                          width: data.width,\n
                          height: data.height\n
                      });\n
                  }\n
                  var innerSize = getInnerSize(data);\n
                  var outerSize = data.responsive ? getComputedSize(data) : getOuterSize(data);\n
                  var layout = getInnerLayout(data.sizeMode, innerSize, outerSize);\n
                  state.stage.css(layout).css({ width: size, left: state.offsets[state.frame] });\n
                  state.images[state.frame].animate({ opacity: 1 }, { duration: state.speed });\n
              }\n
              function draw(e, data) {\n
                  var state = getState$$1(data);\n
                  var input = getInputState(data);\n
                  var isDragging = is(data, 'dragging');\n
                  if (state.frame !== data.frame && !isDragging) {\n
                      state.stage.stop(true, false).animate({ left: state.offsets[data.frame] }, { duration: state.speed });\n
                      state.images[state.frame].animate({ opacity: state.opacity }, { duration: state.speed });\n
                      state.frame = data.frame;\n
                      state.images[state.frame].animate({ opacity: 1 }, { duration: state.speed });\n
                      state.stage.animate({ left: state.offsets[state.frame] });\n
                  }\n
                  else if (isDragging || state.dX !== input.dX) {\n
                      state.dX = input.dX;\n
                      state.ddX = input.ddX;\n
                      state.stage.stop(true, true).css({ left: state.offsets[state.frame] + state.dX });\n
                  }\n
              }\n
              registerPlugin(NAME, {\n
                  name: NAME,\n
                  onLoad: load,\n
                  onDraw: draw\n
              });\n
          })();\n
          \n
          (function () {\n
              var NAME = 'panorama';\n
              function getState$$1(data) {\n
                  return getPluginState(data, NAME);\n
              }\n
              function onLoad(e, data) {\n
                  var state = getState$$1(data);\n
                  var sprite = data.metrics[0];\n
                  if (!sprite) {\n
                      return;\n
                  }\n
                  if (data.orientation === 'horizontal') {\n
                      state.scale = data.target.innerHeight() / sprite.sampledHeight;\n
                      data.frames = sprite.sampledWidth;\n
                  }\n
                  else {\n
                      state.scale = data.target.innerWidth() / sprite.sampledWidth;\n
                      data.frames = sprite.sampledHeight;\n
                  }\n
                  var width = Math.floor(sprite.sampledWidth * state.scale);\n
                  var height = Math.floor(sprite.sampledHeight * state.scale);\n
                  data.stage.css({\n
                      'background-image': "url(" + data.source[sprite.id] + ")",\n
                      'background-repeat': 'repeat-both',\n
                      // set custom background size to enable responsive rendering\n
                      '-webkit-background-size': width + "px " + height + "px",\n
                      '-moz-background-size': width + "px " + height + "px",\n
                      '-o-background-size': width + "px " + height + "px",\n
                      'background-size': width + "px " + height + "px" /* Chrome, Firefox 4+, IE 9+, Opera, Safari 5+ */\n
                  });\n
              }\n
              function onDraw(e, data) {\n
                  var state = getState$$1(data);\n
                  var px = data.orientation === 'horizontal' ? 1 : 0;\n
                  var py = px ? 0 : 1;\n
                  var offset = data.frame % data.frames;\n
                  var left = Math.round(px * offset * state.scale);\n
                  var top = Math.round(py * offset * state.scale);\n
                  data.stage.css({ 'background-position': left + "px " + top + "px" });\n
              }\n
              registerPlugin(NAME, {\n
                  name: NAME,\n
                  onLoad: onLoad,\n
                  onDraw: onDraw\n
              });\n
          })();\n
          \n
          (function () {\n
              var NAME = 'zoom';\n
              function getState$$1(data) {\n
                  return getPluginState(data, NAME);\n
              }\n
              function getOption(data, name, fallback) {\n
                  return name in data ? data[name] : fallback;\n
              }\n
              function onInit(e, data) {\n
                  var state = getState$$1(data);\n
                  state.source = getOption(data, 'zoomSource', data.source);\n
                  state.useWheel = getOption(data, 'zoomUseWheel', false);\n
                  state.useClick = getOption(data, 'zoomUseClick', true);\n
                  state.pinFrame = getOption(data, 'zoomPinFrame', true);\n
                  state.doubleClickTime = getOption(data, 'zoomDoubleClickTime', 500);\n
                  state.stage = state.stage || $$1("<div class='zoom-stage'></div>");\n
                  state.stage.css({\n
                      width: '100%',\n
                      height: '100%',\n
                      top: 0,\n
                      left: 0,\n
                      bottom: 0,\n
                      right: 0,\n
                      position: 'absolute'\n
                  })\n
                      .appendTo(data.target)\n
                      .hide();\n
              }\n
              function onDestroy(e, data) {\n
                  var state = getState$$1(data);\n
                  if (state.stage) {\n
                      state.stage.remove();\n
                      delete state.stage;\n
                  }\n
              }\n
              function updateInput$$1(e, data) {\n
                  var state = getState$$1(data);\n
                  if (!state.stage.is(':visible')) {\n
                      return;\n
                  }\n
                  e.preventDefault();\n
                  if (state.pinFrame) {\n
                      // hack into drag/move module and disable dragging\n
                      // prevents frame change during zoom mode\n
                      flag(data, 'dragging', false);\n
                  }\n
                  // grab touch/cursor position\n
                  var cursor = getCursorPosition(e);\n
                  // normalize cursor position into [0:1] range\n
                  var x = cursor.x / data.width;\n
                  var y = cursor.y / data.height;\n
                  if (state.oldX == null) {\n
                      state.oldX = x;\n
                      state.oldY = y;\n
                  }\n
                  if (state.currentX == null) {\n
                      state.currentX = x;\n
                      state.currentY = y;\n
                  }\n
                  // calculate move delta since last frame and remember current position\n
                  var dx = x - state.oldX;\n
                  var dy = y - state.oldY;\n
                  state.oldX = x;\n
                  state.oldY = y;\n
                  // invert drag direction for touch events to enable 'natural' scrolling\n
                  if (e.type.match(/touch/)) {\n
                      dx = -dx;\n
                      dy = -dy;\n
                  }\n
                  // accumulate display coordinates\n
                  state.currentX = clamp(state.currentX + dx, 0, 1);\n
                  state.currentY = clamp(state.currentY + dy, 0, 1);\n
                  updateFrame(data, data.frame, data.lane);\n
              }\n
              function onClick(e, data) {\n
                  var state = getState$$1(data);\n
                  if (!state.useClick) {\n
                      return;\n
                  }\n
                  e.preventDefault();\n
                  // simulate double click\n
                  var clickTime = new Date().getTime();\n
                  if (!state.clickTime) {\n
                      // on first click\n
                      state.clickTime = clickTime;\n
                      return;\n
                  }\n
                  // on second click\n
                  var timeDelta = clickTime - state.clickTime;\n
                  if (timeDelta > state.doubleClickTime) {\n
                      // took too long, back to first click\n
                      state.clickTime = clickTime;\n
                      return;\n
                  }\n
                  // on valid double click\n
                  state.clickTime = undefined;\n
                  if (toggleZoom(data)) {\n
                      updateInput$$1(e, data);\n
                  }\n
              }\n
              function onMove(e, data) {\n
                  var state = getState$$1(data);\n
                  if (state.stage.is(':visible')) {\n
                      updateInput$$1(e, data);\n
                  }\n
              }\n
              function onDraw(e, data) {\n
                  var state = getState$$1(data);\n
                  // calculate the frame index\n
                  var index = data.lane * data.frames + data.frame;\n
                  // get the zoom image. Use original frames as fallback. This won't work for sprite sheets\n
                  var source = state.source[index];\n
                  var spec = findSpecs(data.metrics, data.frames, data.frame, data.lane);\n
                  // get display position\n
                  var x = state.currentX;\n
                  var y = state.currentY;\n
                  // fallback to centered position\n
                  if (x == null) {\n
                      x = state.currentX = 0.5;\n
                      y = state.currentY = 0.5;\n
                  }\n
                  if (source) {\n
                      // scale up from [0:1] to [0:100] range\n
                      x = Math.floor(x * 100);\n
                      y = Math.floor(y * 100);\n
                      // update background image and position\n
                      state.stage.css({\n
                          'background-repeat': 'no-repeat',\n
                          'background-image': "url('" + source + "')",\n
                          'background-position': x + "% " + y + "%"\n
                      });\n
                  }\n
                  else if (spec.sheet && spec.sprite) {\n
                      var sprite = spec.sprite;\n
                      var sheet = spec.sheet;\n
                      var src = data.source[sheet.id];\n
                      var left = -Math.floor(sprite.sampledX + x * (sprite.sampledWidth - data.width));\n
                      var top_1 = -Math.floor(sprite.sampledY + y * (sprite.sampledHeight - data.height));\n
                      var width = sheet.sampledWidth;\n
                      var height = sheet.sampledHeight;\n
                      state.stage.css({\n
                          'background-image': "url('" + src + "')",\n
                          'background-position': left + "px " + top_1 + "px",\n
                          'background-repeat': 'no-repeat',\n
                          // set custom background size to enable responsive rendering\n
                          '-webkit-background-size': width + "px " + height + "px",\n
                          '-moz-background-size': width + "px " + height + "px",\n
                          '-o-background-size': width + "px " + height + "px",\n
                          'background-size': width + "px " + height + "px" /* Chrome, Firefox 4+, IE 9+, Opera, Safari 5+ */\n
                      });\n
                  }\n
              }\n
              function toggleZoom(data) {\n
                  var state = getState$$1(data);\n
                  if (!state.stage) {\n
                      throw new Error('zoom module is not initialized or is not available.');\n
                  }\n
                  if (state.stage.is(':visible')) {\n
                      showZoom(data);\n
                  }\n
                  else {\n
                      hideZoom(data);\n
                      return true;\n
                  }\n
                  return false;\n
              }\n
              function showZoom(data) {\n
                  var state = getState$$1(data);\n
                  state.stage.fadeOut();\n
                  data.stage.fadeIn();\n
              }\n
              function hideZoom(data) {\n
                  var state = getState$$1(data);\n
                  state.stage.fadeIn();\n
                  data.stage.fadeOut();\n
              }\n
              function wheel(e, data) {\n
                  var state = getState$$1(data);\n
                  if (!data.loading && state.useWheel) {\n
                      var we = e.originalEvent;\n
                      var signY = we.deltaY === 0 ? 0 : we.deltaY > 0 ? 1 : -1;\n
                      if (typeof state.useWheel === 'number') {\n
                          signY *= state.useWheel;\n
                      }\n
                      if (state.stage.is(':visible') && signY > 0) {\n
                          e.preventDefault();\n
                          showZoom(data);\n
                      }\n
                      if (!state.stage.is(':visible') && signY < 0) {\n
                          e.preventDefault();\n
                          hideZoom(data);\n
                      }\n
                  }\n
              }\n
              registerPlugin(NAME, {\n
                  name: NAME,\n
                  mousedown: onClick,\n
                  touchstart: onClick,\n
                  mousemove: onMove,\n
                  touchmove: onMove,\n
                  wheel: wheel,\n
                  onInit: onInit,\n
                  onDestroy: onDestroy,\n
                  onDraw: onDraw\n
              });\n
              extendApi({\n
                  toggleZoom: function () { toggleZoom(this.data); } // tslint:disable-line\n
              });\n
          })();\n
          \n
          var Utils = {\n
              $: $$1,\n
              bind: bind,\n
              clamp: clamp,\n
              detectSubsampling: detectSubsampling,\n
              error: error,\n
              findSpecs: findSpecs,\n
              getComputedSize: getComputedSize,\n
              getCursorPosition: getCursorPosition,\n
              getInnerLayout: getInnerLayout,\n
              getInnerSize: getInnerSize,\n
              getOuterSize: getOuterSize,\n
              isFunction: isFunction,\n
              log: log,\n
              measure: measure,\n
              naturalSize: naturalSize,\n
              noop: noop$1,\n
              pixelRatio: pixelRatio,\n
              preload: preload,\n
              prevent: prevent,\n
              sourceArray: sourceArray,\n
              toArray: toArray,\n
              unbind: unbind,\n
              warn: warn,\n
              wrap: wrap\n
          };\n
          \n
          exports.Utils = Utils;\n
          exports.sourceArray = sourceArray;\n
          exports.Api = Api;\n
          exports.extendApi = extendApi;\n
          exports.instances = instances;\n
          exports.applyEvents = applyEvents;\n
          exports.boot = boot;\n
          exports.create = create;\n
          exports.createOrUpdate = createOrUpdate;\n
          exports.destroy = destroy;\n
          exports.namespace = namespace;\n
          exports.eventNames = eventNames;\n
          exports.callbackNames = callbackNames;\n
          exports.eventsToPrevent = eventsToPrevent;\n
          exports.defaults = defaults;\n
          exports.getInputState = getInputState;\n
          exports.updateInput = updateInput;\n
          exports.resetInput = resetInput;\n
          exports.applyLayout = applyLayout;\n
          exports.getPlaybackState = getPlaybackState;\n
          exports.updateFrame = updateFrame;\n
          exports.stopAnimation = stopAnimation;\n
          exports.applyAnimation = applyAnimation;\n
          exports.startAnimation = startAnimation;\n
          exports.registerPlugin = registerPlugin;\n
          exports.registerModule = registerModule;\n
          exports.getPlugin = getPlugin;\n
          exports.applyPlugins = applyPlugins;\n
          exports.getState = getState;\n
          exports.getPluginState = getPluginState;\n
          exports.is = is;\n
          exports.flag = flag;\n
          \n
          Object.defineProperty(exports, '__esModule', { value: true });\n
          \n
          })));\n
          //# sourceMappingURL=spritespin.js.map\n
          </script>\n
              <script type='text/javascript'>\n
          \n
          $("#mySpriteSpin_27").spritespin({\n
            // path to the source images.\n
            source: [\n
            "https://emxmotors.com/public/assets/images/360_new/101.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/102.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/103.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/104.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/105.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/106.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/107.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/108.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/109.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/110.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/111.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/112.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/113.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/114.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/115.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/116.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/117.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/118.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/119.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/120.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/121.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/122.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/123.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/124.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/125.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/126.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/127.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/128.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/129.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/130.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/131.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/132.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/133.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/134.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/135.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/136.webp",\n
            "https://emxmotors.com/public/assets/images/360_new/137.webp",\n
           \n
            ],\n
            width   : 648,  // width in pixels of the window/frame\n
            height  : 400,  // height in pixels of the window/frame\n
          });\n
          \n
          \n
              \n
          </script>\n
          \n
          \n
          \n
          \n
          <!-- </body>\n
          </html>
          """
        "mobile_footer" => """
          <footer id="footerMobile" class="footer-area footer-mobile d-lg-none d-xl-none">\n
            <div class="container-fluid p-0">\n
              <div class="container">\n
                <div class="row">\n
                  <div class="col-12 col-md-8">\n
                      <div class="single-footer display-mobile">\n
                          <h5>Subscribe for Newsletter</h5>\n
                          <div class="row">\n
                            <div class="col-7 col-md-8">\n
                              <hr>\n
                            </div>\n
                          </div>\n
                        </div>\n
                        \n
                  </div>\n
                  <div class="col-12 col-md-4">\n
                    <div class="single-footer display-mobile">\n
                        <h5>Follow Us</h5>\n
                        <div class="row">\n
                          <div class="col-7 col-md-8">\n
                            <hr>\n
                          </div>\n
                        </div>\n
                      </div>\n
                        <div class="socials">\n
                            <ul class="list">\n
                              <li>\n
                                                            <a href="https://www.facebook.com/emxmotorsuae/" class="fab fa-facebook-f" target="_blank"></a>\n
                                                          </li>\n
                                <li>\n
                                                          <a href="https://www.twitter.com" class="fab fa-twitter" target="_blank"></a>\n
                                </li>\n
                                <li>\n
                                                          <a href="https://www.youtube.com/channel/UC92lCaRzfimi_Hrw3MQo7TQ"  target="_blank"><i class="fab fa-google"></i></a>\n
                                                      </li>\n
                                <li>\n
                                                          <a href="https://www.instagram.com/emxmotorsme/" class="fab fa-linkedin-in" target="_blank"></a>\n
                                                      </li>\n
                            </ul>\n
                        </div>\n
                  </div>\n
                </div>\n
              </div>\n
            </div>\n
            <div class="container-fluid px-0  footer-inner">\n
              <div class="container">\n
                <div class="row">\n
                  <div class="col-12 col-md-4">\n
                    <div class="single-footer">\n
                      <h5>About Store</h5>\n
                      <div class="row">\n
                        <div class="col-7 col-md-8">\n
                          <hr>\n
                        </div>\n
                      </div>\n
                      <ul class="contact-list  pl-0 mb-0">\n
                        <li> <i class="fas fa-map-marker"></i><span>USA - 100 N Central Expressway 613, Richardson, TX 75080 .  , 71000 United Arab Emirates</span> </li>\n
                        <li> <i class="fas fa-phone"></i><span dir="ltr">(+971 56 555 2200)</span> </li>\n
                        <li> <i class="fas fa-envelope"></i><span> <a href="mailto:sales@brandbychoice.com">emx.motorsme@gmail.com</a> </span> </li>\n
          \n
                      </ul>\n
                    </div>\n
                  </div>\n
                  <div class="col-12 col-md-4">\n
                    <div class="footer-block">\n
                      <div class="single-footer single-footer-left">\n
                        <h5>Our Services</h5>\n
                        <div class="row">\n
                            <div class="col-7 col-md-8">\n
                              <hr>\n
                            </div>\n
                        </div>\n
                        <ul class="links-list pl-0 mb-0">\n
                          <li> <a href="https://emxmotors.com"><i class="fa fa-angle-right"></i>Home</a> </li>\n
                        <li> <a href="https://emxmotors.com/shop"><i class="fa fa-angle-right"></i>Shop</a> </li>\n
                        <li> <a href="https://emxmotors.com/orders"><i class="fa fa-angle-right"></i>Orders</a> </li>\n
                        <li> <a href="https://emxmotors.com/viewcart"><i class="fa fa-angle-right"></i>Shopping Cart</a> </li>\n
                        <li> <a href="https://emxmotors.com/wishlist"><i class="fa fa-angle-right"></i>Wishlist</a> </li>\n
                        </ul>\n
                      </div>\n
                    </div>\n
                  </div>\n
                  <div class="col-12 col-md-4 ">\n
                    <div class="single-footer single-footer-right">\n
                      <h5>Information</h5>\n
                      <div class="row">\n
                        <div class="col-7 col-md-8">\n
                          <hr>\n
                        </div>\n
                      </div>\n
                      <ul class="links-list pl-0 mb-0">\n
                                                                <li> <a href="https://emxmotors.com/page?name=privacy-policy"><i class="fa fa-angle-right"></i>Privacy Policy</a> </li>\n
                                                  <li> <a href="https://emxmotors.com/page?name=term-services"><i class="fa fa-angle-right"></i>Terms of Services</a> </li>\n
                                                            <li> <a href="https://emxmotors.com/contact"><i class="fa fa-angle-right"></i>Contact Us</a> </li>\n
                      </ul>\n
                    </div>\n
                  </div>\n
                </div>\n
              </div>\n
            </div>\n
            <div class="container-fluid p-0">\n
              <div class="copyright-content">\n
                  <div class="container">\n
                    <div class="row align-items-center">\n
          \n
                        <div class="col-12 col-md-6">\n
                          <div class="footer-info">\n
                            &copy;&nbsp;2024 Company, Inc. <a href="https://emxmotors.com/page?name=refund-policy">Privacy</a>&nbsp;&bull;&nbsp;<a href="https://emxmotors.com/page?name=term-services">Terms</a>\n
                          \n
          \n
                          </div>\n
          \n
                        </div>\n
                        <div class="col-12 col-md-6">\n
                            <div class="footer-image">\n
                                <img class="img-fluid" src="https://emxmotors.com/web/images/miscellaneous/payments.png">\n
                            </div>\n
          \n
                        </div>\n
                    </div>\n
                  </div>\n
              </div>\n
            </div>\n
          \n
          </footer>\n
          """
        "cart" => 1
        "blog" => 1
        "detail" => 1
        "slidercategorydetail" => 1
        "shop" => 1
        "contact" => 1
        "login" => 1
        "transitions" => 5
        "product_section_order" => """
          [{"id":11,\r\n
          "name":"Tab Products View",\r\n
          "order":1,\r\n
          "file_name":"tab",\r\n
          "status":0,\r\n
          "image":"images\/prototypes\/tab.jpg",\r\n
          "disabled_image":"images\/prototypes\/tab-cross.jpg",\r\n
          "alt":"Tab Products View"},\r\n
          {"id":5,\r\n
          "name":"Categories",\r\n
          "order":2,\r\n
          "file_name":"categories",\r\n
          "status":1,\r\n
          "image":"images\/prototypes\/categories.jpg",\r\n
          "disabled_image":"images\/prototypes\/categories-cross.jpg",\r\n
          "alt":"Categories"},\r\n
          {"id":8,\r\n
          "name":"Newest Product Section",\r\n
          "order":3,\r\n
          "file_name":"newest_product",\r\n
          "status":1,\r\n
          "image":"images\/prototypes\/newest_product.jpg",\r\n
          "disabled_image":"images\/prototypes\/newest_product-cross.jpg",\r\n
          "alt":"Newest Product Section"},\r\n
          {"id":10,\r\n
          "name":"Second Ad Section",\r\n
          "order":4,\r\n
          "file_name":"sec_ad_banner",\r\n
          "status":1,\r\n
          "image":"images\/prototypes\/sec_ad_section.jpg",\r\n
          "disabled_image":"images\/prototypes\/sec_ad_section-cross.jpg",\r\n
          "alt":"Second Ad Section"},\r\n
          {"id":13,\r\n
          "name":"Newest Product Section",\r\n
          "order":5,\r\n
          "file_name":"my_file",\r\n
          "status":1,\r\n
          "image":"images\/prototypes\/newest_product.jpg",\r\n
          "disabled_image":"images\/prototypes\/newest_product-cross.jpg",\r\n
          "alt":"Newest Product Section"},\r\n
          {"id":1,\r\n
          "name":"Banner Section",\r\n
          "order":6,\r\n
          "file_name":"banner_section",\r\n
          "status":1,\r\n
          "image":"images\/prototypes\/banner_section.jpg",\r\n
          "alt":"Banner Section"},\r\n
          {"id":2,\r\n
          "name":"Flash Sale Section",\r\n
          "order":7,\r\n
          "file_name":"flash_sale_section",\r\n
          "status":0,\r\n
          "image":"images\/prototypes\/flash_sale_section.jpg",\r\n
          "disabled_image":"images\/prototypes\/flash_sale_section-cross.jpg",\r\n
          "alt":"Flash Sale Section"},\r\n
          {"id":9,\r\n
          "name":"Top Selling",\r\n
          "order":8,\r\n
          "file_name":"top",\r\n
          "status":0,\r\n
          "image":"images\/prototypes\/top.jpg",\r\n
          "disabled_image":"images\/prototypes\/top-cross.jpg",\r\n
          "alt":"Top Selling"},\r\n
          {"id":4,\r\n
          "name":"Ad Section",\r\n
          "order":9,\r\n
          "file_name":"ad_banner_section",\r\n
          "status":0,\r\n
          "image":"images\/prototypes\/ad_banner_section.jpg",\r\n
          "disabled_image":"images\/prototypes\/ad_banner_section-cross.jpg",\r\n
          "alt":"Ad Section"},\r\n
          {"id":3,\r\n
          "name":"Special Products Section",\r\n
          "order":10,\r\n
          "file_name":"special",\r\n
          "status":0,\r\n
          "image":"images\/prototypes\/special_product.jpg",\r\n
          "disabled_image":"images\/prototypes\/special_product-cross.jpg",\r\n
          "alt":"Special Products Section"},\r\n
          {"id":12,\r\n
          "name":"Banner 2 Section",\r\n
          "order":11,\r\n
          "file_name":"banner_two_section",\r\n
          "status":1,\r\n
          "image":"images\/prototypes\/sec_ad_section.jpg",\r\n
          "disabled_image":"images\/prototypes\/sec_ad_section-cross.jpg",\r\n
          "alt":"Banner 2 Section"},\r\n
          {"id":6,\r\n
          "name":"Blog Section",\r\n
          "order":12,\r\n
          "file_name":"blog_section",\r\n
          "status":0,\r\n
          "image":"images\/prototypes\/blog_section.jpg",\r\n
          "disabled_image":"images\/prototypes\/blog_section-cross.jpg",\r\n
          "alt":"Blog Section"},\r\n
          {"id":7,\r\n
          "name":"Info Boxes",\r\n
          "order":13,\r\n
          "file_name":"info_boxes",\r\n
          "status":1,\r\n
          "image":"images\/prototypes\/info_boxes.jpg",\r\n
          "disabled_image":"images\/prototypes\/info_boxes-cross.jpg",\r\n
          "alt":"Info Boxes"}]
          """
      ]
      "data" => null
      "products_images" => Illuminate\Support\Collection {#1152}
    ]
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php
    /**
     * Get the middleware assigned to the controller.
     *
     * @return array
     */
    public function getMiddleware()
    {
        return $this->middleware;
    }
 
    /**
     * Execute an action on the controller.
     *
     * @param  string  $method
     * @param  array   $parameters
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function callAction($method, $parameters)
    {
        return call_user_func_array([$this, $method], $parameters);
    }
 
    /**
     * Handle calls to missing methods on the controller.
     *
     * @param  string  $method
     * @param  array   $parameters
     * @return mixed
     *
     * @throws \BadMethodCallException
     */
    public function __call($method, $parameters)
    {
        throw new BadMethodCallException(sprintf(
            'Method %s::%s does not exist.', static::class, $method
        ));
    }
}
 
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. "about"
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Controller.php
    /**
     * Get the middleware assigned to the controller.
     *
     * @return array
     */
    public function getMiddleware()
    {
        return $this->middleware;
    }
 
    /**
     * Execute an action on the controller.
     *
     * @param  string  $method
     * @param  array   $parameters
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function callAction($method, $parameters)
    {
        return call_user_func_array([$this, $method], $parameters);
    }
 
    /**
     * Handle calls to missing methods on the controller.
     *
     * @param  string  $method
     * @param  array   $parameters
     * @return mixed
     *
     * @throws \BadMethodCallException
     */
    public function __call($method, $parameters)
    {
        throw new BadMethodCallException(sprintf(
            'Method %s::%s does not exist.', static::class, $method
        ));
    }
}
 
Arguments
  1. array:2 [
      0 => App\Http\Controllers\Web\IndexController {#1050}
      1 => "torrotdetail"
    ]
    
  2. array:2 [
      0 => Illuminate\Http\Request {#51
        #json: null
        #convertedFiles: null
        #userResolver: Closure($guard = null) {#967 …4}
        #routeResolver: Closure() {#971 …4}
        +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
        +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
        +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
        +server: Symfony\Component\HttpFoundation\ServerBag {#55}
        +files: Symfony\Component\HttpFoundation\FileBag {#56}
        +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
        +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
        #content: null
        #languages: null
        #charsets: null
        #encodings: null
        #acceptableContentTypes: array:1 [
          0 => "*/*"
        ]
        #pathInfo: "/torrot_detail/about"
        #requestUri: "/torrot_detail/about"
        #baseUrl: ""
        #basePath: null
        #method: "GET"
        #format: null
        #session: Illuminate\Session\Store {#1063}
        #locale: null
        #defaultLocale: "en"
        -preferredFormat: null
        -isHostValid: true
        -isForwardedValid: true
        basePath: ""
        format: "html"
      }
      "id" => "about"
    ]
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/ControllerDispatcher.php
    {
        $this->container = $container;
    }
 
    /**
     * Dispatch a request to a given controller and method.
     *
     * @param  \Illuminate\Routing\Route  $route
     * @param  mixed  $controller
     * @param  string  $method
     * @return mixed
     */
    public function dispatch(Route $route, $controller, $method)
    {
        $parameters = $this->resolveClassMethodDependencies(
            $route->parametersWithoutNulls(), $controller, $method
        );
 
        if (method_exists($controller, 'callAction')) {
            return $controller->callAction($method, $parameters);
        }
 
        return $controller->{$method}(...array_values($parameters));
    }
 
    /**
     * Get the middleware for the controller instance.
     *
     * @param  \Illuminate\Routing\Controller  $controller
     * @param  string  $method
     * @return array
     */
    public function getMiddleware($controller, $method)
    {
        if (! method_exists($controller, 'getMiddleware')) {
            return [];
        }
 
        return collect($controller->getMiddleware())->reject(function ($data) use ($method) {
            return static::methodExcludedByOptions($method, $data['options']);
Arguments
  1. "torrotdetail"
    
  2. array:2 [
      0 => Illuminate\Http\Request {#51
        #json: null
        #convertedFiles: null
        #userResolver: Closure($guard = null) {#967 …4}
        #routeResolver: Closure() {#971 …4}
        +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
        +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
        +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
        +server: Symfony\Component\HttpFoundation\ServerBag {#55}
        +files: Symfony\Component\HttpFoundation\FileBag {#56}
        +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
        +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
        #content: null
        #languages: null
        #charsets: null
        #encodings: null
        #acceptableContentTypes: array:1 [
          0 => "*/*"
        ]
        #pathInfo: "/torrot_detail/about"
        #requestUri: "/torrot_detail/about"
        #baseUrl: ""
        #basePath: null
        #method: "GET"
        #format: null
        #session: Illuminate\Session\Store {#1063}
        #locale: null
        #defaultLocale: "en"
        -preferredFormat: null
        -isHostValid: true
        -isForwardedValid: true
        basePath: ""
        format: "html"
      }
      "id" => "about"
    ]
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Route.php
    protected function runCallable()
    {
        $callable = $this->action['uses'];
 
        return $callable(...array_values($this->resolveMethodDependencies(
            $this->parametersWithoutNulls(), new ReflectionFunction($this->action['uses'])
        )));
    }
 
    /**
     * Run the route action and return the response.
     *
     * @return mixed
     *
     * @throws \Symfony\Component\HttpKernel\Exception\NotFoundHttpException
     */
    protected function runController()
    {
        return $this->controllerDispatcher()->dispatch(
            $this, $this->getController(), $this->getControllerMethod()
        );
    }
 
    /**
     * Get the controller instance for the route.
     *
     * @return mixed
     */
    public function getController()
    {
        if (! $this->controller) {
            $class = $this->parseControllerCallback()[0];
 
            $this->controller = $this->container->make(ltrim($class, '\\'));
        }
 
        return $this->controller;
    }
 
    /**
Arguments
  1. Illuminate\Routing\Route {#269}
    
  2. App\Http\Controllers\Web\IndexController {#1050}
    
  3. "torrotdetail"
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Route.php
     *
     * @throws \UnexpectedValueException
     */
    protected function parseAction($action)
    {
        return RouteAction::parse($this->uri, $action);
    }
 
    /**
     * Run the route action and return the response.
     *
     * @return mixed
     */
    public function run()
    {
        $this->container = $this->container ?: new Container;
 
        try {
            if ($this->isControllerAction()) {
                return $this->runController();
            }
 
            return $this->runCallable();
        } catch (HttpResponseException $e) {
            return $e->getResponse();
        }
    }
 
    /**
     * Checks whether the route's action is a controller.
     *
     * @return bool
     */
    protected function isControllerAction()
    {
        return is_string($this->action['uses']);
    }
 
    /**
     * Run the route action and return the response.
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php
    /**
     * Run the given route within a Stack "onion" instance.
     *
     * @param  \Illuminate\Routing\Route  $route
     * @param  \Illuminate\Http\Request  $request
     * @return mixed
     */
    protected function runRouteWithinStack(Route $route, Request $request)
    {
        $shouldSkipMiddleware = $this->container->bound('middleware.disable') &&
                                $this->container->make('middleware.disable') === true;
 
        $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route);
 
        return (new Pipeline($this->container))
                        ->send($request)
                        ->through($middleware)
                        ->then(function ($request) use ($route) {
                            return $this->prepareResponse(
                                $request, $route->run()
                            );
                        });
    }
 
    /**
     * Gather the middleware for the given route with resolved class names.
     *
     * @param  \Illuminate\Routing\Route  $route
     * @return array
     */
    public function gatherRouteMiddleware(Route $route)
    {
        $middleware = collect($route->gatherMiddleware())->map(function ($name) {
            return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups);
        })->flatten();
 
        return $this->sortMiddleware($middleware);
    }
 
    /**
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
     * @return mixed
     */
    public function thenReturn()
    {
        return $this->then(function ($passable) {
            return $passable;
        });
    }
 
    /**
     * Get the final piece of the Closure onion.
     *
     * @param  \Closure  $destination
     * @return \Closure
     */
    protected function prepareDestination(Closure $destination)
    {
        return function ($passable) use ($destination) {
            try {
                return $destination($passable);
            } catch (Exception $e) {
                return $this->handleException($passable, $e);
            } catch (Throwable $e) {
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    if (is_callable($pipe)) {
                        // If the pipe is an instance of a Closure, we will just call it directly but
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/app/Http/Middleware/Installation.php

namespace App\Http\Middleware;

use Closure;

class Installation
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
      if(!file_exists(storage_path('installed'))){
        return redirect('/install');
      }
        return $next($request);
    }
}
 
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                        // the appropriate method and arguments, returning the results back out.
                        return $pipe($passable, $stack);
                    } elseif (! is_object($pipe)) {
                        [$name, $parameters] = $this->parsePipeString($pipe);
 
                        // If the pipe is a string we will parse the string and resolve the class out
                        // of the dependency injection container. We can then build a callable and
                        // execute the pipe function giving in the parameters that are required.
                        $pipe = $this->getContainer()->make($name);
 
                        $parameters = array_merge([$passable, $stack], $parameters);
                    } else {
                        // If the pipe is already an object we'll just make a callable and pass it to
                        // the pipe as-is. There is no need to do any extra parsing and formatting
                        // since the object we're given was already a fully instantiated object.
                        $parameters = [$passable, $stack];
                    }
 
                    $carry = method_exists($pipe, $this->method)
                                    ? $pipe->{$this->method}(...$parameters)
                                    : $pipe(...$parameters);
 
                    return $this->handleCarry($carry);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#1047 …4}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Middleware/SubstituteBindings.php
     */
    public function __construct(Registrar $router)
    {
        $this->router = $router;
    }
 
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $this->router->substituteBindings($route = $request->route());
 
        $this->router->substituteImplicitBindings($route);
 
        return $next($request);
    }
}
 
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                        // the appropriate method and arguments, returning the results back out.
                        return $pipe($passable, $stack);
                    } elseif (! is_object($pipe)) {
                        [$name, $parameters] = $this->parsePipeString($pipe);
 
                        // If the pipe is a string we will parse the string and resolve the class out
                        // of the dependency injection container. We can then build a callable and
                        // execute the pipe function giving in the parameters that are required.
                        $pipe = $this->getContainer()->make($name);
 
                        $parameters = array_merge([$passable, $stack], $parameters);
                    } else {
                        // If the pipe is already an object we'll just make a callable and pass it to
                        // the pipe as-is. There is no need to do any extra parsing and formatting
                        // since the object we're given was already a fully instantiated object.
                        $parameters = [$passable, $stack];
                    }
 
                    $carry = method_exists($pipe, $this->method)
                                    ? $pipe->{$this->method}(...$parameters)
                                    : $pipe(...$parameters);
 
                    return $this->handleCarry($carry);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#979 …4}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/VerifyCsrfToken.php
    }
 
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     *
     * @throws \Illuminate\Session\TokenMismatchException
     */
    public function handle($request, Closure $next)
    {
        if (
            $this->isReading($request) ||
            $this->runningUnitTests() ||
            $this->inExceptArray($request) ||
            $this->tokensMatch($request)
        ) {
            return tap($next($request), function ($response) use ($request) {
                if ($this->shouldAddXsrfTokenCookie()) {
                    $this->addCookieToResponse($request, $response);
                }
            });
        }
 
        throw new TokenMismatchException('CSRF token mismatch.');
    }
 
    /**
     * Determine if the HTTP request uses a ‘read’ verb.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return bool
     */
    protected function isReading($request)
    {
        return in_array($request->method(), ['HEAD', 'GET', 'OPTIONS']);
    }
 
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                        // the appropriate method and arguments, returning the results back out.
                        return $pipe($passable, $stack);
                    } elseif (! is_object($pipe)) {
                        [$name, $parameters] = $this->parsePipeString($pipe);
 
                        // If the pipe is a string we will parse the string and resolve the class out
                        // of the dependency injection container. We can then build a callable and
                        // execute the pipe function giving in the parameters that are required.
                        $pipe = $this->getContainer()->make($name);
 
                        $parameters = array_merge([$passable, $stack], $parameters);
                    } else {
                        // If the pipe is already an object we'll just make a callable and pass it to
                        // the pipe as-is. There is no need to do any extra parsing and formatting
                        // since the object we're given was already a fully instantiated object.
                        $parameters = [$passable, $stack];
                    }
 
                    $carry = method_exists($pipe, $this->method)
                                    ? $pipe->{$this->method}(...$parameters)
                                    : $pipe(...$parameters);
 
                    return $this->handleCarry($carry);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#978 …4}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/View/Middleware/ShareErrorsFromSession.php
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        // If the current session has an "errors" variable bound to it, we will share
        // its value with all view instances so the views can easily access errors
        // without having to bind. An empty bag is set when there aren't errors.
        $this->view->share(
            'errors', $request->session()->get('errors') ?: new ViewErrorBag
        );
 
        // Putting the errors in the view for every view allows the developer to just
        // assume that some errors are always available, which is convenient since
        // they don't have to continually run checks for the presence of errors.
 
        return $next($request);
    }
}
 
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                        // the appropriate method and arguments, returning the results back out.
                        return $pipe($passable, $stack);
                    } elseif (! is_object($pipe)) {
                        [$name, $parameters] = $this->parsePipeString($pipe);
 
                        // If the pipe is a string we will parse the string and resolve the class out
                        // of the dependency injection container. We can then build a callable and
                        // execute the pipe function giving in the parameters that are required.
                        $pipe = $this->getContainer()->make($name);
 
                        $parameters = array_merge([$passable, $stack], $parameters);
                    } else {
                        // If the pipe is already an object we'll just make a callable and pass it to
                        // the pipe as-is. There is no need to do any extra parsing and formatting
                        // since the object we're given was already a fully instantiated object.
                        $parameters = [$passable, $stack];
                    }
 
                    $carry = method_exists($pipe, $this->method)
                                    ? $pipe->{$this->method}(...$parameters)
                                    : $pipe(...$parameters);
 
                    return $this->handleCarry($carry);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#968 …4}
    
/home/emxmotors/public_html/app/Http/Middleware/Language.php
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
      if(file_exists(storage_path('installed'))){
            if(Session::has('locale')){
                $locale = Session::get('locale', Config::get('app.locale'));
            }else{
               $languages = DB::table('languages')->where('is_default','=','1')->get();
               $request->session()->put('direction', $languages[0]->direction);
               $locale = $languages[0]->code;
            }

            App::setLocale($locale);
      }
        return $next($request);
    }
}
 
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                        // the appropriate method and arguments, returning the results back out.
                        return $pipe($passable, $stack);
                    } elseif (! is_object($pipe)) {
                        [$name, $parameters] = $this->parsePipeString($pipe);
 
                        // If the pipe is a string we will parse the string and resolve the class out
                        // of the dependency injection container. We can then build a callable and
                        // execute the pipe function giving in the parameters that are required.
                        $pipe = $this->getContainer()->make($name);
 
                        $parameters = array_merge([$passable, $stack], $parameters);
                    } else {
                        // If the pipe is already an object we'll just make a callable and pass it to
                        // the pipe as-is. There is no need to do any extra parsing and formatting
                        // since the object we're given was already a fully instantiated object.
                        $parameters = [$passable, $stack];
                    }
 
                    $carry = method_exists($pipe, $this->method)
                                    ? $pipe->{$this->method}(...$parameters)
                                    : $pipe(...$parameters);
 
                    return $this->handleCarry($carry);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#972 …4}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Session/Middleware/StartSession.php
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        if (! $this->sessionConfigured()) {
            return $next($request);
        }
 
        // If a session driver has been configured, we will need to start the session here
        // so that the data is ready for an application. Note that the Laravel sessions
        // do not make use of PHP "native" sessions in any way since they are crappy.
        $request->setLaravelSession(
            $session = $this->startSession($request)
        );
 
        $this->collectGarbage($session);
 
        $response = $next($request);
 
        $this->storeCurrentUrl($request, $session);
 
        $this->addCookieToResponse($response, $session);
 
        // Again, if the session has been configured we will need to close out the session
        // so that the attributes may be persisted to some storage medium. We will also
        // add the session identifier cookie to the application response headers now.
        $this->saveSession($request);
 
        return $response;
    }
 
    /**
     * Start the session for the given request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Contracts\Session\Session
     */
    protected function startSession(Request $request)
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                        // the appropriate method and arguments, returning the results back out.
                        return $pipe($passable, $stack);
                    } elseif (! is_object($pipe)) {
                        [$name, $parameters] = $this->parsePipeString($pipe);
 
                        // If the pipe is a string we will parse the string and resolve the class out
                        // of the dependency injection container. We can then build a callable and
                        // execute the pipe function giving in the parameters that are required.
                        $pipe = $this->getContainer()->make($name);
 
                        $parameters = array_merge([$passable, $stack], $parameters);
                    } else {
                        // If the pipe is already an object we'll just make a callable and pass it to
                        // the pipe as-is. There is no need to do any extra parsing and formatting
                        // since the object we're given was already a fully instantiated object.
                        $parameters = [$passable, $stack];
                    }
 
                    $carry = method_exists($pipe, $this->method)
                                    ? $pipe->{$this->method}(...$parameters)
                                    : $pipe(...$parameters);
 
                    return $this->handleCarry($carry);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#1052 …4}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/AddQueuedCookiesToResponse.php
     * Create a new CookieQueue instance.
     *
     * @param  \Illuminate\Contracts\Cookie\QueueingFactory  $cookies
     * @return void
     */
    public function __construct(CookieJar $cookies)
    {
        $this->cookies = $cookies;
    }
 
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $response = $next($request);
 
        foreach ($this->cookies->getQueuedCookies() as $cookie) {
            $response->headers->setCookie($cookie);
        }
 
        return $response;
    }
}
 
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                        // the appropriate method and arguments, returning the results back out.
                        return $pipe($passable, $stack);
                    } elseif (! is_object($pipe)) {
                        [$name, $parameters] = $this->parsePipeString($pipe);
 
                        // If the pipe is a string we will parse the string and resolve the class out
                        // of the dependency injection container. We can then build a callable and
                        // execute the pipe function giving in the parameters that are required.
                        $pipe = $this->getContainer()->make($name);
 
                        $parameters = array_merge([$passable, $stack], $parameters);
                    } else {
                        // If the pipe is already an object we'll just make a callable and pass it to
                        // the pipe as-is. There is no need to do any extra parsing and formatting
                        // since the object we're given was already a fully instantiated object.
                        $parameters = [$passable, $stack];
                    }
 
                    $carry = method_exists($pipe, $this->method)
                                    ? $pipe->{$this->method}(...$parameters)
                                    : $pipe(...$parameters);
 
                    return $this->handleCarry($carry);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#1059 …4}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Cookie/Middleware/EncryptCookies.php
     * Disable encryption for the given cookie name(s).
     *
     * @param  string|array  $name
     * @return void
     */
    public function disableFor($name)
    {
        $this->except = array_merge($this->except, (array) $name);
    }
 
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function handle($request, Closure $next)
    {
        return $this->encrypt($next($this->decrypt($request)));
    }
 
    /**
     * Decrypt the cookies on the request.
     *
     * @param  \Symfony\Component\HttpFoundation\Request  $request
     * @return \Symfony\Component\HttpFoundation\Request
     */
    protected function decrypt(Request $request)
    {
        foreach ($request->cookies as $key => $cookie) {
            if ($this->isDisabled($key)) {
                continue;
            }
 
            try {
                $request->cookies->set($key, $this->decryptCookie($key, $cookie));
            } catch (DecryptException $e) {
                $request->cookies->set($key, null);
            }
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                        // the appropriate method and arguments, returning the results back out.
                        return $pipe($passable, $stack);
                    } elseif (! is_object($pipe)) {
                        [$name, $parameters] = $this->parsePipeString($pipe);
 
                        // If the pipe is a string we will parse the string and resolve the class out
                        // of the dependency injection container. We can then build a callable and
                        // execute the pipe function giving in the parameters that are required.
                        $pipe = $this->getContainer()->make($name);
 
                        $parameters = array_merge([$passable, $stack], $parameters);
                    } else {
                        // If the pipe is already an object we'll just make a callable and pass it to
                        // the pipe as-is. There is no need to do any extra parsing and formatting
                        // since the object we're given was already a fully instantiated object.
                        $parameters = [$passable, $stack];
                    }
 
                    $carry = method_exists($pipe, $this->method)
                                    ? $pipe->{$this->method}(...$parameters)
                                    : $pipe(...$parameters);
 
                    return $this->handleCarry($carry);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#1060 …4}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
    public function via($method)
    {
        $this->method = $method;
 
        return $this;
    }
 
    /**
     * Run the pipeline with a final destination callback.
     *
     * @param  \Closure  $destination
     * @return mixed
     */
    public function then(Closure $destination)
    {
        $pipeline = array_reduce(
            array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination)
        );
 
        return $pipeline($this->passable);
    }
 
    /**
     * Run the pipeline and return the result.
     *
     * @return mixed
     */
    public function thenReturn()
    {
        return $this->then(function ($passable) {
            return $passable;
        });
    }
 
    /**
     * Get the final piece of the Closure onion.
     *
     * @param  \Closure  $destination
     * @return \Closure
     */
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php
     *
     * @param  \Illuminate\Routing\Route  $route
     * @param  \Illuminate\Http\Request  $request
     * @return mixed
     */
    protected function runRouteWithinStack(Route $route, Request $request)
    {
        $shouldSkipMiddleware = $this->container->bound('middleware.disable') &&
                                $this->container->make('middleware.disable') === true;
 
        $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route);
 
        return (new Pipeline($this->container))
                        ->send($request)
                        ->through($middleware)
                        ->then(function ($request) use ($route) {
                            return $this->prepareResponse(
                                $request, $route->run()
                            );
                        });
    }
 
    /**
     * Gather the middleware for the given route with resolved class names.
     *
     * @param  \Illuminate\Routing\Route  $route
     * @return array
     */
    public function gatherRouteMiddleware(Route $route)
    {
        $middleware = collect($route->gatherMiddleware())->map(function ($name) {
            return (array) MiddlewareNameResolver::resolve($name, $this->middleware, $this->middlewareGroups);
        })->flatten();
 
        return $this->sortMiddleware($middleware);
    }
 
    /**
     * Sort the given middleware by priority.
     *
Arguments
  1. Closure($request) {#1048 …4}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php
        return $route;
    }
 
    /**
     * Return the response for the given route.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Routing\Route  $route
     * @return \Symfony\Component\HttpFoundation\Response
     */
    protected function runRoute(Request $request, Route $route)
    {
        $request->setRouteResolver(function () use ($route) {
            return $route;
        });
 
        $this->events->dispatch(new Events\RouteMatched($route, $request));
 
        return $this->prepareResponse($request,
            $this->runRouteWithinStack($route, $request)
        );
    }
 
    /**
     * Run the given route within a Stack "onion" instance.
     *
     * @param  \Illuminate\Routing\Route  $route
     * @param  \Illuminate\Http\Request  $request
     * @return mixed
     */
    protected function runRouteWithinStack(Route $route, Request $request)
    {
        $shouldSkipMiddleware = $this->container->bound('middleware.disable') &&
                                $this->container->make('middleware.disable') === true;
 
        $middleware = $shouldSkipMiddleware ? [] : $this->gatherRouteMiddleware($route);
 
        return (new Pipeline($this->container))
                        ->send($request)
                        ->through($middleware)
Arguments
  1. Illuminate\Routing\Route {#269}
    
  2. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function dispatch(Request $request)
    {
        $this->currentRequest = $request;
 
        return $this->dispatchToRoute($request);
    }
 
    /**
     * Dispatch the request to a route and return the response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function dispatchToRoute(Request $request)
    {
        return $this->runRoute($request, $this->findRoute($request));
    }
 
    /**
     * Find the route matching a given request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Routing\Route
     */
    protected function findRoute($request)
    {
        $this->current = $route = $this->routes->match($request);
 
        $this->container->instance(Route::class, $route);
 
        return $route;
    }
 
    /**
     * Return the response for the given route.
     *
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Illuminate\Routing\Route {#269}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Routing/Router.php
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function respondWithRoute($name)
    {
        $route = tap($this->routes->getByName($name))->bind($this->currentRequest);
 
        return $this->runRoute($this->currentRequest, $route);
    }
 
    /**
     * Dispatch the request to the application.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function dispatch(Request $request)
    {
        $this->currentRequest = $request;
 
        return $this->dispatchToRoute($request);
    }
 
    /**
     * Dispatch the request to a route and return the response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Symfony\Component\HttpFoundation\Response
     */
    public function dispatchToRoute(Request $request)
    {
        return $this->runRoute($request, $this->findRoute($request));
    }
 
    /**
     * Find the route matching a given request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Routing\Route
     */
    protected function findRoute($request)
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
     * @return void
     */
    public function bootstrap()
    {
        if (! $this->app->hasBeenBootstrapped()) {
            $this->app->bootstrapWith($this->bootstrappers());
        }
    }
 
    /**
     * Get the route dispatcher callback.
     *
     * @return \Closure
     */
    protected function dispatchToRouter()
    {
        return function ($request) {
            $this->app->instance('request', $request);
 
            return $this->router->dispatch($request);
        };
    }
 
    /**
     * Call the terminate method on any terminable middleware.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Http\Response  $response
     * @return void
     */
    public function terminate($request, $response)
    {
        $this->terminateMiddleware($request, $response);
 
        $this->app->terminate();
    }
 
    /**
     * Call the terminate method on any terminable middleware.
     *
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
     * @return mixed
     */
    public function thenReturn()
    {
        return $this->then(function ($passable) {
            return $passable;
        });
    }
 
    /**
     * Get the final piece of the Closure onion.
     *
     * @param  \Closure  $destination
     * @return \Closure
     */
    protected function prepareDestination(Closure $destination)
    {
        return function ($passable) use ($destination) {
            try {
                return $destination($passable);
            } catch (Exception $e) {
                return $this->handleException($passable, $e);
            } catch (Throwable $e) {
                return $this->handleException($passable, new FatalThrowableError($e));
            }
        };
    }
 
    /**
     * Get a Closure that represents a slice of the application onion.
     *
     * @return \Closure
     */
    protected function carry()
    {
        return function ($stack, $pipe) {
            return function ($passable) use ($stack, $pipe) {
                try {
                    if (is_callable($pipe)) {
                        // If the pipe is an instance of a Closure, we will just call it directly but
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/fideloper/proxy/src/TrustProxies.php
    {
        $this->config = $config;
    }
 
    /**
     * Handle an incoming request.
     *
     * @param \Illuminate\Http\Request $request
     * @param \Closure                 $next
     *
     * @throws \Symfony\Component\HttpKernel\Exception\HttpException
     *
     * @return mixed
     */
    public function handle(Request $request, Closure $next)
    {
        $request::setTrustedProxies([], $this->getTrustedHeaderNames()); // Reset trusted proxies between requests
        $this->setTrustedProxyIpAddresses($request);
 
        return $next($request);
    }
 
    /**
     * Sets the trusted proxies on the request to the value of trustedproxy.proxies
     *
     * @param \Illuminate\Http\Request $request
     */
    protected function setTrustedProxyIpAddresses(Request $request)
    {
        $trustedIps = $this->proxies ?: $this->config->get('trustedproxy.proxies');
 
        // Trust any IP address that calls us
        // `**` for backwards compatibility, but is deprecated
        if ($trustedIps === '*' || $trustedIps === '**') {
            return $this->setTrustedProxyIpAddressesToTheCallingIp($request);
        }
 
        // Support IPs addresses separated by comma
        $trustedIps = is_string($trustedIps) ? array_map('trim', explode(',', $trustedIps)) : $trustedIps;
 
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                        // the appropriate method and arguments, returning the results back out.
                        return $pipe($passable, $stack);
                    } elseif (! is_object($pipe)) {
                        [$name, $parameters] = $this->parsePipeString($pipe);
 
                        // If the pipe is a string we will parse the string and resolve the class out
                        // of the dependency injection container. We can then build a callable and
                        // execute the pipe function giving in the parameters that are required.
                        $pipe = $this->getContainer()->make($name);
 
                        $parameters = array_merge([$passable, $stack], $parameters);
                    } else {
                        // If the pipe is already an object we'll just make a callable and pass it to
                        // the pipe as-is. There is no need to do any extra parsing and formatting
                        // since the object we're given was already a fully instantiated object.
                        $parameters = [$passable, $stack];
                    }
 
                    $carry = method_exists($pipe, $this->method)
                                    ? $pipe->{$this->method}(...$parameters)
                                    : $pipe(...$parameters);
 
                    return $this->handleCarry($carry);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#31 …4}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php
 
namespace Illuminate\Foundation\Http\Middleware;
 
use Closure;
use Symfony\Component\HttpFoundation\ParameterBag;
 
class TransformsRequest
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $this->clean($request);
 
        return $next($request);
    }
 
    /**
     * Clean the request's data.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return void
     */
    protected function clean($request)
    {
        $this->cleanParameterBag($request->query);
 
        if ($request->isJson()) {
            $this->cleanParameterBag($request->json());
        } elseif ($request->request !== $request->query) {
            $this->cleanParameterBag($request->request);
        }
    }
 
    /**
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                        // the appropriate method and arguments, returning the results back out.
                        return $pipe($passable, $stack);
                    } elseif (! is_object($pipe)) {
                        [$name, $parameters] = $this->parsePipeString($pipe);
 
                        // If the pipe is a string we will parse the string and resolve the class out
                        // of the dependency injection container. We can then build a callable and
                        // execute the pipe function giving in the parameters that are required.
                        $pipe = $this->getContainer()->make($name);
 
                        $parameters = array_merge([$passable, $stack], $parameters);
                    } else {
                        // If the pipe is already an object we'll just make a callable and pass it to
                        // the pipe as-is. There is no need to do any extra parsing and formatting
                        // since the object we're given was already a fully instantiated object.
                        $parameters = [$passable, $stack];
                    }
 
                    $carry = method_exists($pipe, $this->method)
                                    ? $pipe->{$this->method}(...$parameters)
                                    : $pipe(...$parameters);
 
                    return $this->handleCarry($carry);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#962 …4}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/TransformsRequest.php
 
namespace Illuminate\Foundation\Http\Middleware;
 
use Closure;
use Symfony\Component\HttpFoundation\ParameterBag;
 
class TransformsRequest
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     */
    public function handle($request, Closure $next)
    {
        $this->clean($request);
 
        return $next($request);
    }
 
    /**
     * Clean the request's data.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return void
     */
    protected function clean($request)
    {
        $this->cleanParameterBag($request->query);
 
        if ($request->isJson()) {
            $this->cleanParameterBag($request->json());
        } elseif ($request->request !== $request->query) {
            $this->cleanParameterBag($request->request);
        }
    }
 
    /**
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                        // the appropriate method and arguments, returning the results back out.
                        return $pipe($passable, $stack);
                    } elseif (! is_object($pipe)) {
                        [$name, $parameters] = $this->parsePipeString($pipe);
 
                        // If the pipe is a string we will parse the string and resolve the class out
                        // of the dependency injection container. We can then build a callable and
                        // execute the pipe function giving in the parameters that are required.
                        $pipe = $this->getContainer()->make($name);
 
                        $parameters = array_merge([$passable, $stack], $parameters);
                    } else {
                        // If the pipe is already an object we'll just make a callable and pass it to
                        // the pipe as-is. There is no need to do any extra parsing and formatting
                        // since the object we're given was already a fully instantiated object.
                        $parameters = [$passable, $stack];
                    }
 
                    $carry = method_exists($pipe, $this->method)
                                    ? $pipe->{$this->method}(...$parameters)
                                    : $pipe(...$parameters);
 
                    return $this->handleCarry($carry);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#837 …4}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Middleware/ValidatePostSize.php
class ValidatePostSize
{
    /**
     * Handle an incoming request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Closure  $next
     * @return mixed
     *
     * @throws \Illuminate\Http\Exceptions\PostTooLargeException
     */
    public function handle($request, Closure $next)
    {
        $max = $this->getPostMaxSize();
 
        if ($max > 0 && $request->server('CONTENT_LENGTH') > $max) {
            throw new PostTooLargeException;
        }
 
        return $next($request);
    }
 
    /**
     * Determine the server 'post_max_size' as bytes.
     *
     * @return int
     */
    protected function getPostMaxSize()
    {
        if (is_numeric($postMaxSize = ini_get('post_max_size'))) {
            return (int) $postMaxSize;
        }
 
        $metric = strtoupper(substr($postMaxSize, -1));
        $postMaxSize = (int) $postMaxSize;
 
        switch ($metric) {
            case 'K':
                return $postMaxSize * 1024;
            case 'M':
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
                        // the appropriate method and arguments, returning the results back out.
                        return $pipe($passable, $stack);
                    } elseif (! is_object($pipe)) {
                        [$name, $parameters] = $this->parsePipeString($pipe);
 
                        // If the pipe is a string we will parse the string and resolve the class out
                        // of the dependency injection container. We can then build a callable and
                        // execute the pipe function giving in the parameters that are required.
                        $pipe = $this->getContainer()->make($name);
 
                        $parameters = array_merge([$passable, $stack], $parameters);
                    } else {
                        // If the pipe is already an object we'll just make a callable and pass it to
                        // the pipe as-is. There is no need to do any extra parsing and formatting
                        // since the object we're given was already a fully instantiated object.
                        $parameters = [$passable, $stack];
                    }
 
                    $carry = method_exists($pipe, $this->method)
                                    ? $pipe->{$this->method}(...$parameters)
                                    : $pipe(...$parameters);
 
                    return $this->handleCarry($carry);
                } catch (Exception $e) {
                    return $this->handleException($passable, $e);
                } catch (Throwable $e) {
                    return $this->handleException($passable, new FatalThrowableError($e));
                }
            };
        };
    }
 
    /**
     * Parse full pipe string to get name and parameters.
     *
     * @param  string $pipe
     * @return array
     */
    protected function parsePipeString($pipe)
    {
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
  2. Closure($passable) {#963 …4}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php
    public function via($method)
    {
        $this->method = $method;
 
        return $this;
    }
 
    /**
     * Run the pipeline with a final destination callback.
     *
     * @param  \Closure  $destination
     * @return mixed
     */
    public function then(Closure $destination)
    {
        $pipeline = array_reduce(
            array_reverse($this->pipes), $this->carry(), $this->prepareDestination($destination)
        );
 
        return $pipeline($this->passable);
    }
 
    /**
     * Run the pipeline and return the result.
     *
     * @return mixed
     */
    public function thenReturn()
    {
        return $this->then(function ($passable) {
            return $passable;
        });
    }
 
    /**
     * Get the final piece of the Closure onion.
     *
     * @param  \Closure  $destination
     * @return \Closure
     */
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
    }
 
    /**
     * Send the given request through the middleware / router.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    protected function sendRequestThroughRouter($request)
    {
        $this->app->instance('request', $request);
 
        Facade::clearResolvedInstance('request');
 
        $this->bootstrap();
 
        return (new Pipeline($this->app))
                    ->send($request)
                    ->through($this->app->shouldSkipMiddleware() ? [] : $this->middleware)
                    ->then($this->dispatchToRouter());
    }
 
    /**
     * Bootstrap the application for HTTP requests.
     *
     * @return void
     */
    public function bootstrap()
    {
        if (! $this->app->hasBeenBootstrapped()) {
            $this->app->bootstrapWith($this->bootstrappers());
        }
    }
 
    /**
     * Get the route dispatcher callback.
     *
     * @return \Closure
     */
    protected function dispatchToRouter()
Arguments
  1. Closure($request) {#313 …4}
    
/home/emxmotors/public_html/vendor/laravel/framework/src/Illuminate/Foundation/Http/Kernel.php
            $router->middlewareGroup($key, $middleware);
        }
 
        foreach ($this->routeMiddleware as $key => $middleware) {
            $router->aliasMiddleware($key, $middleware);
        }
    }
 
    /**
     * Handle an incoming HTTP request.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function handle($request)
    {
        try {
            $request->enableHttpMethodParameterOverride();
 
            $response = $this->sendRequestThroughRouter($request);
        } catch (Exception $e) {
            $this->reportException($e);
 
            $response = $this->renderException($request, $e);
        } catch (Throwable $e) {
            $this->reportException($e = new FatalThrowableError($e));
 
            $response = $this->renderException($request, $e);
        }
 
        $this->app['events']->dispatch(
            new Events\RequestHandled($request, $response)
        );
 
        return $response;
    }
 
    /**
     * Send the given request through the middleware / router.
     *
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    
/home/emxmotors/public_html/public/index.php
*/
 
$app = require_once __DIR__.'/../bootstrap/app.php';
 
/*
|--------------------------------------------------------------------------
| Run The Application
|--------------------------------------------------------------------------
|
| Once we have the application, we can handle the incoming request
| through the kernel, and send the associated response back to
| the client's browser allowing them to enjoy the creative
| and wonderful application we have prepared for them.
|
*/
 
$kernel = $app->make(Illuminate\Contracts\Http\Kernel::class);
 
$response = $kernel->handle(
    $request = Illuminate\Http\Request::capture()
);
 
$response->send();
 
$kernel->terminate($request, $response);
 
 
 
Arguments
  1. Illuminate\Http\Request {#51
      #json: null
      #convertedFiles: null
      #userResolver: Closure($guard = null) {#967 …4}
      #routeResolver: Closure() {#971 …4}
      +attributes: Symfony\Component\HttpFoundation\ParameterBag {#53}
      +request: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +query: Symfony\Component\HttpFoundation\ParameterBag {#59}
      +server: Symfony\Component\HttpFoundation\ServerBag {#55}
      +files: Symfony\Component\HttpFoundation\FileBag {#56}
      +cookies: Symfony\Component\HttpFoundation\ParameterBag {#54}
      +headers: Symfony\Component\HttpFoundation\HeaderBag {#57}
      #content: null
      #languages: null
      #charsets: null
      #encodings: null
      #acceptableContentTypes: array:1 [
        0 => "*/*"
      ]
      #pathInfo: "/torrot_detail/about"
      #requestUri: "/torrot_detail/about"
      #baseUrl: ""
      #basePath: null
      #method: "GET"
      #format: null
      #session: Illuminate\Session\Store {#1063}
      #locale: null
      #defaultLocale: "en"
      -preferredFormat: null
      -isHostValid: true
      -isForwardedValid: true
      basePath: ""
      format: "html"
    }
    

Environment & details:

empty
empty
empty
empty
empty
Key Value
TZ
"Asia/Dubai"
REDIRECT_REDIRECT_REDIRECT_UNIQUE_ID
"ZgWHv2AKGThh8ZYKZALC7wAAAAg"
REDIRECT_REDIRECT_REDIRECT_SCRIPT_URL
"/torrot_detail/about"
REDIRECT_REDIRECT_REDIRECT_SCRIPT_URI
"https://emxmotors.com/torrot_detail/about"
REDIRECT_REDIRECT_REDIRECT_HTTPS
"on"
REDIRECT_REDIRECT_REDIRECT_SSL_TLS_SNI
"emxmotors.com"
REDIRECT_REDIRECT_REDIRECT_STATUS
"200"
REDIRECT_REDIRECT_UNIQUE_ID
"ZgWHv2AKGThh8ZYKZALC7wAAAAg"
REDIRECT_REDIRECT_SCRIPT_URL
"/torrot_detail/about"
REDIRECT_REDIRECT_SCRIPT_URI
"https://emxmotors.com/torrot_detail/about"
REDIRECT_REDIRECT_HTTPS
"on"
REDIRECT_REDIRECT_SSL_TLS_SNI
"emxmotors.com"
REDIRECT_REDIRECT_STATUS
"200"
REDIRECT_UNIQUE_ID
"ZgWHv2AKGThh8ZYKZALC7wAAAAg"
REDIRECT_SCRIPT_URL
"/torrot_detail/about"
REDIRECT_SCRIPT_URI
"https://emxmotors.com/torrot_detail/about"
REDIRECT_HTTPS
"on"
REDIRECT_SSL_TLS_SNI
"emxmotors.com"
REDIRECT_HANDLER
"application/x-httpd-ea-php74"
REDIRECT_STATUS
"200"
UNIQUE_ID
"ZgWHv2AKGThh8ZYKZALC7wAAAAg"
SCRIPT_URL
"/torrot_detail/about"
SCRIPT_URI
"https://emxmotors.com/torrot_detail/about"
HTTPS
"on"
SSL_TLS_SNI
"emxmotors.com"
HTTP_ACCEPT
"*/*"
HTTP_USER_AGENT
"claudebot"
HTTP_HOST
"emxmotors.com"
HTTP_X_HTTPS
"1"
PATH
"/usr/local/jdk/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/X11R6/bin:/usr/local/bin:/usr/X11R6/bin:/root/bin:/opt/bin"
SERVER_SIGNATURE
""
SERVER_SOFTWARE
"Apache"
SERVER_NAME
"emxmotors.com"
SERVER_ADDR
"192.163.205.198"
SERVER_PORT
"443"
REMOTE_ADDR
"54.224.124.217"
DOCUMENT_ROOT
"/home/emxmotors/public_html"
REQUEST_SCHEME
"https"
CONTEXT_PREFIX
"/cgi-sys"
CONTEXT_DOCUMENT_ROOT
"/usr/local/cpanel/cgi-sys/"
SERVER_ADMIN
"webmaster@emxmotors.com"
SCRIPT_FILENAME
"/home/emxmotors/public_html/public/index.php"
REMOTE_PORT
"52892"
REDIRECT_URL
"/public/index.php"
GATEWAY_INTERFACE
"CGI/1.1"
SERVER_PROTOCOL
"HTTP/1.1"
REQUEST_METHOD
"GET"
QUERY_STRING
""
REQUEST_URI
"/torrot_detail/about"
SCRIPT_NAME
"/public/index.php"
ORIG_SCRIPT_FILENAME
"/usr/local/cpanel/cgi-sys/ea-php74"
ORIG_PATH_INFO
"/public/index.php"
ORIG_PATH_TRANSLATED
"/home/emxmotors/public_html/public/index.php"
ORIG_SCRIPT_NAME
"/cgi-sys/ea-php74"
PHP_SELF
"/public/index.php"
REQUEST_TIME_FLOAT
1711638463.8157
REQUEST_TIME
1711638463
argv
[]
argc
0
APP_VERSION
"4.0.17"
APP_NAME
"stoke"
APP_ENV
"local"
APP_KEY
"***************************************************"
APP_DEBUG
"true"
APP_LOG_LEVEL
"debug"
APP_URL
"https://emxmotors.com"
DB_CONNECTION
"mysql"
DB_HOST
"127.0.0.1"
DB_PORT
"3306"
DB_DATABASE
"emxmotor_emx"
TABLE_PREFIX
""
DB_USERNAME
"emxmotor_azhar"
DB_PASSWORD
"************"
BROADCAST_DRIVER
"log"
CACHE_DRIVER
"file"
SESSION_DRIVER
"file"
QUEUE_DRIVER
"sync"
REDIS_HOST
"127.0.0.1"
REDIS_PASSWORD
"****"
REDIS_PORT
"6379"
MAIL_DRIVER
"sendmail"
MAIL_HOST
"smtp.googlemail.com"
MAIL_PORT
"587"
MAIL_USERNAME
"devronix.development@gmail.com"
MAIL_PASSWORD
"**********"
MAIL_ENCRYPTION
"ssl"
PUSHER_APP_ID
""
PUSHER_APP_KEY
""
PUSHER_APP_SECRET
""
Key Value
APP_VERSION
"4.0.17"
APP_NAME
"stoke"
APP_ENV
"local"
APP_KEY
"***************************************************"
APP_DEBUG
"true"
APP_LOG_LEVEL
"debug"
APP_URL
"https://emxmotors.com"
DB_CONNECTION
"mysql"
DB_HOST
"127.0.0.1"
DB_PORT
"3306"
DB_DATABASE
"emxmotor_emx"
TABLE_PREFIX
""
DB_USERNAME
"emxmotor_azhar"
DB_PASSWORD
"************"
BROADCAST_DRIVER
"log"
CACHE_DRIVER
"file"
SESSION_DRIVER
"file"
QUEUE_DRIVER
"sync"
REDIS_HOST
"127.0.0.1"
REDIS_PASSWORD
"****"
REDIS_PORT
"6379"
MAIL_DRIVER
"sendmail"
MAIL_HOST
"smtp.googlemail.com"
MAIL_PORT
"587"
MAIL_USERNAME
"devronix.development@gmail.com"
MAIL_PASSWORD
"**********"
MAIL_ENCRYPTION
"ssl"
PUSHER_APP_ID
""
PUSHER_APP_KEY
""
PUSHER_APP_SECRET
""
0. Whoops\Handler\PrettyPageHandler