/**
 * @license
 * Copyright Google LLC All Rights Reserved.
 *
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://angular.io/license
 */
(function (factory) {
    if (typeof module === "object" && typeof module.exports === "object") {
        var v = factory(null, exports);
        if (v !== undefined) module.exports = v;
    }
    else if (typeof define === "function" && define.amd) {
        define("@angular/common/locales/extra/tr-CY", ["require", "exports"], factory);
    }
})(function (require, exports) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    // THIS CODE IS GENERATED - DO NOT MODIFY
    // See angular/tools/gulp-tasks/cldr/extract.js
    var u = undefined;
    exports.default = [
        [
            ['gece', 'ö', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', 'gece'],
            ['gece yarısı', 'öğle', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', 'gece'],
            u
        ],
        [
            ['gece yarısı', 'öğle', 'sabah', 'öğleden önce', 'öğleden sonra', 'akşamüstü', 'akşam', 'gece'],
            u, u
        ],
        [
            '00:00', '12:00', ['06:00', '11:00'], ['11:00', '12:00'], ['12:00', '18:00'],
            ['18:00', '19:00'], ['19:00', '21:00'], ['21:00', '06:00']
        ]
    ];
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHItQ1kuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy9jb21tb24vbG9jYWxlcy9leHRyYS90ci1DWS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7O0dBTUc7Ozs7Ozs7Ozs7OztJQUVILHlDQUF5QztJQUN6QywrQ0FBK0M7SUFFL0MsSUFBTSxDQUFDLEdBQUcsU0FBUyxDQUFDO0lBRXBCLGtCQUFlO1FBQ2I7WUFDRSxDQUFDLE1BQU0sRUFBRSxHQUFHLEVBQUUsT0FBTyxFQUFFLGNBQWMsRUFBRSxlQUFlLEVBQUUsV0FBVyxFQUFFLE9BQU8sRUFBRSxNQUFNLENBQUM7WUFDckYsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO1lBQy9GLENBQUM7U0FDRjtRQUNEO1lBQ0UsQ0FBQyxhQUFhLEVBQUUsTUFBTSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsZUFBZSxFQUFFLFdBQVcsRUFBRSxPQUFPLEVBQUUsTUFBTSxDQUFDO1lBQy9GLENBQUMsRUFBRSxDQUFDO1NBQ0w7UUFDRDtZQUNFLE9BQU8sRUFBRSxPQUFPLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsT0FBTyxDQUFDO1lBQzVFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQyxFQUFFLENBQUMsT0FBTyxFQUFFLE9BQU8sQ0FBQztTQUMzRDtLQUNGLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuLy8gVEhJUyBDT0RFIElTIEdFTkVSQVRFRCAtIERPIE5PVCBNT0RJRllcbi8vIFNlZSBhbmd1bGFyL3Rvb2xzL2d1bHAtdGFza3MvY2xkci9leHRyYWN0LmpzXG5cbmNvbnN0IHUgPSB1bmRlZmluZWQ7XG5cbmV4cG9ydCBkZWZhdWx0IFtcbiAgW1xuICAgIFsnZ2VjZScsICfDticsICdzYWJhaCcsICfDtsSfbGVkZW4gw7ZuY2UnLCAnw7bEn2xlZGVuIHNvbnJhJywgJ2FrxZ9hbcO8c3TDvCcsICdha8WfYW0nLCAnZ2VjZSddLFxuICAgIFsnZ2VjZSB5YXLEsXPEsScsICfDtsSfbGUnLCAnc2FiYWgnLCAnw7bEn2xlZGVuIMO2bmNlJywgJ8O2xJ9sZWRlbiBzb25yYScsICdha8WfYW3DvHN0w7wnLCAnYWvFn2FtJywgJ2dlY2UnXSxcbiAgICB1XG4gIF0sXG4gIFtcbiAgICBbJ2dlY2UgeWFyxLFzxLEnLCAnw7bEn2xlJywgJ3NhYmFoJywgJ8O2xJ9sZWRlbiDDtm5jZScsICfDtsSfbGVkZW4gc29ucmEnLCAnYWvFn2Ftw7xzdMO8JywgJ2FrxZ9hbScsICdnZWNlJ10sXG4gICAgdSwgdVxuICBdLFxuICBbXG4gICAgJzAwOjAwJywgJzEyOjAwJywgWycwNjowMCcsICcxMTowMCddLCBbJzExOjAwJywgJzEyOjAwJ10sIFsnMTI6MDAnLCAnMTg6MDAnXSxcbiAgICBbJzE4OjAwJywgJzE5OjAwJ10sIFsnMTk6MDAnLCAnMjE6MDAnXSwgWycyMTowMCcsICcwNjowMCddXG4gIF1cbl07XG4iXX0=