<?xml version="1.0" ?>

<container xmlns="http://symfony.com/schema/dic/services"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://symfony.com/schema/dic/services http://symfony.com/schema/dic/services/services-1.0.xsd">

    <services>
        <defaults public="true" />

        <service id="Shopware\Storefront\Controller\Api\CaptchaController" public="true">
            <argument type="tagged_iterator" tag="shopware.storefront.captcha"/>
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\AccountOrderController">
            <argument type="service" id="Shopware\Storefront\Page\Account\Order\AccountOrderPageLoader"/>
            <argument type="service" id="Shopware\Storefront\Page\Account\Order\AccountEditOrderPageLoader"/>
            <argument type="service" id="Shopware\Core\System\SalesChannel\SalesChannel\ContextSwitchRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Order\SalesChannel\CancelOrderRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Order\SalesChannel\SetPaymentOrderRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Payment\SalesChannel\HandlePaymentMethodRoute"/>
            <argument type="service" id="event_dispatcher"/>
            <argument type="service" id="Shopware\Storefront\Page\Account\Order\AccountOrderDetailPageLoader"/>
            <argument type="service" id="Shopware\Core\Checkout\Order\SalesChannel\OrderRoute"/>
            <argument type="service" id="Shopware\Core\System\SalesChannel\Context\SalesChannelContextService"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
            <argument type="service" id="Shopware\Core\Checkout\Order\SalesChannel\OrderService"/>
            <argument type="service" id="Shopware\Storefront\Pagelet\Header\HeaderPageletLoader"/>
            <argument type="service" id="Shopware\Storefront\Pagelet\Footer\FooterPageletLoader"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\AccountProfileController">
            <argument type="service" id="Shopware\Storefront\Page\Account\Overview\AccountOverviewPageLoader"/>
            <argument type="service" id="Shopware\Storefront\Page\Account\Profile\AccountProfilePageLoader"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\ChangeCustomerProfileRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\ChangePasswordRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\ChangeEmailRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\DeleteCustomerRoute"/>
            <argument type="service" id="logger"/>
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\AddressController">
            <argument type="service" id="Shopware\Storefront\Page\Address\Listing\AddressListingPageLoader"/>
            <argument type="service" id="Shopware\Storefront\Page\Address\Detail\AddressDetailPageLoader"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\AccountService"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\ListAddressRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\UpsertAddressRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\DeleteAddressRoute"/>
            <argument type="service" id="Shopware\Core\System\SalesChannel\SalesChannel\ContextSwitchRoute"/>
            <argument type="service" id="Shopware\Core\System\SalesChannel\Context\SalesChannelContextService"/>
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\AuthController">
            <argument type="service" id="Shopware\Storefront\Page\Account\Login\AccountLoginPageLoader"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\SendPasswordRecoveryMailRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\ResetPasswordRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\LoginRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\LogoutRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\ImitateCustomerRoute"/>
            <argument type="service" id="Shopware\Storefront\Checkout\Cart\SalesChannel\StorefrontCartFacade"/>
            <argument type="service" id="Shopware\Storefront\Page\Account\RecoverPassword\AccountRecoverPasswordPageLoader"/>
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\AppController" public="true">
            <argument type="service" id="Shopware\Core\Framework\App\Api\AppJWTGenerateRoute"/>
        </service>

        <service id="Shopware\Storefront\Controller\CartLineItemController">
            <argument type="service" id="Shopware\Core\Checkout\Cart\SalesChannel\CartService"/>
            <argument type="service" id="Shopware\Core\Checkout\Promotion\Cart\PromotionItemBuilder"/>
            <argument type="service" id="Shopware\Core\Checkout\Cart\LineItemFactoryHandler\ProductLineItemFactory"/>
            <argument type="service" id="Shopware\Core\Framework\Util\HtmlSanitizer"/>
            <argument type="service" id="Shopware\Core\Content\Product\SalesChannel\ProductListRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Cart\LineItemFactoryRegistry"/>
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\CheckoutController">
            <argument type="service" id="Shopware\Core\Checkout\Cart\SalesChannel\CartService"/>
            <argument type="service" id="Shopware\Storefront\Page\Checkout\Cart\CheckoutCartPageLoader"/>
            <argument type="service" id="Shopware\Storefront\Page\Checkout\Confirm\CheckoutConfirmPageLoader"/>
            <argument type="service" id="Shopware\Storefront\Page\Checkout\Finish\CheckoutFinishPageLoader"/>
            <argument type="service" id="Shopware\Core\Checkout\Order\SalesChannel\OrderService"/>
            <argument type="service" id="Shopware\Core\Checkout\Payment\PaymentProcessor"/>
            <argument type="service" id="Shopware\Storefront\Page\Checkout\Offcanvas\OffcanvasCartPageLoader"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\LogoutRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Cart\SalesChannel\CartLoadRoute"/>
            <argument type="service" id="Shopware\Storefront\Pagelet\Header\HeaderPageletLoader"/>
            <argument type="service" id="Shopware\Storefront\Pagelet\Footer\FooterPageletLoader"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\ContextGatewayController">
            <argument type="service" id="Shopware\Core\Framework\Gateway\Context\SalesChannel\ContextGatewayRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Cart\SalesChannel\CartService"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\CookieController">
            <argument type="service" id="Shopware\Storefront\Framework\Cookie\CookieProviderInterface"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
            <argument type="service" id="sales_channel_analytics.repository"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\CmsController">
            <argument type="service" id="Shopware\Core\Content\Cms\SalesChannel\CmsRoute"/>
            <argument type="service" id="Shopware\Core\Content\Category\SalesChannel\CategoryRoute"/>
            <argument type="service" id="Shopware\Core\Content\Product\SalesChannel\Listing\ProductListingRoute"/>
            <argument type="service" id="Shopware\Core\Content\Product\SalesChannel\Detail\ProductDetailRoute"/>
            <argument type="service" id="Shopware\Core\Content\Product\SalesChannel\Review\ProductReviewLoader"/>
            <argument type="service" id="Shopware\Core\Content\Product\SalesChannel\FindVariant\FindProductVariantRoute"/>
            <argument type="service" id="event_dispatcher"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\FormController">
            <argument type="service" id="Shopware\Core\Content\ContactForm\SalesChannel\ContactFormRoute"/>
            <argument type="service" id="Shopware\Core\Content\Newsletter\SalesChannel\NewsletterSubscribeRoute"/>
            <argument type="service" id="Shopware\Core\Content\Newsletter\SalesChannel\NewsletterUnsubscribeRoute"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\ContextController">
            <argument type="service" id="Shopware\Core\System\SalesChannel\SalesChannel\ContextSwitchRoute"/>
            <argument type="service" id="request_stack"/>
            <argument type="service" id="router.default"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\MaintenanceController" public="true">
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
            <argument type="service" id="Shopware\Storefront\Page\Maintenance\MaintenancePageLoader"/>
            <argument type="service" id="Shopware\Storefront\Framework\Routing\MaintenanceModeResolver"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\ErrorController" public="true">
            <argument type="service" id="Shopware\Storefront\Framework\Twig\ErrorTemplateResolver"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
            <argument type="service" id="Shopware\Storefront\Page\Navigation\Error\ErrorPageLoader"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\NavigationController">
            <argument type="service" id="Shopware\Storefront\Page\Navigation\NavigationPageLoader"/>
            <argument type="service" id="Shopware\Storefront\Pagelet\Menu\Offcanvas\MenuOffcanvasPageletLoader"/>
            <argument type="service" id="Shopware\Storefront\Pagelet\Header\HeaderPageletLoader"/>
            <argument type="service" id="Shopware\Storefront\Pagelet\Footer\FooterPageletLoader"/>
            <argument type="service" id="Shopware\Core\Content\Category\Service\CategoryUrlGenerator"/>
            <argument type="service" id="Shopware\Core\Content\Seo\SeoUrlPlaceholderHandlerInterface"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\NewsletterController">
            <argument type="service" id="Shopware\Storefront\Page\Newsletter\Subscribe\NewsletterSubscribePageLoader"/>
            <argument type="service" id="Shopware\Core\Content\Newsletter\SalesChannel\NewsletterConfirmRoute"/>
            <argument type="service" id="Shopware\Storefront\Pagelet\Newsletter\Account\NewsletterAccountPageletLoader"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\ProductController">
            <argument type="service" id="Shopware\Storefront\Page\Product\ProductPageLoader"/>
            <argument type="service" id="Shopware\Core\Content\Product\SalesChannel\FindVariant\FindProductVariantRoute"/>
            <argument type="service" id="Shopware\Storefront\Page\Product\QuickView\MinimalQuickViewPageLoader"/>
            <argument type="service" id="Shopware\Core\Content\Product\SalesChannel\Review\ProductReviewSaveRoute"/>
            <argument type="service" id="Shopware\Core\Content\Seo\SeoUrlPlaceholderHandlerInterface"/>
            <argument type="service" id="Shopware\Core\Content\Product\SalesChannel\Review\ProductReviewLoader"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\LandingPageController">
            <argument type="service" id="Shopware\Storefront\Page\LandingPage\LandingPageLoader"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\RegisterController">
            <argument type="service" id="Shopware\Storefront\Page\Account\Login\AccountLoginPageLoader"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\RegisterRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\RegisterConfirmRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Cart\SalesChannel\CartService"/>
            <argument type="service" id="Shopware\Storefront\Page\Checkout\Register\CheckoutRegisterPageLoader"/>
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>
            <argument type="service" id="customer.repository"/>
            <argument type="service" id="Shopware\Storefront\Page\Account\CustomerGroupRegistration\CustomerGroupRegistrationPageLoader"/>
            <argument type="service" id="sales_channel_domain.repository"/>
            <argument type="service" id="Shopware\Storefront\Pagelet\Header\HeaderPageletLoader"/>
            <argument type="service" id="Shopware\Storefront\Pagelet\Footer\FooterPageletLoader"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\ScriptController">
            <argument type="service" id="Shopware\Storefront\Page\GenericPageLoader"/>
            <argument type="service" id="Shopware\Core\Framework\Script\Api\ScriptResponseEncoder"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\SearchController">
            <argument type="service" id="Shopware\Storefront\Page\Search\SearchPageLoader"/>
            <argument type="service" id="Shopware\Storefront\Page\Suggest\SuggestPageLoader"/>
            <argument type="service" id="Shopware\Core\Content\Product\SalesChannel\Search\ProductSearchRoute"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\SitemapController">
            <argument type="service" id="Shopware\Storefront\Page\Sitemap\SitemapPageLoader"/>
            <argument type="service" id="Shopware\Core\Content\Sitemap\SalesChannel\SitemapFileRoute"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\CountryStateController" public="true">
            <argument type="service" id="Shopware\Storefront\Pagelet\Country\CountryStateDataPageletLoader"/>
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\DocumentController" public="true">
            <argument type="service" id="Shopware\Core\Checkout\Document\SalesChannel\DocumentRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\LogoutRoute"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\DownloadController" public="true">
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\DownloadRoute"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\WellKnownController" public="true">
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\WishlistController" public="true">
            <argument type="service" id="Shopware\Storefront\Page\Wishlist\WishlistPageLoader"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\LoadWishlistRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\AddWishlistProductRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\RemoveWishlistProductRoute"/>
            <argument type="service" id="Shopware\Core\Checkout\Customer\SalesChannel\MergeWishlistProductRoute"/>
            <argument type="service" id="Shopware\Storefront\Page\Wishlist\GuestWishlistPageLoader"/>
            <argument type="service" id="Shopware\Storefront\Pagelet\Wishlist\GuestWishlistPageletLoader"/>
            <argument type="service" id="event_dispatcher"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\CaptchaController" public="true">
            <argument type="service" id="Shopware\Storefront\Pagelet\Captcha\BasicCaptchaPageletLoader"/>
            <argument type="service" id="Shopware\Storefront\Framework\Captcha\BasicCaptcha"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\VerificationHashController" public="true">
            <argument type="service" id="Shopware\Core\System\SystemConfig\SystemConfigService"/>

            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>

        <service id="Shopware\Storefront\Controller\RobotsController" public="true">
            <argument type="service" id="Shopware\Storefront\Page\Robots\RobotsPageLoader"/>
            <call method="setContainer">
                <argument type="service" id="service_container"/>
            </call>
        </service>
    </services>
</container>
