function printDiv(eh)
{
var divToPrint=document.getElementById(eh);
var newWin=window.open('','Print-Window');
newWin.document.open();
newWin.document.write('<html><body onload="window.print()">'+divToPrint.innerHTML+'</body></html>');
newWin.document.close();
setTimeout(function(){newWin.close();},10);
}
(function(c, l, a, r, i, t, y) {
c[a] = c[a] || function() {
(c[a].q = c[a].q || []).push(arguments)
};
t = l.createElement(r);
t.async = 1;
t.src = "https://www.clarity.ms/tag/" + i + "?ref=wordpress";
y = l.getElementsByTagName(r)[0];
y.parentNode.insertBefore(t, y);
})(window, document, "clarity", "script", "uguy8v1u4s");
var ajaxurl = 'https://www.ampmlock.com/wp-admin/admin-ajax.php';
/*! LoadCSS. [c]2020 Filament Group, Inc. MIT License */
/* This file is meant as a standalone workflow for
- testing support for link[rel=preload]
- enabling async CSS loading in browsers that do not support rel=preload
- applying rel preload css once loaded, whether supported or not.
*/
(function(w){"use strict";var wpacuLoadCSS=function(href,before,media,attributes){var doc=w.document;var ss=doc.createElement('link');var ref;if(before){ref=before}else{var refs=(doc.body||doc.getElementsByTagName('head')[0]).childNodes;ref=refs[refs.length-1]}
var sheets=doc.styleSheets;if(attributes){for(var attributeName in attributes){if(attributes.hasOwnProperty(attributeName)){ss.setAttribute(attributeName,attributes[attributeName])}}}
ss.rel="stylesheet";ss.href=href;ss.media="only x";function ready(cb){if(doc.body){return cb()}
setTimeout(function(){ready(cb)})}
ready(function(){ref.parentNode.insertBefore(ss,(before?ref:ref.nextSibling))});var onwpaculoadcssdefined=function(cb){var resolvedHref=ss.href;var i=sheets.length;while(i--){if(sheets[i].href===resolvedHref){return cb()}}
setTimeout(function(){onwpaculoadcssdefined(cb)})};function wpacuLoadCB(){if(ss.addEventListener){ss.removeEventListener("load",wpacuLoadCB)}
ss.media=media||"all"}
if(ss.addEventListener){ss.addEventListener("load",wpacuLoadCB)}
ss.onwpaculoadcssdefined=onwpaculoadcssdefined;onwpaculoadcssdefined(wpacuLoadCB);return ss};if(typeof exports!=="undefined"){exports.wpacuLoadCSS=wpacuLoadCSS}else{w.wpacuLoadCSS=wpacuLoadCSS}}(typeof global!=="undefined"?global:this))
Safe Opening is one of the most sought after locksmith services we provide. It takes years of training, a level head, and steady hands to open most safes. Each safe has its own specific mechanism and it is our job to know how every single one works. Most people are fascinated by our ability to gain access to even the most secure safes so we decided to let you know how we do it.
We start by taking a look at what kind of safe it is, the lock on the outside, and what the mechanism will look like on the inside. Then we narrow down our options to 5 main techniques:
Manipulation
Safe Manipulation, often referred to as “cracking the safe” is what we use for some models with the dial lock on the outside. This method is extremely difficult and requires absolute focus, and endless patience. There are only a few models we will use this method on because it takes a very long time and absolute silence to be able to open it.
Bypassing Electronics
Bypassing the electronic lock is a little bit easier than cracking but it is more risky. With this method you must be absolutely perfect in every step or you will fry the motherboard and ruin the safe, forcing it to be cut open. Since this is a risky process we only use this when necessary because one false move will compromise everything.
Picking/ Impressioning
Picking a safe lock is no easy task but it is a lot less difficult than the previous 2 techniques. When opening a safe this way, you can reset and try again many times without damage to the safe. Lower grade Sentry Safes you buy at a local Home Depot can be picked in a matter of minutes, have their locks taken out, and swapped with a new lock for a fairly low cost. You can also sometimes cut keys for them from code if need be.
Impressioning a key is a lot more precise and usually takes a bit longer. With this method we use a high strength magnifying glass to see lines made on the key from the wafers and use a file to file it down accordingly, a lot easier said than done. Especially with high security keyways on safes this process can be a day or two of work just to get that key made.
Scoping
Scoping is the process of drilling a small, patchable hole near the lock on the front door of the safe and sending a specialized tool into the opening to view the mechanism as we turn the dial. This is usually done if we cannot manipulate the safe open by sound alone. This process is a lot faster but it requires absolute knowledge of the mechanism inside so you don’t drill into something important. Once completed we can reset the combination and patch up the hole so it looks like it never happened.
Breaking In
When all else fails or you don’t plan on keeping the safe we resort to breaking into it. This can be done by drilling out the keyhole, drilling into the mechanism very carefully, or cutting of the hinges. Most of these methods are avoided if at all possible but sometimes there is nothing else to do.
Once we get the safe open we can proceed to replacing the lock or even the entire safe. We offer a wide array from little lock boxes to massive gun safes all located at our showroom in Baltimore MD. We also move and install the safes that are a bit too large to carry.
Professional Safe Opening Services Maryland & Washington DC
Safe opening service with minimal damage throughout Maryland and Washington DC. SAVTA trained, licensed, bonded and insured technicians for your protection.
(function( w ){
"use strict";
// rel=preload support test
if( !w.loadCSS ){
w.loadCSS = function(){};
}
// define on the loadCSS obj
var rp = loadCSS.relpreload = {};
// rel=preload feature support test
// runs once and returns a function for compat purposes
rp.support = (function(){
var ret;
try {
ret = w.document.createElement( "link" ).relList.supports( "preload" );
} catch (e) {
ret = false;
}
return function(){
return ret;
};
})();
// if preload isn't supported, get an asynchronous load by using a non-matching media attribute
// then change that media back to its intended value on load
rp.bindMediaToggle = function( link ){
// remember existing media attr for ultimate state, or default to 'all'
var finalMedia = link.media || "all";
function enableStylesheet(){
// unbind listeners
if( link.addEventListener ){
link.removeEventListener( "load", enableStylesheet );
} else if( link.attachEvent ){
link.detachEvent( "onload", enableStylesheet );
}
link.setAttribute( "onload", null );
link.media = finalMedia;
}
// bind load handlers to enable media
if( link.addEventListener ){
link.addEventListener( "load", enableStylesheet );
} else if( link.attachEvent ){
link.attachEvent( "onload", enableStylesheet );
}
// Set rel and non-applicable media type to start an async request
// note: timeout allows this to happen async to let rendering continue in IE
setTimeout(function(){
link.rel = "stylesheet";
link.media = "only x";
});
// also enable media after 3 seconds,
// which will catch very old browsers (android 2.x, old firefox) that don't support onload on link
setTimeout( enableStylesheet, 3000 );
};
// loop through link elements in DOM
rp.poly = function(){
// double check this to prevent external calls from running
if( rp.support() ){
return;
}
var links = w.document.getElementsByTagName( "link" );
for( var i = 0; i < links.length; i++ ){
var link = links[ i ];
// qualify links to those with rel=preload and as=style attrs
if( link.rel === "preload" && link.getAttribute( "as" ) === "style" && !link.getAttribute( "data-loadcss" ) ){
// prevent rerunning on link
link.setAttribute( "data-loadcss", true );
// bind listeners to toggle media back
rp.bindMediaToggle( link );
}
}
};
// if unsupported, run the polyfill
if( !rp.support() ){
// run once at least
rp.poly();
// rerun poly on an interval until onload
var run = w.setInterval( rp.poly, 500 );
if( w.addEventListener ){
w.addEventListener( "load", function(){
rp.poly();
w.clearInterval( run );
} );
} else if( w.attachEvent ){
w.attachEvent( "onload", function(){
rp.poly();
w.clearInterval( run );
} );
}
}
// commonjs
if( typeof exports !== "undefined" ){
exports.loadCSS = loadCSS;
}
else {
w.loadCSS = loadCSS;
}
}( typeof global !== "undefined" ? global : this ) );